CS지식/운영체제

운영체제 Ch.6 가상 메모리

뮤츠 2023. 1. 30. 22:32

6-1. 연속 메모리 할당

  • 연속 메모리 할당 연속적인 메모리 공간을 할당하는 방식.
  • 스와핑
    • 대기 상태가 된 프로세스나, 오랫동안 사용되지 않은 프로세스를 임시로 보조기억장치 일부 영역으로 보내고, 메모리상 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식.
    • 스왑 영역 : 프로세스들이 저장되는 보조기억장치의 일부 영역.
    • 스왑 인 : 프로세스가 스왑영역(보조기억장치 영역)에서 메모리로 옮겨지는 것.
    • 스왑 아웃 : 프로세스가 메모리에서 스왑영역으로 옮겨지는 것.

  • 메모리 할당
    • 최초적합 운영체제가 메모리 내 빈 공간을 순서대로 검색하다가, 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식.
    • 최적 적합 운영체제가 메모리 내 빈 공간을 모두 검색한 뒤, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식.
    • 최악 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식.
    • 외부 단편화 프로세스가 실행/종료가 반복되면서 생기는 빈 공간에 큰 프로세스를 적재하기 어려운 상황.

    • 압축(조각모음)
      • 여기저기 흩어져 있는 빈 공간을 하나로 모으는 방식.
      • 많은 오버헤드를 야기하며, 효율적인 방법에 대한 어려움이 있다는 단점.

6-2. 페이징을 통한 가상 메모리 관리

  • 가상메모리(virtual memory)
    • 실행하고자 하는 프로그램을, 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술.

  • 페이징
    • 메모리와 프로세스를 일정한 단위로 나누어, 메모리에 불연속적으로 적재하는 방법.
    • 메모리를 나눈 단위는 프레임, 프로세스를 나눈 단위는 페이지.
    • 페이징 시스템에서의 스왑 인/아웃은 페이지 인/아웃으로 부르기도 함.

  • 페이지 테이블
    • 페이징 시스템에 의해 실제 메모리에 불연속적으로 배치된 프로세스를, 논리 주소에는 연속적으로 배치되도록 이용하는 목록.

    • 내부 단편화의 문제
      • 페이징 시스템에서, 페이지 단위보다 작은 빈 공간이 생기는 문제.
      • 페이지 크기가 너무 크면 내부 단편화의 문제도 커지고, 페이지 크기가 너무 작으면 페이지 테이블의 목록이 길어져 낭비가 발생한다.

    • 페이지 테이블 베이스 레지스터 (PTBR : Page Table Base Register)
      • 각 프로세스의 페이지 테이블이 적재된 주소를 저장.

    • TLB (Translation Lookaside Buffer)
      • 페이지 테이블을 메모리 두는 경우, 메모리 접근 횟수가 2배가 됨.
      • 따라서 TLB라는 페이지 테이블의 캐시 메모리를 따로 두고, 페이지 테이블의 일부 내용을 저장 (참조 지역성에 근거).
      • TLB 히트 : CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있는 경우.
      • TLB 미스 : CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없는 경우. (메모리 테이블에 다시 한 번 접근)

    • 페이징 시스템의 논리 주소는 기본적으로 페이지 번호와 변위(offset)로 구성.
    • 페이지 테이블 엔트리 : 페이지 테이블의 각각의 row.
    • 유효 비트 : 현재 해당 페이지에 접근 가능한지 여부를 반환 (1:true)
    • 페이지 폴트(page fault) : CPU가 유효 비트 0인 메모리에 적재되어 있지 않은 페이지에 접근하려고 하는 경우의 예외.

    • 보호 비트
      • 페이지의 쓰기 가능성 여부 반환. (true:1, 0이면 읽기만 가능)
      • 조금 더 복잡하게 구현 가능.
        • 읽기, 쓰기, 실행 여부로 나누어 rwx 세자리로 구현
        • ex) 보호비트 111은 읽기, 쓰기, 실행 모두 가능.

    • 참조 비트
    • CPU가 이 페이지에 접근한 적이 있는지 여부 반환. (1:true)

    • 수정 비트 (더티 비트)
      • 해당 페이지에 데이터를 쓴 적이 있는지의 여부를 반환. (1:true)
      • 페이지가 메모리에서 사라질 때, 보조기억장치에 쓰기 작업을 해야하는지 여부를 위해 존재

  • 쓰기 시 복사
    • fork 시스템 호출시 생성되는 자식 프로세스는 처음에 부모 프로세스와 같은 프레임을 가리키다가, 둘 중 어느 하나가 페이지에 쓰기 작업을 하는 경우, 해당 페이지가 별도의 공간으로 복제됨.

  • 계층적 페이징 (hierarchical paging)
    • 페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식.
    • 다단계 페이지 테이블(multilevel page table) 이라고도 함.
    • 논리 주소도 페이지 번호/변위 가 아닌, 단계별 페이지 번호/변위 로 바뀜.

