2017년 5월 17일 수요일

15 가상 메모리2



2-1) 페이지 부재(Page Fault)
  * 페이지 부재가 발생하면 해당 페이지를 HDD (혹은 Backing Store)에서 찾아서 메모리에 적재해야 한다.
  (1) 페이지 테이블 참조했을 때 페이지 부재가 발생하면
  (2) 인터럽트(trap)이 걸려서 O/S로 전달
  (3) O/S가 HDD에서 해당 페이지 찾음
  (4) O/S가 해당 페이지를 메모리의 빈 프레임에 적재함
  (5) 페이지 테이블 갱신 (Frame Number 추가, i => v)
  (6) 페이지 테이블 재참조



  * 요구 페이징은 메모리를 절약하는 장점이 있지만 페이지 폴트가 발생 함으로써 프로세스 처리 시간이 늦어지게 된다.
    HDD에서 페이지를 읽어오는 시간이 오래 걸리게 된다.


2-2) 유효 접근 시간(Effective Access Time)
  * 프로세스 전체 집합(모든 페이지)가 메모리에 적재되어져 있지 않고 일부만 적재되어져 있기 때문에 페이지 폴트가 일어날 때와 일어나지 않을 때가 있다.
  * 페이지 폴트의 빈도에 따라 메모리에 접근하는 접근 시간이 달라지게 된다.
  * 이는 페이지 폴트의 발생 확률과 밀접한 관련이 있으며 그 시간을 유료 접근 시간이라고 한다.
    Teff (유요 접근 시간) = (1-P)Tm + PTp
    P : 페이지 폴트 발생률(page fault rate)
    Tm : 메모리를 읽는데 걸린 시간
    Tp : 페이지 폴트가 발생하여 이를 처리하는데 걸리는 시간

    예제)
    Tm = 200 nsec
    Tp = 8 msec = 8,000,000 nsec
    Teff = (1 - P)200 + P8,000,000 = 200 + 7,999,800P
    만약 P = 1/1,000 이면 Teff = 8.2 usec (Tm에 비해 약40배 느려짐)
    만약 P = 1/399,990 이면 Teff = 220 nsec (Tm에 비해 약10% 느려짐)

  * 페이지 폴트가 너무 자주 일어나면 처리 속도가 느려지기 때문
   : (1) 페이지 폴트를 최소화 하도록 한다.
   : (2) backing store로 플래시 메모리(SSD)와 같은 속도가 빠른 보조기억 장치를 이용한다.

  * 지역성(Locality)
   : 시간적 지역성
      한 번 읽으면 곧 또 읽을 확률이 많다. 반복문과 같은 코드가 많이 있기 때문이다.
     한번 페이지 부재가 생겨서 가져 오면 그 시간 이후에는 자주 일어나지 않게 된다.

   : 공간적 지역성
     예를들어 지금 1,000번지를 읽고 있으면 1,000번지 부근을 또 읽을 확률이 높다.
     즉, 보통 그 인접한 구역을 읽게 된다.
     유사한 코드가 함께 근처에 블록단위로 있기 때문이다.
     한 번 페이지 부재가 생겨서 읽어 오면 그 영역을 계속 읽기 때문에 페이지 부재가 다시 일어나지 않게 된다.


댓글 없음:

댓글 쓰기