8)가상 메모리

Download Report

Transcript 8)가상 메모리

가상 메모리
IT CookBook, 운영체제: 그림으로 배우는 원리와 구조
Contents
 학습목표
 가상 메모리의 개념과 요구 페이징의 장단점을 살펴본다.
 페이지 대치 알고리즘 등 가상 메모리에 필요한 여러 알고리즘에 대해
배운다.
 가상 메모리를 사용할 때 고려해야 할 사항에는 무엇이 있는지 확인한다.
 내용
 가상 메모리의 개념
 요구 페이징
 페이지 대치 알고리즘
 프레임 할당 알고리즘
 프로세스 적재 정책
 기타 고려 사항
2/66
1. 가상 메모리의 개념
 가상 메모리의 등장 배경
 가상 메모리(Virtual Memory)
• 1960년 영국 맨체스터 대학교에서 제작된 아틀라스 컴퓨터 시스템에서 처음 등장.
• 메인 메모리보다 용량이 큰 기억 공간에 주소지정이 가능한 메모리 관리 기법.
• 메인 메모리에서 사용자와 논리 메모리를 물리적으로 분리, 프로그래머에게 가상에 메모리를
제공함.
• [그림 8-1] 메모리 계층 구조.
- 페이징 시스템으로 가상 메모리 시스템을 구현.
- 메인 메모리를 보다 효율적으로 사용할 수 있어 더 많은 작업을 메모리에 적재 가능.
- 사용자(프로그래머)에게 메인 메모리의 제한된 용량 사용과 중첩 사용 문제를 해결해 줌.
[그림 8-1] 메모리 계층 구조
3/66
1. 가상 메모리의 개념
 동시에 실행되지 않는 프로그램의 특징을 이용.
• 실제로 프로세스를 실행하는 데 꼭 필요한 부분만 메인 메모리에 저장, 나머지는 2차
기어장치(디스크)에 저장함.
• [그림 8-2] 가상 메모리 공간에 있는 프로세스 항목이 2차 기억장치에 분산 적재된 후
프로세스 실행에 따라 메인 메모리로 이동한 결과.
[그림 8-2] 실행 중인 프로세스 항목이 2차 기억장치에서 메인 메모리로 이동
 가상 메모리 관리 기법의 운영 가능한 이유.
• 실제적으로 모든 프로그램이 항상 동시에 사용되지 않음.
• 아래의 현상을 적절히 활용.
- 예외적인 오류 조건을 처리하는 오류 코드 루틴의 경우, 자주 필요하지 않으며 발생하지 않을 수 있음.
- 행렬(배열), 리스트, 테이블 등의 크기는 실제로 사용된 크기보다 정의된 크기가 항상 클 수 있음.
- 문서 편집기(Text Editor)에서 자주 사용되지 않는 메뉴인 복사, 붙이기, 잘라내기, 삽입 등은 실제로
선택한 한 개의 메뉴만 적재, 나머지는 메모리에서 내보내도 됨.
4/66
1. 가상 메모리의 개념
 장단점.
• 장점.
- 프로그래밍 작업이 쉬우며, 공간의 제약이 없으므로 중첩을 작성할 필요가 없음.
- 공간이 부족해도 부분 적재가 가능하여 많은 작업을 실행할 수 있어 프로세서의 이용률과 처리율 향상.
• 단점.
- 메모리와 디스크 공간 사이의 이동량 증가에 따른 교체 공간의 확보.
- 어느 시기에 어느 페이지를 적재하고 다시 복귀시킬 것인가에 대한 페이징 알고리즘의 결정.
- 페이지 부재에 대한 처리 방안 요구.
 실행 중인 프로세스의 참조 주소와 메인 메모리에서 사용하는 주소가 분리되어야 함.
• 사상(Mapping) : 가상 주소를 실제 물리적 주소로 변환하는 과정.
- 변환 함수로 표시하며 속도가 느리면 시스템 성능이 떨어짐.
• 프로그램 주소 공간(가상 주소)을 V, 메인 메모리 공간(실제주소)을 R이라 할 경우
사상(F)에 의해 가상 메모리는 아래와 같이 정의됨.
F : V  R ||가상주소(V)와 실제 주소(R)의 분리
5/66
1. 가상 메모리의 개념
• [그림 8-3] 가상 주소 V가 메인 메모리 R에 적재되어 있는 경우.
[그림 8-3] 가상 기억 공간과 실제 주소 공간의 사상
 동적 주소 변환(DAT, Dynamic Address Translation) 기법.
• 인위적 연속성 성질을 가지므로 프로세스의 가상 주소 공간에 있는 연속적인 주소를 물리
주소공간에 연속적으로 저장할 필요 없음.
- 인위적 연속성 : 가상 주소 공간상의 연속적인 주소가 메인 메모리에서 연속적일 필요 없음.
• 사용자는 프로그램과 데이터의 적재 위치를 고려할 필요 없음.
- 중첩 관련 작업 수행이 필요 없으며, 하드웨어 구조와 상관없이 알고리즘의 효율성과 프로그램
구조를 고려함.
[그림 8-4] 동적 주소 변환(DAT)
6/66
1. 가상 메모리의 개념
 메인 메모리 공유를 위해 메모리 관리 기법 활용.
• 여러 사용자가 메인 메모리 공유를 위해 메인 메모리보다 큰 보조기억장치에 데이터나
프로그램을 저장, 유지할 수 있는 방법 필요.
• [그림 8-5] 2단계 메모리 관리 기법.
- 단계 1 : 프로세스가 수행되고 참조 데이터를 저장하는 1차 기억 장소인 메인 메모리.
- 단계 2 : 제한된 메인 메모리에 들어갈 수 없는 데이터를 저장하는 디스크와 같은 대용량의 2차
기억 장치.
[그림 8-5] 2단계 메모리 관리 기법
7/66
1. 가상 메모리의 개념
 블록 사상
 블록 단위로 처리.
• 사상이 Byte, Word 단위로 이루어질 경우 주소 사상 테이블(Address Mapping Table)
유지를 위한 정보량이 커짐.
• 사상 정보의 양(테이블)을 줄이기 위해 주소를 블록 단위로 처리.
- 블록은 가상 메모리의 분할 단위로, 블록의 크기가 일정하면 블록을 페이지라 하며 블록화 방법을
페이징 기법이라 함.
- 블록의 크기가 다를 경우 세그먼트라 하며 세그먼테이션 기법이라 함.
• [그림 8-6] 가상 메모리와 보조기억장치(디스크)와의 사상.
- 시스템이 블록의 위치만을 유지하고 추적하므로 효율적인 관리 가능.
- 블록의 평균 크기가 클수록 주소사상의 정보의 양(테이블 크기)은 적어지나, 내부 단편화로 인한 2차
기억장치와 메인 메모리 주소사상 시간이 더 요구될 수 있음.
[그림 8-6] 실제 메모리를 확장한 가상 메모리
8/66
1. 가상 메모리의 개념
 블록 가상 시스템은 2차원적 주소체계를 가짐.
[그림 8-7] 블록사상 시스템에서의 가상 주소체계
• [그림 8-8] 프로세스 실행 동안 가상 주소 V=(b, d)로부터 메모리 주소 r로 변환되는 과정.
- 시스템은 메모리에 각 프로세스의 블록 사상 테이블을 유지함.
- 시작점 레지스터(Block Table Origin Register)에는 메모리 주소 a가 들어 있음.
- 블록 사상 테이블의 항목은 블록번호(b)와 프로세스의 블록사상테이블의 기준 주소(a)를 더하여
메모리의 주소 b’을 얻음.
- 변위 값을 더하여 실제 메모리 주소는 r= b’ + d로 계산되며, b’는 실제 메모리 주소 a + b의 위치에
있는 블록사상테이블의 셀에 저장됨.
[그림 8-8] 블록 사상을 통한 가상 주소 변환
9/66
1. 가상 메모리의 개념
 가상 주소와 테이블 항목
 가상 주소는 순서를 가지는 쌍 V=(p, d) 표시, 페이지 번호와 페이지 변위로 구성.
• 16bit의 가상 주소가 1KB(=1024byte) 크기의 페이지를 사용할 경우.
- 가상 주소 1502(0000 0101 1101 1110)의 경우 최하위 bit 10개는 페이지 변위(0111011110),
최상위 bit 6개(000001)는 페이지 번호(프레임)를 나타냄.
• 32bit의 논리 주소와 4KB(=212) 크기의 페이지를 사용할 경우.
- 페이지 변위는 12bit(4KB=212), 페이지 프레임 번호는 20bit를 사용, 220(1,048,576)개의 페이지
테이블 항목(프레임)으로 구성됨.
- 페이지 테이블은 항목 당 4byte(32bit) 크기를 유지함.
• 페이지는 블록 단위로 디스크에서 메인 메모리로 옮겨져 메인 메모리의 한 블록(페이지
프레임)에 자리 잡음.
• 메인 메모리는 가상 페이지와 같은 크기의 페이지 프레임들로 분할.
• 페이지는 사용 가능한 어떤 페이지 프레임에도 들어갈 수 있음.
10/66
1. 가상 메모리의 개념
 [그림 8-9] 페이지 테이블 항목 구성.