6-3. 페이지 교체와 프레임 할당

  • 요구 페이징 (demand paging)
    • 프로세스를 메모리에 적재할 때, 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법.
    • 요구 페이징의 기본적인 흐름
      1. CPU가 특정 페이지에 접근하는 명렁어를 실행.
      2. 유효비트가 1인 경우, CPU는 페이지가 적재된 프레임에 접근.
      3. 유효비트가 0인 경우, 페이지 폴트 발생. 페이지 폴트 처리 루틴은 해당 페이지로 메모리에 적재하고, 유효 비트를 1로 설정.
      4. 1을 반복.
    • 순수 요구 페이징 (pure demand paging) 아무런 페이지도 메모리에 적재하지 않은 채, 무작정 실행하여 페이지 폴트가 계속 발생하다가, 적재가 된 이후에는 점점 페이지 폴트 발생 빈도가 떨어짐.

  • 페이지 교체
    • 페이지 폴트가 적게 일어나는 페이지 교체 알고리즘이 효율적.
    • 페이지 참조열 (page reference string)
      • 연속된 페이지를 생략한 CPU가 참조한 페이지의 참조열.
      • 중복된 페이지를 참조하는 것은 페이지 폴트를 발생시키지 않으므로 제외.
    • FIFO 페이지 교체 알고리즘 (FIFO Page Replacement Algorithm)
      • 가장 먼저 참조한 페이지부터 쫓아내는 방식
    • 2차 기회 페이지 교체 알고리즘 (second chance page replacement algorithm)
      • 가장 오래 머물렀던 페이지의 참조 비트가 1인 경우, 참조 비트를 0으로 만들고 참조열의 맨 뒤로 보냄 (=적재 시간을 현재 시간으로 설정)
      • 만약 가장 오래 머물렀던 페이지의 참조 비트가 0이라면, 사용도 안하면서 가장 오래 머물렀던 페이지가 되므로 쫓아낸다.
    • 최적 페이지 교체 알고리즘
      • 앞으로 오랫동안 사용되지 않을 페이지를 내보내는 알고리즘.
      • 이론상 페이지 폴트 발생빈도가 가장 낮지만, 결과론이지 현실에서 구현하기 쉽지 않아 기준점으로 사용하는 경우가 많음.
    • LRU 페이지 교체 알고리즘 (Least Recently Used Page Replacement Algorithm)
      • 오랫동안 사용되지 ‘않은’ 페이지를 교체하는 알고리즘.
    • 그 외에도 다양한 페이지 교체 알고리즘이 존재하므로, 암기보다는 이해 위주로 학습.

  • 스래싱(thrashing)
    • 프로세스가 실제 실행되는 시간보다, 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제.
    • 멀티프로그래밍의 정도 (degree of multiprogramming)
      • 메모리에서 동시에 실행되는 프로세스의 수
    • 스레싱의 근본원인 : 각 프로세스가 필요로 하는 최소한의 프로세스 수가 보장되지 않음.

  • 프레임 할당 방식
    • 균등 할당 : 각 프로세스 수에 같은 수의 프레임을 할당.
    • 비례 할당 : 프로세스별 크기에 비례하여 프레임을 할당.
    • 균등 할당과 비례할당 방식은 프로세스 실행과정을 고려하지 않고, 단순히 프로세스의 크기와 물리 메모리의 크기만을 고려한 방식이라는 점에서 정적 할당 방식이라고도 함.
    • 작업 집합 모델(working set model)
      • 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여, 빈번한 페이지 교체를 방지.
    • 페이지 폴트 빈도(Page-Fault Frequency)를 기반으로 한 프레임 할당 방식
      • 페이지 폴트율이 너무 높으면 프로세스가 너무 적은 프레임을 갖고 있다고 인식하여 프레임을 더 할당하고, 반대의 경우도 마찬가지로 적용하는 방식.
      • 기준이 되는 적정 페이지 폴트율의 상한선과 하한성을 정한다.

참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)

'CS지식 > 운영체제' 카테고리의 다른 글

운영체제 Ch.7 파일 시스템  (1) 2023.09.05
운영체제 Ch.5 교착  (0) 2023.01.30
운영체제 Ch.4 동기화  (0) 2023.01.29
운영체제 Ch.3 CPU 스케쥴링  (0) 2023.01.28
운영체제 Ch.2 프로세스와 스레드  (0) 2023.01.20