운영체제 - 가상메모리

2020-10-28

OS를 공부하면서 정리를 한 내용들 입니다.

가상메모리 관리 기법의 기초에 대해서 정리합니다.


지난 메모리 관리 챕터는 디스크에서 올리는 작업에는 운영체제가 개입을하지만

사실 운영체제의 역할이 아니고 하드웨어의 역할부분이었습니다.

먼저 Demand Paging이라는 용어가 나옵니다.

Demand Paging

실제로 필요할 때(요청이 있으면) Page를 메모리에 올리는 것을 말합니다.

  • I/O 양의 감소 - 필요한 것만 메모리에 올리기 때문
  • Memory 사용량 감소 - 상동
  • 빠른 응답시간 - 멀티 프로그래밍 환경에서 더 많은 프로그램을 제공
  • 더 많은 사용자 수용 - 멀티 프로그래밍 환경에서 더 많은 사용자를 수용

Valid / Invaild bit의 사용

  • invalid의 의미 - 사용되지 않는 주소 영역의 경우, 페이지가 물리적 메모리에 없는 경우
  • 처음에는 모든 page entry가 invalid로 초기화
  • address traslation 시에 invalid bit이 set되어 있으면 -> “Page Fault”

page fault = 요청한 페이지가 메모리에 없는 경우

Page Fault

  • invalid page를 접근하면 MMU(주소변환을 해주는 하드웨어)가 trap을 발생시킵니다.(paga fault trap)
  • Kernel mode로 들어가서 page fault handler가 invoke(실행) 됩니다.
  • 다음과 같은 순서로 page fault를 처리합니다.
    1. invalid reference(eg.bad address, protection violation)->abort process
    2. Get an empty page frame(없으면 뺏어옴. replace)
    3. 해당 페이지를 disk에서 memory로 읽어옴.
      1. disk I/O가 끝나기까지 이 프로세스는 CPU를 preempt 당함(block)
      2. disk read가 끝나면 page table에 entry 기록, valid/invalid bit = “valid”
      3. ready queue에 process를 insert -> dispatch later
    4. 이 프로세스가 CPU를 잡고 다시 running
    5. 아까 중단되었던 instruction을 재개

Performance of Demand Paging

여기서 이 Page fault가 났을 때 disk에 접근 하는 것은 대단히 오래걸리는 작업입니다.

Page Fault Rate(페이지 폴트율) = ( 0<= p <=1.0 )

if p = 0, page fault는 발생하지 않는다.

if p = 1, 매번 참조시마다 발생합니다.

Free frame이 없는 경우

빈 페이지가 없는 경우에는 무언가를 쫓아내야합니다.

이것을 page replacement라고 합니다.

  • 어떤 frame을 빼앗아올지 결정해야함
  • 곧바로 사용되지 않을 page를 쫓아내는 것이 좋음
  • 동일한 페이지가 여러번 메모리에서 쫓겨났다가 다시 들어올 수 있음.

Replacement Algorithm

이 알고리즘은 가능하면 페이지 폴트가 나지 않고,

메모리에서 직접 처리할 수 있게 하면 좋습니다.

또 쫓아 냈더니 바로 참조가 되어서 시간을 많이 뺏기게 되지 않도록

알고리즘을 구성해야합니다.

따라서 Page Fault Rate(페이지 폴트율)을 최소화 하는것이 목표입니다.

Optimal Algorithm

알고리즘 중에서 가장 좋은 것이 Optimal Algorithm입니다.

  • MIN(OPT) : 가장 먼 미래에 참조되는 page를 replace

Optimal Algorithm은 미래에 참조될 페이지들을

이미 알고있다는 가정을 합니다.

실제시스템에서는 사용할 수 없지만 그런 점에서 Offline Algorithm이라고도 불립니다.

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의