• 제어비트와 프레임 번호로 구성됨.
[그림 8-9] 페이징 시스템에서의 가상 주소와 페이지 테이블 항목
• 페이지 테이블 항목(PTE, Page Table Entry)의 제어비트.
- P 플래그 : 참조 페이지의 메인 메모리 저장 여부.
- R/W 플래그 : 쓰기/읽기 액세스 권한 포함.
- U/S 플래그 : 사용자/슈퍼사용자에 대한 페이지(페이지 테이블) 액세스 권한 포함.
- PWT, PCD 플래그 : 하드웨어 캐시에 의한 페이지(페이지 테이블) 처리.
- A 플래그 : 페이지 프레임에 따른 페이징 단위 주소 적용.
- D(M) 플래그 : 페이지 수정 여부.
- PAT 플래그 :페이지 테이블 속성 색인.
- G 프래그 : 페이지 테이블 항목 적용.
- 나머지 bit는 시스템 프로그래머 사용 가능.
11/66
1. 가상 메모리의 개념
 [그림 8-10] 가상(논리) 주소에서 물리 주소로 변환 과정.
• 가상 주소의 페이지 번호(0x2)를 페이지 테이블에서 색인, 프레임 번호 (0x8)을 얻음.
- 현재 참조하고 있는 페이지가 메인 메모리에 있는 경우 프로세스 수행 불가능.
• 프레임 번호(0x8)와 페이지 변위에 접속, 메인 메모리의 주소(물리 주소)를 구함.
• 페이지 프레임 번호가 {1, 2, … n}이라 가정하면, 실제 메모리 주소 r(=프레임 번호ⅹ페이
지 크기 + d)로 나타냄.
- 실제 물리 메모리 주소는 페이지 프레임 번호와 페이지 크기를 곱한 결과.
[그림 8-10] 페이징 시스템에서의 가상 주소 변환
12/66
2. 요구 페이징
 요구 페이징 기법
 스왑 기법을 사용하는 페이징 시스템과 비슷함.
• 프로그램을 실행하기 위해 프로그램의 일부만을
메인 메모리에 적재.
• 순차적으로 작성되어 있는 프로그램의 일부(모듈)을
처리할 때 다른 부분은 실행되지 않는다는 사실을
이용함.
• 오류 처리 루틴의 실행 과정, 과도한 공간 확보,
모듈의 일부 처리 시 발생.
[그림 8-11] 연속된 디스크 공간에
교체시킨 페이지화된 메모리
- 오류 처리 루틴의 실행 과정 : 일부 오류 발생 시 해당 오류 처리 루틴만이 필요하고, 나머지 루틴은
디스크에 저장.
- 과도한 공간 확보 : 배열 선언.
• 프로세스는 디스크에 저장되었다가 수행될 때, 직접 적재하지 않고 지연 교환기(Lazy
Swapper)를 사용해 메인 메모리에 적재함.
- 페이지 요구가 있을 때 요구 페이지를 메모리에 교체, 동시에 모든 페이지를 교체하지 않음.
- 사용되지 않는 페이지를 메모리에 읽어 들이는 것을 예방, 교체시간, 기억 공간 감소 및 다중
프로그래밍 정도를 증가시킴.
13/66
2. 요구 페이징
 요구 페이징의 기본 개념
 타당-비타당을 나타내는 bit를 페이지 테이블의 각 항목에 추가함.
• [그림 8-12] 타당/비타당 비트가 추가된 페이지 테이블.
- 타당 비트(v)로 설정된 경우 해당 페이지가 물리적 메모리에 있음을 의미함.
- 비타당 비트(i)로 설정된 경우 페이지는 보조기억장치(디스크)에 있음을 의미함.
- 저장되지 않은 페이지 사용 시 페이지 부재(Page Fault) 발생하며, 이때 액세스 방지를 위해
타당/비타당 비트를 이용하여 처리함.
[그림 8-12] 타당/비타당 비트가 추가된 페이지 테이블
14/66
2. 요구 페이징
 비타당 비트.
• 프로그램이 비타당 비트로 표시된 페이지에 액세스 하지 않는 경우 실행에 영향을 주지 않음.
• 프로그램이 액세스하는 경우 페이지 부재로 운영체제에 트랩 발생.
- 무효 주소에 의한 오류.
 페이지 부재.
• [그림 8-13] 페이징 시스템의 페이지 부재.
- 프로세서에 의해 생성되니 가상(논리) 주소 V=(p, d)에서 페이지 번호(p)는 주소번역(페이지 테이블
레지스터)과정을 통해 페이지 테이블에서 해당 페이지 테이블 항목에 접속.
- 메모리에 지정된 프레임의 저장 여부 확인.
- 지정된 프레임 페이지가 저장되어 있지 않는 경우 프레임 번호와 변위 결합, 물리주소 생성.
- 페이지 부재로 해당 페이지(프레임)가 디스크에 저장되어 있음을 의미하므로 명령 재시작.
[그림 8-13] 페이징 시스템의 페이지 부재
15/66
2. 요구 페이징
• [그림 8-14] 페이지 부재 처리 과정.
① 프로세스 제어 블록에 있는 내부 테이블 검사, 프로세스 참조가 메모리 액세스에 타당한지 부당한지
결정함.
② 프로세스 참조가 무효화될 경우 프로세스는 중단. 프로세스가 유효한 참조이나 페이지를 가져오지
않은 경우 페이지를 가져옴.
③ 비어있는 프레임 리스트 중 하나를 선택.
④ 할당된 프레임에 요구된 페이지를 읽어 들이기 위해 디스크 동작을 스케줄함.
⑤ 요구된 페이지가 메모리에 있다는 것을 알리기 위해 페이지 테이블을 수정.
⑥ 주요 트랩에 의해 인터럽트된 명령어들을 다시 시작.
[그림 8-14] 페이지 부재 처리과정
16/66
2. 요구 페이징
 순수 요구 페이징.
• 요구가 계속될 때까지 페이지를 메모리에 들여놓지 않는 방법.
- 메모리에 실행할 프로세스의 페이지가 없어도 프로세스는 수행을 시작할 수 있음.
- 프로세스는 최소의 명령으로 페이지 부재를 일으킴.
- 페이지가 메모리로 들어온 후, 프로세스는 수행을 계속하면서 수행에 필요한 모든 페이지가 메모리에
적재될 대까지 필요할 때마다 페이지 부재를 발생시킴.
- 수행에 필요한 모든 페이지가 메모리에 적재되면 프로세스는 더 이상 페이지 부재를 발생시키지 않고
수행을 계속함.
 장단점.
• 장점.
- 다중 프로그래밍의 정도를 증가시키고 액세스되지 않은 페이지를 로드 하지 않아 메모리가 절약됨.
- 프로그램을 시작할 때 적재(로딩) 지연이 적음.
- 적은 수의 페이지를 읽으므로 초기 디스크 오버헤드가 적음.
- 보호 오류를 페이지 오류로 사용 가능하므로 페이징에 필요한 별도의 하드웨어 지원 불필요함.
- 적재된 페이지들 중 하나가 수정될 때까지 페이지들은 여러 프로그램에 의해 공유되므로 공유 페이지
(코드 공유) 기술은 보다 많은 자원 절약 가능.
- 프로그램을 실행할 충분한 메모리가 없는 시스템에서도 대용량 프로그램을 실행 가능하며,
프로그래머는 이전 중첩(오버레이) 기법보다 쉽게 구현 가능함.
17/66
2. 요구 페이징
• 단점.
- 개별 프로그램들은 페이지에 처음 액세스할 때 약간의 지연이 발생함.
- 프리 페이징은 마지막으로 수행한 몇 개의 페이지를 미리 불러오는 방법으로 성능을 향상시킴.
- 낮은 비용, 낮은 성능의 시스템에 실행되는 프로그램은 페이지 대체를 지원하는 메모리 관리 장치가
없음.
- 메모리 관리(페이지 교체)가 복잡함.
 페이지 성능
 요구 페이지된 메모리의 유효액세스시간.
• 메모리 액세스시간(Ma)은 대부분 10~ 200ns(Nano Second).
• 페이지 부재가 발생하지 않는 경우 유효액세스시간은 메모리액세스시간과 동일함.
• 페이지 부재 발생 시 보조기억장치에서 관련 페이지를 읽은 후 요구된 단어에 액세스하여
더 많은 시간이 소요됨.
• 페이지 부재의 확률이 p라고 가정함(0 ≤ p ≤ 1).
- p는 0에 매우 가까운, 약간의 페이지 부재율이 있다고 가정함.
유효액세스시간  (1  p ) Ma  p  (페이지부재시간)
18/66
2. 요구 페이징
 페이지 부재 시간 계산.
