목차
폴트
페이지 폴트는 프로세스가 접근하려는 페이지가 물리적 메모리에 없을 때 발생합니다.
이는 다음과 같은 과정을 통해 처리됩니다.
1.
운영체제가 인터럽트를 받아 페이지 폴트가 발생 확인.
2.
필요한 페이지가 디스크 상의 스왑 영역에 있는지 확인.
3.
해당 페이지를 물리적 메모리로 로드하고, 페이지 테이블을 업데이트.
3번 부분이 스와핑입니다.
4.
프로세스를 재개.
세그먼트 폴트는 세그먼테이션 모델에서 유사하게 발생하지만, 세그먼트 폴트는 주로 유효하지 않은 세그먼트에 접근하려 할 때나 권한이 없는 영역에 접근하려 할 때 발생합니다.
스와핑
스와핑은 시스템의 메모리가 부족할 때 사용되는 기술로, 현재 사용 중이지 않은 페이지나 세그먼트를 임시로 디스크의 스왑 영역으로 이동시키는 것을 말합니다.
스와핑은 다음과 같은 과정을 통해 이루어집니다.
1.
운영체제가 메모리 부족 상태를 감지.
2.
가장 최근에 사용되지 않은 페이지나 세그먼트를 선택.
3.
해당 페이지나 세그먼트를 스왑 영역으로 이동.
4.
나중에 해당 페이지나 세그먼트가 필요하면, 스왑 아웃된 데이터를 다시 메모리로 로드.
페이지 및 세그먼테이션 폴트와 스와핑은 시스템의 메모리를 효율적으로 관리하고, 프로세스의 실행을 지원하는 데 중요한 역할을 합니다. 이러한 기법들은 시스템의 성능과 안정성을 높이는 데 기여합니다.
예시
페이지 폴트 예시
페이지 테이블 예시 (페이지 폴트 발생 전):
가상 페이지 번호 | 물리적 프레임 번호 | 존재 비트 | 수정 비트 | 참조 비트 |
1 | - | 0 | 0 | 0 |
2 | 3 | 1 | 0 | 1 |
3 | 1 | 1 | 1 | 0 |
•
설명 : 가상 페이지 1은 메모리에 없습니다 (존재 비트가 0). 프로세스가 이 페이지에 접근하려 하면 페이지 폴트가 발생합니다.
페이지 폴트 처리 과정
1.
CPU는 페이지 폴트를 감지하고, 운영체제에 인터럽트를 발생시킵니다.
2.
운영체제는 스왑 파일에서 페이지 1을 찾아 물리적 프레임으로 로드합니다. 여기서는 프레임 2가 사용 가능하다고 가정합니다.
3.
페이지 테이블을 업데이트합니다.
페이지 테이블 업데이트 후
가상 페이지 번호 | 물리적 프레임 번호 | 존재 비트 | 수정 비트 | 참조 비트 |
1 | 2 | 1 | 0 | 1 |
2 | 3 | 1 | 0 | 1 |
3 | 1 | 1 | 1 | 0 |
스와핑 예시
스와핑 발생 전 상황 (페이지 테이블)
가상 페이지 번호 | 물리적 프레임 번호 | 존재 비트 | 수정 비트 | 참조 비트 |
1 | 2 | 1 | 0 | 1 |
2 | 3 | 1 | 0 | 1 |
3 | 1 | 1 | 1 | 0 |
•
설명 : 메모리가 부족하고 새로운 페이지 요청이 있습니다. 페이지 3이 가장 적게 참조되었으므로 스와핑 대상이 됩니다.
스와핑의 대상이 되는 부분은 운영체제의 알고리즘에 따라 다를 수 있습니다.
스와핑 과정
1.
운영체제는 페이지 3을 스왑 영역으로 이동시킵니다.
2.
페이지 테이블에서 페이지 3의 존재 비트를 0으로 변경합니다.
스와핑 후 페이지 테이블
가상 페이지 번호 | 물리적 프레임 번호 | 존재 비트 | 수정 비트 | 참조 비트 |
1 | 2 | 1 | 0 | 1 |
2 | 3 | 1 | 0 | 1 |
3 | - | 0 | 1 | 0 |