프로그래밍 기술/Windows API

1.1 Windows 커널의 핵심 모듈 [Windows API]

언제나휴일 2016. 4. 6. 14:35
반응형

1.1 Windows 커널의 핵심 모듈

윈도우즈 운영체제는 여러 개의 모듈로 구성하여 모듈 간의 상호 작용에 의해 동작하는 마이크로 커널입니다. Unix Linux는 단일 커널로 운영체제의 기능을 추가하거나 변경 등을 하려면 새로운 커널로 교체해야 합니다. 하지만 윈도우즈 운영체제는 해당 모듈을 추가하거나 삭제, 변경할 수 있습니다.

윈도우즈 운영체제를 구성하는 여러 모듈에서 가장 핵심적인 모듈은 User, GDI, Kernel입니다. User 모듈에서 제공하는 대표적인 것은 윈도우 개체이며 발급한 핸들은 시스템 전역에서 사용 가능합니다. GDI 모듈에서는 펜이나 브러쉬 등과 같이 그리기에 관한 개체들을 발급하는데 이들은 해당 응용 내에서만 사용 가능합니다. Kernel 모듈에서는 파일이나 프로세스, 쓰레드, IPC, 동기화에 관한 개체들을 발급하는데  권한이 있는 계정에게만 접근 가능한 개체를 발급하고 발급한 핸들은 해당 응용 내에서만 사용 가능합니다. 하지만 다른 응용에서도 권한을 갖고 있다면 별도의 핸들을 발급받아 사용할 수 있습니다.

이 책의 앞 부분에서는 User 모듈과 GDI 모듈에서 제공하는 자료 형식과 기능에 관해 다루고 있습니다. 그리고 뒷 부분에서 Kernel 모듈에 관해 다루고 있어요.

윈도우즈 API가 리눅스와 유닉스의 시스템 호출과 차이가 있는 부분은 User GDI 모듈 부분이며 Kernel 모듈은 제공하는 기능을 보면 큰 차이가 없습니다. 물론 자료 형식과 기능 이름까지 비슷한 것은 아닙니다.

이 책에서는 GUI 기반의 응용 프로그램을 작성할 때 필요한 User GDI 모듈을 우선적으로 소개할게요. 이를 통해 MFC .NET 기반의 Windows Forms, WPF 등의 기술을 사용하여 작성한 프로그램이 어떠한 원리로 동작하는지 파악할 수 있을 것입니다.

Kernel 모듈 부분은 시스템에 관한 이해와 기본적인 시스템 프로그래밍에 필요한 기술을 다루는 것으로 별개의 기술처럼 느껴질 수 있습니다.


Windows 커널의 주요 모듈

[ 1] Windows 커널의 주요 모듈


Windows API 개체 종류에 따른 접근 권한


[그림 2] Windows API 개체 종류에 따른 접근 권한

반응형