• 유효액세스시간 계산을 위해 페이지 부재시간을 계산하여야 함.
• 페이지 부재 시에 처리하는 인터럽트 처리시간과 페이지 교체시간, 프로세스 재시작 과정
이 필요함.
- 인터럽트 처리 및 프로세스 재시작 과정은 수백 개의 명령어로 구성, 짧은 시간
(약 1~1000microsecond 범위)에 처리 가능.
- 페이지 교체시간은 디스크의 헤드 이동에 따른 탐색시간(5millisecond-ms)과 지연시간(3ms),
전송시간(0.05ms) 등으로 대략 8ms로 예상됨.
- 소프트웨어와 하드웨어 시간을 포함한 총 페이지부재시간 처리는 약 8ms임.
• 평균 페이지부재 처리시간이 8ms이며, 메모리 액세스시간이 200ns일 경우.
유효액세스시간 (1  p)  200 p  (8m ilisec ond)
 (1- p)  200 p  8,000,000
 200 p(8,000,000- 200)
 200 p  7,999,800
19/66
2. 요구 페이징
 유효액세스 시간 감속.
• 유효액세스시간은 페이지 부재율에 비례함.
• 1,000개 중 한 개의 액세스에 페이지 부재 발생 시 유효액세스시간은
8.2(8199.8ns)microsecond.
• 요구 페이징으로 인해 유효액세스시간은 40배(메모리 액세스시간은 200ns) 감속됨.
• 유효액세스시간을 10% 미만으로 감속, 메모리 액세스시간을 220ns보다 적게 유지하기 위
한 조건.
220  200 7,999,800 p
20  7,999,800 p
p  0.0000025
(0.0000025000
6250)
• 페이징으로 인한 감속을 적당한 수준에서 유지하기 위해
399,990(=1/0.00000250006250)번 중 한 번의 메모리 액세스가 페이지 부재 발생율 보다
더 낮은 비율로 발생해야 함.
※ 페이지 부재율이 높을 경우 유효액세스시간이 증가하며, 프로세스 수행시간이 늦어짐.
※ 대부분의 페이지가 처음 참조될 때 부재가 발생하고 이후에는 메모리에 저장되어 있어
페이지 부재율이 발생하지 않을 수 있음.
20/66
2. 요구 페이징
 페이지 대치
 페이지 대치의 필요성.
• [그림 8-15] 페이지 대치의 필요성.
- 프로그램 카운터(PC)에 의해 사용자 1의 페이지 M을 적재하면 물리적 메모리에 비어있는 프레임이
없음을 발견.
- 사용자 2의 페이지 B는 물리적 메모리에 적재할 수 없음.
[그림 8-15] 페이지 대치의 필요성
21/66
2. 요구 페이징
 페이지 대치 기법.
• 페이지 방식을 취하는 가상 메모리에서 페이지 부재 발생 시 메인 메모리에 있으면서 사용
되지 않는 페이지를 없애고 새로운 페이지로 변경.
• 아래와 같은 방식으로 액세스 됨.
① 비어 있는 프레임이 없다면 현재 사용하지 않는 프레임(희생자)을 찾음. 사용하지 않는 프레임이
있는 경우 발견한 프레임을 비우기 위해 프레임의 내용을 보조기억장치(디스크)에 저장.
② 페이지가 메모리에 더 이상 존재하지 않는다는 것을 알려주기 위해 페이지 테이블을 변화(비타당
비트로 전환)시킴으로써 프레임이 비게 됨.
③ 원하는 페이지(f)를 디스크로부터 읽어 프레임에 저장.
④ 새로운 페이지(f)를 위하여 페이지 테이블을 수정함.
[그림 8-16] 페이지 대치
22/66
1. 가상 메모리의 개념
• 프로그램에 의해 빈 프레임은 부재된 페이지 수용을 위해 사용됨.
• 페이지 부재 서비스 루틴은 페이지 대치를 포함하도록 수정됨.
• 페이지 대치 과정.
① 디스크에서 요구한 페이지의 위치 확인.
② 빈 프레임을 찾음.
- 빈 프레임이 발견되면 빈 프레임을 사용.
- 빈 프레임이 발견되지 않으면 희생 프레임 선정을 위해 페이지 대치 알고리즘 사용.
- 희생 페이지는 디스크에 기록, 페이지와 프레임 테이블을 수정함.
③ 요구된 페이지를 읽어 들이고 페이지와 프레임 테이블을 수정.
④ 사용자 프로세스를 시작함.
• 페이지 부재로 인한 페이지 대치 과정은 페이지 부재 처리 시간이 증가하는 결과를 가져와
액세스 시간이 증가하므로 시스템에 부담이 됨.
- 페이지 두 개가 이동(하나는 나오고 하나는 들어감).
- 수정된 비트를 활용하여 부담을 감소시킬 수 있음.
• 페이지 대치는 요구 페이징의 기본 요소로 논리적 공간과 실제 메모리 공간을 완벽히 분리
해주므로 프로그래머는 실제 메모리에서 매우 큰 가상 메모리(디스크)를 제공할 수 있음.
23/66
3. 페이지 대치 알고리즘
 페이지 부재와 프레임 개수
 참조 문자열을 이용한 페이지 부재 횟수와 프레임 개수와의 관계.
• 참조문자열은 메모리를 참조하는 페이지를 의미함.
참조문자열:1, 4,1, 6,1,6,1,6,1,6,1
• 프레임 수가 증가하면 페이지 부재수가 감소함.
- 위의 참조 문자열에 대해 세 개 또는 그 이상의 프레임을 가진 경우, 총 3번의 페이지 부재 발생.
- 한 프레임만 이용할 수 있는 경우 각 참조마다 페이지 대치가 필요하며 결과적으로 11번의 부재 발생.
• [그림 8-17] 페이지 부재와 프레임 개수 그래프.
- 프레임 수가 증가함에 따라 페이지 부재의 수가 최소한도의 수준으로 내려감.
[그림 8-17] 페이지 부재와 프레임 개수
24/66
3. 페이지 대치 알고리즘
※ 페이지 대치 알고리즘을 확인하기 위해 아래 참조 문자열을 프레임이 3개인
메모리에 사용함.
참조문자열: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
 선입선출(FIFO, First-In-First-Out) 대치 알고리즘
 각 페이지가 메모리 안으로 들어간 시간을 이용.
• 가장 오래된 페이지부터 우선 대치시킴.
• 페이지 부재 발생 시, 즉 제거해야 할 페이지 선택 후 보조기억장치로 이동 교체시키고
페이지 테이블의 타당/비타당 비트를 변경함.
• 새로운 페이지에 대한 페이지 테이블 항목 변경 후 FIFO 큐의 마지막 위치에 삽입.
[그림 8-18] 선입선출(FIFO) 대치 알고리즘
25/66
3. 페이지 대치 알고리즘
 선입선출 큐(FIFO Queue)에 의해 메모리의 모든 페이지가 관리됨.
• 큐의 헤드부분에 있는 페이지를 먼저 대치함.
• 큐에 있는 페이지가 메모리로 들어갈 때 큐의 끝 페이지가 삽입.
• 큐의 크기는 사용 가능한 메모리 프레임의 수에 해당됨.
• [그림 8-19] 선입선출(FIFO) 대치 알고리즘의 실행
- 세 개의 프레임을 사용할 수 있다 가정하고 앞의 참조 문자열을 실행, 페이지 부재는 15번 발생함.
[그림 8-19] 선입선출(FIFO) 대치 알고리즘의 실행
※ 알고리즘의 이해가 쉽고 프로그램의 작성이 쉬움.
26/66
3. 페이지 대치 알고리즘
 문제점.
• 벨레디의 변이(Belady’s Anomaly) 발생.
- 할당되는 프레임의 수가 증가해도 페이지 부재율이 증가하는 현상.
- 이로 인해 최적 페이지 대치 알고리즘을 추구하는 경향 발생.
• 아래의 참조 문자열을 적용하여 문제점 확인.
참조문자열: 0,1,2,3,0,1,4,0,1,2,3,4
[그림 8-21] 벨레디의 변이 현상
[그림 8-20] 프레임별 실행결과
27/66
3. 페이지 대치 알고리즘
 최적(Optimal) 페이지 대치 알고리즘
 모든 알고리즘 중 페이지 부재율이 가장 낮음.
• ‘앞으로 가장 오랜 기간 동안 사용하지 않을 페이지를 대치하라’는 사상을 표현.
• 고정된 프레임 수에 대해 가능한 가장 낮은 페이지 부재율이 보장됨.
• [그림 8-22] 최적 페이지 대치 알고리즘.
- 앞의 참조 문자열을 적용한 경우, 총 9번의 페이지 부재가 발생함.
[그림 8-22] 최적 페이지 대치 알고리즘
※ 현실적인 구현이 어려우며, 비교 연구를 위해 주로 사용됨.
- 참조 문자열이 언제 사용될 것인가에 대한 정확한 정보를 요구함.
28/66
3. 페이지 대치 알고리즘
 최근 최소사용(LRU, Least Recently Used) 알고리즘
 과거의 데이터를 이용, 미래를 예측하기 위한 통계적 개념.
