티스토리 뷰

728x90
반응형
본 내용은 학교 강의+반효경 교수님 강의를 통해 개인적으로 공부한 내용입니다. 책은 쉽게 배우는 운영체제(한빛 아카데미)를 참고했습니다. 조언은 언제든지 감사합니다 !

 

Contiguous allocation(연속 할당)

각각의 프로세스가 메모리의 연속적인 공간에 적재 (통채로 올라감)

주소 변환이 매우 간단하지만 단편화 문제가 많이 발생

고정분할(Fixed partition) 방식

물리적 메모리를 미리 몇 개의 partition으로 나눔

분할의 크기가 모두 동일할 수도 있고, 아닐 수도 있다.

분할 당 하나의 프로그램을 적재시키며 이로인해 단편화가 발생

External fragmentation (외부 조각 = 외부 단편화)

프로그램 크기보다 분할의 크기가 작아 현재 대기중인 프로그램이 올라갈 수 없는 작은 분할

Internal fragmentation (내부 조각 = 내부 단편화)

프로그램 크기보다 분할의 크기가 커서 하나의 프로그램이 올라간 분할에 사용되지 않는 공간(조각)이 발생

이는 추후에 내부 조각보다 작은 프로그램이 할당되어 외부 조각으로 바뀔 수도 있다.

 

가변분할(Variable partition) 방식

프로그램의 크기대로 메모리를 분할해서 할당하므로 분할의 크기, 개수가 동적으로 변한다.

프로세스를 순서대로 메모리에 차곡차곡 쌓음

프로그램이 실행되고 종료되는 과정에서 외부 단편화가 발생할 수 있다. (내부 단편화는 x)

위의 경우 프로그램 B가 끝난 공간이 할당되야 할 프로그램 D의 크기보다 작아 그 공간에 할당되지 못하고 C 밑에 할당되어 프로그램 B가 끝난 공간이 외부 조각이 된 상황이다.

Dynamic Storage-Allocation Problem

가변 분할 방식의 외부 단편화 문제를 해결하기 위한 메모리 배치 방식 문제(가장 적절한 hole을 찾는 문제)

- First-fit (최초 배치)

프로세스를 제일 처음 발견된 공간(hole)에 배치

빈 공간을 탐색할 시간을 줄일 수 있지만 단편화를 고려하지 않게 됨.

- Best-fit (최적 배치)

메모리의 빈 공간을 모두 탐색한 후 프로세스의 크기보다 큰 hole 중 가장 작은 hole에 배치

단편화의 크기를 최대한 줄일 수 있지만 탐색하는 시간이 필요하고, 아주 작은 단편화가 생겨 버려지는 단편화가 많아질 수 있다.

- Worst-fit (최악 배치)

Best-fit의 반대로 가장 큰 hole에 배치

남은 공간이 크기 때문에 추후에 사용할 수 있다. 하지만 역시 탐색하는 시간이 오래걸리고, 당장에 큰 단편화를 발생시켜 효울이 좋지 않음

Compaction (압축)

외부 단편화 문제를 해결하는 방법으로 사용 중인 메모리 영역을 한 군데로 몰고 남은 공간들을 다른 한 곳으로 몰아 큰 덩어리(block)을 만듬

실행 중인 프로세스의 동작을 중지시키고 상대 주소값을 바꿔 프로세스를 이동시킨 후 다시 프로세스를 시작하는 작업이 매우 복잡하고 비용이 많이 든다.

따라서 최소한의 메모리 이동으로 compaction하는 방법이 필요하다.

ex) 조각 모음

버디 시스템

가변 분할 방식과 고정 분할 방식의 중간 구조

가변 분할 방식처럼 메모리가 프로세스의 크기대로 나뉘지만 고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없다.

내부 단편화 발생

1. 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스르 메모리에 배치한다.

2. 나뉜 메모리의 각 구역에는 프로세스가 1개만 들어간다.

3. 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만든다.

 

 

Noncontiguous allocation (비연속 할당)

하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음

연속 할당보다 단편화 문제가 적지만 주소 변환이 복잡

Paging

하나의 프로그램을 구성하는 주소 공간을 같은 크기의 페이지로 자름

physical memory는 frame으로, logical memory는 page로 자름 (크기 동일)

page table을 사용하여 logical memory -> physical memory로 주소 변환

page table의 entry 개수는 page의 수에 의해 결정된다.

프로세스마다 가지고 있음

Address Translation Architecture

VA(Virtual Address) = <P, D> -> PA(Physical Address) = <F, D>

D(Distance = Offset = 페이지 내에서의 위치)는 페이지와 프레임의 크기가 같기 때문에 변경하지 않는다. 

프로그램과 메모리 공간이 동일한 크기로 잘려져 있어 단편화 문제를 해결할 수 있다. (내부 조각이 마지막에 미세하게 생길 순 있음)

하지만 주소 변환이 복잡해 진다.

Implementation of Page Table

Page table은 main memory에 상주한다. 따라서 모든 메모리 접근 연산에는 2번이 필요

- Page-table base register (PTBR) : page table의 시작 주소 저장

- Page-table length register (PTLR) : page table의 크기 저장

TLB(Translation Look-aside Buffer = 변환 색인 버퍼 = associative registers = 연관 레지스터)

2번의 메인 메모리 접근에 의한 비효율에서 1번의 메모리 접근으로 줄여 속도 향상을 위해 사용되는 고속의 Lookup hardware cache

page table에서 빈번히 참조되는 entry를 cache하고 있다. (일부만)

main memory보다 접근 속도가 빠른 하드웨어

page table을 찾아보기 전에 TLB에 저장되어 있는 지 먼저 확인

page table과의 차이점은 page table은 모든 page를 담고 있어 index에 해당하는 frame 만을 저장하고 있으면 되지만 TLB는 page들의 일부만 저장하고 있으므로 몇 번째 page인지에 대한 정보와 frame 정보 둘을 가지고 있어야 한다.

또한 index로 접근하는 것이 아니라 모든 entry를 찾아봐야 한다. 때문에 원하는 페이지 번호가 TLB에서 찾아지는 TLB hit 확률이 커야 한다. 그렇지 않고 TLB miss가 빈번히 일어나면 시스템 성능이 떨어지는 단점이 발생한다.

연관 레지스터는 프로세스마다 page가 다르기 때문에 context switch때 마다 비워줘야 한다.

 

Segmentation

프로그램을 같은 크기가 아닌 의미있는 단위로 자름

이때 의미는 code영역, data영역, stack영역 처럼 크게 나눌 수 있고, 함수 단위로 작게 나눌 수도 있다.

크기가 균일하지 않으므로 단편화 문제가 발생

나머지는 다음에...

728x90
반응형

'CS > 운영체제 공부' 카테고리의 다른 글

페이징(Paging) 기법들  (2) 2019.05.21
물리 메모리 관리 (Physical Memory Management) 개요  (0) 2019.05.14
CPU 스케줄링  (1) 2019.03.30
스레드  (0) 2019.03.26
프로세스 메모리 구조, 시스템 호출  (0) 2019.03.24
댓글