[OS] 주기억장치 할당 기법

szlee·2023년 12월 11일
0

운영체제

목록 보기
3/6

주기억장치 할당

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

  • 연속 할당 기법 : 프로그램을 주기억장치에 연속으로 할당.
    • 단일 분할 할당 기법 : 오버레이, 스와핑
    • 다중 분할 할당 기법 : 고정 분할 할당, 동적 분할 할당
  • 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법. 페이징, 세그멘테이션







연속 할당 기법

단일 분할 할당 기법

주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법.

  • 가장 단순. 초기의 운영체제에서 많이 사용
  • 운영체제를 보호하고 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터가 사용된다.
  • 프로그램의 크기가 작을 경우 사용자 영역이 낭비될 수 있다.
  • 초기에는 주기억장치보다 큰 사용자 프로그램은 실행할 수 없었으니 오버레이 기법을 사용하면서 문제가 해결되었다.

오버레이
주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법.

  • 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행
  • 프로그램이 실행되면서 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소에 새로운 프로그램의 조각을 중첩(overlay)하여 적재한다.
  • 프로그램을 여러 개의 조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 시스템 구조나 프로그램 구조를 알아야 한다.

스와핑
하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법

  • 주기억장치에 있는 프로그램 -> 보조기억장치로 이동 swap out, 보조기억장치에 있는 프로그램 -> 주기억장치로 이동 swap in.
  • 하나의 사용자 프로그램이 완료될 때까지 교체 과정을 여러번 수행할 수 있다.
  • 가상기억장치의 페이징 기법으로 발전되었다.

다중 분할 할당 기법

정적 할당
프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법.

  • 프로그램을 실행하려면 프로그램 전체가 주기억장치에 위치해야한다.
  • 프로그램이 분할된 영역보다 커서 영역 안에 들어갈 수 없는 경우가 발생할 수 있다.
  • 일정한 크기의 분할 영역에 다양한 크기의 프로그램이 할당되므로 내부 단편화 및 외부 단편화가 발생하여 주기억장치의 낭비가 많다.
    • 내부 단편화 : 분할된 영역 > 할당될 프로그램의 크기. 프로그램이 할당된 후 남아 있는 빈 공간
    • 외부 단편화 : 분할된 영역 < 할당될 프로그램의 크기. 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 남아있는 분할된 전체 영역.
  • 실행할 프로그램의 크기를 미리 알고 있어야 한다.
  • 다중 프로그래밍을 위해 사용되었으나 현재는 사용되지 않는다.

동적 할당
고정 분할 할당 기법의 단편화를 줄이기 위한 것. 미리 주기억장치를 분할해 놓는 것이 아니라, 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법.

  • 주기억장치를 효율적으로 사용할 수 있으며 다중 프로그래밍의 정도를 높일 수 있다.
  • 고정 분할 할당 기법에 비해 실행될 프로세스 크기에 대한 제약이 적다.
  • 단편화를 상당 부분 해결할 수 있으나 영역과 영역 사이에 단편화가 발생될 수 있다.
profile
🌱

0개의 댓글