• 메모리의 지역성을 이용한 알고리즘으로 각 페이지에 마지막으로 사용된 시간을 연관시킴.
• 페이지 대치 시, 오랫동안 사용하지 않은 페이지를 선택.
- 시간적으로 거꾸로 찾는 최적 페이지 대치 알고리즘이라 할 수 있음.
• [그림 8-23] 최근 최소사용(LRU) 알고리즘.
- 앞의 참조 문자열 적용 시, 12번의 페이지 부재를 일으킴.
- 처음 5번의 부재 처리 과정은 최적 대치 알고리즘과 같으나, 이후 페이지 4에 대한 참조가 일어날 때
메모리 속 페이지 중 가장 늦게 사용한 페이지 2를 선택하여 대치함.
- 만약 페이지 2에 부재 발생 시, {0, 3, 4} 중 가장 늦게 사용한 페이지 3으로 대치함.
[그림 8-23] 최근 최소사용(LRU) 알고리즘
※ 알고리즘의 구현을 위해 하드웨어 지원이 필요함.
※ 프레임(페이지)이 마지막에 사용된 기간을 이용, 정의되는 순서 결정을 위해 계수기 또는
스택을 사용하는 두 가지 방법으로 구현 가능함.
29/66
3. 페이지 대치 알고리즘
 계수기를 이용한 순서 결정 방법.
• 각 페이지 테이블 항목과 사용시간 레지스터를 연관, 프로세서에 논리 클록이나 계수기를
덧붙여 프레임의 순서 결정.
- 페이지에 대한 참조가 있을 때마다 클록은 증가함.
• 클록 레지스터의 내용은 페이지의 해당 페이지 테이블에 있는 사용시간 레지스터에
복사되어 각 페이지의 최소 참조에 대한 시간을 가짐.
- 가장 작은 시간 값을 가진 페이지는 대치됨.
• 페이지 탐색과 페이지 테이블의 변화 과정을 유지해야 하는 부담을 고려해야 함.
 스택을 이용한 순서 결정 방법.
• 순서 결정을 위해 페이지 번호를 스택(Stack)에 넣어 관리.
• 페이지가 참조될 때마다 페이지 번호를 스택의 꼭대기(Top)에 둠.
- 꼭대기에 있는 페이지 번호는 가장 최근 사용한 페이지가 되며, 밑바닥(Bottom)에 있는 페이지
번호는 가장 늦게 사용한 페이지가 되어 페이지 부재 시 교체됨.
• 필드 비교, 업데이트, 계수기 등의 처리 과정은 생략되나, 스택의 중간에서 항목을
가져오므로 이중 링크의 조작이 필요하여 오버헤드를 증가시킬 수 있음.
- 헤드와 꼬리 포인터를 가진 이중 연결리스트를 사용하여 해결 가능.
- 탐색시간을 감소시킬 수 있음.
30/66
3. 페이지 대치 알고리즘
• [그림 8-24] 최근의 페이지를 참조한 스택.
- a 이전의 스택 정보는 꼭대기에 가장 최근에 사용한 페이지 2가 있으며, 밑 바닥에는 가장 오래 전에
사용한 페이지 4를 유지하고 있음.
- b 이전의 스택에서는 꼭대기에 있는 페이지가 최근 사용한 페이지 7로 교체됨.
[그림 8-24] 최근의 페이지를 참조한 스택
31/66
3. 페이지 대치 알고리즘
 최근 최소사용 근접 알고리즘
 시스템은 하드웨어의 지원 대신 참조 비트(Reference Bit)의 형태로 지원.
• 처음 모든 bit는 0으로 초기화한 후 사용자 프로세스가 수행될 때 참조된 각 페이지와
관련된 bit를 1로 변환, 어느 페이지가 사용되었는지 조사하여 확인 가능.
• 부분적인 순서 정보를 활용하여 최근 최소사용 알고리즘에 근사하게 대치 가능한 알고리즘
구현 가능.
 부가된 참조비트 알고리즘.
• 각 페이지에 8bit(1byte) 정보에 일정한 간격으로 참조 비트를 기록.
• 8bit Shift Register를 이용하여 순서 정보를 얻음.
- 각 페이지에 대한 참조비트(1)를 최상위 bit(8bit 위, 가장 왼쪽)로 삽입 이동하고 나머지 bit들은
한 비트씩 오른쪽으로 이동시켜 가장 낮은 자리 bit는 제거함.
• 8bit Shift Register는 최근 8번의 기간 동안 페이지 사용의 기록 정보를 유지함.
- Shift Register의 값이 ‘00000000’인 경우 8번의 기간 동안 단 한 번도 사용되지 않음을 의미함.
- ‘11000100(19610)’은 ‘01110111(11910)’보다 최근 사용되었음을 의미함.
32/66
3. 페이지 대치 알고리즘
• [그림 8-25] 부가된 참조비트 예.
- ‘00001011(11)’이 가장 사용빈도가 낮아 페이지 대치 대상임.
[그림 8-25] 부가된 참조비트 예
• 8bit를 부호 없는 정수로 해석할 경우 가장 낮은 bit를 가진 페이지는 최근 최소사용(LRU)
페이지(오랫동안 미사용 페이지)이며, 대치 가능함.
• 참조 비트의 내용이 동일한 경우 발생 가능.
- 모든 페이지 프레임이 갖는 참조 비트의 값이 유일하지 않기 때문에 발생함.
• 작은 정수값을 갖는 프레임이 두 개 이상 있는 경우 희생자 선정 시점에서 문제 발생.
- 희생자를 선정하지 않는 경우는 문제 없음.
- 가장 작은 정수값을 갖는 프레임 모두를 희생자로 선택하거나 FIFO의 원칙에 따라 하나를 희생자로
선택함.
33/66
3. 페이지 대치 알고리즘
 시계(2차적 기회 대치) 알고리즘.
• 선입선출(FIFO) 대치 알고리즘을 기반으로 함.
• 최근 최소사용(LRU) 알고리즘과 성능은 비슷하나 과부하가 적음.
- 각 프레임의 사용여부를 나타내는 참조(사용)비트를 추가.
- 페이지가 메모리 내의 프레임에 처음 적재되었을 때 1로 설정한 후, 참조될 때마다 다시 1로 설정.
- 프레임들은 원형 버퍼(큐)로 구성되고 각각 관련 포인터를 가짐.
- 페이지 교체 시 포인터는 교체된 버퍼 다음 프레임을 가리키도록 설정.
• 운영체제가 페이지 교체 시기에 참조비트가 0인 프레임을 찾기 위해 원형 버퍼 검색.
- 프레임의 참조비트가 ‘1’이면 ‘0’으로 조정하고 현재 시간으로 고침.
- 수정한 페이지에 2차적 기회를 주고 다음 검사 시까지
대치시키지 않음.
- 모든 사용비트가 1인 경우 각 페이지에 2차적 기회를 주며
포인터는 전체 큐를 한 바퀴 돌 수도 있음.
- 처음 시작한 위치에서 중단하고 그 프레임을 교체대상으로
선택.
• 모든 bit가 1인 경우 2차적 알고리즘은 선입선출(FIFO)
대치와 같아짐.
- 사용비트가 1인 프레임을 통과하는 과정을 제외하면
선입선출(FIFO) 대치 알고리즘과 비슷함.
- 원형으로 배치된 것처럼 보여 시계 알고리즘이라고 함.
[그림 8-26] 시계 페이지 대치 알고리즘
34/66
3. 페이지 대치 알고리즘
• [그림 8-27] 간단한 시계 알고리즘의 예.
- 메인 메모리 프레임 m개로 구성된 원형 버퍼가 버퍼 내의 페이지 1개를 새로운 페이지 420으로
교체하기 직전의 모습.
[그림 8-27] 페이지 대치 이전의 버퍼와 페이지 대치 이후의 버퍼 상태
• 시계 알고리즘에 사용비트 추가 시 더 강력한 대치 알고리즘 작성 가능.
- 사용 중인 페이지들은 메인 메모리의 각 프레임과 연관되므로 메인 메모리의 각 프레임의 상태를
나타내는 수정(타당/비타당 비트)를 이용.
- 해당 프레임이 보조기억장치(디스크)에 저장되었는지 확인 가능함.
- 페이지를 가져온 후 수정되지 않았으며 최근에 사용되지 않은 페이지를 찾을 수 있으므로 변경되지
않은 페이지가 우선 교체 대상이 되어 시간을 줄일 수 있음.
35/66
3. 페이지 대치 알고리즘
 최소사용 빈도수(LFU, Least Frequently Used) 알고리즘.
