- To provide a convenient abstraction for programming
(프로그래밍을 할 때 메모리 구조를 추상화하여 편리하게 코딩할 수 있도록 함)- To allocate scarce(부족한) memory resources among competing processes
(경쟁 관계의 프로세스에 메모리 자원을 효율적으로 할당하여 오버헤드를 최소화 함 )- To provide isolation between processes
(프로세스 간에 메모리 접근을 방지함)
- Multiprogramming 환경에서 메모리에 한번에 여러개의 프로세스가 적재된다. 각각의 프로세스는 다른 사이즈의 연속적인 공간(contiguous space)를 필요로 한다.
- 프로세스 간에 메모리 접근을 제한해야 한다.
- virtual address와 physical address의 변환(transition)이 빨라야 한다.
- context switch가 빨라야 한다.
물리적 메모리 공간을 여러개의 고정된 크기의 partition으로 나눈 후, 각각의 partition에 프로세스를 적재시키는 방식이다.
그림을 보면,
virtual address와 base register 값을 더하여 partition에 접근하는데, 위 예제에서는 partition1을 할당받은 것이다.
- 하나의 partition에 하나의 process가 할당받고, internal fragmentation이 발생한다.
external fragmentation은 발생하지 않나????? 왜??--->질문!!!!!!!
*internal fragmentation: 프로세스의 크기보다 partition의 크기가 클 때, 프로세스를 적재하고 남은 메모리 공간.
+fixed partition을 위해서는 base register가 필요한데, base register 값은 context switch가 일어날 때마다 바뀐다.(당연)
fixed partition인데, partition의 size가 다르다.
- 배치 방식1-> First Fit : 적재될 프로세스가 들어갈 수 있는 partition을 scan하면서 최초로 발견되는 partition에 배치
- 배치 방식2-> Best Fit : partition을 모두 scan한 후, 적재될 프로세스가 들어갈 수 있는 partition 중 크기가 가장 잘 맞는 partition에 배치
- overhead: Best Fit > First Fit
메모리에 적재되는 프로세스의 크기에 따라 분할의 크기, 개수가 동적으로 변하는 방식이다.
- internal fragmentation: partition의 크기를 프로세스의 크기보다 크게 할당하지 않기 때문에 내부 조각은 생기지 않는다.
- external fragmentation: 메모리에 적재되었던 프로그램이 종료될 경우, 흩어진 상태(scattered)로 생기는 빈 공간으로 인해 발생할 수 있다.
- 동적 메모리 할당 문제(어떤 partition에 할당할 것인가)
- First-fit : 적재될 프로세스가 들어갈 수 있는 partition을 scan하면서 최초로 발견되는 partition에 배치 =-> 시간 측면에서 효율적
- Best-Fit : partition을 모두 scan한 후, 적재될 프로세스가 들어갈 수 있는 partition 중 크기가 가장 잘 맞는 partition에 배치(프로세스보다 크기가 큰 partition들 중 크기가 가장 작은 partition 선택)
==> 시간 측면에서 오버헤드 발생, 작은 hole이 생기지만, 공간 측면에서 효율적.- Worst-Fit : partition 중 크기가 가장 큰 partition에 할당
==> 시간 측면에서 오버헤드 발생, 크기가 큰 partition 빨리 소진 문제 발생
사진 이해안감?????????????????????????????질문!!!!!!!!!!!!!!!!!!!!1111
- compaction : 사용 중인 메모리 영역을 한 군데로 몰고 남은 공간들을 다른 한 곳으로 몰아 하나의 큰 가용 공간을 만드는 것. 복잡하고 프로그램 실행 도중에 메모리 위치를 바꿔야 하기 때문에 실행시간 바인딩 방식이 지원되는 환경에서만 사용 가능하다.
- paging and segmentation : 나중에
특정 시간에 필요한 부분만 메모리에 적재시키는 방법이다. 메모리보다 큰 프로그램을 적재시킬 수 있고, 운영체제의 특별한 지원이 필요 없다는 장점이 있지만, Overlay를 디자인 하는 것이 복잡하다는 단점이 있다.
메모리와 디스크 사이에 프로세스를 swap하는 방법이다.
swap을 하는 프로세스의 메모리 양에 비례하여 시간이 걸리고 보류중인 I/O와 swap을 수행할 수 없다는 단점이 있다.
swaping은 수정되어 virtual memory demand paging 기법에서 사용된다.
이제부터 알아보자