Programming/Kernel / Driver2008. 12. 3. 11:55

WDM의 한계


1. WDM 드라이버를 작성하는 것은 로우레벨 작업이고, 복잡하다.

ex> 현재의 WDM 모델에서 드라이버 작성할 때  plug & play, power management 지원하려면,

     최소한 2000라인이 필요

     DDI(Device Driver Interface) 쓰기 어려움

2. DDI가 구식이다.

- 오직 퍼포먼스만을 위해 디자인되었고, 보안이나 사용 편의성이 고려되지 않아있다.

  그래서 DDI는 드라이버들에게 OS의 핵심적인 데이터 구조들을 곧바로 노출!
  →  MS는 이런 구조체들의 변경이 제한될 수 밖에 없었고, 드라이버가 시스템을 크래쉬 시킬 확률 증가!

 

- Versioning 지원이 없다.

3. 미니포트 모델이 너무 많다.

- Windows는 현재 10개 이상의 miniport  Model을 지원.

- 미니포트 모델마다 pnpdhk power management 다루는 방법이 다르다.

4. 멀티펑션 디바이스를 지원하는 작업이 너무 복잡하다.

두가지의 다른 미니포트 모델에 적용되는 멀티펑션 디바이스 지우너위해, 개발자는 WDM 버스 드라이버와 두개의 미니포트 드라이버 작성이 필요

5. 현재 드라이버 모델은 커널 레벨에서만 동작해야 한다.

- WDM과 미니포트 드라이버 모델 → 커널모드에서 실행

커널모드 드라이버는 운영체제의 일부로 대접받게 되므로, 시스템의 가상 메모리 영역 접근권한을 가짐.

이 때문에 커널모드 드라이버에서 에러가 발생하면 바로 시스템을 크래쉬 시키는 BSOD!!

6. 테스트 툴들이 쓰기 어렵다.

 

 

차세대 윈도우즈 드라이버 모델의 디자인 목적

1. 드라이버 모델은 심플하고 유연성(flexible)이 있어야 한다.

 

2. 드라이버 모델은 코어 운영체제 컴퓨넌트와 분리되어야만 한다.

 

3. 드라이버 모델은 일관성이 있어야 한다.

 

4. 드라이버 모델은 확장성이 있어야 한다.

 

5. 드라이버 모��유저모드를 지원해야 한다.

 

6.드라이버 모델은 고급 레벨의 언어를 지원해야 한다.

 

 

WDF(Windows Driver Framework)

* 프레임워크

- 커널모드 드라이버 프레임워크 (KMDF)

 

- 유저모드 드라이버 프레임워크 (UMDF)

- WDF는 Object-oriented, event-driven model을 제공

: Object는 드라이버를 위한 블록을 만드는 것으로 작업을 한다. 드라이버는 이 objects를 미리 정의된 인터페이스들을 통해 수정할 수 있다.

Event 집합은 object의 각각의 종류에 영향을 줄 수 있다. Framework는 각각의 event를 위한 default behavior가 정의되어 있다.
Device-specifice behavior를 위해, 드라이버는 defaults를 재정의할 수 있는 callback routine를 포함하고 있다.

 

- 커널모드 드라이버 프레임워크(Kernel-Mode Driver Framework; KMDF)

커널모드 드라이버를 만드는데 필요한 기본적 기능인 PnP, Power Management, I/O queue, DMA, WMI, synchronization 등 기본적인 기능을 구현, IEEE 1394, USB 같은 주요 버스들에 대한 지원도 한다.

 

운영체제 커널의 일부분으로 포함된 것이 아니라, 별도로 제공되는 독립된 라이브러리이다.

 

커널모드 드라이버 프레임워크에서 인터페이스는 미래에도 가능한 한 드라이버의 독립성을 추구하도록 디자인되어 있다. 만약 드라이버가 크래쉬되면, OS는 시스템을 멈추거나 전체를 크래쉬하지 않고 복구하거나 드라이버엥 의해 할당된 리소스들을 클린업한다.

- 유저모드 드라이버 프레임워크(User-Mode Driver Framework)

Pnp, Power management, 비동기 I/O 지원을 포함하는 커널모드 프레임워크 기능의 일부분을 구현한다.

DMA 수행, 인터럽트 지원, nonpaged 풀 등의 커널모드 리소스를 사용하지 않는 드라이버들은 유저모드에서 실행될 수 있다.

 

네트워크와 연결된 디바이스들(network-connected devices)을 위한 드라이버와 PMP, 카메라, 핸드폰 같은 USB 디바이스들을 위한 드라이버를 만들 수 있다.

 

UMDF는 비스테이서 지원된다. XP에서 지원은 정책결정중이라던데..이부분은 찾아봐야하겠다.

[출처] WDM과 WDF

Posted by skensita