• 각 페이지마다 참조 횟수에 대한 계수기가 있으며, 가장 작은 수를 가진 페이지를 대치함.
- 많이 사용되는 페이지는 큰 참조 횟수 값을 가짐.
• 어떤 프로세스의 초기 단계에서 한 페이지가 많이 사용되나 그 후로 다시 사용되지 않을
경우 사용하기 어려움.
- 큰 계수를 가진 페이지가 더 이상 필요하지 않음에도 메모리 속에 계속 남음.
- 계수기를 어떤 일정한 시간 간격으로 하나씩 오른쪽으로 이동, 지수적으로 감소하는 평균 사용수를
형성하여 해결 가능함.
 최대사용 빈도수(MFU, most Frequently Used) 알고리즘.
• 가장 작은 계수를 가진 페이지가 방금 들어온 것으로 아직 사용되지 않아, 앞으로 사용할
확률이 높다고 가정하여 대치 페이지 후보에서 제외시킴.
• 가장 많이 사용된 페이지(계수가 높은 페이지)를 대치함.
※ LFU, MFU는 구현 시 비용이 많이 들고 최적 페이지 대치에 비해 성능이 떨어져
일반적으로 사용되지 않음.
36/66
3. 페이지 대치 알고리즘
 페이지 버퍼링(Page Buffering).
• FIFO 같은 성능 저하를 막기 위해 교체 대상으로 선택된 페이지를 즉시 교체하지 않고
잠시 동안 메인 메모리에 유지함.
• 포인터 리스트 두 개를 이용, 페이지를 관리하며, 페이지 대치 알고리즘은 FIFO임.
• VAX 컴퓨터의 VMS, XP, Mach에서 사용된 방식.
• [그림 8-28] 페이지 버퍼링 개념.
- 수정 안 된 가용페이지 리스트.
: 메모리에 적재된 후에 수정된 적이 없는 프레임 리스트로 교체 불필요.
- 변경 페이지 리스트
: 메모리에 적재된 후 수정된 프레임의 리스트로 디스크에 재저장해야 하므로 디스크 기록을 대기함.
[그림 8-28] 페이지 버퍼링 개념
• 변경되지 않은 페이지 교체 시, 교체된 페이지는 메모리에 남고 페이지 프레임은 가용
페이지 리스트의 끝에 추가됨.
• 변경된 페이지 교체 시, 페이지 프레임을 변경 페이지 리스트의 끝에 추가함.
37/66
3. 페이지 대치 알고리즘
• 페이지 교체 시.
- 페이지 테이블 내에 있는 항목만 삭제되어 가용 페이지 리스트나 변경 페이지 리스트에 놓임.
- 포인터 리스트의 각 항목은 재배치되는 프레임의 번호 저장.
- 가용 페이지 : 항상 사용 가능한 몇 개의 프레임들을 보유, 페이지를 읽어 들일 수 있는 페이지
프레임의 리스트.
• 페이지 읽을 때.
- 가용 리스트의 헤드가 가리키는 페이지 프레임(가용 페이지 리스트 상의 첫 페이지)이 사용되고
그 페이지는 없어짐.
- 페이지 부재 발생 시 리스트 두 개를 검색, 원하는 페이지가 아직 메모리에 있는 지 검사함.
- 메모리에 없으면 가용 페이지 리스트의 첫 번째 프레임에 원하는 페이지 적재.
• 프로세스가 페이지를 참조하면 오버헤드 없이 페이지가 해당 프로세스의 작업에 추가
가능하여 페이지 부재가 해결됨.
• 변경 페이지 리스트에 있는 프레임은 일괄 처리되어, 입출력 연산 횟수가 감소하므로
디스크 액세스 시간을 줄여줌.
38/66
3. 페이지 대치 알고리즘
 알고리즘의 비교 분석
 배르(BAER, 1980년) 발표.
• [그림 8-29] 페이지 대치 알고리즘의 비교.
- 분석에 사용한 페이지 크기는 256word이며, 프레임 수를 6, 8, 10, 12, 14개로 변경시키면서 실행.
- 적은 수의 프레임을 사용할 경우 차이가 크게 나타남.
[그림 8-29] 페이지 대치 알고리즘의 비교
39/66
4. 프레임 할당 알고리즘
 단독 사용자 시스템
 가상 메모리 시스템의 가장 간단한 구조.
• 메모리 크기가 128K인 단일 사용자 마이크로컴퓨터 시스템에서(페이지 크기는 1K),
이 중 운영체제가 35K를 차지한다면 남은 95K는 사용자 프로세스를 위해 남음.
- 순수 요구 페이징 방법 적용 시, 프레임 93개 모두 사용가능 프레임 리스트에 포함됨.
- 사용자가 프로세스 수행을 시작하면 페이지 부재가 발생함.
- 93번까지의 페이지 부재는 사용가능 페이지 리스트에서 대기 중인 페이지를 모두 사용하게 됨.
- 따라서 94번째 발생한 페이지 부재 해결을 위한 해결 방법 필요함.
 사용가능 페이지가 없을 때, 페이지 부재 해결 방법.
• 페이지 대치 알고리즘을 사용.
- 기억 장소 내에 있는 페이지 93개 중 하나를 선택하여 교체하며, 이때 페이지 대치 알고리즘을 호출.
• 사용되지 않는 경우 사용자 페이지로 변환시켜 사용.
• 사용가능 리스트(93개 중)에서 프레임 3개를 확보, 페이지 부재 발생 시 항상 사용가능
프레임이 존재하도록 함.
※ 다중 프로그래밍 환경에서 기억 장소 내에 동시에 프로그램이 두 개 이상 존재하므로,
여러 개의 프로세스에 프레임 할당 방법에 대한 문제 발생.
40/66
4. 프레임 할당 알고리즘
 최소 프레임 수
 할당해야 할 최소 프레임 수 존재.
• 기억 장소 할당은 제한이 있어 총 유효 프레임 수보다 많이 할당할 수 없으나, 할당 가능한
최소 프레임 수는 존재함.
- 각 프로세스에 할당되는 프레임 수가 줄어들면서 페이지 부재율은 올라가며, 수행 속도는 저하됨.
- 성능 저하를 막기 위해 할당해야 할 최소 프레임 수가 존재함.
• 최소 프레임 수는 명령어 구조에 의해 정의됨.
- 수행 중인 명령이 끝나기 전에 페이지 부재 현상 발생 시 그 명령을 다시 시작해야 함.
- 하나의 명령어 실행을 위해 명령어가 참조하는 모든 페이지를 수용할 수 있는 충분한 프레임이 필요함.
※ 한 프로세스당 최소 프레임 수는 컴퓨터 구조에 의해 정의되나, 최대 수는 유효 실제 기억
장소의 양으로 정의됨.
41/66
4. 프레임 할당 알고리즘
 균일과 비례할당 알고리즘
 균일할당.
• 프로세스 n개에 프레임 m개를 할당할 때 각 프로세스에 똑같이 프레임 m/n개씩 나눔.
• 각 프로세스가 갖는 메모리의 요구량이 서로 다르므로 페이지 프레임 낭비 및 페이지
부재가 발생할 수 있음.
 비례할당.
• 균일할당 방법의 문제점을 해결하기 위해 사용됨.
• 사용 가능한 메모리를 각 프로세스가 필요로 하는 메모리 양 또는 프로세스의 크기에
비례하여 할당.
• 운영체제가 활동 중인 프로세스에 대한 정보를 알고 있어야 하며, 소프트웨어 오버헤드를
가져옴.
• 프로세스 Pi의 가상 메모리 크기를 si라고 하면 전체 프로세스가 갖는 가상 메모리 공간의
크기 S는 아래와같이 정의됨.
S   si
• 사용가능 프레임의 총수를 m이라 하면 프로세스 Pi에 프레임 ai개를 할당하는데, 이때 ai는
대략 아래와 같음.
- 이때 ai는 명령어 집합이 필요로 하는 최소 프레임 수보다는 크고 총합이 m을 넘지 않는 정수이어야 함.
ai  si / S  m
※ 균일과 비례할당 기법 모두 다중 프로그램 정도에 따라 할당되는 양이 변하며, 우선순위를
42/66
고려하지 않음.
4. 프레임 할당 알고리즘
 부하 제어(Load Control)
 메인 메모리에서 실행할 프로세스의 개수 결정.
• 메인 메모리에 적재되어 실행되는 프로세스의 개수를 ‘다중 프로그래밍 수준’이라 함.
• 메모리 관리를 위해 매우 중요함.
- 너무 적은 수의 프로세스가 메인 메모리에서 실행된다면 프로세스들의 보류 상태가 자주 발생,
빈번한 교체가 발생됨.
- 많은 프로세스가 메인 메모리에 적재되면 각 프로세스의 적재집합을 구성하는 평균 페이지 수가 적어
페이지 부재가 자주 발생, 스레싱 현상을 일으킴.
※ 현대 운영체제에서는 고정(균일) 할당과 가변(비례)할당 정책을 이용.
43/66
5. 프로세스 적재 정책
 스레싱(Thrashing)
 페이지 교환이 계속 일어나는 현상.
