SW 개발

winCE / Kerne / 기본개념 / winCE의 기본구조

. . . 2009. 5. 12. 01:44
반응형

Xeno's Study Blog (http://XenoStudy.tistory.com)
- 글쓴이 : xeno
- 출처 :
http://blog.naver.com/jay_korea 
- 기타사항 : 틀린사항은 댓글로 달아주세여~

[출처] Windows CE 구조 6 - GWES, Service |작성자 대머리

:: WinCE의 기본구조 ::

허거걱... 한참을 이번 포스트를 쓰고 있었는데... 갑자기 새로운 internet page가 열리는 바람에 작성해 놓은 내용이 모두 다 훨훨~~ 날아갔다. T_T

다시 작성해야겠다.

이번 에는 Windows CE의 구조를 정리해 볼까 한다.  내용은 내가 Embedded World 와 마소, WECOM (http://wecom.dstcorp.com/)에 올려놓은 기고 내용을 기반으로 내 마음에 맞게 다시 수정, 보충해 볼꺼다.


 

위의 그림에서 확인해 볼수 있듯이, Windows CE는 Kernel을 비롯하여 여러개의 System Processor로 구성되어있다. 여기서의 Processor라는 의미는 일반적으로 우리가 잘 알고있는 실행 file인 "*.exe"를 의미한다.
 
대부분의 개발자들이 관심있어하는 Windows CE의 Kernel은 "NK.exe" 이다. Kernel의 size는 약 250KByte 정도 된다 (작은 size의 Kernel이다.) 그런데 웃끼게도 Windows CE환경에서는 Kernel(NK.exe)만 가지고는 아무것도 할수가 없다. (물론 조금은 할수 있다. 근데 거의 할수 없다고 볼수 있다.  ㅎㅎㅎ ^^ ) Windows CE의 Kernel은 스케쥴링, API(Application Programming Interface)실행, Memory관리 등 몇몇 기본 service만 제공할뿐이다.  ( 서비스 맞나 !! )
 
그럼 OS의 여러 다른 기본 서비스는 ?
예를 들어 File system, Data Base, UI (User Interface), Graphic 과 Window 처리 등등......
 
이들 여러 서비스는 앞에서 얘기했던 "System Processor"라는 것들이 제공 해준다.
(얘네 들은 확실한 서비스를 제공하는게 원칙이다 ㅎㅎㅎ ^^ ) 
  
System Processor는 일반적으로 아래와 같은 것들이 있다.
"Filesys.exe" File system 및 Data Base 그리고 system설정(Registry)들을 관리, 서비스 해준다.
 
"Device.exe" Device Driver관리자로 Driver들을 load하고 관리해준다.
 
"GWES.exe" Graphic Windowing Event Subsystem이라 부르고, graphic, event등 UI부분의 서비스를 제공한다.
 
"Explorer.exe" Windows CE의 기본 UI Shell이다. Windows 2000, XP와 같은 바탕화면 과 Task Bar등을 표시하고 User Application의 실행을 도와준다.
 
여기에 하나 빠진게 있다. (그림에도 빠졌다.)
"Service.exe" 라고~  ( 얜 진짜로 확실하게 서비스만 해주는 얘다.. ^^ )
이 System Processor는 Device driver에서 하기에는 좀 그런 protocol관련 service들을 load하고 관리해준다. 뿐만 아니라 간단한 Application같은 Thread의 등록을 이 service.exe에 하여 특정 기능을 수행할수 있다.
나중에 다시 확인해 보겠지만, Windows CE의 device driver들은 쫌 이상하게 되있어서 protocol service들을 device driver로 만들어 사용할수도 있다.


:: WinCE의 부팅흐름도 ::

앞에서는 간단하게 Windows CE의 구조에 대해서 확인해 보았다.
이젠 Windows CE가 내부적으로 어떻게 Booting하는지 흐름을 확인해 보자.

OS를 사용하는 system에서는 언제나 그렇듯이 Kernel이 가장 중요하다. Kernel은 system의 memory관리와 실행code(application)들을 schedule하여 실행하는 주는, OS system의 핵심 요소 이다. 그렇기 때문에 장치(제품,기기)의 전원을 on 하면 Kernel을 가장 먼저 실행된다. (물론 Boot Loader가 있는 경우 Boot Loader가 먼저 실행된후 Kernel이 실행되겠다.)

위의 그림에서 보듯이, 장치의 전원이 켜진후 Windows CE Kernel이 가장 먼저 실행된다. 

Kernel은 scheduler가 정상적으로 동작할수 있도록 system을 초기화 하며, interrupt 초기화, memory관리 초기화 등을 수행하게 된다.
때에 따라선 Debugging하기 위한 초기화도 수행한다. 

Kernel의 초기화 이후, Kernel은 Filesystem Manger인 "Filesys.exe"를 호출한다. 

"Filesys.exe"는 Windows CE system의 Object Store를 초기화 하는데...Object Store란 OS에서 사용하는 주 저장 장소를 말한다. Filesys.exe는 Object Store에 RAM File-system 과 Data Base 그리고 default system registry등을 구성해 놓아, 여러 system processor와 application에서 사용할수 있도록 한다. Windows CE system은 기본적으로 DRAM을 Object Store로 사용하도록 되어있어, 전원이 꺼지거나 system의 cold boot가 이루어지면 모든 file과 DataBase, System Registry등이 지원진다. 혹, 이글을 보시는 사용자 분께서 Pocket PC나 SmartPhone을 사용해 보았다면, 위와 같이 cold boot시 모든 설정과 설치한 application이 지워지는것을 경험했을것이다. 물론 최근의 대부분 Pocket PC들은 DRAM을 위한 backup battery를 내부에 가지고 있어 cold boot시에도 저장된 내용이 지워지지 않는다. 참고로, 우리가 사용하는 Windows 2000, XP의 경우 HDD를 Object Store로 사용한다. 
어쨌거나 Filesys.exe가 Object Store에 올려놓은 registry는 default system registry로 다음에 실행될 system processor의 실행순서와 device driver 설정등 system의 전반적인 주요 설정이 담겨 있어 Windows CE system에서 굉장히 중요한 역활을 한다.  

다음으로 실행되는 system processor는 default로 "Device.exe"가 된다. 이는 Device driver Manager로 Object Store에 설치된 system registry로 부터 device driver loading정보를 확인하여 drivre들을 load하고 관리한다.
load되는 device driver들은 대부분 Stream Interface device drive형태로 UI(User Interface)에 관련된 device driver외의 모든 driver가 이 형태에 속한다.

위 그림에는 없지만 "Service.exe" system processor가 다음으로 실행된다. 이 system processor를 확인해 보기전에 우선 Windows CE의 특징을 알아보면...Windows CE의 device driver는 User Mode software에 속한다. User mode software는 우리가 잘 알고 있는 일반 application환경을 말하고, Kernel mode software라는 User mode와는 다른 환경이 있다. Windows Desktop OS의 경우, device driver들은 Kernel mode software에 속하지만 Windows CE의 경우 앞서 확인한 것 처럼 User mode software에 속한다.
그렇기 때문에 Windows CE device driver안에서는 일반 application과 같이 Win32 API (Application Programming Interface)를 사용할 수가 있다.

Windows CE system을 개발하다 보면, OS booting중 간단한 software의 실행이 필요한 경우가 있는데 이를 위해서 application(.exe)을 OS booting중 실행하는것은 OS자원을 낭비하는 것이라고 생각될수 있다. 그래서 Windows CE 3.0시절엔 간단한 software를 Device driver형태로 작성하여 OS booting중 load되어 실행되도록 하는 방법을 사용하였는데... 문제는 device driver이다 보니 다른 driver에 영향을 주는 경우가 발생할수 있다. 그래서 service.exe를 Windows CE .NET 4.0때 부터 사용하여, device driver manager를 보완해 주는 역활을 담당하게 되었다.
Telnet, TCP/IP등과 같이 device driver가 아닌 system protocol등을 운영하는 system processor이다.  

"GWES.exe"는  Graphic Windowing Event Sub System으로 GDI와 이벤트, 메시징을 관리하는 system processor이다.  OS 디자인에 따라 약 100여개의 Library(.lib)가 링크되어 생성된다. Windows CE에서는 desk top Windows OS의 USER32 와 GDI32가 하나로 통합되어 GWES에서 구현되고, H/W 와 디바이스 드라이버에 따라 Direct Draw와 Dynamic Screen Rotation을 지원한다. 사용자 입력에 따른 응용 프로그램의 이벤트 및 메시지를 처리하고 텍스트 및 폰트의 출력을 담당하고 있다. 
 

"EXPLORER.EXE"는 Windows CE의 기본 UI환경을 제공하는 system processor이다. 잘아는 바탕화면 과 아이콘들 테스크메니져들을 생성 운영하는 application이다.  Explorer.exe대신 일반 application으로 대채하여 사용할 수 있다.

:: 커널 (Kernel) ::

Windows CE 커널 “NK.EXE”라는 컴포넌트.
커널 주요 역할은 메모리 관리, 스케줄링, Win32 API지원을 수행하며 Micro-Kernel구조를 통해 PSL(Protected Server Library) 구현 한다. 마이크로소프트는 개발자가 커널 포팅을 최소화 하기 위해 주요 커널 기능을 별도의 라이브러리 파일로 준비 하였으며, H/W 또는 CPU 관련된 포팅만 개발자에게 부담하도록 하였다.

주요 커널의 기능을 갖춘 라이브러리 파일은 “NK.lib” 되며 H/W또는 CPU 관련된 라이브러리는 “OAL.lib”이 된다. 

OAL(OEM Adaptation Layer) 다양한 H/W Windows CE 커널이 운영될 있도록 H/W 커널의 중간에 위치한 계층으로 반드시 OEM(개발자) H/W 맞게 포팅해 주어야 한다. 인터럽트, 디버깅 인터페이스, 클럭과 타이머, 시스템 파워 관리 등의 초기화 제어 역할을 수행하고, 최종적으로 마이크로소프트 에서 제공한 “NK.lib” 개발자가 포팅한 OAL.lib” 링크 되어 “NK.EXE” 만들어.

NK.LIB + OAL.LIB = NK.EXE

:: 파일시스템관리자 (File System Manager) ::

Windows CE 파일시스템 관리자의 역할은 굉장히 중요하며 FILESYS.EXE”라는 컴포넌트 이다. OS시스템의 Object Store ROM 파일시스템, 외부 저장장치 관리를 담당한다.


l         Object Store : Object Store OS 시스템에서 사용하는 레지스트리, 데이터 베이스, 파일들을 저장하는 기본 저장소.  Desk top Windows OS Object Store공간으로 HDD 이용하는 과는 달리 Window CE RAM 사용하기 때문에 특정 파일을 휘발성 외부저장 장치에 저장하지 않으면 시스템의 전원이 꺼지거나 콜드부팅 모든 파일 설정이 지워지게 된다. Object Store RAM 파일시스템 공간은 시스템의 Root폴더로 사용되고, Root폴더는 데스크톱 Windows OS와는 달리 “\” 표현 된다. (Desktop Windows OS “C:\” ” 표현) 기본적으로 RAM 파일시스템 공간에 저장되는 파일은 압축되어 저장된다. .

l         레지스트리 : 일반  Desk Top Windows OS 같은 형식의 레지스트리를 사용, 레지스트리는 시스템과 응용프로그램의 주요 설정 정보를 담고 있다.

l         ROM 파일시스템 : Windows CE OS “NK.bin” 포함되어있는 Windows CE 구성하는 컴포넌트들을 파일로 다루기 위한 파일시스템 이다. Windows CE상에서 탐색기를 열었을 “Windows” 폴더에 들어있는 여러 컴포넌트 파일들이 ROM 파일시스템을 통해 접근되어 사용된다. (Booting 환경에 따라 달라질 있다.)

l         Storage Manager : 외부저장 장치에 대한 파일시스템 관리자 이다.  Windows CE 다양한 외부저장 장치에 대해서 여러 개의 파티션과 파일 시스템 드라이버를 사용할 있으며 FAT12, FAT16, FAT32, CD/UDFS, BinFS 주요 파일시스템 드라이버를 제공한다.

:: 디바이스 드라이버 :: 


Windows CE
디바이스 드라이버는 Native 드라이버 Stream 인터페이스 드라이버 형태로 나누어 사용된다.

  • Native 디바이스 드라이버 : 시스템에 내장된 장치들을 위한 디바이스 드라이버들이 해당되며, OS 운영하기 위해서 반드시 필요한 디바이스 드라이버들로 구성, Native 드라이버들은 “GWES.EXE”(Graphic Windowing Event Subsystem) 로드 관리를 하고, 종류로는 Display, Key Board, Mouse, Touch driver들이 해당된다. 
  •  Stream 인터페이스 디바이스 드라이버 : Windows CE에서 디바이스를 접근 하는데 가장 이상적인 드라이버 모델이다. 응용프로그램을 위한 드라이버들로 구성되며, 응용프로그램에서는 해당 드라이버들을 파일 API 통해서 하나의 파일처럼 다루어 사용한다. 모든 드라이버에 공통적인 인터페이스를 사용하며 “DEVICE.EXE” 로드 관리하고, 종류로는 Serial, Block Device Driver, Audio, Custom driver들이 해당된다.

:: 그래픽 윈도윙 이벤트 서브 시스템 (GWES) ::

“GWES.EXE”GDI(Graphics Device Interface)와 이벤트, 메시징을 관리하는 시스템 이다. 100여개의 라이브러리 컴포넌트로 구성되며, 개발자의 OS 디자인에 따라 포함되는 라이브러리 컴포넌트가 달라질 수 있고, Windows CE에서는 Desk Top Windows OS의 USER32GDI32가 하나로 통합되어 GWES에서 구현 되었으며, H/W 와 디바이스 드라이버에 따라 Direct DrawDynamic Screen Rotation을 지원한다. 사용자 입력에 따른 응용 프로그램의 이벤트 및 메시지를 처리하고 텍스트 및 폰트의 출력을 담당하고 있다.  

 
 

:: 서비스 관리자 (SERVICE) ::

“SERVICE.EXE” 디바이스 드라이버 관리자를 보완해 주는 시스템 관리자 이다.

서비스
관리자는 Windows CE .NET 4.0부터 사용 되었으며, 이를 이용하면 별도의 프로세스를 생성하지 않고 특정 소프트웨어 코드(쓰레드) 백그라운드에서 계속 실행되게 있다. indows CE 3.0 경우 특정 작업의 소프트웨어 코드를 디바이스 드라이버 관리자를 통해 로드 실행하도록 하였으며 이로 인해 드라이버 관리자에 의해 운영되고 있는 어떤 디바이스 드라이버에 문제가 발생하게 되면 관련 없는 다른 디바이스 드라이버, 소프트웨어 코드 시스템 전체에 오류를 발생 시킬 있어 치명적인 문제를 일으킬 있다.

서비스 관리자에 의해 운영되는 서비스들은 시스템의 에러 발생 가능성을 줄이고 서비스의 시작, 일시정지, 정지등 강화된 로딩 기능을 제공.

서비스 관리자에 의해서 지원되는 서비스들은 FTP, HTTPD, TELNET WEB 관련된 것과 UPnP, SMB 네트워킹에 관련된 것들이 있다 

반응형