프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 것은 가져오기 정책이다
가져오기 정책은 프로세스가 요청할 때 메모리로 가져오는 방법이 일반적이며 이를 요구 페이징이라고 한다
메모리를 절약 및 효율적으로 관리하고 응답 속도를 향상시키기 위해 프로세스의 일부만 메모리로 가져온다
반대로 미리 가져오기는 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식이며 대표적인 예시로 캐시가 있다
캐시는 앞으로 필요할 것이라고 예상되는 부분을 고속의 캐시 메모리에 가져다놓음으로써 시스템의 성능을 향상시킨다
그러나 미리 가져온 데이터가 쓸모 없는 경우 피해가 크기 때문에 주로 요구 페이징을 사용한다
가상 메모리 크기는 물리 메모리와 스왑 영역을 합친 것으로
스왑 영역은 하드디스크에 존재하나 메모리 관리자가 관리하는 영역으로 가상 메모리의 구성 요소 중 하나이다
스왑인 : 스왑 영역에서 물리 메모리로 데이터를 가져오기
스왑아웃 : 물리 메모리에서 스왑 영역으로 데이터 내보내기
가상 메모리 시스템에서 사용자의 프로세스는 물리 메모리와 스왑 영역 중 한 곳에 위치
이때 페이지가 스왑 영역에 있는 경우
어떤 경우든 페이지 테이블에는 페이지가 메모리에 있는지
아니면 스왑 영역에 있는지 표시해야 한다 -> valid bit 사용
페이지 테이블의 한 행
페이지 번호, 플래그 비트, 프레임 번호로 구성
마지막에 있는 프레임 번호는 가상 주소의 해당 페이지가 어느 프레임에 있는지 알려주는 자료 구조로 페이지 테이블의 핵심
메모리 관리자는 찾은 프레임 번호를 이용하여 가상 주소를 물리 주소로 변환
페이지가 메모리에 올아온 후 사용한 적이 있는지 알려준다
즉 해당 메모리에 읽기나 실행 작업을 했다면 1이 되고 reference bit라고도 부름
페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려준다
즉 해당 메모리에 쓰기나 추가 작업이 있었다면 1이 되도 dirty bit이라고도 부름
페이지가 실제 메모리에 있는지 나타낸다
가상 메모리 시스템에서는 물리 메모리가 부족하면 일부 페이지가 스왑 영역으로 옮겨진다
이는 프로세스가 물리 메모리에 접근했을 때 해당 데이터가 메모리에 있지 않고 저장장치에 있을 수 있다는 의미다 present bit이라고도 부름
혼용 기법에서 테이블의 크기를 줄이기 위해 right bit을 세그멘테이션 테이블로 옮긴다
가상 메모리의 페이지 테이블에는 페이지가 물리 메모리에 있는지 스왑 영역에 있는지 표시하기 위해 valid bit을 사용한다
페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리 메모리로 옮겨야함
어떤 페이지를 스왑 영역으로 내보낼지 결정하는 알고리즘을 page replacement algorithm이라고 victim page를 찾아낸다
세그멘테이션 오류는 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생
즉 사용자 프로세스에 의해 발생하며 해당 프로세스를 강제 종료하여 해결
페이지 부재는 해당 페이지가 물리 메모리에 없을 때 발생하는 오류로 사용자 프로세스와 무관!
페이지 부재가 발생하면 메모리 관리자는 스왑 영역에서 해당 페이지를 물리 메모리로 옮긴 후 작업을 진행한다
victim page를 찾을 때는 Locality 지역성을 바탕으로 한다
앞으로 사용할 가능성이 적은 페이지를 대상 페이지로 선정하여 페이지 부재를 줄이고 시스템 성능을 향상시키다
시간상으로 메모리에 먼저 들어온 페이지를 victim page로 선정한다
메모리가 앞으로 사용할 페이지를 미리 살펴보고 페이지 교체 선정 시점부터 사용 시점까지 가장 멀리 있는 페이지를 victim page로 선정한다
페이지에 접근한 시간 기준으로 victim page 선정한다
각 페이지에 일정 크기의 참조 비트를 만들어 사용한다
참조 비트의 초기값은 0이고 페이지에 접근할 때마다 1로 바뀐다
주기적으로 오른쪽으로 한 칸씩 이동한다