Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  동작 레벨 CPL (Current Privilege Level) 
작성일시 : 2007. 10. 22. 11:46 | 분류 : Windows Server/Kernel

요즘 Windows 2008 서버의 Windows Server Virtualazation 이나오면서 CPL에 대한 애기를 한다.
종합해 보면 0레벨은 OS 3레벨은 User 로 나뉘는데 -1레벨을 두고 해당 레벨에서 Hyper Visor를 구동해 OS의 성능을 보장한다는 애기다.

Anyway~
CPU는 상태에 따라 접근 Address의 범위 제한하는 특권 레벨이 존제한다.
본디 특권 레벨은 0~3 까지 4개의 레벨이 존제 하지만, Windows의 경우 0, 3 두가지 레벨만 존제한다.
(2, 3 레벨은 장치 드라이버가 사용하지만, Windows 는 장치 드라이버가 0 레벨을 사용함으로 실제는 0 과 3 레벨만 존제 한다.)

그리고 특권 레벨이 높을 수록 머신을 컨트롤 하는 명령을 수행 할 수 있으며, 예를 들어 CPU를 중지 시키는 HLT 명령을 0 레벨 이외에서 실행 시키면 CPU는 예외을 발생 시킨다.

x86 CPU는 4G (2의 32승)의 주소공간을 세그먼트라는 몇개의 영역으로 분활 관리하는데, 각각의 세그먼트는 DPL 값을 설정할 수 있다. 즉 Windows 에서 DPL 값은 0과 3이고, CPU는 자신의 CPL 이하의 DLP을 갖는 세그먼트는 읽을 수 없다. 물론 CPL이 높은 경우 DLP이 낲은 코드를 읽거나 쓸순 있지만 실행은 불가능하다.

* API로 배우는 Windows 구조와 원리
|