->
프로그램 전체를 동시에 실행하지 않음->
필요시 디스크와 메모리 간에 자동으로 전송->
예외 처리, 자주 발생하지 않음->
실제로 사용 크기보다 더 크게 정의할 수 있음->
복사하기, 붙이기, 잘라내기, 삽입하기 중 선택한 메뉴를 사용한다.->
응답시간이나 반환시간은 향상되지 않음->
일부만 적재되므로->
중첩을 고려하여 프로그래밍할 필요가 없으므로->
적절한 페이지 교체 알고리즘이 필요하다.O
O
O
X
X
X
X
가상 주소
->
실행 중인 프로세스가 참조하는 주소
->
논리적 주소
->
상대 주소
물리적 주소
->
메인 메모리의 실제주소
->
절대 주소
매핑
->
동적 주소 변환 : ㅔ모리 참조 동안 가상 주소를 물리적 주소로 변환하는 프로세스
->
연속적인 가상 주소가 메인 메모리에서는 불연속적
->
매핑 속도 중요 : 느리면 시스템 성능 떨어지고 메모리 사용 효과 낮아짐
2^12
2^10
20
12
10
실행 중인 프로세스가 요구하는 페이지만 메인 메모리에 적재한다.
가상 메모리에서 많이 사용하는 메모리 관리 방법이다.
매핑 테이블 유지가 필요하다. ->
동적 주소 변호나
지연 스와퍼 lazy swapper로 구현
->
프로세스가 요구하는 페이지만 적재하는 스와퍼
->
Pager라고도함
->
지연 기술
->
프로세스 전체를 적재하는 스와퍼와 다름
장점
->
메모리 절약
->
다중 프로그래밍 정도 증가
->
프로그램 시작 시 I/O절약, 적재 지연 감소, 응답 성능 향상
->
물리적 메모리가 부족해도 대용량 프로그램을 실행가능
단점
->
프로세스 실행 중에 페이지 부재로 지연 발생 : Prepaging을 미리 잘 가져오면 성능 향상 가능
->
메모리 관리 복잡 : 페이지 교체 알고리즘 등이 필요
->
메모리 액세스 시간 예측이 어려움 : 디스크에서 가져올지도 모름로
->
하드웨어 지원이 없을 경우 적용 불가 : 저렴한 시스템에는 없음
공유 페이지를 수정하려면 복사본을 새로 만든 후 수정
->
그 페이지를 공유하는 다른 프로세스들에게 민폐를 안 끼침
페이징의 공유 정도를 높이는 최적화 전략
5번
유효 비트가 0인 페이지에 액세스 시도 시 페이지 부재
Free-frame list : OS가 유지하는 빈 프레임 리스트
Zero-fill-on-demand : 프레임을 하랑하기 직전에 0으로 채워 이전 내용을 지운다.
페이지 부재 확률을 낮추어야 함
유효 액세스 시간을 줄여야함
메인 메모리에 있는 페이지를 새로운 페이지로 바꾸는 것
->
페이지 부재시 빈 프레임이 없으면 일어난다.
빈 프레임이 없으면 희생자를 선택한다.
2번
->
Counter->
Stack->
Reference bit->
Aging->
Clock(Second chance)->
NRU(Not Recently Used)->
Counting : 최소 사용 빈도수(LFU), 최대 사용 빈도수(MFU)->
페이지 버퍼링오래된 페이지부터 교체한다.
각 페이지가 메모리에 적재될 때 선입선출 큐에 삽입한다.
큐의 헤드 페이지를 먼저 교체한다.
4 3 2 1 4 3 5 4 3 2 1 5
1 1 1 1 1 1 1 1 1
9번
521
4 3 2 1 4 3 5 4 3 2 1 5
1 1 1 1 1 1 1 1 1 1
10번
3215
->
계속 사용되는 오래된 페이지 교체->
벨래디의 변이 : 프레임 수를 늘려도 페이지 부재 수가 증가하는 현상이다.->
페이지 부재 비율이 가장 낮음->
실현 가능성이 희박하다.가장 오랫동안 사용하지 않은 페이지 교체
->
시간족으로 거꾸로 찾는 최적 페이지 교체 알고리즘
최근에 액세스 한 것은 곧 다시 액세스 할 가능성이 크다
->
지역성
참조 순서 기억
->
Counter
->
Stack
논리 클록을 페이지 참조 마다 증가
MMU는 페이지 참조마다 논리 클록을 페이지 테이블 항목 counter에 복사
교체를 위해 검색 필요 : O(n)
메모리 참조 마다 페이지 번호를 스택에 push한다.
Top ->
가장 최근에 사용한 페이지
Bottom ->
가장 오래전에 사용한 페이지 Victim
이미 페이지 번호가 스택에 있을 경우 빼서 push
장점 : 교체를 취해 검색을 안해도 돔
단점 : Top으로 옮기는 연산이 복잡하다.
LRU문제점 : 너무 많은 작업이나 하드웨어 자원이 필요하다.
LRU근사 안고리즘
->
Reference bit
->
Aging
->
Clock (Second chance)
->
NRU (Not Recently Used)
->
LFU (Least Frequently Used)
->
MFU (Most Frequently Used)
->
페이지 버퍼링
->
참조 시 첫 비트를 1로 세트 후 , 모든 페이지의 참조 비트를 right shift한다.->
가작 작은 참조 비트를 희생자로 내몬다.최근 사용하지 않았거나 수정하지 않은 페이지를 교체한다.
NUR라고도 한다.
페이지 항목에 두 비트를 추가한다. 참조비트와 수정비트
->
많이 참조된 후 거의 참조 되지 않는 페이지가 남는 단점->
빈도수 낮으면 방금 들어와서 앞으로 사용될 확률이 높다고 가정한다.->
계속 많이 사용되는 페이지가 희생자가 되는 단점->
교체된 페이지를 잠시 동안 메인 메모리에 유지한다.->
수정된 적 없는 페이지, 수정된 페이지(일괄기록)->
버퍼링 공간으로 페이징을 위한 공간 감소->
신속 페이지 교체->
수정돈 페이지를 디스크에 쓰지 않으므로->
부재 페이지를 디스크가 아닌 메인 메모리에서 가져 오는 경우도 있으므로
->
프레임 수가 줄어들면, 페이지 부재 비율 증가하여, 수행 속도가 저하된다.->
성능 저하를 막기 위한 적절한 프레임 수가 존재한다.균등 할당
->
각 프로세스에 같은 개수의 프레임을 할당한다.
->
프로세스마다 메모리 필요량이 달라서, 어떤 프로세스는 프레임을 낭비하고, 어떤 프로세스는 빈번한 페이지 부재로 난항을 겪는다.
비례할당
->
크기 비례할당
->
우선순위 비례 할당
->
한 명령어가 참조하는 모든 페이지를 수용할 만큼은 필요하다.->
간접 주소 지정박식이면 적어도 3개의 프레임이 필요하다->
명령어의 수행 중 페이지 부재 시 명령어를 다시 시작해야 한다.1번
페이지 교체가 너무 자주 일어나는 현상이다.
->
어떤 프로세스가 수행에 보내는 시간보다 페이지 교체에 보내는 시간이 더 길면 스래싱을 하고 있다고 표현을 한다.
다중 프로그래밍도가 너무 높으면 스래싱 현상이 발생한다.
기타 자원 부족으로 필요한 연산을 수행할 수 없는 상태가 되면 운영체제는 다른 프로세스에서 자원을 회수는 등 방법을 이용하여 자원을 확보한다.
어떤 프로세스가 실제 사용하는 프레임 수만큼 갖지 못할 경우
너무 많은 다중 프로그래밍
->
전역 페이지 교체의 경우
->
프로세서의 사용률이 더욱 감소됨프로세스에 적절한 개수의 프레임을 할당한다.
작업 집합 모델
->
각 프로세스는 그 프로세스 전체가 아니라 작업 집합만 기억장치에 올려도 잘 싱행된다.
->
지역성에 근거함
3번
작업집합모델
프로세스가 메모리의 동일하거나 가까운 주소를 연속해서 참조하는 현상
프로세스가 메모리를 특정 시간동안에는 특정 페이지만 집중적ㅇ로 사용하는 현상이다.
시간적 지연성
->
같은 주소를 가까운 시간 내에 반복해서 참조하는 현상이다.
->
순환, 루프, 서브루틴 반복 호출, 스택, 합계에 사용하는 변수이다.
공간적 지연성
->
근처 주소를 가까운 시간 내에 반복해서 참조하는 현상이다.
->
배열 검색, 순차적 코드의 실행, 근처에 관련 변수 선언
->
순차적 지역성
프로세스가 일정시간 동안 필요로 하는 메모리 부분이다.
->
작업 집합만 메모리에 있으면 프로세스 실행 가능
->
작업 집합은 시간에 따라 점차 변한다.
프로세스가 일정시간동안 사용하는 페이지 집합으로 추정
->
새 프로세스는 작업 집합 공간이 있을 때 시작->
프로세스들의 작업 집합 크기 합이 너무 크면 일부 프로세스 중단->
각 프로세스가 참조한 페이지를 시간 순서대로 큐에 관리하는 것이 복잡하다.->
프로세스의 성격에 따라 다르다4번
2번
->
상한선 : 프레임 수 증가->
하한선 : 프레임 수 감소
전역 교체 알고리즘 에서는 우선순위가 높은 프로세스가 우선순위가 낮은 프로세스의 프레임을 뺏을 수 있다.
프레임의 모든 잠금 해제를 고려해야 하며, 교체할 희생자 페이지에서 페이지 테이블 조사가 필요하다.
페이지 테이블은 하드웨어로 직접 지원하지 않기 때문에 운영체제는 소프트웨어로 유지관리 해야한다.
전역 교체 알고리즘의 문제점은 프로세스가 그 자신의 페이지 부재 비율을 완전히 조절할 수 없다는 것이다.
한 프로세스의 페이지 부재 비율은 그 프로세스가 어떠한 프로세스들과 함께 실행되느냐에 따라 영향을 받는다.
동일한 프로세스도 그때그때 전혀 다르게 실행될 수 있다.
다른 프로세스의 영향을 받기 때문에 실행이 늦거나 빠르게 될 수 있다.
공간적을 비슷한 곳에 할당
가장 일반적인 분할 형태는 고정 분할과 작업 집합 모델 기반으로 한 균형 설정 알고리즘이다.
시스템 부하 수준이 달라져도 프로세스는 일관된 성능을 보인다.
프로세스는 일부 공유 전역 데이터 구조에서 서로 경쟁하지 않고 독립적으로 페이지 부재를 처리한다.
지역보다 전역 교체 알고리즘이 더 좋은 성능을 나타내며 일반적으로 많이 사용한다.