cs

OS - 기억장치 관리기법

joepasss 2022. 5. 8. 16:39

기억장치 관리기법


1. 기억장치 관리자


  • 기억장치를 관리하는 운영체제의 기능
  • 기억장치의 사용중인 부분과 미사용중인 부분을 체크해서 프로세스에게 할당하거나 회수하는 역할
  • 일반적으로 주기억장치와 가상기억장치 관리

2. 호출기법


  • 다음에 수행될 프로그램과 데이터를 보조기억장치에서 언제 기억장치로 적재할 것인지를 결정하는 전략
  • 요구반입
    • 프로그램이나 데이터에 대한 요구가 발생하면 주기억장치로 로드하는 방법
  • 예상반입
    • 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예측하여 적재하는 기법

3. 배치기법


  • 보조기억장치로부터 반입된 프로그램이나 데이터를 주기억장치의 어느 곳에 적재시킬 것인가를 결정하는 것
  • 적재할 위치를 정하는 전략
3.1 배치기법 종류

  1. 최초 적합 (first-fit)
    • 주기억장치 내의 공백 중 프로그램이나 데이터가 들어갈 수 있는 크기의 영역 중에서 작업을 수용할 수 있는 첫 번째 공백에 배치
  2. 최적 적합 (best-fit)
    • 주기억장치 내의 공백 중 프로그램이나 데이터가 들어갈 수 있는 크기의 영역 중에서 적재될 재료의 메모리 크기와 가장 인접한 크기의 공간을 골라 배치하는 방법
    • 단편화 (적재 후 분할영역의 남은 공간) 이 가장 작다
  3. 최악 적합 (worst-fit)
    • 주기억장치 내에 가장 큰 공백에 프로그램이나 데이터를 배치
    • 단편화가 가장 많이 생기는 배치방법

4. 교체기법


  • 새로운 프로그램이나 데이터를 보조기억장치의 가상 메모리로부터 주기억장치에 배치하려고 할 때 주 기억장치의 모든 영역이 사용 중인 상태이면 이미 사용하고 있는 영역 중에서 교체하여 사용하는 전략
4.1. 교체기법 종류

  1. OPT (OPTimal replacement, 최적 교체)
    • 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
    • 예측이 맞지 않는 경우가 발생하므로 실현 가능성이 가장 낮다
  2. FIFO (First In First Out)
    • 가장 먼저 들어온 페이지를 먼저 교체시키는 방법
    • 각 페이지가 주기억장치로 들어올 때 마다 타임 스탬프(time-stamp)를 찍어 그 시간을 기억하고 있다가 페이지 교체시 사용
  3. LRU (Least Recently Used)
    • 최근에 가장 오랫동안 사용되지 않은 페이지 교체
    • 각 페이지에 계수기 (Counter)를 두어 교체시점에서 가장 오래 전에 사용된 페이지 교체
  4. LFU (Least Frequently Used)
    • 사용 횟수가 가장 적은 페이지를 교체
  5. NUR (Not Used Recently)
    • 최근에 사용하지 않은 페이지를 교체하는 기법
    • 페이지마다 2개의 하드웨어 비트(호출 비트, 변형 비트)를 사용
      • 호출 비트 : 최근 참조 여부 확인
      • 변형 비트 : 최근 변형 여부
    • 가장 최근에 참조도 안 되고 변형도 안 된 페이지를 가장 우선적으로 교체

5. 주기억장치 할당


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

주기억장치 할당 기법

5.1 연속 기억장치 할당

  • 프로그램을 주기억장치에 연속으로 할당하는 기법
  • 프로그램을 위한 빈 공간이 연속적이여야 하므로 효율이 떨어진다
5.1.1 단일분할 할당기법

  • 스와핑과 오버레이 기법 등을 통해 구현할 수 있다
5.1.2 다중분할 할당기법

  • 고정분할과 동적 분할 기법을 통해 메모리를 프로세스에게 할당하는 방법
5.2 불연속 기억장치 할당

  • 분산 할당기법
  • 하나의 프로그램이 여러 개의 블록이나 조각으로 나뉘어 기억장치 내의 사용 가능한 공간에 분산 배치되는 기법이다
  • 메모리 사용의 효율성이 증가되는 기법으로, 가상기억장치 관리기법에서 주로 사용한다

6. 단일 사용자 연속 기억장치 할당


주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 방법
기계의 모든 자원은 그 사용자가 마음대로 사용할 수 있다
프로그램의 크기는 주기억장치의 용량보다 클 수 없지만 스와핑, 오버레이 등으로 주기억장치보다 큰 사용자 프로그램 실행 가능
6.1 특징

  • 가장 단순한 기법. 초기의 운영체제에서 많이 사용
  • 경계 레지스터 (boundary register)를 사용하여 사용자 영역에 있는 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 한다
  • 프로그램의 크기가 작을 경우 사용자 영역의 사용효율이 떨어질 수 있다
  • 스와핑, 오버레이 기법을 사용하여 초기에 주기억장치보다 큰 사용자 프로그램을 실행할 수 없다는 문제점을 해결 가능
6.2 스와핑

  • 하나의 프로그램 전체를 주기억장치에 할당하여 사용한다
  • 필요에 따라 다른 프로그램과 교체하여 주기억장치 공간을 공유하는 기법이다
6.2 오버레이

  • 실행할 작업의 크기가 너무 커서 주기억장치에 한꺼번에 수용될 수 없는 경우에 사용
  • 작업을 여러 개의 분할로 만든 후 실행될 때 필요한 부분만 교체하는 방법
  • 로드되는 프로그램 조각의 크기가 작으므로 로딩 속도를 향상시킬 수 있다