• 어떤 프로세스가 프로세스 수행에 보내는 시간보다 페이지 교환에 보내는 시간이 더 크면 ‘
스레싱을 하고 있다’고 말함.
 스레싱 발생 원인.
• 운영체제는 항상 프로세서의 효율성(이용률)을 감시하여 운영.
• 이용률이 떨어지면 이를 높이기 위해 새로운 프로세스를 도입, 다중 프로그래밍의 정도를
높임.
- 새로운 프로세스가 수행 중인 프로세스의 페이지를 빼앗아서 수행을 시작할 경우 더 많은 페이지
부재 발생.
- 프로세서가 요구하는 최소한의 수보다 페이지 프레임 수가 적으면 적을수록 페이지 부재율이 증가함.
- 페이지 부재가 많이 일어날수록 프로세스가 페이징 처리장치를 기다리는 시간이 길어지므로
프로세스의 효율성은 떨어짐.
※ 페이지 부재로 프로세서의 이용률 감소 시 스레싱이 발생하여 시스템의 처리율은 낮아지
고 페이지 부재는 늘어나 유효 메모리 액세스 시간이 증가, 페이지 교체시간이 낭비됨.
44/66
5. 프로세스 적재 정책
 [그림 8-30] 스레싱.
• 프로세서의 이용률과 다중 프로그래밍의 정도에 따라 다름.
- 다중 프로그래밍의 정도가 높아지면 프로세서의 이용률도 최대값이
될 때까지 증가.
- 다중 프로그래밍의 정도가 더욱 커지면 스레싱이 발생, 프로세서의 이용률은
급격히 떨어짐.
• 프로세서의 이용률을 높이고 스레싱을 중단하려면 다중
프로그래밍의 정도를 낮춰야 함.
[그림 8-30] 스레싱
 스레싱 예방.
• 지역 교환 알고리즘이나 우선순위 교환 알고리즘을 사용하여 제한할 수 있음.
- 지역 교환 알고리즘 사용 시 프로세스 하나에 스레싱이 발생하더라도 다른 프로세서에서 프레임을
가지고 올 수 없어 다른 프로세스는 스레싱 현상에 빠지지 않음.
- 여러 프로세스에서 스레싱이 발생할 경우 프로세스들은 대부분의 시간을 페이징 처리장치를
기다리는 큐에서 보냄.
- 스레싱은 발생하지 않으나 유효 액세스시간은 증가함.
45/66
5. 프로세스 적재 정책
 지역성(국부성)
 실행 중인 프로세스에 의해 나타나는 특성.
• 프로세스들은 실행기간 동안 메모리 내의 정보를 균일하게 액세스하는 것이 아닌 페이지
중 일부를 선호하여 지역적인 부분만을 집중적으로 참조하는 현상.
• 프로그램들의 순환(Looping)이나 부 프로그램, 스택, 변수들의 계산과 합계, 배열 순례,
순차적 코드의 실행 등으로 발생.
• 프로그래머들이 관련 있는 변수들을 서로 근처에 배치시키기 때문에 발생함.
• [그림 8-31] 여러 페이지에 대한 프로세스의 메모리 참조 유형.
[그림 8-31] 메모리 참조 패턴의 지역성(출처: IBM Systems Journal. Ⓒ 1971)
46/66
5. 프로세스 적재 정책
 지역성의 종류.
• 시간 지역성.
- 참조된 기억장소는 가까운 미래에도 계속 참조될 가능성이 높음을 의미함.
- 순환구조의 루틴, 부프로그램, 스택, 계산이나 합계의 변수 등.
• 공간 지역성.
- 프로세스가 어떤 기억장소를 한 번 참조하면, 이후에 참조한 기억장치 근처에 있는 기억장소를
참조할 가능성이 높음을 의미함.
- 배열 순례(검색 작업), 순차적 코드의 실행, 근처의 관련 변수 선언 등.
• 스레싱 현상 방지를 위해 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 함.
• 지역성을 이용하여 현재의 지역 크기보다 적은 페이지 프레임 할당 시 페이지 부재 발생의
원인이 될 수 있음.
47/66
5. 프로세스 적재 정책
 작업설정 모델(Working Set Model)
 프로그램의 수행과정을 지역성 개념으로 설명하기 위해 데닝이 개발.
• 프로세스가 많이 참조하는 페이지 집합을 메모리 공간에 계속 상주시켜 빈번한 페이지
대치 현상을 줄이는 방법.
• 프로세스의 작업모델 구성을 위해 작업설정의 크기를 알아야 하며, 작업설정의 크기는
작업설정 창을 이용하여 구함.
- 작업설정 창 정의를 위해 매개변수 ∆를 사용, ‘현재 시간(t)에서 최근의 일정 시간 단위(∆)’를
정하여 결정.
- 작업설정 창의 크기는 매개변수인 ∆에 따라 달라짐.
- 가장 최근의 ∆ 페이지 참조를 조사, 가상 시간 t로부터 프로세스가 참조한 페이지 집합을 나타냄.
- 어떤 페이지가 실제로 사용되고 있으면 페이지는 작업설정에 포함, 마지막으로 참조된 후 ∆ 시간
동안 참조되지 않으면 더 이상 사용하지 않는 것으로 간주되어 작업설정에서 빠짐.
- 따라서 가장 최근의 페이지 참조에 있는 페이지 집합을 작업설정이라 하며, 이때 작업설정은
프로그램의 지역 근사치임.
• 최근에 참조된 페이지들을 메인 메모리에 유지시켜 프로세스가 빠르게 실행될 수 있음.
• 새로운 프로세스들은 메인 메모리에 그들의 작업설정들이 적재할 수 있는 공간이 있을
때만 시작될 수 있음.
48/66
5. 프로세스 적재 정책
 [그림 8-32] 프로세스 작업설정 정의.
• 데닝은 시간 t에서의 작업설정 WS(t, w)를 시간 (t-w)부터 t까지의 프로세스 시간 간격에
참조한 페이지들의 집합으로 정의.
- t : 현재 프로세스 시간(프로세서를 점유하고 있는 시간).
- w : 프로세스 창의 크기로 프로세스들의 작업설정을 계산할 때 과거 어느 시간까지 포함할 지를 나타냄.
[그림 8-32] 프로세스 작업설정 정의
• [그림 8-33] 창 크기와 작업설정
- w가 증가함에 따라 작업설정의 크기가 변함.
- 창의 크기(설정시간 간격) w가 커짐에 따라 메인 메모리에 유지하는 작업설정이 커지나, w가 너무
커지면 메인 메모리의 용량을 초과하므로 작업설정도 증가하지 않음.
[그림 8-33] 창 크기와 작업설정
49/66
5. 프로세스 적재 정책
 [그림 8-34] 작업설정 모델 예.
• 그림과 같이 메모리 참조 순서가 주어졌을 때(∆=10이라 가정), t1 시간의 작업설정은
{1,2,5,6,7}이 되며, t2 시간에는 {3,4}임.
• 작업설정의 정확성은 ∆ 의 선택에 따라 좌우됨.
- ∆ 값이 너무 작으면 전체 작업설정을 충족시키지 못함.
- ∆ 값이 너무 크면 여러 전체 프로그램이 됨.
• 매드닉(Madnick)과 도노반(Donovan)은 적절한 값으로 10,000을 제안함.
[그림 8-34] 작업설정 모델(WS는 작업설정 집합)
50/66
5. 프로세스 적재 정책
 작업설정의 가장 중요한 성질은 작업설정의 크기.
• 시스템 내의 각 프로세스에 대한 작업설정의 크기 WSSi를 계산하면 전체 요구 프레임 D는
아래와 같음.
D  WSSi
- 각 프로세스는 각 작업설정 내에 있는 페이지를 실제로 사용하고 있음.
- 프로세스 i는 WSSi 프레임을 필요로 함.
- 유효 프레임(m) 수보다 많이 요구하게 되면(D>m) 스레싱 발생.
- 프로세스가 수행되는 동안, 작업설정은 계속 변화함.
• [그림 8-35] ∆ 값이 고정된 경우, 시간이 경과함에 따라 변화되는 작업설정 크기.
- 대부분의 프로세스에서 작업설정의 크기가 비교적 변화가 없는 안정기와 급격하게 변화하는
과도기가 반복되는 현상을 보임.
- 프로세스가 처음 시작(실행)되면 새로운 페이지를 참조하므로 작업설정의 크기가 급격하게 커짐.
- 지역성의 원리에 의거하여 프로세스는 안정기에 접어들게 되며, 과도기는 프로세스가 다른 지역으로
이동(프로세스의 전환)함을 보여줌.
[그림 8-35] 시간 경과에 따른 작업설정 크기 변화
51/66
5. 프로세스 적재 정책
 작업설정 모델 사용법.
