포시코딩

[운영체제] 7. Memory Management (2) 본문

CS (Computer Science)

[운영체제] 7. Memory Management (2)

포시 2023. 5. 11. 15:05
728x90

키워드

physical memory, contiguous allocation, noncontiguous allocation, fixed partition, variable partition, hole, compaction

 

Allocation of Physical Memory

(=물리적인 메모리 관리 방법)

  • 메모리는 일반적으로 두 영역으로 나눠 사용
    • interrupt vector와 함께 낮은 주소 영역: 운영체제 커널(운영체제 상주 영역)
    • 높은 주소 영역: 사용자 프로세스 영역

 

사용자 프로세스 영역의 할당 방법

  • Contiguous Allocation
    • 연속 할당
    • 프로그램이 메모리에 올라갈 때 통째로 올라가는 방법
    • 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것
    • Fixed partition allocation
    • Variable partition allocation
  • Noncontiguous Allocation
    • 불연속 할당
    • 프로그램을 구성하는 주소 공간을 잘게 쪼개 적재하는 방법
    • 현대의 시스템에서 불연속 할당을 사용
    • 프로그램의 주소 공간을 같은 크기의 페이지로 잘라서 
      페이지 단위로 메모리 여기저기 올리거나 내리는 기법을 Paging 기법이라 한다.
    • Segmentation
    • Paged Segmentation

 

Contiguous Allocation

두가지 방식으로 나뉨

  • 고정분할(Fixed partition) 방식
  • 가변분할(Variable partition) 방식

 

고정분할(Fixed partition) 방식

  • 프로그램이 들어갈 사용자 메모리 영역을 미리 파티션으로 나눠놓는 방식
  • 물리적 메모리를 몇 개의 영구적 분할(partition)로 나눔
  • 분할의 크기가 모두 동일한 방식과 서로 다른 방식이 존재
  • 분할 당 하나의 프로그램 적재
  • 융통성이 없음
    • 동시에 메모리에 load되는 프로그램의 수가 고정됨
    • 최대 수행 가능 프로그램 크기 제한
  • Internal fragmentation, external fragmentation 발생
  • External fragmentation(외부 조각)
    • 프로그램 크기보다 분할의 크기가 작은 경우
    • 아무 프로그램에도 배정되지 않은 빈 곳인데도 프로그램이 올라갈 수 없는 작은 분할
  • Internal fragmentation(내부 조각)
    • 프로그램 크기보다 분할의 크기가 큰 경우
    • 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각
    • 특정 프로그램에 배정되었지만 사용되지 않는 공간

 

가변분할(Variable partition) 방식

  • 고정분할 방식과 반대로 미리 나눠놓지 않은 방식
  • 프로그램의 크기를 고려해서 할당
  • 분할의 크기, 개수가 동적으로 변함
  • 기술적 관리 기법 필요
  • External fragmentation 발생
    • 프로그램이 끝나고 남은 빈 자리가 다른 프로그램이 들어갈 만큼 크지 않은 경우

 

Hole

  • 가용 메모리 공간
  • 다양한 크기의 hole들이 메모리 여러 곳에 흩어져 있음
  • 프로세스가 도착하면 수용가능한 hole을 할당
  • 운영체제는 다음의 정보를 유지
    • 할당 공간
    • 가용 공간(hole)

 

Dynamic Storage-Allocation Problem

가변 분할 방식에서 size n인 요청을 만족하는 가장 적절한 hole을 찾는 문제

First-fit

  • size가 n 이상인 것 중 최초로 찾아지는 hole에 할당

Best-fit

  • size가 n 이상인 것 중 가장 작은 hole을 찾아서 할당
  • hole들의 리스트가 크기순으로 정렬되지 않은 경우 모든 hole의 리스트를 탐색해야 함
  • 많은 수의 아주 작은 hole들이 생성됨

Worst-fit

  • 가장 큰 hole에 할당
  • 역시 모든 리스트를 탐색해야 함
  • 상대적으로 아주 큰 hole들이 생성됨

실험을 통해 First-fit과 best-fit이 worst-fit보다 속도와 공간 이용률 측면에서 더 효과적인 것으로 알려짐

  • first-fit: hole을 찾는 오버헤드가 적어서 좋음
  • best-fit: 가장 적당한 hole을 찾아 넣기 때문에 미래지향적임

 

Compaction

  • external fragmentation 문제를 해결하는 한 가지 방법
  • 사용중인 메모리 영역을 한군데로 몰고 hole들을 다른 한 곳으로 몰아 큰 block을 만드는 것
  • 매우 비용이 많이 드는 방법(디스크 조각 모음을 메모리에서 한다 생각하면 이해 Ok)
  • 최소한의 메모리 이동으로 compaction하는 방법(매우 복잡)
  • compaction은 프로세스의 주소가 실행 시간에 동적으로 재배치 가능한 경우에만 수행될 수 있다. 
    (run time binding)

 

정리

사실 현대의 컴퓨터 시스템에서 사용하는 방법은
이번 포스팅을 통해 알아본 연속 할당 방법이 아닌 불연속 할당 방법이다. 
때문에 위에서 나왔던 문제들에 비해 비교적 자유로운 편

불연속할당 방법은 크게 Paging 기법과 Segmentation 기법으로 나눌 수 있다.

728x90