(1) 요구 페이지 처리
Segmentation -> paging을 배우면서 Virtual memory와 Physical memory를 mapping하는 방법에 대해 배웠다.
해당 방법을 요구 페이지 처리라고 한다.
즉, 필요한 메모리를 모두 올리는 것이 아닌 요구한 페이지만 메모리에 올리는 방식을 의마한다.
그림 1을 참고하여 처리방법에 대해 알아보도록 하자.
1) 프로세서는 해당 명령어에 필요한 Data가 메모리에 올라가 있는지 확인하기 위해 페이지 테이블의 유효 비트를 살펴본다.
2) 유효하지 않은 경우 Page Fault 인터럽트를 발생시킨다.
3) 인터럽트를 받은 OS는 Physical Memory의 빈공간을 찾아보고 빈공간이 없는 경우에 페이지 교체작업을 통해 메모리를 확보한다.
4) 메모리의 빈공간에 해당 페이지 내용을 디스크에서 읽어오며 읽어온 내용을 Page Table에 갱신한다.
5) 발생시킨 Page Fault 인터럽트를 종료하고 처음에 실행하고자 했던 명령어를 다시 시작시킨다.
(2) 선페이징(Prepaging)
위에서 알아본 요구 페이지처리를 보면 성능에 영향을 끼칠 수 있는 부분을 발견할 수 있다.
즉, Page Table에 원하는 Page가 있는 경우 간단하게 수행이 될 수 있으나 없는 경우 인터럽트 발생 및 페이지 교체작업을 해야한다.
따라서, OS에서는 필요한 페이지가 항시 메모리에 적재될 수 있도록 선페이징이라는 정책을 사용하고 있다.
선페이징은 프로그램은 참조한 메모리 근처의 메모리를 참조한다는 지역성(Locality)의 특성이 있는것을 참조하여 메모리를 불러들일때 요구한 페이지 근처의 페이지도 같이 불러들이는 방식이다.
(3) Paged Memory, Non-Paged Memory
Paged Memory : 가상 메모리 공간 중 Page-In, Page-Out이 가능한 공간을 의미한다.
Non-Paged Memory : OS 운영체제를구성하는 코드, Data or Driver코드 및 데이터 그리고 몇몇 공간은 Page-In, Page-Out이 절대로 발생하지 않는데 해당 공간을 의미한다.
1) Device Driver
- 소스코드에 Paged, Non-Paged 로 설정하면 OS는 해당 영역으로 메모리를 할당한다.
2) Application
- Application은 모두 Paged Memory에 할당되어지며 Device Driver와 같이 선택하여 할당할 수 없다.
레지스트리 위치
HKLM\SYSTEM\CurrentControlSet\Control\Session Mananger\Memory Management
- Non-paged Pool : NonPagedPoolSize(Byte 단위)
- Paged Pool : PagedPoolSize(Byte 단위)
최대 Pool 크기
* 데이터를 페이지 아웃 시키지 않는것이 최선은 아니다.
페이지 아웃 안되는 메모리가 커지면 커질수록 페이지 될 수 있는 영역이 줄어들기 때문에 메모리 사용을 위해 Wait 하는 Processs 가 많아지기 때문에 성능 저하가 일어나게 된다.
Segmentation -> paging을 배우면서 Virtual memory와 Physical memory를 mapping하는 방법에 대해 배웠다.
해당 방법을 요구 페이지 처리라고 한다.
즉, 필요한 메모리를 모두 올리는 것이 아닌 요구한 페이지만 메모리에 올리는 방식을 의마한다.
[그림 1] 요구 페이지처리
그림 1을 참고하여 처리방법에 대해 알아보도록 하자.
1) 프로세서는 해당 명령어에 필요한 Data가 메모리에 올라가 있는지 확인하기 위해 페이지 테이블의 유효 비트를 살펴본다.
2) 유효하지 않은 경우 Page Fault 인터럽트를 발생시킨다.
3) 인터럽트를 받은 OS는 Physical Memory의 빈공간을 찾아보고 빈공간이 없는 경우에 페이지 교체작업을 통해 메모리를 확보한다.
4) 메모리의 빈공간에 해당 페이지 내용을 디스크에서 읽어오며 읽어온 내용을 Page Table에 갱신한다.
5) 발생시킨 Page Fault 인터럽트를 종료하고 처음에 실행하고자 했던 명령어를 다시 시작시킨다.
(2) 선페이징(Prepaging)
위에서 알아본 요구 페이지처리를 보면 성능에 영향을 끼칠 수 있는 부분을 발견할 수 있다.
즉, Page Table에 원하는 Page가 있는 경우 간단하게 수행이 될 수 있으나 없는 경우 인터럽트 발생 및 페이지 교체작업을 해야한다.
따라서, OS에서는 필요한 페이지가 항시 메모리에 적재될 수 있도록 선페이징이라는 정책을 사용하고 있다.
선페이징은 프로그램은 참조한 메모리 근처의 메모리를 참조한다는 지역성(Locality)의 특성이 있는것을 참조하여 메모리를 불러들일때 요구한 페이지 근처의 페이지도 같이 불러들이는 방식이다.
(3) Paged Memory, Non-Paged Memory
Paged Memory : 가상 메모리 공간 중 Page-In, Page-Out이 가능한 공간을 의미한다.
Non-Paged Memory : OS 운영체제를구성하는 코드, Data or Driver코드 및 데이터 그리고 몇몇 공간은 Page-In, Page-Out이 절대로 발생하지 않는데 해당 공간을 의미한다.
1) Device Driver
- 소스코드에 Paged, Non-Paged 로 설정하면 OS는 해당 영역으로 메모리를 할당한다.
2) Application
- Application은 모두 Paged Memory에 할당되어지며 Device Driver와 같이 선택하여 할당할 수 없다.
레지스트리 위치
HKLM\SYSTEM\CurrentControlSet\Control\Session Mananger\Memory Management
- Non-paged Pool : NonPagedPoolSize(Byte 단위)
- Paged Pool : PagedPoolSize(Byte 단위)
최대 Pool 크기
풀 형태 | 32 Bit 최대 크기 | 64 Bit 최대 크기 |
Non-Paged Pool | 256MB(3GB 옵션 부트 시 128MB) | 128GB |
Paged Pool | 650MB | 128GB |
* 데이터를 페이지 아웃 시키지 않는것이 최선은 아니다.
페이지 아웃 안되는 메모리가 커지면 커질수록 페이지 될 수 있는 영역이 줄어들기 때문에 메모리 사용을 위해 Wait 하는 Processs 가 많아지기 때문에 성능 저하가 일어나게 된다.