Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  Windows Architecture 
작성일시 : 2007. 9. 28. 11:35 | 분류 : Windows Server/Kernel



Session Manager : smss.exe
Subsystem DLLs : kernel32.dll, gdi32.dll, user32.dll
Win32 Subsystem : csrss.exe
Graphic driver : Win32k.sys
Kernel : Ntoskrnl.exe
Drivers : xxx.sys
HAL : hal.dll

이제 부터 Windows의 기본적인 architecture에 대해서 몇 일에 걸쳐 설명하려고 합니다.
Windows는 Micro Kernel 이론에 근거한 운영 체제 입니다.
그 근간은 DEC의 VMT에서 시작됩니다.

그림에서 보듯이 Windows 는 기본적으로 User 가 접근 할 수 있는 Address 영역과 Kernel 이 접근 할 수있는 Address 영역을 완전히 분리하여 OS의 안정성을 보장하고 있습니다.

User Mode

크게 User mode에서 실행되는 Program은 System support processes, Service processes, Application, Environment로 나누어 볼 수 있습니다. (관점에 따라 다르게 분류 가능합니다.)

1. System Support Processes
smss.exe : Session manager csrss.exe, winlogon.exe 호출
csrss.exe : Process 와 Thread 관리 및 GDI Control
winlogon.exe : registry의 userinit에 정의된 실행 파일 (services.exe, lass.exe, login prompt) 호출
services.exe : Services Controller
lsass.exe : local security authentication server
userinit.exe : logon > start explorer.exe

2. Services Processes
log on 이 필요없이 시스템 부팅과 동시에 실행 되는 프로그램

3. Application
lon in 이 되어 유저가 호출하면 실행 되는 프로그램

4. Environment
Win 32 Subsystem은 크게 kernel32.dll, gdi32.dll, user32.dll 등의 subsystem dll과 csrss.exe로 이루어져 있습니다.
실질적으로 application이 실행 되는 기반이 되며 csrss.exe의 역활을 생각하시면 충분이 예상 할 수 있습니다.

현재는 os2, posix의 경우 SFU 서비스로 분리 되어 있습니다. Windows Cluster Computing의 경우 Posix가 기본적으로 필요하다고 하며, 이들은 OS2 계열 및 Unix 계열 Application을 실행 하기 위하여 필요한 서브 시스템들이입니다.

(여담 : 추가 적으로 여러 주요 Services 실행하는 하나의 서버의 경우 자원 경합이 일어나 서버 성능 저하가 일어 날 수 있습니다. memory paging)

Kernel mode

커널은 크게 xxx.sys 라는 device driver와 Ntoskrnl.exe 라는 커널 그리고 Windows 그래픽 환경을 위한 GDI 및 Win32k.sys 그리고 하드웨어 추상화 계층인 hal.dll 로 구성되어 있습니다.
커널은 사용자와 하드웨어 간의 인터페이스를 하고 프로세스와 쓰레드를 관리하는 등의 역활을 하는 하나의 커다란 프로세스 입니다.

일반 적으로 우리가 커널이라고 부르는 부분이 ntoskrnl.exe 입니다. 그런데 Windows의 경우 다양한 하드웨어 회사들이 지원을 하고 있습니다. 즉 각각의 하드웨어들을 OS 상에서 다 지원하는데 한계가 있습니다. 그래서 만들어 진게 하드웨어 추상 계층과 하드웨어 벤더에서 제공하는 xxx.sys 즉 드라이버 입니다.

그리고 중요한 부분이 Graphic 처리에 관련 된 GDI와 Win32k.sys 입니다. 문제는 GDI가 커널 내부로 들어온 것인데....

어쩌면 양날의 검이라 볼 수도 있습니다. GUI 운영체제로써 뛰어난 속도 향상 하지만 그 이면에 안정성의 약화... 물론 Win32k.sys 의 안정성 측면의 문제도 집고 넘어가야 하지만 몇가지 의구심이 드는건 떨쳐 버릴 수 없습니다. (미나시는 안정성에 확신이 있어서 GDI를 커널 내로 넣었다고 하네요... 하지만 전 종종 Win32k.sys의 leak 으로 인한 블루스크린을 본답니다...ㅡㅡ;)

참고

사용자 삽입 이미지

Windows Start up Registry

|