■ 윈도우 커널 메모리 주소 공간의 전형적인 레이아웃

● 커널 메모리 공간
  - 커널을 위해서는 2GB가 예약됨
  - 커널 자체의 코드뿐만 아니라 디바이스 드라이버와 같은 커널 컴포넌트들의 코드가 모두 포한됨

● Paged Pool과 Non-Paged Pool
 
- paged pool과 nonpaged pool은 모든 커널 컴포넌트에 의해서 사용되는 커널 모드 힙(Heap)메모리(커널 모드 코드만 접근 가능)

● 시스템 캐시
  - 윈도우의 캐시 관리자가 현재의 모든 캐시 마핑릉 매핑하는 공간
  - 캐싱은 파일을 메모리에 매핑함으로서 이루어지며, 메모리 관리자가 각 파일 매핑에 할당된 물리 메모리의 용약을 관리함

● 터미널 서비스 세션 공간
  - Win32 서브시스템의 커널 모드 컴포넌트가 이 메모리 공간 사용
  - 터미널 서비스 컴포넌트 : 하나의 윈도우 시스템에 여러개의 원격 GUI세션이 가능함
  - session Private라는 Win32 메모리 공간을 만들어서 시스템이 Win32서브시스템 인스턴스를 다중으로 로드할 수 있게 함

● 페이지 테이블과 하이퍼 공간
  - 페이지 테이블 공간 : 현재 활성화된 페이지 테이블이 가상 메모리에 매핑된 공간
  - 하이퍼 공간 : 주로 현재 프로세스의 워킹 셋에 대한 매핑 공간

● 시스템 워킹 셋
  - 시스템 워킹 셋 : 시스템의 물리 메모리(단, 페이징이 가능한 메모리만)를 관리하는 시스템 전역 데이터 구조체
  - 현재 사용되고 있는 페이지 현황 파악
  - 이 데이터 구조체가 관리하는 가장 큰 메모리 역역 은 Paged Pool과 시스템영역

● 시스템 페이지 테이블 엔트리(PTE)
  - 큰 커널 메모리 할당에 사용됨
  - 커널 과 드라이버가 큰 용량의 가상 메모리 공간이 필요할 때 사용되는 가상 메모리 공간(힙 아님)
  - 디바이스 드라이버 실행 코드를 매핑(MmAllocateMappingAddress커널 API 사용)
  - 커널 스택을 저장






+ Recent posts