본문 바로가기
Computer Science/운영체제

주기억장치 할당 기법

by Libi 2021. 7. 6.
반응형

이전 글을 통해 한정된 주기억장치의 메모리 공간을 효율적으로 사용하기 위해 반입, 배치, 교체 전략을 활용한다고 공부하였다. 전략 기법을 통해 최종적인 과정은 프로그램을 주기억장치 메모리 공간에 할당하는 것이다. 이 또한 마찬가지로 무턱대고 아무렇게나 메모리에 프로그램을 할당한다면 굉장히 비효율적일 것이다.

즉, 주기억장치 할당 기법은 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게(How) 할당할 것인지에 대한 방법이며, 연속 할당 기법과 분산 할당 기법으로 분류할 수 있다.

 

이번 글에서는 주기억장치에 프로그램을 할당하는 방법 중 연속 할당 기법에 대해서 알아보자.

먼저 단일 분할 할당 기법이다. 단일 분할 할당 기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 가장 단순한 기법으로 초기의 운영체제가 많이 사용하던 기법이다.

오직 한 명의 사용자만이 사용자 영역을 사용할 수 있기 때문에 메모리가 낭비될 수 있다.

운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 경계 레지스터(Boundary Register)를 통해 운영체제 영역과 사용자 영역을 구분한다.

 

초기에는 주기억장치보다 큰 프로그램을 실행할 수 없었지만 오버레이 기법을 사용하면서 해결하였다.

오버레이(Overlay) 기법

  • 주기억장치보다 큰 프로그램을 실행하기 위한 기법
  • 보조기억장치에 저장된 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례대로 주기억장치에 할당하는 방법
  • 주기억장치가 꽉 찬 경우 필요 없는 조각 위에 새로운 조각을 중첩하여 적재하여 교체
  • 프로그램을 여러 개의 조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 시스템 구조나 프로그램 구조를 알아야 함

 

스와핑(Swapping) 기법

  • 오버레이 기법은 한 프로그램이 주기억장치보다 큰 경우 분할하여 할당하는 방법이었다면 스와핑 기법은 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
  • 즉, 프로그램을 분할하는 것이 아니라 프로그램 단위로 교체
  • Swap Out : 주기억장치 → 보조기억장치, Swap In : 보조기억장치 → 주기억장치
  • 하나의 사용자 프로그램이 완료될 때까지 교체 과정을 여러 번 수행할 수 있음
  • 가상기억장치의 페이징 기법으로 발전

 

오버레이 기법과 스와핑 기법은 결국 사용자 영역에는 한 프로그램만 올라갈 수 있는 단점이 있었다. 이를 개선하고자 해서 나온 기법이 바로 다중 분할 할당 기법이다. 다중 분할 할당 기법에는 고정 분할 할당 기법과 가변 분할 할당 기법이 존재한다고 하였다. 하나씩 알아보도록 하자.

고정 분할 할당 기법(Multiple contiguous Fixed parTition allocation, MFT) 기법

  • 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법
  • 정적 할당(Static Allocation) 기법
  • 프로그램을 실행하기 위해선 프로그램 전체가 주기억장치에 할당되어야 함
  • 프로그램의 크기가 분할된 영역보다 크다면 실행할 수 없음
  • 일정한 크기의 분할 영역에 다양한 크기의 프로그램이 할당되므로 내부 단편화 및 외부 단편화 발생

  • 실행할 프로그램의 크기를 미리 알고 있어야 함
  • 다중 프로그래밍을 위해 사용되었지만 현재는 사용되지 않음

 

가변 분할 할당 기법(Multiple contiguous Variable parTition allocation, MVT) 기법

  • 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기를 영역으로 분할해서 할당하는 기법
  • 동적 할당(Dynamic Allocation) 기법
  • 주기억장치를 효율적으로 사용 가능하며, 다중 프로그래밍 정도를 높일 수 있음
  • 고정 분할 할당 기법에 비해 실행될 프로세스 크기에 대한 제약이 적음
  • 고정 분할 할당 기법 단편화 문제를 해결할 수 있지만 영역과 영역 사이에 단편화가 발생될 수 있음

 

프로그램을 주기억장치에 할당하는 방법에 대해서 배웠다. 하지만 주기억장치의 크기는 결국 제한적이기 때문에 위의 방법들을 사용해도 결국 한계가 존재한다.

이를 해결하기 위해 나온 것이 바로 가상기억장치라는 친구이다. 가상기억장치와 가상기억장치에서 사용하는 페이징, 세그먼테이션 기법에 대해선 다음 글에서 알아보도록 하자.

반응형

'Computer Science > 운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2021.07.07
가상기억장치 할당 기법  (0) 2021.07.06
메모리 관리 전략  (0) 2021.07.06
교착상태(Deadlock)  (0) 2021.07.06
Blocking / Non-Blocking & Synchronous / Asynchronous  (0) 2021.07.06

댓글