Memory Management

Seongho·2022년 6월 4일
1

운영체제

목록 보기
7/12

Memory Management의 Goals

  • To provide a convenient abstraction for programming
    (프로그래밍을 할 때 메모리 구조를 추상화하여 편리하게 코딩할 수 있도록 함)
  • To allocate scarce(부족한) memory resources among competing processes
    (경쟁 관계의 프로세스에 메모리 자원을 효율적으로 할당하여 오버헤드를 최소화 함 )
  • To provide isolation between processes
    (프로세스 간에 메모리 접근을 방지함)

Memory Management의 Requirements

  • Multiprogramming 환경에서 메모리에 한번에 여러개의 프로세스가 적재된다. 각각의 프로세스는 다른 사이즈의 연속적인 공간(contiguous space)를 필요로 한다.
  • 프로세스 간에 메모리 접근을 제한해야 한다.
  • virtual address와 physical address의 변환(transition)이 빨라야 한다.
  • context switch가 빨라야 한다.

physical memory 분할 방법

1-1. fixed partition(partition size equal)

물리적 메모리 공간을 여러개의 고정된 크기의 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가 일어날 때마다 바뀐다.(당연)

1-2. fixed partition(partition size not equal)

fixed partition인데, partition의 size가 다르다.

  • 배치 방식1-> First Fit : 적재될 프로세스가 들어갈 수 있는 partition을 scan하면서 최초로 발견되는 partition에 배치
  • 배치 방식2-> Best Fit : partition을 모두 scan한 후, 적재될 프로세스가 들어갈 수 있는 partition 중 크기가 가장 잘 맞는 partition에 배치
  • overhead: Best Fit > First Fit

2. variable partition

메모리에 적재되는 프로세스의 크기에 따라 분할의 크기, 개수가 동적으로 변하는 방식이다.

  • internal fragmentation: partition의 크기를 프로세스의 크기보다 크게 할당하지 않기 때문에 내부 조각은 생기지 않는다.
  • external fragmentation: 메모리에 적재되었던 프로그램이 종료될 경우, 흩어진 상태(scattered)로 생기는 빈 공간으로 인해 발생할 수 있다.
  • 동적 메모리 할당 문제(어떤 partition에 할당할 것인가)
  1. First-fit : 적재될 프로세스가 들어갈 수 있는 partition을 scan하면서 최초로 발견되는 partition에 배치 =-> 시간 측면에서 효율적
  2. Best-Fit : partition을 모두 scan한 후, 적재될 프로세스가 들어갈 수 있는 partition 중 크기가 가장 잘 맞는 partition에 배치(프로세스보다 크기가 큰 partition들 중 크기가 가장 작은 partition 선택)
    ==> 시간 측면에서 오버헤드 발생, 작은 hole이 생기지만, 공간 측면에서 효율적.
  3. Worst-Fit : partition 중 크기가 가장 큰 partition에 할당
    ==> 시간 측면에서 오버헤드 발생, 크기가 큰 partition 빨리 소진 문제 발생
    사진 이해안감?????????????????????????????질문!!!!!!!!!!!!!!!!!!!!1111

+ variable partition에서 external fragmentation 해결하기

  1. compaction : 사용 중인 메모리 영역을 한 군데로 몰고 남은 공간들을 다른 한 곳으로 몰아 하나의 큰 가용 공간을 만드는 것. 복잡하고 프로그램 실행 도중에 메모리 위치를 바꿔야 하기 때문에 실행시간 바인딩 방식이 지원되는 환경에서만 사용 가능하다.
  2. paging and segmentation : 나중에

3. Overlays

특정 시간에 필요한 부분만 메모리에 적재시키는 방법이다. 메모리보다 큰 프로그램을 적재시킬 수 있고, 운영체제의 특별한 지원이 필요 없다는 장점이 있지만, Overlay를 디자인 하는 것이 복잡하다는 단점이 있다.

4. Swapping

메모리와 디스크 사이에 프로세스를 swap하는 방법이다.
swap을 하는 프로세스의 메모리 양에 비례하여 시간이 걸리고 보류중인 I/O와 swap을 수행할 수 없다는 단점이 있다.
swaping은 수정되어 virtual memory demand paging 기법에서 사용된다.

5. Virtual Memory

이제부터 알아보자

profile
Record What I Learned

0개의 댓글