IRQL(CPU 우선권 레벨)

커널모드 프로그램밍에서 중요한 개념인 하드웨어 인터럽트 우선권에 대해서 알아보겠습니다. 윈도우 2000이상 커널에서는 HAL 개념을 이용해서 모든 플랫폼에 적용시키기 위한 추상적인 스키마를 제공합니다.

이러한 우선권 추상화에 대한 기본이 되는 것이 바로 인터럽트 요청 레벨(IRQL)이다. IRQL은 단순하게 우선순위를 정의한 값입니다. 그러나 가장 중요한 법칙이 하나 있습니다.

[주어진 IRQL에서 수행되는 코드는 그 보다 낮은 IRQL의 코드나 동일한 IRQL 코드에 의해 인터럽트 될 수 없다]


< IRQL 운선순위>

인터럽트 처리 과정

위 표와 같이 인터럽트가 CPU에 도달하면 프로세서는 요청된 인터럽트의 IRQL값을 현재 CPU를 점유하고 있는 IRQL값과 비교해서 요청한 IRQL이 현재의 IRQL보다 낮거나 같다면 요청에 대한 처리가 거부되고, IRQL 레벨이 보다 낮은 값으로 떨어질 때까지 지연된 상태로 남아 있는다.

반대로 요청된 IRQL이 현재 CPU가 사용하고 있는 CPU IRQL보다 크다면 프로세서는 아래와 같은 과정에 따라 수행됩니다.

1.       현재의 명령의 수행을 중지한다.

2.       인터럽트 된 코드를 나중에 수행하기 위해서 스택에 충분한 상태정보를 저장한다.

3.       요청된 IRQL값과 같도록 CPU IRQL을 상승시키고, 현재보다 낮은 권한의 인터럽트가 일어나지 않도록 한다.

4.       요청된 인터럽트에 적절한 인터럽트 서비스 루틴으로 제어권을 넘긴다.

아래 그림은 위 동작과정을 나타낸 것 입니다

<IRQL 작동 방식 그림>

위와 같은 IRQL의 동작방식은 보다 높은 IRQL의 요청이 낮은 IRQL의 코드를 인터럽트 요청 할 수 있도록 한다.” 입니다. (인터럽트의 인터럽트) 이러한 매커니즘은 스택에 기반한 동작이기 때문에 동작에 혼동될 염려가 없는 장점이 있습니다. 그러나 동기화를 사용하는 쪽에서 처리해야 한다라는 조건이 있습니다.

소프트웨어 인터럽트

IRQL 운선순위에서 하단 부분에 있는 3가지 값(DISPATCH_LEVEL, APC_LEVEL, PASSIVE_LEVEL)은 소프트웨어 인터럽트입니다. 글자 뜻대로 하드웨어가 아니 소프트웨어 레벨에서 인터럽트가 발생합니다. 윈도우 2000에서는 이러한 소프트웨어 인터럽트를 스레드 스케줄링을 포함하여 인터럽트 우선권을 할당하는데 사용합니다. 소프트웨어 인터럽트는 한 스레드의 IRQL을 임의적으로 상승시켜 다른 스레드에 의해 인터럽트 되는 것을 막음으로써, 활성화된 스레드간의 동기화를 하는데 이용할 수 있습니다.
출처 : windows2000 디바이스 드라이버

Posted by 혁쌈

2008/01/19 19:43 2008/01/19 19:43
,
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/342

윈도우 부팅시 Break Point걸기

부팅시에 로드되는 드라이버의 driverentry에 브레이크포인트를
걸기위해 고생하신적있나요?.... 간단하지만
알아두면 유용합니다. 메뉴에서 아래부분을 찾아보세요....

DEBUG->Kernel Connection->Cycle Initial Break[Ctrl+Alt+K]

한번 누를때마다 아래와 같은 메세지가 나타나면서
기능이 설정됩니다.

Will breakin on first symbol load at next boot. -> 다음 부팅시 심볼이 처음로드될때 break 를 겁니다.
Will NOT breakin at next boot. -> 부팅시 break point 걸기를 해제합니다.
Will request initial breakpoint at next boot. -> 다음 부팅시 윈도우가 시작하자마자 break 를 겁니다.

즉.. 부팅시 로드되는 드라이버의 driverentry에 bp를 걸기위해서는(start=0인 드라이버인경우특히
이기능이 필요) 부팅후 초기화시 자동으로 브레이크 포인트를 걸게하고요(위와 같은 방법으로요)
브레이크 포인트가 걸렸을때, 자기가 원하는 드라이버에 bp를 걸어주시면
됩니다...

전 이거 몰라서 꽤나 고생했네요..^^


출처 : 드라이버 온라인

Posted by 혁쌈

2007/12/22 19:42 2007/12/22 19:42
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/327

Windows Driver Foundation(WDF) - 한국어

출처 : http://www.microsoft.com/whdc/driver/wdf/default.mspx


Windows Driver Foundation(WDF)


WDF를 사용하면 OS가 아닌 디바이스 장치에 중점을 두고 개발할 수 있다.

WDF는 몇가지 드라이버 검증 툴을 통해서 커널 모드와 사용자 모드 드라이버의 개발을 위한 프레임워크를 포함하고 있다.


Kernel-Mode Driver Framework(KMDF)


KMDF는 커널 모드 드라이버에 필요한 기본적인 기능을 구현하고 있다. 다음을 포함한다:


