[인프런워밍업클럽] 3주차 발자국 미션

[인프런워밍업클럽] 3주차 발자국 미션

운영체제

메모리

레지스터 : 속도 빠름, 용량 작음, 가격 비쌈

레지스터와 메인메모리 사이에는 캐시가 있음

캐시 : CPU가 사용하는 메모리로 굉장히 빠름, 메모리는 느림, 미리 가져온 데이터를 저장하는 곳, 성능을 이유로 여러개를 둠

메인메모리: 실제 운영체제와 다른 프로세스들이 올라가는 공간, 휘발성메모리 , 속도빠름, 실행중인 프로그램만 올림

보조저장장치 : 비휘발성 메모리, 속도 느림, 용량 큼, 가격 쌈

 

메모리와 주소

메인메모리(메모리)

운영체제는 메모리를 관리하기 위해 1바이트 크기로 구역을 나누고 숫자를 매김

숫자 → 주소

절대주소(물리 주소), 상대주소(논리 주소)

재배치 레지스터에는 프로그램의 시작 주소가 저장 되어있음

 

메모리할당방식

가변분할(연속 메모리 할당),세그멘테이션

프로세스가 크면 메모리도 크게 할당

장점: 메모리의 연속된 공간에 할당되기 때문에 더 크게 할당되서 낭비되는 공간인 내부단편화가 없음

단점: 외부단편화가 발생

고정 분할 방식(비연속 메모리 할당), 페이징

프로세스 크기와 상관없이 메모리를 할당

장점: 구현 간단, 오버헤드가 작음

단점: 작은 프로세스도 큰 영역에 할당되서 공간이 낭비되는 내부 단편화 발생

가상메모리

가상메모리의 크기

  • 이론적 : 무한대, 실제 : 물리메모리 크기와 CPU 비트수로 결정

  • 32비트인 CPU인 경우 4GB 정도, 가상 메모리 크기도 똑같이 4GB

가변분할방식(세그멘테이션) - 페이징 혼용

고정분할방식(페이징)

가상 주소는 메모리나 스왑영역 한 곳에 위치

메모리 관리자는 가상주소와 물리주소를 1대1 맵핑

 

세그멘테이션

함수, 모듈로 구성

외부 단편화 문제가 있어서 해결하기 위해서 고안

프로세스마다 크기가 달라 바운드 어드레스를 가지고 있음

페이징(고정분할)

메모리를 할당할 때 정해진 크기의 페이지로 나눔, 모든 페이지의 크기가 같기 때문에 관리가 쉬움

페이지 : 논리주소 공간은 일정한 크기로 균일하게 나눔

모든 페이지의 크기가 동일해서 크기를 표현하는 바운드 어드레스는 필요하지 않음

외부단편화 x, 내부 단편화 O

내부단편화: 정해진 크기의 페이징보다 프로세스의 정보가 작으면 그만큼 공간이 낭비

 

입출력장치

그래픽카드, 하드디스크, SSD, 키보드, 마우스 등

캐릭터 디바이스

  • 데이터 전송 단위가 캐릭터(글자)

  • 상대적으로 크기가 작음

  • 마우스, 키보드,사운드카드,직렬, 병렬 포트

블록디바이스

  • 데이터 전송 단위가 블록(범위)

  • 상대적으로 크기가 큼

  • 하드디스크, SSD, 그래픽 카드

하드디스크

장점: 기계적으로 헤드를 움직여 속도가 많이 느리고 소음도 낮음

단점: 굉장히 느림

플래시 디스크

장점: 빠르고 조용함, 안전

단점: 특정한 지점에 데이터를 썼다면 덮어 쓰기가 불가능함, 똑같은 지점에 데이터를 쓰러면 기존에 있던 데이터를 지우고 새로 써야 함, 지우기 가능한 횟수가 정해져 있음, 계속 반복하다보면 망가져서 사용할 수 없음

 

자료구조와 알고리즘

버블정렬

  • 시간복잡도: O(n²)

  • 앞에 있는 숫자와 옆에 있는 숫자를 비교해서 자리를 바꾸는 알고리즘

  • 장점: 가장 쉽게 생각할 수 있는 정렬방법, 이해와 구현이 간단

  • 단점: 성능이 ON제곱으로 별로 좋지 않음

선택정렬

  • 시간복잡도: O(n²)

  • 배열의 정렬되지 않은 영역의 첫번째 원소를 시작으로 마지막 원소까지 비교 후 가장 작은 값을 첫 번째 원소로 가져옴

  • 장점: 이해하기 쉽고 구현하기 쉬움

  • 단점: 성능이 좋지않음

삽입정렬

  • 시간복잡도: O(n²)

  • 정렬되지 않은 영역에서 데이터를 하나씩 꺼내서 정렬된 영역 내에 적절한 위치에 삽입하는 알고리즘

  • 장점: 이해하기 쉽고 구현하기 쉬움

  • 단점: 성능이 좋지 않음

병합정렬

  • 시간복잡도: O(n log n)

  • 재귀로 정렬하는 알고리즘

  • 장점: 성능이 훨씬 좋음

  • 단점: 재기적인 기법으로 이해하기 어려움

퀵정렬

  • 시간복잡도: O(n log n)

  • 분할정복 알고리즘

  • 장점: 성능이 훨씬 좋음

  • 단점: 재기적인 기법으로 이해하기 어려움

 

회고

벌써 3주의 시간이 지나갔다.. 아직도 부족한 부분이 많아서 복습을 더 하고 다시 강의를 보려고 한다

그리고 운영체제 과목에 대한 흥미를 느껴 오늘 도서관에서 '쉽게 배우는 운영체제' 책을 빌려왔다

빌린 책과 함께 강의를 다시 들으며 복습하고 나만의 것으로 만들기 위해서 노력해야겠다

 

댓글을 작성해보세요.

채널톡 아이콘