Linux는 커널 소스가 공개되어 있어, 굳이 언어적으로 건들이지 않아도 사용자가 자유롭게 건드릴 수 있다. 하지만 Windows는 그렇지 못하기 때문에 어떻게 어떤 방법으로 Kernel에 접근해야할지 몰라 고민하다 Windows API라는 것을 알게 됐다.
API(Application Programming Interface)
라이브러리와 비슷하게 사용되지만, 개념은 전혀 다르다. 집합으로 보자면, API는 Library에 속한다. API는 라이브러리를 이용해서 어떤 규칙을 만들고, 그것을 개발자에게 제공한다. OS와 사용자 사이에 의사소통을 위해 Shell이 존재한다면, OS와 응용 프로그램 사이 통신에는 API가 존재한다.
Windows API
Windows API는 Microsoft의 Windows에서 제공하는 시스템 라이브러리입니다. Windows 응용 프로그램 개발할 때, 사용할 수 있도록 Windows 운영체제에서 제공하는 라이브러리라고 생각하면 쉽다. API는 위에서 말했다시피 라이브러리와 그 개념이 다르다.
API는 라이브러리를 사용하기 위한 한 수단으로, 라이브러리 사용을 위해 정해높은 규칙이라고 할 수 있다. Windows API 사용하여 키보드, 마우스 등 입력 장치 제어 뿐만 아니라, OS 내에 커널 부분, 프로세스 부분 등의 시스템 제어를 담당하는 부분의 API도 만날 수 있다.
Windows API는 Windows Kernel에서 핵심 모듈이라 할 수 있다. 특히 운영체제의 커널은 크게 2가지로 나뉜다.
Micro-Kernel과 Monolitic-Kernel로 나뉘는데, Windows가 사용하는 커널은 Micro-Kernel에 가깝고, UNIX에서 사용하는 커널은 Monolitic-Kernel에 가깝다. 그에 반한, Linux는 중간 위치에 있다.
모놀리틱 커널
사용자가 오직 프로그램으로만 커널에 접근하는 방식. 커널이 하드웨어, 파일 시스템, 드라이버, System Call까지 모두 관장하는 구조. 대표적으로 UNIX
따라서 운영체제 기능 업데이트를 위해서 Kernel 전부를 교체해야 함.
마이크로 커널
모놀리틱 커널과 마찬가지로, 사용자 모드와 커널 모드가 존재하지만, 사용자 모드에서 하드웨어 드라이버 관리 등을 직접 사용자 모드에서도 할 수 있다. 파일 시스템 등도 사용자 모드에서 갖춰져 있어 프로그램 설치 하나만으로, 여러 파일 시스템을 읽을 수도 있다.
마이크로 커널에서는 IPC등 중요한 부분을 제외한 나머지를 전부 커널에서 떼어낸 것을 마이크로 커널 구조라 한다. 모듈식 커널 구조라고도 얘기한다. Windows는 UNIX와 다르게 기능 업데이트 등도 모듈처럼 프로그램의 설치/삭제 만으로 자유롭게 분해/조립이 가능한 구조이다.
Windows 운영체제를 구성하는 모듈에서 가장 핵심적인 모듈은 User, GDI, Kernel 이다.
[출처]
'C# > Windows' 카테고리의 다른 글
WndProc으로 Windows Message 제어하기 (0) | 2023.11.05 |
---|---|
윈도우 프로그래밍 동작 방식 (0) | 2023.11.05 |
Win32 API에서 제공하는 자료형 (0) | 2023.11.05 |
Win64 API가 있나요? (0) | 2023.11.05 |