. PnP와 전원 관리

. I/O 큐

. Direct memory access (DMA)

. Windows management instrumentation (WMI)

. Synchronization


각 윈도우즈 버전에 적합한 프레임워크에 대부분의 소스 코드가 있기 때문에, KMDF 드라이버는 최소한의 소스 코드만을 필요로 한다. 드라이버는 다음을 지원하기 위한 코드가 있다:


. 디바이스가 response해야하는 이벤트

. 디바이스에 고유한 기능


User-Mode Driver Framework(UMDF)

UMDF는 프로토콜 기반 디바이스 혹은 시리얼 버스 기반 디바이스를 지원하는 user-mode 드라이버의 작성을 지원한다. 이런 드라이버는 커널 모드 드라이버와 동일한 타입의 I/O를 처리하고 커널 모드 드라이버와 동일하게 INF 파일로 설치된다.


사용자 모드에서 작동하는 드라이버는 사용자 주소 영역에 대한 접근 권한만을 가진다 따라서 커널 모드 드라이버 보다 시스템 보안과 안정성에 대한 낮은 리스크를 가진다. 사용자 모드 드라이버는 커멀 모드 드라이버와 거의 동일한 성능을 가지며 여러가지의 장점이 있다:


. 쉬운 드라이버 환경

. 높은 안정성과 보안성

. Win32 API 사용

. 사용자 모드 디버거를 이용한 디버깅

. C++ 프로그래밍

. 빠른 코드 생성


사용자 모드 드라이버가 할 수 없는 일:

. 인터럽트 처리

. 하드웨어 직접 접근

. 정확한 타이밍 루프 사용

. 커널 모드 리소스 사용


Architecture of the Windows Driver Foundation


이 글의 목적은 윈도우즈 OS 패밀리를 위한 차세대 드라이버 모델인 WDF에 대한 정보를 제공하는 것이다. WDF에 대한 전체적인 아키텍처를 기술하고 드라이버 개발 시간을 줄이고, 시스템 안정성을 높이고 드라이버 진단성과 서비스 능력을 개선할 수 있는 방법을 설명한다. WDF에 생소한 기술 관리자, 아키텍처, 드라이버 설계자를 위해 작성되었다.


다음의 OS에 적용된다:

MS Vista

MS Server 2003

MS XP

MS 2000


이 문서에 있는 정보:

. WDF의 디자인 목적

. WDF에서의 디바이스와 드라이버 지원

. WDF 드라이버 모델

. WDF 객체 모델

. PnP와 전원 관리 지원

. I/O 모델

. 드라이버 프레임워크

. 개발과 테스팅 툴

. serviceability and versioning

. 다음 단계



Windows Driver Foundation (WDF)

WDF defines a single driver model that supports the creation of object-oriented, event-driven drivers for either kernel mode or user mode. It simplifies driver development and maintenance by:

Implementing common features.

Providing intelligent defaults.

Managing most interactions with the operating system.

With WDF, driver writers can focus on their device hardware, rather than on the operating system.

WDF includes frameworks for the development of kernel-mode and user-mode drivers along with several driver verification tools.

Download the KMDF. KMDF 1.1 is now available for download. More

Tip: See the video presentations from Driver DevCon and other tips & tricks at Notes from Windows Development Teams.

Kernel-Mode Driver Framework (KMDF)
KMDF implements the fundamental features required for kernel-mode drivers.

User-Mode Driver Framework (UMDF)
UMDF supports the development of user-mode drivers for device classes such as cameras and portable music players that are based on protocol or serial buses.

WDF Driver Verification Tools
WDF includes a built-in verifier along with two rule-based static verification tools: PREfast and Static Driver Verifier (SDV).

WDF Overview

White PaperArchitecture of the Windows Driver Foundation/
White PaperFAQ: Questions from Driver Developers about Windows Driver Foundation/
White PaperIntroduction to the Windows Driver Foundation/
White PaperWindows Driver Foundation Facts/
Microsoft Powerpoint (.ppt)Windows Driver Foundation: An Introduction [WinHEC 2005; 689 KB]/

WDF Beta Program

White PaperWindows Driver Foundation Beta Program Invitation/

Windows Driver Foundation Notes

Microsoft Powerpoint (.ppt)How to Develop a KMDF Driver [517 KB]/
Microsoft Powerpoint (.ppt)How to Develop a UMDF Driver [1.4 MB]/
Microsoft Powerpoint (.ppt)How to Port WDM Drivers to KMDF [749 KB]/
Microsoft Powerpoint (.ppt)Introduction to User-Mode Driver Framework [536 KB]/
Windows MultimediaHow to Develop a KMDF Driver: Part 2/
Windows MultimediaHow to Port a WDM Driver to the KMDF: Part 1/
Windows MultimediaHow to Port a WDM Driver to the KMDF: Part 2/

Articles on WDF

This link leaves the Microsoft.com siteDefensive Drivers - DevSource by Ziff Davis Media/
This link leaves the Microsoft.com siteNT Insider Interviews Jake Oshins on WDF PnP/Power (subscription required)/

Posted by 혁쌈

2007/09/29 04:40 2007/09/29 04:40
,
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/309


블로그 이미지

No pains, No gains.

- 혁쌈

Archives

Authors

  1. 혁쌈

Recent Trackbacks

  1. rjixambb rjixambb 10/30

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Site Stats

Total hits:
80138
Today:
7
Yesterday:
52