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번지 부근을 또 읽을 확률이 높다.
즉, 보통 그 인접한 구역을 읽게 된다.
유사한 코드가 함께 근처에 블록단위로 있기 때문이다.
한 번 페이지 부재가 생겨서 읽어 오면 그 영역을 계속 읽기 때문에 페이지 부재가 다시 일어나지 않게 된다.
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기