310 likes | 629 Views
Ch.10 가상 메모리. 27-Sep-14. 배경 요구 페이징 페이지 교체 프레임의 할당 스레싱. 1. 배경. 현재 참조되는 부분은 반드시 메모리에 있어야 전체 프로세스를 메모리로 너무 큰 메모리 공간 필요 Overlay or dynamic loading : 프로그래밍하기 어려움 프로그램의 모든 부분이 동시에 요구되지 않을 수 있다 . 프로그램은 메모리 크기에 제약받지 않음 일부분만 로드되므로 다중프로그래밍이 쉽다 이용률과 처리율은 높아지고 응답시간은 늘어나지 않는다 .
E N D
Ch.10 가상 메모리 27-Sep-14
배경 • 요구 페이징 • 페이지 교체 • 프레임의 할당 • 스레싱 Operating System Ch.10 V.M.
1. 배경 • 현재 참조되는 부분은 반드시 메모리에 있어야 • 전체 프로세스를 메모리로 너무 큰 메모리 공간 필요 • Overlay or dynamic loading : 프로그래밍하기 어려움 • 프로그램의 모든 부분이 동시에 요구되지 않을 수 있다. • 프로그램은 메모리 크기에 제약받지 않음 • 일부분만 로드되므로 다중프로그래밍이 쉽다 이용률과 처리율은 높아지고 응답시간은 늘어나지 않는다. • 스왑 횟수가 줄어듦 빠른 실행 Operating System Ch.10 V.M.
10.2 요구 페이징 swap out Program A 3 1 2 0 6 4 5 7 10 8 9 11 Program B 12 13 14 15 swap in 16 17 18 19 21 20 22 23 Main memory <디스크 공간의 페이지화된 메모리의 이동> Operating System Ch.10 V.M.
2. 요구 페이징(Demand Paging) • 기본 개념 • 스와핑과 유사 • 스와핑은 프로세스가 실행될 때 전체 프로세스가 메모리로 • 요구 페이징은 페이지에 대한 요청이 발생하면 메모리로 • 스와퍼는 프로세스 전체를, 페이저는 각 페이지를 로드 • Lazy swapper • 필요한 페이지만 메모리로 로드 Operating System Ch.10 V.M.
10.2 Demand Paging valid-invalid bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 A frame B A 0 1 2 3 4 5 6 7 C 4 v i D C 6 v A B E i C D E F i F 9 v G F i H i logical memory Page table Physical memory <일부페이지가 주기억장치에 존재하지 않을 때의 페이지 테이블 > Operating System Ch.10 V.M.
10.2 요구 페이징 • 페이지부재 처리과정 • 프로세스에 대한 내부 테이블을 검사, 메모리 참조가 유효인지 무효인지 판별 • 프로세스가 접근할 수 없는 페이지라면 프로세스는 중단. 접근할 수 있으나 메모리에 없다면 로딩 필요 • 자유 프레임을 찾는다. • 새로 할당된 프레임으로 이 페이지를 읽을것을 요구 • 디스크 읽기가 끝난 후 페이지테이블 갱신, 내부테이블 수정 • 트랩에 의해 중단되었던 명령어 다시 실행 Operating System Ch.10 V.M.
10.2 요구 페이징 3 page is on backing store 2 운영체제 1 trap reference load M i 6 Page table restart instruction free frame 5 4 reset page table bring in missing page Physical memory <페이지 부재 처리과정> Operating System Ch.10 V.M.
2. 요구 페이징 • 성능 • 요구 페이징은 컴퓨터시스템의 성능에 중요한 영향을 미친다. • ma : 메모리 접근 시간 ( 10 ~ 200 nSec ) • p : 페이지 부재 확률 ( 0 p 1 ) • 실제접근시간 = ( 1 - p ) × ma + p × page fault time. Operating System Ch.10 V.M.
2. 요구 페이징 • 예) • 메모리 접근 시간 : 100 ns • 페이지 부재 시간 : 25 ms • 실제 접근 시간 = ( 1 - p ) × ( 100ns ) + p ( 25ms ) = ( 1 - p ) × 100 + p × 25,000,000 = 100 + 24,999,900 × p ∴ 따라서 메모리 접근시간은 페이지 부재 비율에 비례. Operating System Ch.10 V.M.
2. 요구 페이징 • 페이지 부재 처리 순서 • 운영체제에 트랩 요청 • PCB 저장 • 인터럽트 원인이 페이지 부재임을 판별 • 유효한 페이지참조 검사, 디스크의 페이지 위치 결정 • 디스크로부터 메모리로 읽음 : • 읽기 차례가 될 때까지 ready Q에서 기다림 • 디스크에서 seek time과 latency time경과 • 메모리내 지정된 프레임으로 디스크 읽기를 시작 • 기다리는 동안 CPU는 다른 사용자에게 할당 Operating System Ch.10 V.M.
2. 요구 페이징 • 디스크가 읽은 후 인터럽트 발생( I/O Completed ). • 다른 프로세스의 PCB 저장 ( if step 6 executed ). • Disk interrupt임을 판독 • 새 페이지가 메모리로 로딩된 것을 페이지 테이블에 기록 • Wait for the CPU • PCB를 복원시킨 후 중단된 명령어를 다시 실행 Operating System Ch.10 V.M.
3. 페이지 교체 16 14 12 10 8 6 4 2 number of page faults 1 2 3 4 5 6 number of frames <Graph of page faults versus the number of frames> Operating System Ch.10 V.M.
3. 페이지 교체 FIFO • FIFO Algorithm • 페이지 참조 순서 : 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 • 페이지프레임 갯수 : 3 reference string 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 4 4 4 0 0 0 7 7 7 0 0 0 3 3 3 2 2 2 1 1 1 0 0 1 1 1 0 0 0 3 3 3 2 2 2 1 page frames < FIFO 페이지 교체 알고리즘> Operating System Ch.10 V.M.
3. 페이지 교체 FIFO • Belady’s anomaly(모순) : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • 프레임의 개수가 3일 경우와 4일 경우의 비교 16 14 12 10 8 6 4 2 페이지 부재 수 1 2 3 4 5 6 7 number of frames < FIFO 알고리즘을 적용했을 때의 페이지 부재 그래프 > Operating System Ch.10 V.M.
7 7 7 2 2 2 2 2 7 0 0 0 0 4 0 0 0 1 1 3 3 3 1 1 3. 페이지 교체 Optimal • 최적 페이지 교체 • 가장 오랫동안 사용되지 않을 페이지를 교체 • 실제 구현 불가능 • 앞으로 메모리를 어떻게 참조할 것인지를 알 수 없기 때문 reference string 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 page frames < 최적 페이지교체 알고리즘 > Operating System Ch.10 V.M.
3. 페이지 교체 LRU • LRU (Least Recently Used)알고리즘 • 가장 오랫동안 사용되지 않을 페이지를 교체 reference string 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 4 4 4 0 1 1 1 0 0 0 0 0 0 3 3 3 0 0 1 1 3 3 2 2 2 2 2 7 page frames < LRU 페이지 교체 알고리즘 > Operating System Ch.10 V.M.
3. 페이지 교체 LRU • 구현 방법 • 카운터(Counters) • 각 항목마다 사용된 시간 필드를 가짐 • CPU는 시계나 카운터를 가지고 페이지 참조 때마다 각 페이지에 대한 참조시간을 기록 • 스택(Stack) • 페이지가 참조될 때마다 스택의 top에 위치시킴 • bottom이 LRU 페이지 reference string 4 7 0 7 1 0 1 2 1 2 7 1 2 2 7 a b 1 2 0 1 7 0 4 4 stack before a stack after b < 최근의 페이지 참조를 기록하기 위한 스택의 사용> Operating System Ch.10 V.M.
3. 페이지 교체 LRU 근사 4. LRU Approximation Algorithms • LRU 지원하기위한 하드웨어 거의 없음. • 대신 많은 시스템들이 참조 비트(reference bit) 형태 지원 • 페이지가 참조될 때마다 해당 페이지의 참조 비트를 설정 • 참조비트는 0으로 초기화 • 실행되면서 참조되는 페이지는 1로 설정 • 일정시간 경과 후 사용된 페이지와 사용되지 않은 페이지 알 수 있음. Operating System Ch.10 V.M.
3. 페이지 교체 LRU 근사 • 부가적 참조비트 • 일정한 간격마다 타이머 인터럽트를 발생, 한비트씩 이동시킨 후 참조비트를 추가 • 2차기회 알고리즘 페이지 참조비트 0 0 0 0 0 1 0 1 0 0 Operating System Ch.10 V.M.
3. 페이지 교체 카운터 기반 5. Counting Algorithms : counter of page • LFU 알고리즘 (Least Frequently Used) • 참조횟수가 가장 작은 페이지를 교체 • 집중적으로 많이 사용된 후 다시 사용되지 않는다면? • MFU algorithm (Most Frequently Used) • 참조횟수가 가장 작은 페이지를 교체 • 작은 참조횟수가 최근의 것이며 앞으로 사용될 것 Operating System Ch.10 V.M.
3. 페이지 교체 페이지 버퍼링 6. 페이지 버퍼링 알고리즘 • 시스템이 가용 프레임 여러 개를 풀로 보유 • 페이지 A가 부재, 페이지B가 희생될 것으로 지목되면 A는 B가 디스크에 쓰기를 기다리지 않고 곧바로 풀중 한 프레임으로 읽어옴. 희생될 페이지B는 이와 동시에 디스크에 쓰여짐. • 변경된 페이지의 리스트를 유지 • 디스크가 idle할 때 변경된 페이지를 차례로 디스크에 쓴 후, 변경비트를 0으로 설정 Operating System Ch.10 V.M.
4. 프레임의 할당 • # of Frames • 프로세스에 할당되는 프레임의 개수가 줄어들면 • 페이지 부재율은 급격히 증가, 실행이 늦어짐 • 최소 명령어 프레임 수는 명령어 집합 구조에 의해 결정 • 하나의 명령이 끝나기 전에 페이지부재 발생하면 이 명령은 처음부터 다시 실행되어야 함 • 따라서 명령어가 참조하는 모든 페이지는 동시에 메모리에 로드되어야 한다. Operating System Ch.10 V.M.
4. 프레임 할당 • 할당 알고리즘 : • 균등 할당 : m / n frame • ex) allocate 93 frames to 5 processes ( 18 frames to one ) 3 frames - free frame buffer pool • 비례 할당 : • 프로세스 크기에 비례하여 할당 • S = S i ( Virtual memory size of P i ) • a i = S i / S x m • ex) allocate 62 frames to two processes, 10 page, 127 page 10 / 137 x 62 ≒ 4 127 / 137 x 62 ≒ 57 Operating System Ch.10 V.M.
thrashing CPU utilization Degree of multiprogramming < Thrashing> 5. 쓰레싱 • 원인 • CPU 이용률이 너무 낮으면 새로운 프로세스를 시스템에 추가하여 다중 프로그래밍 정도를 높인다. • 모든 프로세스가 메모리를 조금씩 희생 CPU 이용률이 더 떨어짐 다중프로그래밍 정도를 높임 … Operating System Ch.10 V.M.
5. 쓰레싱 • 해결책 • 지역 / 우선순위 교환 알고리즘을 사용 • 각 프로세스가 필요로 하는 최소한의 프레임 수 보장 Working set • 지역성(Locality) • 프로세스가 실행될 때 특정 지역에서만 메모리를 집중적으로 참조 • 한 프로그램은 여러 개의 지역으로 구성 • time locality • reference part have possibility of reference continuous in the near future ex) Looping, subroutine, stack, counting • space locality • if some part is referred then the near parts have possibility of reference continuous ex) array, sequence, code execution, related variable is declared near Operating System Ch.10 V.M.
5. 쓰레싱 • 작업 집합 • 쓰레싱 예방을 위하여 • 한 프로세스가 최근 번 페이지를 참조했다면 그 안에 들어있는 서로다른 페이지의 집합을 작업집합이라 한다. • working set window : ex) page reference in reference … 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 4 4 3 4 3 4 4 4 1 3 2 … if = 10 , then WS(t1)= { 1, 2, 5, 6, 7 } WS(t2) = { 3, 4 } • define for working set window • value of : large , small • large : 작업 집합이 전체 프로그램이 됨 • small : 작업집합이 페이지가 되어 페이지 부재가 빈번하게 발생 t2 t1 Operating System Ch.10 V.M.
9.7 Thrashing • 각 프로세스의 작업집합의 크기 : WSSi • 사용가능한 프레임 수 : m • 전체 요구량 : D D = WSSi • if D > m • Thrashing 발생: to prevent the thrashing by control of the number of multiprogramming • Operating the Working Set model • O.S monitoring each WS of Pi -> allocate the frame that matched the size of each Pi • if extra frame is existed, then other process is working • if WSSi > total number of effective frame , then O.S select the process for stopping prevent thrashing with multiprogramming Operating System Ch.10 V.M.
9.7 Thrashing • Page fault frequency • For Working Set model • if we know Working Set , then we do the prepaging usefully • define the upper bound and lower bound of page fault rate Upper bound if upper bound exceed then allocate more number of frame Page fault rate Lower bound if lower bound below then withdraw frame by controlling page fault rate prevent thrashing Number of frame < Page fault frequency> Operating System Ch.10 V.M.