1. 배경
: 주 메모리보다 용량이 큰 기억 공간에 주소 지정이 가능하다.
그렇게 하면 프로그램 일부분만 적재하고 실행시킬 수 있다.
-> 프로그래머에게 가상 메모리를 제공하여 이 공간에 주소를 지정한다.
- 부분 적재의 타당성
: 항상 전체 프로그램이 실행되는 것이 아니다.
- 부분 적재의 강점
: 메모리의 크기를 고려하지 않아도 되기 때문에 프로그래밍 작업이 쉬워진다.
: 공간의 제약이 없으므로 중첩이 불필요하다.
- 부분 적재의 단점
: 메모리와 디스크 사이의 이동량 증가
: 어느 시기에 어느 페이지를 적재 / 복귀할지 알고리즘이 필요
: 페이지 부재에 대한 처리 방안 요구
* 부분 적재 - 운영체제가 관리
* 중첩 - 프로그래머가 직접 설계 및 관리
2. 요구 페이징
: 페이지가 참조될 때에만, 그 페이지를 메모리에 적재한다.
1) 페이지 부재 오류
: 지정된 프레임 페이지가 메모리에 적재되지 않은 경우
- 페이지가 교체되는 동안 CPU는 다른 프로그램을 실행시킨다.
2) 요구 페이지의 성능
- 실제 접근 시간 (EAT)
: (1-p) x 메모리 접근 시간 + p x 페이지 부재 시간 ( p는 페이지 부재율이다. )
메모리 접근 시간 = 200 nanosecond
페이지 부재 처리 시간 = 8 msec = 8,000,000 nsec
EAT = (1 – p) x 200 + p x (8,000,000) = 200 + 7,999,800 x p (nsec)
10% 성능 감소(지연 시간이 20보다 작으려면?) : 20 > 7,999,800 x p ➔ p < 0.0000025
- 스왑 공간(메모리 쪽), 디스크 캐시(하드디스크 쪽) 활용
3. 페이지 교체
- 페이지 교체의 필요성 : 메모리에 빈 공간이 없는 경우
페이지 교체 알고리즘
1) 희생자 페이지 선택
2) 희생자 페이지를 디스크에 출력하고, 페이지 테이블에 기록한다.
3) 요구된 페이지를 적재하고, 페이지 테이블 내용을 수정한다.
4) 사용자 프로세스를 다시 시작한다.
- 페이지의 부재와 프레임 개수
: 프레임 수가 증가할수록 페이지 부재 횟수가 감소한다.
- 참조 문자열
: 메모리를 참조하는 페이지를 의미한다.
4. 선입선출(FIFO) 교체 알고리즘
: 가장 오래된 페이지가 교체되도록 선택한다.
- 문제점 : 벨레디의 변이
: 할당되는 프레임의 수가 증가해도 페이지 부재율이 증가하는 현상
5. 최적 교체 알고리즘
: 앞으로 가장 오래 사용되지 않을 페이지를 교체한다. (미래를 예측)
-> 모든 알고리즘 중에 가장 낮은 페이지 부재율을 보장한다.
6. LRU(Least Recently Used) 알고리즘
: 가장 오랫동안 사용하지 않은 페이지를 교체한다.
-> 가장 최근에 사용된 것을 기준으로 !
- LRU의 구현
1) 계수기의 사용
: CPU에 논리 시계나 계수기 추가
2) 스택의 사용
7. LRU 근접 알고리즘
: LRU의 시간 기록하는 오버헤드를 줄이기 위한 알고리즘이다.
'Computer Science > Operating System' 카테고리의 다른 글
Practice 6) Thread & Semaphore 2 (0) | 2020.12.17 |
---|---|
Practice 5) Thread & Semaphore 1 (0) | 2020.12.17 |
이론 6) 주 메모리 관리 기법 3 (0) | 2020.12.02 |
이론 6) 주 메모리 관리 기법 2 (0) | 2020.12.02 |
이론 6) 주 메모리 관리 기법 (0) | 2020.12.02 |