프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법
물리 메모리 크기의 한계를 극복하기 위한 기술로 물리 메모리보다 큰 프로세스를 수행하게 함
동적 할당으로 프로세스 실행 시 필요한 부분만 메모리에 적재
프로세스의 모든 코드는 항상 필요한 것이 아니다. 오류를 처리하는 부분이나 필요 없는 배열 부분은 실제로 프로세스가 잘 동작한다면 필요 없는 부분이 된다. 따라서, 프로세스는 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다. 프로세스 이미지를 모두 메모리에 올릴 필요가 없는 것이다. 동적 적재와 비슷한 개념이라고 알 수 있다.
프로세스가 메인 메모리에 저장되지 않은 페이지를 사용하려 할 때 발생(즉, 프로세스가 사용하려는 페이지가 메인 메모리에 없는 경우)
페이지 폴트가 발생하면 해당 페이지를 가상 메모리에서 찾게 됨
가상메모리는 하드디스크에 저장되어 있기 때문에, 페이지폴트가 발생하면 I/O에 의한 속도의 저하가 발생
페이지 부재를 해결하기 위한 가상 메모리 관리법
초기에 필요한 것들만 적재하고 페이지들이 실행 과정에서 실제로 필요할 때 적재하는 것
한 번도 접근되지 않는 페이지는 물리 메모리에 적재되지 않음
메모리 관리 매커니즘(MMU)을 사용해 여러 프로세스가 시스템의 메모리를 효율적으로 공유할 수 있도록 함
운영체제는 페이지 테이블(Page Table)로 가상 메모리를 관리
페이지 부재가 발생했는데 빈 프레임이 없다면 페이지 교체 알고리즘으로 대응
사용하지 않지만 메인 메모리에 있는 페이지를 디스크로 내보내고 새로운 페이지로 바꾸는 과정
내보낼 페이지를 고를 때는 페이지 부재 비율이 가장 낮은 알고리즘을 선택
프로세스가 메모리에 없는 페이지를 접근하면 페이지 테이블 항목이 무효로 설정되어 있어 페이지 부재 트랩(page-fault trap)을 발생시킴
메모리에 올라온 지 가장 오래된 페이지 교체
오래된 페이지가 항상 불필요한 정보를 포함하지 않을 수 있음
처음부터 활발하게 사용되는 페이지를 교체해 페이지 부재율을 높일 수 있음
Belady의 모순: 페이지를 저장할 수 있는 페이지 프레임의 갯수를 늘려도 되려 페이지 부재가 더 많ㅎ이 발생하는 모순이 존재
앞으로 가장 사용하지 않을 페이지(가장 오랫동안 사용되지 않은 페이지)를 가장 우선적으로 내보냄
알고리즘 중 가장 낮은 페이지 부재율을 보장
모든 프로세스의 메모리 참조의 계획을 미리 파악할 방법이 없어서 구현의 어려움이 있음
캐시 메모리란 데이터를 미리 복사해두는 임시 저장공간
데이터 접근시간이 원래 데이터를 접근하는 시간에 비해 월등히 빠름
자주 사용되는 데이터를 캐시에 두고 사용함으로, 접근ㅅ시간을 줄여 CPU 성능을 효율적으로 사용할 수 있음
속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위함
즉, 메모리와 CPU간의 속도 차이를 좁히기 위해 CPU가 앞으로 사용할 가능성이 많은 데이터를 미리 가져오는 것(메인 메모리에 접근하지 않아도 됨으로 시간단축)
적중율(Hit rate)를 극대화 시키기 위해 데이터 지역성(Locality)의 원리를 사용
캐시에서 원하는 데이터를 찾으면 Cache Hit, 못 찾으면 Cache Miss
지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access하지 않는 특성을 기본으로 함
즉, Locality란 기억장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성인 것
시간적 지역성
공간적 지역성
[참조]
https://copycode.tistory.com/122?category=740133
https://blackjellybear.tistory.com/31