• 운영체제는 각 프로세스의 작업설정을 감시, 각 프로세스에 작업설정의 크기에 맞는 충분
한 프레임을 할당.
• 여분의 페이지 프레임이 있을 때는 준비상태에 있는 다른 프로세스를 불러들인 후 프레임
을 할당하여 다중 프로그래밍의 정도를 증가시킴.
• 모든 프로세스가 갖는 작업설정 크기의 합이 전체 유효 프레임의 수보다 커지게 되면 잠시
중지시킬 프로세스를 선정하여 페이지를 회수.
※ 가능한 다중 프로그래밍의 정도를 높이면서 스레싱을 방지하는 효과를 제공, 프로세서의
효율성을 최적화시킴.
 작업설정 모델에서 해결해야 할 문제점.
• 우선 작업설정이 갖는 과거의 참조가 미래의 참조를 항상 보장하지는 않음.
• 작업설정의 크기와 구성 페이지들은 시간 경과에 따라 변함.
• 각 프로세스에 대한 작업설정을 모두 측정한다는 것은 현실적으로 불가능함.
• 작업설정은 프로세스가 실행됨에 따라 삭제, 추가되기도 하므로 변화가 심함.
• 각 프로세스가 참조한 페이지 시간과 시간 순서로 된 페이지 큐를 유지해야 하므로 작업설
정에 의한 메모리 관리는 복잡함.
• 작업설정 창의 크기를 나타내는 매개 변수인 ∆ 의 최적값이 알려져 있지 않으며, 처리되는
프로세스의 성격에 따라 ∆ 의 최적값은 매우 다양함.
※ 정확한 참조 대신 프로세스의 페이지 부재율에 관심을 갖고 프로세스 상주 집합의 크기를
늘리는 만큼 페이지 부재율은 낮아지는 효과를 활용한 결과로 많은 운영체제에서 사용됨. 52/66
5. 프로세스 적재 정책
 [그림 8-36] 작업설정 크기에 따른 페이지 프레임 수와 페이지 부재율과의 관계.
• 작업설정 크기가 너무 작고 페이지 프레임 수가 적으면 페이지 부재율이 높아 프로세스의
실제 작업 페이지들이 메모리에 있지 않고 스레싱 현상을 일으킬 수 있음.
• 작업설정 크기가 너무 크고 페이지 프레임 수가 너무 많으면 프로세스의 실제 작업 페이지
들 뿐만 아니라 다른 페이지까지 메모리를 차지하여 메모리 낭비가 발생하며 다중 프로그
래밍의 정도를 감소시킬 수 있음.
[그림 8-36] 작업설정 크기에 따른 페이지 프레임 수와 부재율과의 관계
53/66
5. 프로세스 적재 정책
 페이지 부재 빈도(PFF, Page Fault Frequency)
 스레싱 예방을 위한 직접적인 액세스 방법.
• 페이지 환경에서 프로세스의 실행을 측정하는 기준이 됨.
• 페이지 부재가 발생할 때 조절하여 작업설정 모델보다 오버헤드가 적음.
- 작업설정 모델은 페이지가 메모리에 액세스할 때 조절.
• 스레싱은 페이지 부재에서 발생하므로 페이지 부재비율 조절이 필요함.
- 페이지 부재 비율이 높음 = 프로세스가 더 많은 프레임을 필요로 함.
- 페이지 부재 비율이 낮음 = 프로세스가 너무 많은 프레임을 갖고 있음.
• [그림 8-37] 페이지 부재 빈도.
- 하나의 프로세스가 갖는 페이지 프레임 수에 따라 페이지 부재 비율이 변화화는 과정을 보여주는
그래프.
[그림 8-37] 페이지 부재 빈도
※ 페이지 부재 빈도 알고리즘은 페이지 참조가 새로운 지역으로 이동하는 과도기에는 제대로 작동하지
않음(페이지가 마지막으로 참조된 후 임의의 시간 단위(∆)가 경과되기 전까지 그대로 임).
54/66
6. 기타 고려 사항
 대치 범위
 여러 프로세스가 제한된 수의 프레임 사용을 위해 할당 기준이 필요함.
• 전역대치.
- 페이지 대치 범위를 모든 프로세스에 적용(리눅스의 대치전략).
- 프로세스가 교체할 프레임을 다른 프로세스로부터 획득.
- 성능분석이 쉬움.
• 지역대치.
- 프로세스를 개별적으로 제한(윈도우 XP의 대치전략).
- 각 프로세스에 할당된 프레임들 중에서만 교체할 희생자를 선택가능.
- 구현이 쉽고 부담이 적음.
※ 두 가지 모두 사용 가능한 빈 프레임이 없을 때 페이지 부재를 해결하기 위해 사용됨.
55/66
6. 기타 고려 사항
• [그림 8-38] 전역대치와 지역대치의 차이점.
- 새로운 프로세스 A6는 전역대치인 경우 페이지 B3과 교체되며, 지역대치인 경우 페이지 A5와 교체됨.
[그림 8-38] 지역대치와 전역대치
56/66
6. 기타 고려 사항
 전역대치.
• 특정 페이지를 점유하고 있는 프로세스에 관계없이 메인 메모리에 있는 모든 페이지는 대
치 대상이 됨.
- 프로세스가 교환할 프레임이 현재 다른 프로세스에게 할당되어 있어도 개별 프로세스의 동작(연산)과
상관없이 전체 프레임 중에서 하나를 선택해 프레임을 대치 가능.
- 다른 프로세스는 교환을 위해 그 프레임을 선택하지 않는다는 가정하에 가능함.
• 프로세스에 할당하는 프레임의 수는 증가하며 똑같은 프로그램도 외부적 환경에 따라서
전혀 다르게 수행될 수 있음.
• 문제점.
- 한 프로세스의 페이지 부재 처리를 위해 다른 프로세스의 페이지가 제거될 수 있어 각 프로세스의
페이지 부재비율을 조절할 수 없음.
- 다른 프로세스의 영향을 받기 때문에 프로세스의 실행이 늦어지거나 빨라질 수 있음.
※ 개별 프로세스의 동작보다는 시스템 전반에 중점을 두므로 대형 시스템에 이용됨.
 지역대치.
• 부재를 일으킨 프로세스의 상주 페이지에서 대치할 페이지를 선택.
- 각 프로세스에 할당된 프레임 중에서만 교체할 페이지 프레임을 선택할 수 있음.
- 각 프로세스에 할당된 프레임의 수는 변하지 않으며, 프로세스의 상대적인 중요도에 따라 메모리
할당을 조정, 성능을 향상시킴.
※ 각 프로세스에 대한 메모리 내의 페이지 집합은 각 프로세스의 페이지 기법에만 영향을
받고 지역대치의 할당 과정은 특정 프로세스로 지역화 됨.
57/66
6. 기타 고려 사항
 프리 페이징(Prepaging)
 처음에 발생하는 많은 페이지 부재를 방지하기 위한 기법.
• 예상되는 모든 페이지를 사전에 한꺼번에 메모리 내로 가져옴.
• 프리 페이징에 할당된 메인 메모리 크기와 한 번에 미리 가져올 수 있는 페이지 수 그리고
어떤 페이지를 미리 가져올 지 결정할 수 있는 경험적(공간적, 시간적 지역성에 따라 예상
하는) 알고리즘이 중요함.
• 입출력 인터럽트를 위해 연속된 페이지를 한 번에 메모리로 가져와 입출력을 여러 번 수행
하는 요구 페이징보다 좋은 성능을 보여줌.
• 문제점.
- 프리 페이징 비용이 그에 상당하는 페이지 부재를 해결하는 데 드는 비용보다 적은지 확인이 필요함.
- 페이징에 의해 메모리로 돌아온 페이지 중에서 상당 수는 사용되지 않을 수 있음.
• S개의 페이지가 프리 페이징 되었고 실제로는 확률 a(0 ≤ a ≤ 1)만큼 사용된다 가정.
- 불필요한 (1-a)s개의 페이지를 프리 페이징하는 데 필요한 비용이 as개의 페이지 부재를 해결하는
데 필요한 비용보다 많은지 혹은 적은지에 대한 비교가 필요함.
- a가 0에 가까우면 프리 페이징은 좋지 않음.
- a가 1에 가까우면 프리 페이징의 효과는 좋음.
58/66
6. 기타 고려 사항
 페이지 크기
 최적 페이지 크기에 관해 결정.
