가상메모리와 요구페이징
Programming/운영체제

가상메모리와 요구페이징

1. 가상 메모리(Virtual Memory)

  가상메모리를 이용해 물리 메모리 크기의 한계를 극복할 수 있다. 예를 들어 100MB의 메인 메모리에서 200MB 크기의 프로세스를 실행하는 것을 불가능하다. 그러나 하드디스크의 일부를 메모리로 사용함으로써 물리 메모리보다 큰 프로세스를 실행할 수 있다.

 

How?

  - 프로세스 이미지를 모두 메모리에 올릴 필요는 없다.

  - 현재 실행에 필요한 부분만 메모리에 올린다!

  - 오류 처리 제외, 배열 일부 제외, 워드프로세스에서 정렬, 표 기능 제외 등등

    => 동적 적재(dynamic loading)과 비슷한 개념

   

2. 요구 페이징(Demand Paging)

  프로세스 이미지는 backing store에 저장한다. 프로세스는 페이지의 집합이므로 지금 필요한 페이지만 메모리에 적재한다.(load)

즉, 요구되는(demand) 페이지만 메모리 올린다.

 

요구 페이징을 하기 위해서는 하드웨어의 지원이 필요하다.

  - valid 비트 추가된 페이지 테이블 : 1은 적재완료된 페이지를, 0은 아직 적재되지 않은 페이지를 의미한다.

  - backing store(=swap device)

요구페이징을 위해선 Page table에 valid bit가 추가되어야 한다.

3. 페이지 결함(Page Fault)

  접근하려는 페이지가 메모리에 없는 것(=invalid)을 페이지 결함이라고 한다. 페이지 결함 시 Backing store에서 해당 페이지를 메인메모리로 가져와야 한다.

 

1) pure demand paging vs prepaging

pure demand paging은 처음에 정말 필요한 페이지만 메모리에 들고오는 방법을 말한다.

차지하는 메모리가 줄어든다는 장점이 있지만, 시작부터 페이지결함이 많이 발생해 속도가 느려진다는 단점이 있다.

 

이와 반대로, prepaging은 지금 당장 필요하진 않지만 필요하다고 생각되는 페이지를 미리 들고오는 방법을 말한다.

차지하는 메모리는 조금 늘어나지만, 속도가 빠르다는 장점이 있다.

 

2) swapping vs demand paging

공통점 : swapping과 demand paging 모두 backing store와 메인메모리를 왔다갔다한다.

차이점 : swapping의 경우 프로세스 전체가 backing store에서 이동하지만, Demand paging의 경우 프로세스의 일부인 페이지가 backing store에서 이동한다.

   

4. 유효 접근 시간

1) 유효 접근 시간

  p: 페이지 결함이 일어날 확률(=page fault rate)

페이지 결함이 일어날 확률이 높아질수록 CPU가 해당 페이지를 읽는 시간이 현저히 증가한다.

 

2) 지역성의 원리

  메모리 접근은 시간적, 공간적 지역성을 가진다.

시간적 지역성을 갖는다는 말은 한번 읽었던 페이지는 곧 다시 여러번 읽게된다는 의미이다. 왜냐하면 프로그램은 보통 반복문으로 이루어져 있기 때문이다.

공간적 지역성을 갖는다는 말은 읽었던 페이지 다음에는 인접한 주소를 읽는다는 의미이다. 예를 들어, 1,000번지 주소를 읽었다면 다음에는 1,004번지 또는 1,008번지처럼 page size 내의 다른 주소를 읽게 된다.

=> 지역성의 원리 덕분에 실제 페이지 부재가 일어날 확률은 매우 낮다.

 

페이지 부재가 일어날 확률을 줄이는 방법으로 SSD 또는 느린 저가 DRAM을 swap device로 사용할 수도 있다. HDD의 경우 접근 시간이 너무 길기 때문에 보통 swap device로 부적합하다.