Transcript Document
가상 기억 장치(Virtual Memory) • 지금까지(9장)는 한 프로세스 전부가 메모리에 적재되어야 실행 가상 기억 장치 : 프로세스가 전부 메모리에 없어도 실행 배경(Background) • 프로그램의 일부만 메모리에 적재하여 실행하는 장점 1) 프로그램 크기가 실제 메모리 크기에 제한 받지 않음 2) 멀티 프로그래밍 정도를 높여 CPU 이용율, 처리율 높임 3) swap I/O 양이 적어 각 프로그램이 빠르게 실행됨 • virtual memory » 작은 physical memory로 매우 큰 가상 기억 장치(user logical memory) 제공 » user logical memory /= physical memory » overlay를 사라지게 함 » 주로 요구 페이징(demand paging)으로 구현됨(OS/2 : demand segmentation) » p299 그림 10.1 참조 2000 운영체제 10.1 인천대학교 컴퓨터공학과 성미영 요구 페이징(Demand Paging) • • • • • • • swapping을 하는 paging system과 유사 lazy swapper처럼 동작하는 pager » 꼭 필요한 page만 메모리로 가져오는 pager » (cf.) swapper : 전체 프로세스에 대해 동작 page가 » memory에 : valid/invalid bit로 valid 표시 » disk에 : valid/invalid bit로 invalid 표시 memory에 없는 page참조 -> page fault trap to OS(p302 그림 10.4 참조) 순수 요구 페이징(pure demand paging) » 아무 page도 메모리에 가져오지 않은 채 실행 H/W 지원 ① page table : valid/invalid bit 포함 ② secondary memory : swap space 또는 backing store S/W 지원 » 명령어 인출(fetch)시 페이지 부재 발생하면 그 명령어 다시 인출하여 재시작 • 3-주소 명령어: 명령어 ADD 인출, A 인출, B 인출, A와 B를 더함, 합을 C에 저장 » 한 명령어가 여러 기억장소를 변경시킬 때 페이지 부재 발생하면 재시작 어려움 • (예) IBM 360/370 MVC(move characters), PDP11의 MOV (R2)+, -(R3) • 적절한 S/W 적 지원 필요, undo 등 2000 운영체제 10.2 인천대학교 컴퓨터공학과 성미영 Valid-Invalid Bit • • • With each page table entry a valid–invalid bit is associated (1 in-memory, 0 not-in-memory) Initially valid–invalid but is set to 0 on all entries. Example of a page table snapshot. Frame # valid-invalid bit 1 1 1 1 0 0 0 • page table During address translation, if valid–invalid bit in page table entry is 0 page fault. 2000 운영체제 10.3 인천대학교 컴퓨터공학과 성미영 페이지 부재 발생 예 • IBM 360/370 MVC • MOV (R2)+, -(R3) 미리 블록의 양끝 조사하여 페이지 확보 명령 재시작 시 R2, R3 값은? destination Register에 R2, R3 값 저장 1 source 2(fault) 2000 운영체제 10.4 인천대학교 컴퓨터공학과 성미영 요구 페이징의 성능(Performance of Demand Paging) • • 유효 접근 시간 = (1-p) x ma(memory access time) + p x page fault time » 페이지 부재 서비스 시간 1. 페이지 부재 인터럽트 처리 : 1~100ms 2. 페이지 안으로 읽어 들임 : 24ms (디스크 동작) 3. 프로세스 재시작 : 1~100ms » 디스크 동작 • 회전지연 시간(latency time) : 8ms - sector에 • 탐구 시간(seek time) : 15ms - track에 • 전송 시간(transfer time) : 1ms (EID type: Max. External Transfer Rate=100Mbytes/sec, Spindle Speed=7200rpm) » 기억장치 접근 시간이 100ns 일 때의 유효 접근 시간 • = (1-p) x (100ns) + p x (25 milliseconds) = (1-p) x 100 + p x 25,000,000 • = 100 + 24,999,900 x p » 10% 이내로 느려지게 하려면 • 110 > 100 + 25,000,000 x p • 10 > 25,000,000 x p • p < 0.0000004 = 1/2,500,000 보다 적게 해야 함 swap space I/O : file system I/O 보다 빠름(큰 block들의 contiguous I/O 이므로) » from the swap space (처음 시작할 때 swap space로 file copy) » from the file system : BSD Unix • ① swap-in only(not modified case, 예 binary files) • ② swap-out in swap space 2000 운영체제 10.5 인천대학교 컴퓨터공학과 성미영 페이지 대치(Page Replacement) • over-allocation 일 때(page fault가 일어났고 free-frame 이 없을 때, p309 그림 10.5)가능한 조치 1. 그 프로세스 종료 2. 한 프로세스를 swap out : multiprogramming의 정도를 낮춤 3. 페이지 대치(page replacement) : p310 그림 10.6 • 희생될 frame은 swap space로 보내고 그 자리에 page fault 였던 page를 가져옴 • 2 page transfers(one out & one in) • page-fault service time이 2배 • modify(dirty) bit으로 보완 • 요구 페이징 구현 위해 필요한 알고리즘들 » 프레임 할당 알고리즘 : 각 프로세스에 몇 개의 frame할당? » 페이지 대치 알고리즘 : 어떤 frame을 대치(희생자는)? 2000 운영체제 10.6 인천대학교 컴퓨터공학과 성미영 페이지 교체의 필요성 i 2000 운영체제 3 v 6 i v 10.7 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • • 페이지 부재율(page-fault rate)이 가장 낮도록 참조열(reference string)로 알고리즘 평가 » 주소/페이지 size# • random number로 • 특정 프로세스 추적 • 참조열 예 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. • 일반적 : 한 프로세스에 할당된 frame 수가 많아지면 page-fault 수는 적어짐 » p312 그림 10.7 참조 2000 운영체제 10.8 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • 선입 선출(FIFO) 알고리즘 » 가장 오래된 페이지 대치 » FIFO queue사용 » 구현은 쉬우나 » 성능이 좋지 않음(교재 10.3.2 예제 15회) » Belady의 변이(Belady’s anomaly) 있음 • 할당된 frame수 증가해도 page-fault수가 증가하는 현상 : p314 그림 10.9 참조 2000 운영체제 10.9 인천대학교 컴퓨터공학과 성미영 First-In-First-Out (FIFO) Algorithm • • • • Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 frames (3 pages can be in memory at a time per process) 1 1 4 5 2 2 1 3 3 3 2 4 1 1 5 4 2 2 1 5 3 3 2 4 4 3 9 page faults 4 frames 10 page faults FIFO Replacement – Belady’s Anomaly » more frames less page faults 2000 운영체제 10.10 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • 최적(Optimal Algorithm) 알고리즘 » 가장 오랫동안 사용되지 않을 페이지 대치 » Belady의 변이 없음 » 최소의 page-fault rate(교제 10.3.3 예제 9회) » 실제 구현은 어렵지만 (미래 지식필요 : looking forward) » 성능이 좋음(9회) 2000 운영체제 10.11 인천대학교 컴퓨터공학과 성미영 Optimal Algorithm • • Replace page that will not be used for longest period of time. 4 frames example 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 4 2 6 page faults 3 4 • • 5 How do you know this? Used for measuring how well your algorithm performs. 2000 운영체제 10.12 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • 최근 최소 사용(LRU; Least Recently Used) 알고리즘 » replace the page that has not been used for the longest period of time » OPT에의 접근(최근의 과거를 미래에서의 근사치로 이용) » looking backward OPT » 성능이 좋아 자주 이용됨(교재 10.3.4 예제 page-fault rate 12회) » 구현을 위해 H/W지원 반드시 필요 1) 계수기 » 논리 클록 또는 계수기 이용 » page table에 추가한 time-of-use field 값이 최소인 것을 대치 2) 스택 » 페이지 번호들의 스택 유지(doubly linked list로) : p317 그림 10.12 • top : 최근 사용된 page • bottom : LRU page • Belady의 변이 없음 • stack algorithm : memory에는 n 개의 최근 사용된 페이지 2000 운영체제 10.13 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • LRU 근접( LRU Approximation) 알고리즘 ① 참조 비트 추가(Additional-reference-Bits) 알고리즘: 8-bit shift registers 이용하여 참조되면 최상위 비트에 세트하고 매 타이머 인터럽트 마다 한 비트씩 shift-right t0: p0과 p2 참조 p0의 참조비트 10000000 p1의 참조비트 00000000 p2의 참조비트 10000000 t1: p1과 p2 참조 p0의 참조비트 01000000 p1의 참조비트 10000000 p2의 참조비트 11000000 ② 2차 기회(Second Chance) 알고리즘 : p319 Fig.10.13 참조 프레임에 들어 있는 페이지들을 원형큐로 유지하면서 참조 비트가 0인 페이지를 탐색하되 참조 비트 값이 1인 페이지들은 0으로 바꾸면서 2차 기회 부여 ③ 개선된 2차 기회(Enhanced Second-chance) 알고리즘 (0,0) 사용되지도 변경되지도 않은 경우 (0,1) 사용되지는 않았지만 변경된 경우 (변경된 후 2차 기회를 받은 경우) (1,0) 사용되었으나 변경되는 않은 경우 (1,1) 사용되고 변경된 경우 2000 운영체제 10.14 인천대학교 컴퓨터공학과 성미영 Least Recently Used (LRU) Algorithm • Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 5 2 • 3 5 4 3 4 Counter implementation » Every page entry has a counter; every time page is referenced through this entry, copy the clock into the counter. » When a page needs to be changed, look at the counters to determine which are to change. 2000 운영체제 10.15 인천대학교 컴퓨터공학과 성미영 페이지 대치 알고리즘(Page-Replacement Algorithms) • 계수(Counting) 알고리즘 » LFU(Least Frequently Used) 알고리즘 • 계수 값이 최소인 페이지 대치 » MFU(Most Frequently Used) 알고리즘 • 계수 값이 최대인 페이지 대치 • 페이지 버퍼링(Page Buffering) 알고리즘 » 희생될 프레임을 디스크에 기록하기 전에 새 페이지 읽고 » 희생될 프레임은 빈 프레임의 pool에 더함 » 확장 • 변경된 페이지들의 리스트 유지 » modify bit set 된 페이지는 idle time에 디스크에 기록하고 modify bit reset • pool 내용 기억하고 있다가 (VAX/VMS) » 찾는 페이지가 pool에 있으면 바로 이용 » 없으면 빈 프레임에 읽어 들임 2000 운영체제 10.16 인천대학교 컴퓨터공학과 성미영 프레임의 할당(Allocation of Frames) • • single-user : free-frame이 없으면 페이지 대치 : 간단 (multi-user) multiprogramming : 여러 프로세스가 메모리에 1. 최소 프레임수 (Minimum Number of Frames) » 할당된 프레임 수가 감소하면 page-fault율이 증가 » instruction-set 구조 • 직접 1 주소 형식 : 명령내용, 주소의 내용 : 2 frames • 간접 1 주소 형식 : 명령, 주소의 내용이 가르키는 곳의 내용 : 3 frames 2. 할당 알고리즘(Allocation Algorithms) » 균일할당(equal allocation) : m/n (m : 프레임 수, n : 프로세스 수) » 비례할당(proportional allocation) ① 크기에 비례 » 최소 프레임수 < ai = Si/S * m (Si : 프로세스 크기, S = Si), ai < m ② 우선순위에 비례 ③ 크기 + 우선순위에 비례 3. 전역 대 지역 할당(Global Versus Local Allocation) » 페이지 대치 될 때 • 전역대치(global replacement) : 대치할 Frame을 전체에서 선택 » (예) 자신과 우선순위 더 낮은 process의 것 중에서 선택: 프레임 개수 가변 • 지역대치(local replacement) : 대치할 frame을 자신의 것 중에서 선택 » (예) 덜 사용되는 페이지 선택 : 프레임 개수 고정 2000 운영체제 10.17 인천대학교 컴퓨터공학과 성미영 스래슁(Thrashing) ~ • 전역 대치의 결과로 중간 단계 CPU 스케줄링(swap-in/swap-out) 도입 » 우선순위가 낮은 process에 할당된 프레임수가 최소프레임 수보다 적어 지면 그 프로세스 수행을 중지 시키고 swap-out, 나중에 swap-in • 활동하는 page 개수 만큼 충분한 프레임이 없으면 자주 page fault가 일어남 » 방금 대치된 page가 page fault 스레슁 : high paging activity » paging만 해 : paging 시간 > 실행 시간 2000 운영체제 10.18 인천대학교 컴퓨터공학과 성미영 스래슁(Thrashing) ~ • 스레슁의 원인 » 전역 대치(global replacement) : 다른 프로세스의 page를 대치 • 극단적 thrashing효과 » paging device 대기, ready queue 비게 됨 -> CPU 이용률 저하 -> 멀티프로그래밍 정도 높임 … 악순환 … » paging activity만 하고 있음(paging device의 큐가 길어 유효접근 시간이 길어짐) » 지역 대치(local replacement) : 그 프로세스의 page를 대치 • 제한적 thrashing 효과 : 그 process만 thrashing » 원인 : 활동적인 page들을 모두 수용할 수 없을 때 • 현재 locality 크기 보다 적은 수의 frame이 할당되었을 때 • 한 프로세스는 locality 사이를 이동하면서 수행됨 • locality : 동시에 활동하는 페이지들의 집합 (예) Subroutine 2000 운영체제 10.19 인천대학교 컴퓨터공학과 성미영 스래슁(Thrashing) • 작업 집합 모델(Working-set Model) » △ : working-set window • 최근의 △ 회 페이지 참조 » working-set : △ 페이지 참조인 페이지들의 집합 » p344 그림 9.16 참조 -> prepaging에 좋음 » D = WSSi (Working-Set Size i) » D > m(총 사용가능 frame 수)이면 thrashing 예방 : 멀티프로그래밍의 정도를 낮춤 » 근접 working-set 구현 : 고정간격 timer interrupt 와 reference bit로 • (예) 5,000번 마다 인터럽트, reference-bit 메모리로 복사하고 clear, △가 10,000인 경우, 메모리의 2개 reference-bit와 현재 reference-bit 조사하여 1인 비트 있으면 working set에 포함 • 페이지 부재 빈도 (Page-Fault Frequency) » 페이지 부재율 > 상한 -> frame할당 » 페이지 부재율 < 하한 -> frame제거 직접적인 thrashing 방지법 2000 운영체제 10.20 인천대학교 컴퓨터공학과 성미영 Page-Fault Frequency Scheme 2000 운영체제 10.21 인천대학교 컴퓨터공학과 성미영 가상기억장치 실례 • • Windows NT » 요구페이징(demand paging)과 클러스터링(clustering) • Faulting page 근처의 여러 페이지들을 메모리로 가져옴 • 각 프로세스마다 Working-set minimum과 maximum(메모리 여유 있을 때) 배정 • Free page frames list 유지 • Working-set maximum에서 page fault: local, FIFO 페이지 대치 • Free memory가 한계값 이하가 되면 automatic working-set trimming: working-set minimum이상의 페이지들 제거 Solaris 2 » Page fault 일어나면 free pages의 list에서 페이지 할당 » 2 파라미터 minfree와 lotsfree 유지 » 1초에 4번 free memory 조사하여 minfree 상태가 되면 프로세스는 pageout 시작 -> lotsfree 될 때까지 계속 » Pageout = Two-handed-clock algorithm • second-chance algorithm과 유사: 처음에 reference bit 0으로 설정, 다음번 조사 때 계속 0인 페이지 대치 » lotsfree 상태까지 pageout을 할 수 없으면 swapping 시작 2000 운영체제 10.22 인천대학교 컴퓨터공학과 성미영 기타 고려 사항(Other Consideratons) ~ • • • • 프리페이징(Prepaging) 페이지 크기(Page Size) 역 페이지 테이블(Inverted Page Table) 프로그램 구조(Program Structure) » Array A[1024, 1024] of integer » Each row is stored in one page (C programming language case) » One frame » Program 1 for j := 1 to 1024 do for i := 1 to 1024 do A[i,j] := 0; 1024 x 1024 page faults » Program 2 for i := 1 to 1024 do for j := 1 to 1024 do A[i,j] := 0; 1024 page faults 2000 운영체제 10.23 인천대학교 컴퓨터공학과 성미영 기타 고려 사항(Other Consideratons) • • 입출력 상호 잠금(Input/Output Interlock) 실시간 처리(Real-Time Processing) » 가상 기억 장치 : 페이지 부재 처리로 예기치 않은 긴 지연 시간 초래할 수 있음 실시간 시스템은 가상 기억 장치를 사용 않음 » Solaris 2 : time-sharing과 real-time 모두 지원 위해 ① 어떤 페이지가 중요한지 시스템에 힌트를 줌 ② 특권 사용자가 페이지를 메모리에 잠글 수 있게 함 2000 운영체제 10.24 인천대학교 컴퓨터공학과 성미영