• 일반적인 페이지 크기는 2의 거듭제곱, 256(=28)에서 4,096(=212)byte나 word.
• 페이지 크기 결정 시 페이지 테이블의 크기를 고려해야 함.
- 가상 메모리 공간이 주어졌을 때, 페이지 크기를 감소시키면 페이지의 수가 증가, 페이지 테이블의
크기도 증가함.
- 활동 중인 각 프로세스는 페이지 테이블의 사본을 가져야 하므로 페이지 크기가 큰 것이 좋음.
• 메모리는 크기가 작은 페이지가 이용하기 좋음.
- 프로세스가 필요한 만큼 연속적으로 할당되면 프로세스는 정확히 페이지 경계에서 끝나지 않음.
- 마지막 페이지의 어떤 부분은 할당되나 사용되지 않는 내부 단편화가 발생.
- 프로세스의 크기, 페이지 크기와 관계없는 경우 평균적으로 각 프로세스의 마지막 페이지의 반은
낭비됨.
• 내부 단편화를 최소화하기 위해 크기가 작은 페이지가 필요하며, 한 페이지를 읽거나
기록하는 데 요구되는 시간도 중요함.
- 입출력 시간은 회전지연과 전송 시간으로 구성.
- 전송 시간은 전송되는 양에 비례하여, 작은 페이지 크기가 유리함을 의미함.
- 회전지연 시간은 전송되는 양에 비례하지 않음.
59/66
6. 기타 고려 사항
• [표 8-1] 페이지 크기 예.
[표 8-1] 페이지 크기 예
• 프로세서 속도, 메모리 용량 증가 및 디스크 속도의 증가로 인해 오늘날 페이지 크기는 커짐.
• 페이지 크기 결정의 어려움.
- 내부 단편화, 지역성 – 크기가 작은 페이지가 유리함.
- 테이블 크기, 입출력 시간 – 크기가 큰 페이지가 유리함.
60/66
6. 기타 고려 사항
 페이지 테이블 구조
 일반적으로 각 프로세스는 하나의 페이지 테이블을 가짐.
• 페이지 테이블을 이용하여 가상(논리) 주소를 프레임 번호와 변위로 구성된 메모리 주소로
변환.
• 페이지 테이블의 크기가 매우 크므로 관리가 중요하며, 메인 메모리에서 유지하기 불가능
하여 가상 메모리에 페이지 테이블을 저장.
※ 페이지 테이블 역시 페이징의 대상이 됨.
• 64bit의 가상주소 공간과 4KB 크기의 페이지 그리고 512MB의 메모리 시스템에서 단일
수준 페이지 테이블 유지에 필요한 공간의 크기.
- 가상 페이지당 하나의 항목 : 264-12 = 252 페이지 테이블 항목.
- 페이지 테이블 항목 크기 : 약 4(22)byte.
* 페이지 테이블 항목 : 액세스 제어 비트(약 1byte) + 물리적 페이지 번호(17bit).
* 512MB = 229이므로, 229/212(페이지 크기) = 217 물리 페이지의 유지.
- 전체 페이지 테이블 크기
: 252(페이지 테이블 항목 수)ⅹ 22(페이지 테이블 항목 크기) = 254(16,777,216GB = 16PB).
• 역 페이지 테이블의 개념.
- 프로세스들이 물리적 페이지를 공유할 수 있도록 하나의 글로벌 페이지 테이블이 필요함.
61/66
6. 기타 고려 사항
• [그림 8-39] 전통적인 페이지 테이블과 역 페이지 테이블의 구조.
- 전통적인 페이지 테이블 : 각 페이지에 대한 항목을 유지, 크기는 가상 주소 공간의 크기에 비례하며
가상 페이지에 의해 색인 과정을 거침.
- 역 페이지 테이블 : 해시에 의한 색인이 이루어짐.
[그림 8-39] 전통적인 페이지 테이블과 역 페이지 테이블의 구조
62/66
6. 기타 고려 사항
 역 페이지 테이블 구조.
• IBM의 AS/400, IBM RT-PC, PowerPC, HP 워크스테이션에 사용됨.
• 각 프레임에 대한 페이지 테이블 항목을 메인 메모리에 저장.
- 페이지 테이블 항목의 수는 논리적(가상) 주소 공간이 아닌 물리 메모리의 크기에 비례함.
- 페이지 테이블 항목은 프레임에 배치된 논리적 페이지에 대한 정보를 유지.
- 물리적 메모리의 한 프레임에 대한 정보를 저장하지만, 논리적 페이지 번호가 아닌 페이지 프레임
번호로 색인.
* 일반적인 페이지 테이블 참조와 비교 시 역(반대)임.
- 2차 저장소(디스크)에 있는 페이지와 관련된 어떤 정보도 유지하지 않아 운영체제가 관리해야 함.
• 역 페이지 테이블의 형태.
- 가장 단순한 형태는 선형 배열에 물리 페이지당 하나의 항목으로 이루어 짐(메모리 프레임마다 한
항목씩 할당)
- 테이블은 공유되며, 각 항목은 프레임에 올라와 있는 페이지 주소, 페이지를 소유하고 있는 프로세스
의 ID를 표시.
* 하나의 페이지 테이블과 테이블 내 각 항목은 메모리 한 프레임을 가리킴.
- 물리 페이지는 가상 주소에 사상됨.
* 각 항목의 내용은 물리 페이지 번호 대신 가상 페이지 번호가 됨.
* 가상 페이지 번호에 따른 테이블 색인으로 물리적 페이지 번호는 저장되지 않음.
- 가상 주소 변환을 위해 가상 페이지 번호와 현재의 프로세스 식별자를 각 항목(배열)과 순차적으로 비교함.
* 가상 페이지 번호와 일치되는 항목을 찾으면 그 항목의 인덱스가 물리적 주소(프레임 번호)가 되며,
일치하는 경우가 없으면, 페이지 오류 발생.
63/66
6. 기타 고려 사항
• [그림 8-40] 선형 역 페이지 테이블을 이용한 변환 절차.
- 역 페이지 테이블에서 페이징 시스템의 가상 주소는 <프로세스 식별자(0), 가상 페이지 번호(0x1),
변위(0x123)>로 구성.
[그림 8-40] 선형 역 페이지 테이블을 이용한 변환 절차
• 역 페이지 테이블에 대한 탐색이 비효율적임.
- 가상 페이지 주소를 찾기 위해 페이지 테이블 전체를 탐색하거나 도는 페이지 크기의 메모리를
액세스해야 함.
- 탐색시간 감소를 위해 해싱(해시 테이블)이 필요함.
64/66
6. 기타 고려 사항
• 해시 테이블
- 역 페이지 테이블을 지시하는 포인터를 포함하며, 역 페이지 테이블은 페이지 테이블 항목을 포함.
- 다른 주소가 동일한 해시 테이블 항목에 사상(충돌)될 수 있으므로 체인 연결 기법을 사용.
* 충돌 : 프로세스의 가상 페이지 수가 페이지 프레임 수보다 커서 여러 입력 값(가상 주소)이 동일한
해시값을 생성.
* 충돌 시, 역 페이지 테이블은 해시 테이블의 동일한 셀에 들어가는 항목들이 다른 값으로 덮어쓰지
않도록 셀 항목의 위치를 가리키는 포인터(연결 리스트)를 추가함.
• [그림 8-41] 해시 역 페이지 테이블 구조의 주소 변환.
[그림 8-41] 해시 역 페이지 테이블 구조의 주소 변환
※ 가상 메모리 하나를 참조하려면 두 번의 메인 메모리 액세스가 필요함.
※ 액세스 시 해시 테이블 진입을 먼저 읽고 페이지 테이블을 읽으며, 최근 성능 향상을 이해 캐시를
사용하여 처리함.
65/66
6. 기타 고려 사항
 변환 우선참조 버퍼(TLB, Translation Look-aside Buffer).
• 가상 메모리 참조를 위해 메모리 액세스 시간이 두 배로 증가하는 문제점을 해결.
• 페이지 테이블의 항목들을 위한 특별한 캐시를 사용(메모리의 캐시와 동일한 동작 수행).
• 프로세스의 전체 페이지 테이블 중 가장 최근에 참조한 페이지 일부만 저장.
- 시간의 지역성에 따름.
• 가상 주소(V = ( p , d ) )가 주어지면, 프로세서는 먼저 변환 우선참조 버퍼를 조사, 페이지 p를 찾음.
- 원하는 페이지 테이블의 항목이 있으면(TLB 적중) 프레임 번호(PFN)를 조사하여 메모리 주소를 작성.
* 메모리 주소 작성을 위해 변환 우선참조 버퍼를 갱신(페이지 테이블 항목 포함).
- 원하는 페이지 테이블 항목이 없다면(TLB 실패) 프로세스는 페이지 번호를 이용하여 해당 페이지
테이블 항목 조사.
* 페이지 부재 현상이 발생, 운영체제를 호출하여 처리함.
[그림 8-42] 변환 우선참조 버퍼를 이용한 페이징 시스템
66/66
IT CookBook, 운영체제: 그림으로 배우는 구조와 원리