part 1
커널 오브젝트가 무엇인지에 대한 설명을 아주 쉽게 설명하여 기초적인 지식을 제공하고 이 커널 오브젝트를 직접 예제를 통해 핸들링하는 방법을 자세히 설명하고 있습니다. 이 책의 전반에서 다룰 내용의 가장 기초가 되는 내용을 PART I에서 다루게 됩니다.
part 2
PART II에서는 실행되고 있는 모든 애플리케이션을 시스템이 어떻게 관리하는지에 대해서 설명하고 있습니다. 프로세스가 무엇인지 그리고 그 프로세스를 관리하기 위해 시스템이 어떻게 프로세스 커널 오브젝트를 생성하는지에 대해서 그리고 실제로 커널 오브젝트를 이용해 어떻게 프로세스를 조작하는지에 대해서 구체적인 예제를 통해 배울 수 있습니다.
또한 새로운 Job 커널 오브젝트를 제공하는 마이크로소프트 윈도우 2000에 대해서 자세히 살펴보고 Job 커널 오브젝트를 사용할 때 어떤 장점이 있는지 구체적으로 알 수 있고 직접 구현해보게 됩니다. 그리고 스레드의 기초적인 내용부터 고급 기술을 배우게 됩니다. 프로세스와 스레드가 어떻게 다른지 그리고 각각의 역할에 대해서 설명하고, 또한 시스템이 스레드를 관리하기 위해서 스레드 커널 오브젝트를 어떻게 사용하는지 설명하고, 스레드 커널 오브젝트의 각 속성을 살펴보고 이 각 속성을 변경하고, 질의하기 위해서 많은 함수 직접 다루어 보게 됩니다.
그리고 스레드의 아주 자세한 부분까지 다루게 되는데 스레드의 스케줄링, 우선순위, 친화력(Affinity), 사용자 모드에서 스레드 동기화, 커널 오브젝트를 사용한 스레드 동기화, 스레드 풀링에 이르기까지 스레드에 대한 모든 내용을 직접 예제를 작성해 보면서 구현할 수 있는 기술을 습득할 수 있습니다. 그리고 끝으로 마이크로소프트는 윈도우에 존재하는 UNIX 서버 애플리케이션과의 연결을 쉽게 하기 위해서 윈도우에 피버를 추가하였는데 이 피버(Fibers)에 대한 내용을 설명합니다.
part 3
운영 체제가 사용하는 메모리 구조는 운영 체제가 어떠한 방식으로 작동하는가를 이해하기 위한 가장 중요한 단서가 됩니다. 새로운 운영 체제를 접할 때 보통 다음과 같은 문제들을 고려하게 됩니다. 두 애플리케이션 간의 데이터 공유 방법, 특정 정보를 어느 위치에 저장는가에 대한 정보, 프로그램을 더 효율적으로 동작하도록 하기 위한 방법 등입니다. 위와 같은 문제들을 해결하기 위해서는 운영 체제가 어떠한 방법으로 메모리를 관리하는가를 확실히 숙지하고 있어야 합니다.
PART III에서는 마이크로소프트 윈도우 시스템에서 사용되는 메모리 구조에 대해 자세히 설명하고 있습니다. 메모리 주소공간에 대한 기초적인 내용에서부터 시스템이 어떻게 가상 메모리를 관리하는지, 프로세스가 자신만의 주소공간을 어떻게 할당 받는지, 프로세스 주소 공간이 어떻게 구성되어 있는지에 대해 자세히 설명합니다. 또한 시스템의 메모리 관리와 프로세스의 가상 주소공간에 대한 정보를 제공하는 몇몇 윈도우 함수를 직접 사용해보며 모든 이론적인 내용을 확인하게 됩니다.
스레드가 생성될 때마다 시스템은 스레드 스택에 대한 주소 공간의 영역을 확보하게 되는데 이 스레드 스택에 대한 자세한 내용 또한 설명하고 있습니다. 또한 애플리케이션이 파일을 오픈하고, 읽고, 닫아야 할 때 또는 파일을 오픈하고 파일의 다른 부분으로부터 읽거나 쓰기 위해 버퍼링 알고리즘을 사용해야 할 때가 있습니다. 이를 위해 마이크로소프트 윈도우는 메모리 매핑 파일이라는 기능을 제공하는데 이에 대한 자세한 내용을 설명합니다. 끝으로 힙(Heap)에 대한 자세한 내용을 설명하게 되는데 직접 예제를 통해 장단점을 살펴보게 됩니다.
part 4
PART IV에서는 DLL(Dynamic Link Library)에 대한 기초적인 내용부터 고급 내용까지 설명하고 있습니다. DLL은 마이크로소프트 윈도우의 핵심기술입니다. 윈도우 API의 모든 함수는 DLL에 포함 되어있습니다. DLL의 기초적인 내용들과 가장 많이 사용되는 암시적 링크 기법들을 설명하고, DLL의 모든 전반적인 기술들을 다루고 있습니다. 특히 전체의 시스템의 성능을 향상시키는 중요한 기술인 재배치 모듈(Rebasing Module)과 결합 모듈(Binding Module)을 심도 있게 설명하고 있습니다. 또한 스레드 로컬 스토리지, DLL 인젝션과 API 후킹 등 고급 기술을 설명합니다.
part 5
PART V에서는 중단(Terminate) 핸들러, 예외 핸들러와 소프트웨어 예외에 대해서 자세히 설명하고 있습니다. 실제 예제를 통해서 모든 상황을 직접 구현해 보면서 쉽게 이해를 돕도록 구성되어 있습니다. |