가상메모리 관리
가상메모리 개요
실제주소공간의 크기에 구애받지 않고 큰 가상주소 공산상에서 프로그램수행가능
가상메모리는 한의 프로세스 전체가 한번에 주기억장치 내에 존재하지 않고 일부만 있어도 수행되는 방법을 제공함
주기억장치보다 큰 프로세스 수행가능
실제메모리 |
가상메모리 |
초록부분이 자고 있음,노랑색 넣어야함 |
|
|
초록부분 가상메모리로 내림 |
|
다시 초록부분을 사용해야함 |
노란색을 먼저 내리고 초록색을 다시 올림 |
|
동적주소변환필요
가상과 실제를 이동하는 메커니즘
동적주소변환필요
프로세스가 수행될떄 가상주소가 실제주소로 변환되어 이동되는 메커니즘
매핑 테이블을 만들어 동적 변환 할때 빠르게 한다
동적주소변환필요
가상과 실제를 이동하는 메커니즘
인위적 연속성
메인에 연속적이라고 꼭 가상에 연속적일 필요는 없다
블록사상기법
가상메모리에 실제메로리로 이동할때 블록단위로 이동함
=한바이트씩 매핑테이블을 옮기면 매핑테이블이 너무 커짐->매핑테이블이 메모리를 너무 많이 잡아먹음
페이징 기법 : 같은 크기의 블록을 이용하여 이동하는 방법(이들블록을 페이지라고함)
세그먼트기법 : 다른크기의 블록끼리
페이징: 페이지들로 가상메모리 구성하는 방법
v=(p,d)
p는 페이지 번호
d는 페이지 p 내에서 참조될 항목이 위치하고 있는 곳의 변위
페이지사상 테이블을 통해 실제주소 계산
동적주소변환방법:페이지사상테이블을 통해 실제주소 계산
페이징 시스템에서의 동적주소 변환방법1 : 직접 사상방법
주기억장치에 저장되어 있는 페이지 사상 테이블을 이용해 동적주소변환을 수행
페이지 사상 테이블의 시작주소는 페이지 사상 테이블 시작점 레지스터에 보관되어있음
p* 실제메모리 주소
메인메모리에서 페이지 패핑테이블 찾는법
- 페이지 사상 테이블의 시작주소 찾으면 매핑테이블 찾을 수 있고
- p찾고 실제메모리주소(p*)찾고 d
페이징 시스템에서의 동적주소 변환방법2 : 연관사상방법
별도의 연관기억장치를 이용하여 페이지 사상테이블 전체를 관리함
병렬검색이 가능하며 고가의 메모리
페이지 매핑테이블 찾을 필요 없음
위에서 부터 순서대로 찾을 필요없음(병렬검색)
페이징 시스템에서의 동적주소 변환방법3 : 연관/직접사상방법
연관사상 및 직접 사상의 장점을 살릴 수있는 복합주소변환기법
가상주소를 연관페이지 사상테이블에서 찾고 없으면 직접사상테이블에서 찾음
최근에 참조된페이지는 연관 페이지 사상테이블에서 찾고, 없으면 직접사상 테이블에서 찾음 = 연관이 비싸서
페이징 시스템에서의 공유
만약 파워포인트 어플을 실행했다면
프로그램은 공유하고 데이터만 다르게 만들어서 메모리사용을 줄인다.
페이지 크기는 어떻게 할 것인가?
크기가 작다 = 메모리 내의 작업세트를 확보하는데 도움을줌
하지만, 전송횟수가 많음
크기가 크다 = 전송횟수를 줄일수 있음
하지만, 불필요하게 참조되지 않을 많은 정보들까지 참조해야할 수 있음
페이지 반입기법
가상메모리에 있는페이지을 실제 메모리 페이지에 올리는것
요구페이지기법
명백히 참조되는 프로세스만 가상에서 메인으로 올린다.
예상페이지 기법
운영체제가 예측하여 주기억장치에 여유가 있을때 사용될것이라고 예상되는 페이지들을 미리 적재함
세그먼테이션 기법
논리적으로 관련이있는 단위로 분활하는 방식
v=(s,d)
직접사상 연관사상 직접연관사상 모두 존재
사상테이블항목
세그먼테이션의 공유
페이징보다 단순함-페이징 시스템의 경우 여로개의 페이지가 공유되어야 할 필요가 있으나, 세그먼테이션은 하나의 세그먼트만 공유하면 됨
세그와 페이지혼용
한세그가 너무 커지면 한번 더 페이지를 분할하여 세그와 페이징 혼용하여 사용
페이지 교체 알고리즘
메인이 꽉찼을때 가상에서 메인으로 올릴려면 메인의 하나를 내려야하는데
어떤것을 내릴것인가
5가지 알고리즘
- FIFO
- 최적교체
- LRU
- 2차 기회
- LFU
FIFO
가장먼저 메인메모리에 들어와있는 페에지를 교체시키는 방법
page fault : page가 호출되었을떄 메인 메모리에 없는 경우
총 페이지 부재횟수 15번
페이지 폴트가 많을 수록 안좋은 알고리즘이다.
FIFO의 모순 또는 Belady의 이변
프레임의 수가 증가될때 페이지 부재가 더 증가하는 모순 발생
최적교체 알고리즘
앞으로 가장 오래 동안 사용되지 않을 페이지를 교체시킴
최소의 페이지 부재율을 가지는 알고리즘으로 FIFO의 모순을 피 할 수 있음
하지만 호출순서에 대한 모든 상황을 사전에 알고 있어야함으로 현실적인 어려움이 발생(만들기 어려움)
LRU알고리즘
최근에 가장 적게 사용된-현시점에서 가장 오래전에 사용된 페이지를 제거하는 방법-스택
단점 : 구현이 어려움
2차 기회 알고리즘
FIFO기법의 단점을 보안한다.
각페이지마다 참조비트를 두고, FIFO기법을 이용
-참조비트가 0일경우 교체하고 1일경우 0으로 만들고 리스트 맨 마지막으로 이동시킴
LFU(Least Frequently Used)알고리즘
LRU와 비슷한 방법으로 각 페이지의 사용이 얼마나 집중적으로 되었는가에 관심을 가지고, 가장 적게 사용되거나 집중적이 아닌 페이지가 대체됨
-가장 참조횟수가 적은 페이지를 교체
NRU(Not Recently Used)알고리즘
최근에 사용되지 않은 페이지는 가까운 미래에 사용되지 않는 경향에 따라 그것들을 참조되는 페이지와 교체시킴
LRU와 유사하나,규현비용이 낮음(클럭이나 스택 구현필요없음)
두개 비트 이용(참조,변형) :11, 10, 01, 00 = 1,2,3,4순위
숫가자 큰 페이지를 오래 유지함
스래싱
페이지 교체가 계속 발생하여 프로세스 수행 시간보다 페이지 교체 시간이 더 많아지는 경우
스래싱 방지를 위해선 한 프로세스가 효율적인 수행을 위하여 제공받아야할 페이지 프레임의 수를 알아야함
작업세트
프로세스에 의해서 자주 참조되는 페이지들의 집합체를 의미
페이지 부재율
주 기억장치에 프로셋가 수행에 필요로 하는 페이지가 없는 비율
높으면, 더 많은 페이지 프레임을 필요로함
낮으면 너무 많은 페이지 프레임을 가지고 있음
요약
가상메모리
주기억장치보다 크기가 큰 프로세스 수행가능
동적주소 변환 (가상->주기억),블록단위로 매핑