가상 메모리 ( Virtual Memory )
。주기억장치 ( = RAM )의 크기와 관계 없이 프로세스가 사용할 수 있는 가상의 메모리 주소 공간을 확장하는 메모리 관리 기법
。 디스크의 일부 공간( = Swap Space )을 RAM처럼 사용하여 프로세스가 실제 RAM보다 훨씬 큰 메모리 영역을 갖는 것처럼 설정
▶ RAM 용량 제한 없이 대용량 프로그램을 작은 용량의 RAM에서도 실행 가능
。주로 RAM 용량이 부족할 때 보조기억장치의 Swap Space를 메모리처럼 활용하여 사용하지않는 프로세스( 페이지 or 세그먼트 )를 저장
가상메모리 사용 시 실제 RAM보다 메모리 용량이 확장되지만, 큰 용량의 프로그램을 실행 시 가상메모리 용량은 괜찮아도 실제 RAM 용량이 가득차는 단점이 존재
。프로세스 실행 중 필요한 페이지가 RAM 상에 없어 페이지 폴트 발생 시 페이지 교체 알고리즘을 통해 선정된 사용하지않는 페이지를 Swap Space로 전송하고 보조기억장치로부터 필요한 페이지를 찾은 후 RAM에 로드하여 교체
▶ 페이지 폴트 발생 시 디스크 I/O가 발생되어 성능이 저하되므로 최선의 페이지 교체 알고리즘을 통해 페이지 폴트 빈도를 최소화
Swap Space
。RAM이 부족할 때 사용하지 않는 프로세스를 보조기억장치에 임시로 저장하는 창고 역할의 보조기억장치 일부 공간
요구 페이징( Demand Paging )
。프로세스 실행 시 동적으로 필요한 프로세스의 페이지만 메모리에 로드하는 가상 메모리 기법 페이징 기법
▶ 동적로딩과 유사하며 메모리 사용 효율 증가
。메모리에 페이지 폴트를 통해 페이지 로드
요구 페이징 작동 원리
1. 프로세스 실행 및 해당 프로세스의 페이지 테이블 초기화
。페이지 테이블의 모든 페이지가 RAM 상에 없다고 표시
2. CPU가 프로세스의 가상 주소로 접근 시 해당 주소의 페이지가 RAM 상에 없다고 도출하는 경우 페이지 폴트 발생
3. OS에서 보조기억장치로 부터 해당 페이지를 RAM으로 로드 및 페이지 테이블 갱신
▶ 프로세스는 다른 프로세스로 CPU 제어권 전달 및 OS가 디스크 I/O 작업을 완료하여 인터럽트를 발생할 때까지 Wait Queue에서 대기
4. 페이지가 RAM에 로드 시 정상적으로 CPU에 의해 실행
페이지 폴트 ( Page Fault )
。프로세스가 참조하는 페이지가 메모리 상 없는 경우 발생하여 보조기억장치에서 해당 페이지를 복사해서 가져오는 작업을 수행
▶ 디스크 I/O를 수행하므로 매우 무거운 작업
。RAM에 여유가 있는 경우 페이지를 그대로 RAM에 로드하지만, RAM에 여유가 없는 경우 페이지 교체 알고리즘을 통해 기존 페이지와 교체를 수행
。 페이지가 없어 페이지 폴트 발생 시 인터럽트를 발생 및 OS에 의해 해당 페이지를 보조기억장치로부터 메모리로 로드
▶ 프로세스는 다른 프로세스로 CPU 제어권 전달 및 OS가 디스크 I/O 작업을 완료하여 인터럽트를 발생할 때까지 Wait Queue에서 대기
페이지 폴트의 성능 저하
。메모리 공간이 부족 한 경우 특정 페이지를 메모리로 가져오기 위해 페이지 교체 알고리즘을 통해 선택한 사용하지 않는 페이지를 보조기억장치의 Swap Space로 전송
▶ 이때 페이지를 보조기억장치에서 입출력하는 디스크 I/O 연산은 매우 느린 작업이므로 최적의 페이지 교체 알고리즘을 통해 어떤 페이지를 디스크로 전송할지 신중히 결정하여 페이지 폴트의 발생빈도를 최소화