개발 공부
가상 메모리 본문
: 물리 메모리보다 큰 프로세스를 실행시 물리 메모리 크기 한계를 극복하기 위해 사용
어떻게 사용?
- 프로세스 이미지를 모두 메모리에 올릴 필요는 없음
- 현재 실행에 필요한 부분만 메모리에 올린다.
- 오류처리 제외, 배열 일부 제외, 워드 프로세스에서 정렬, 표 기능 제외
>> 동적 적재(dynamic loading)과 비슷한 개념
● Demand Paging
- 프로세스 이미지는 backing store(H/W)에 저장
- 프로세스는 페이지의 집합
- 지금 필요한 페이지만 메모리에 올린다.(load)
>>요구되는(demand) 페이지만 메모리에 올린다.
● 하드웨어 지원
- valid비트 추가된 페이지 테이블
: 메모리에 없으면 0, 있으면 1
- backing store (= swap device)
● 페이지 결함 (Page Fault)
: 접근하려는 페이지가 메모리에 없음(invalid)
>> Backing store에서 해당 페이지를 가져온다.
* pure demand paging VS prepaging
-backing store에서 메모리로 들고 올때, 진짜로 필요한 페이지만 들고 오는 것
1. pure demand paging
: 처음 시작시 아무것도 안올리고 시작 >> 처음 시작하자마자 page fault일어남
단점- 처음부터 page falt가 일어나서 속도가 느림(인터럽트 걸쳐 오류처리 루틴 계속 수행)
장점- 지금 당장 필요한 것만 올리기 때문에 메모리가 절약됨
2. prepaging
: 필요한 것이라고 생각해 미리 몇 페이지를 가져오는 방식
단점과 장점와 pure demand paging과 반대
* swapping vs demand paging
단위가 프로세스, 페이지로 다름
● 유효시간 접근
cpu가 어떤 주소를 냈을 때 valid=1이면 이 주소를 메모리에서 빨리 읽을 수 있음.
그러나 valid=0이면 인터럽트가 걸리고 OS로 가서 H/D를 뒤져 메모리에 올리고 page table에 할당해야해서 시간이 오래 걸림
>>평균적으로 읽혀지는데 얼마나 시간이 소요될까? : Effective Access Time(EAT) ,,유효접근 시간
Teff = (1-p)Tm + pTp
1 )1-p : Page fault가 않일어날 확률→CPU가 주소를 냈는데 다행히 메모리에 있는 것 → 바로 읽어 오면 됨
2) Tm: 메모리에서 읽어오는 시간
3) P: page fault가 일어날 확률
4) Tp: 디스크를 읽는 시간, 즉 page fault가 일어났을 때 걸리는 시간
● 페이지 교체
Demand paging(요구되는 페이지만 backing store에서 가져옴)
프로그램 실행 계속됨에 따라 요구 페이지는 늘고 언젠가는 메모리가 가득차게 된다.
*Memory full
:메모리가 가득 차면 추가로 페이지를 가져오기 위해
page-out : backing store로 몰아내고
page-in : 그 빈 공간으로 페이지를 가져온다.
>>여기서 쫓겨난 페이지(희생양) : victim page
*victim page
: 어떤페이지를 몰아낼까? (Random, FIFO,,)
- i/o절약을 위해
- 기왕이면 modify(수정)되지 않은 페이지를 선택
- 방법 : modified bit (=dirty bit)
## 페이지 교체 알고리즘 ## (FIFO, OPT, LRU)
- Page reference string
|
- 연속된 페이지에선 page faults가 일어나지 않음 (떨어져 있으면 발생)
- 따라서 이어지는 숫자는 스킵하는 것이 Page reference string
-FIFO (First-In First-Out)
ex) 페이지 참조열: 701203042303211201701 of frames = 3 page fault는 7012 304230 12 701에서 발생 |
7 | 7 | 7 | 2 | 2 | 2 | 4 | ||
0 | 0 | 0 | 3 | 3 | 3 | |||
1 | 1 | 1 | 0 | 0 | ||||
page fault | 7이 없었음 o |
0이 없었음 o |
1이 없었음 o |
2가 없어 제일 먼저 들어온 7이 빠짐 | 0은 있어서 3으로 넘어감 3이 없음 | 이런식으로 진행 |
-OPT : 최적의 알고리즘
:앞으로 가장 오랜 기간동안 사용이 안될 것을 victim으로
>>Unrealistic
미래는 알 수 없음
너무 비현실적이라 나온 알고리즘이 LRU(과거를 통해 미래를 예측)
-LRU (Least Recently Use) : 최근에 가장 오랫동안 사용하지 않은 페이지 교체
ex) 페이지 참조열: 701203042303211201701 of frames = 3 page fault는 7012 304230 12 701에서 발생 |
7 70 701 201 203(1이 제일 늦게 사용) 403(2가 제일 늦게 사용) ...이런식,,
- Global replacement
- 메모리 상의 모든 프로세스 페이지에 대해 교체
- Local replacement
- 메모리 상의 자기 프로세스 페이지에 대해 교체
- 성능 비교
- Global replacement가 더 효율적일 수 있다.
'대학교 공부 > 운영체제' 카테고리의 다른 글
세그멘테이션 (Segmentation) (0) | 2021.06.04 |
---|---|
페이징 Paging (0) | 2021.06.04 |
주기억장치 관리 (Main Memory Management) (0) | 2021.06.03 |