demon 409

Program 2009. 1. 20. 13:08



demon 409 ver
Posted by Nvdark
,

TSS? 이건 뭥미?

Computing/OS 2009. 1. 20. 13:02

시험공부하면서 공부하게되었다 ㅠㅠ

처음엔 어려웠는데 하다보니 참 재미있는;;;


기본적으로 "정덕영"씨의 책을 보면 다 이해가 갔는데

이해가 잘 안가는부분이 TSS 쪽이였다.

특히 IDTR(인터럽트)쪽!! TR은 28H를 가르친다고 고정이라고 나와있고 ...Task Gate Descriptor를

가르친다고 나와있는데 그럼 결국 TR은 하나의 Task만을 가르친다는 소리같았다. 그럼 IDT에서 나온 셀렉터는 모란말인가 ㅠㅠ


내가 이해한게 맞는지는 모르겠지만....

난 이렇게 이해했다. ;;

Gate 디스크립터란건 TSS변환을 할때 사용한다고 나와있고 그냥 TSS 디스크립터는 TSS를 가르친다고나와있다. 내부적인 내용까지는 (포함하는 값)은 나중에 정리하기로하고 ...


인터럽트가 발생하면 IDT에 있는 255개의 여러 값중에 맞는 하나를 가지고 Task 셀렉터가 생기는데 이것은 GDT영역의 TSS 디스크립터를 가르친다.  그리고나서 TR이 호출...음...


인터럽트가 발생하면 어떤인터럽트든 상관없이 현재 작업중인 테스크는 스택에 저장되고 작업이 전환되면 TR을 호출하여 테스크를 전환한다....모 나름 혼자 열심히 생각해서 결론은 이리났는데 ...

단순히 세그멘테이션과 페이징이 되는과정은 금방 이해가갔지만 도무지 인터럽트쪽에서 막혔던 난 이런결론을 내야했다 ㅠㅠ 왜!! 시험이 불과 몇시간도 안남았기때문에 ㅠㅠ

Posted by Nvdark
,

WDF

Computing/Windows 2009. 1. 20. 12:58

WDF를 설명하기에 앞서서 WDM부터 알고넘어가야한다.

WDM을 기반으로 하여 WDF가 구현되는거라고 생각하기에 ㄷㄷㄷ


그럼 차차 설명하기로 하고 ....

http://www.microsoft.com/whdc/driver/wdf/wdf-arch.mspx 여기있는 문서를 참고하였습니다.


WDF는 MS의 차세대 Driver-Development Model입니다.

전 WDM과는 별도의 것이라고 생각했었는데 ...그게 아니더군요..WDM의 단점을 극복하기위해 나온 프레임워크라고 해야할것입니다.

번역하면서 느낀건데 몬소린지 모르겠더군요 ....

일단 문서를 보시면 소개부터 좔좔.....모라고 쓰여있는데....나중에 시간나면 올리도록하고

제가 생각하기에 중요하다고 생각되는부분만 다루겠습니다.

사용자 삽입 이미지

WDM은 심각한 제한을 가지고있는데 WDM드라이버는 수천라인의 코드를 가지고있습니다. 이것은 드라이버가 지원해야하는 공통의 특징을 구현하는데 WDM 드라이버는 그 OS커널에서 직접적으로 나오는 디바이스 드라이버 인터페이스(DDIs)를 사용합니다. 그러나 이 DDIs는 오류가 존재하며 이 오류로 인하여 시스템이 망가질수있기때문에 WDF가 나오게 되었습니다.


KMDF-커널 모드 드라이버 프래임워크를 나타내는 말이며

UMDF-유져 모드 드라이버 프래임워크를 나타내는 말입니다.

일단 오브젝트모델이라는것이있는데 이부분은 아직 이해가 안되서 나중에하고


I/O 모델이있습니다. 여기서는 I/ORequest Flow가 나오는데 말그대로 받아들이시면됩니다.


1. IRP dispatcher은 IRP를 점검하고 그것을 I/O package로 보냅니다.

2. I/O package는 WDF request 오브젝트를 만들고 IRP를 나타냅니다. WDF request object를 대기열에 추가하고 현재의 전원상태를 검사합니다.

3. 장치는 low-power에서  있기때문에 I/O package는  read operation을 수행할수있도록 Plug and play/power package를 호출합니다.

4. Plug and Play/power manager package는 defulat 조치를 취하고 driver에 의해 구현된 적절한 전원 관리 callbacks를 부름으로써 작업상태에 대한 장치를 return시켜 줍니다.

5. 그 장치가 성공적으로 작업상태에  들어왔을때, 프래임워크은 그 드라이버에 read 요구를 신속히 처리합니다.

6. 드라이버가 일을 신속히 처리했다면 , 드라이버는 요구를 얻기위해 대기열의 매소드를 호출합니다.

7. 드라이버가 요구를 만족시킬 수도 있다면, 이대로 동작할수있고 할 수 없다면, I/O 타겟에 대한 요구를 보냅니다.

 

으아 피곤하네요 ㅠㅠ

많은 양은 아니지만 시간날때 KMDF,UMDF의 프래임워크에대해 설명하도록하겠습니다. ㅠㅠ

Posted by Nvdark
,