장치 드라이버

Device driver

컴퓨팅에서 장치 드라이버컴퓨터자동화에 부착된 특정 유형의 장치를 작동하거나 제어하는 컴퓨터 프로그램이다.[1]드라이버는 하드웨어 장치에 소프트웨어 인터페이스를 제공하여, 사용 중인 하드웨어에 대한 정확한 세부사항을 알 필요 없이 운영 체제와 다른 컴퓨터 프로그램이 하드웨어 기능에 액세스할 수 있게 한다.

드라이버는 하드웨어가 연결되는 컴퓨터 버스나 통신 서브시스템을 통해 장치와 통신한다.호출 프로그램이 드라이버에서 루틴을 호출하면 드라이버가 장치에 명령을 실행한다(드라이브).일단 장치가 운전자에게 데이터를 다시 보내면, 운전자는 원래 호출 프로그램에서 루틴을 호출할 수 있다.

드라이버는 하드웨어에 따라 다르며 운영체제마다 다르다.그들은 일반적으로 필요한 비동기 시간 의존 하드웨어 인터페이스에 필요한 인터럽트 처리를 제공한다.[2]

목적

기기 드라이버의 주요 목적은 하드웨어 기기와 그것을 사용하는 애플리케이션 또는 운영체제 사이에서 번역기 역할을 함으로써 추상화를 제공하는 것이다.[1]프로그래머는 최종 사용자가 사용하고 있는 특정 하드웨어와는 독립적으로 상위 레벨의 애플리케이션 코드를 작성할 수 있다.예를 들어 직렬 포트와 상호작용을 위한 높은 수준의 애플리케이션은 단순히 "데이터 전송"과 "데이터 수신"을 위한 두 가지 기능을 가질 수 있다.더 낮은 수준에서 이러한 기능을 구현하는 장치 드라이버는 사용자의 컴퓨터에 설치된 특정 직렬 포트 컨트롤러와 통신할 것이다.16550 UART를 제어하는 데 필요한 명령은 FTDI 직렬 포트 컨버터를 제어하는 데 필요한 명령과 크게 다르지만, 각 하드웨어 특정 장치 드라이버는 이러한 세부 정보를 동일한(또는 유사한) 소프트웨어 인터페이스로 추상화한다.

개발

장치 드라이버를 작성하려면 하드웨어와 소프트웨어가 특정 플랫폼 기능에 대해 어떻게 작동하는지 심층적으로 이해해야 한다.드라이버는 작동하기 위해 하드웨어 기능에 대한 낮은 수준의 액세스를 요구하기 때문에 드라이버는 일반적으로 매우 특권적인 환경에서 작동하며, 문제가 발생할 경우 시스템 작동 문제를 야기할 수 있다.이와는 대조적으로, 현대의 운영체제에 관한 대부분의 사용자 레벨 소프트웨어는 시스템의 나머지 부분에 큰 영향을 주지 않고 중지될 수 있다.사용자 모드에서 실행 중인 드라이버도 장치가 잘못 프로그래밍된 경우 시스템을 손상시킬 수 있다.이러한 요소들은 문제를 진단하는 것을 더 어렵고 위험하게 만든다.[3]

따라서 드라이버를 쓰는 작업은 대개 하드웨어 개발 회사에서 일하는 소프트웨어 엔지니어컴퓨터 엔지니어에게 맡겨진다.대부분의 외부인보다 하드웨어 설계에 대한 정보가 뛰어나기 때문이다.더욱이 고객이 최적의 방법으로 하드웨어를 사용할 수 있도록 보장하는 것은 전통적으로 하드웨어 제조업체의 이익으로 고려되었다.일반적으로 논리 장치 드라이버(LDD)는 운영 체제 공급업체가 작성하고, 물리적 장치 드라이버(PDD)는 장치 공급업체가 구현한다.그러나 최근 몇 년 동안 비벤더들은 주로 무료 및 오픈 소스 운영 체제와 함께 사용하기 위해 독점적 장치를 위한 수많은 장치 드라이버를 작성했다.이러한 경우 하드웨어 제조업체는 기기 통신 방법에 대한 정보를 제공하는 것이 중요하다.이 정보는 대신 역엔지니어링을 통해 학습할 수 있지만, 이것은 소프트웨어보다 하드웨어에서 훨씬 더 어렵다.

마이크로소프트는 WDF(Windows Driver Framework)라고 불리는 드라이버 개발을 위한 새로운 프레임워크를 만들어 서툴게 쓰여진 장치 드라이버로 인한 시스템 불안정성을 줄이려고 시도했다.여기에는 특정 유형의 드라이버(주로 장치와 통신하기 위한 메시지 기반 프로토콜을 구현하는 드라이버)를 사용자 모드 드라이버로 개발하도록 권장하는 UMDF(User-Mode Driver Framework)가 포함된다.그러한 운전자들이 오작동할 경우, 시스템 불안정성을 야기하지 않는다.커널 모드 드라이버 프레임워크(KMDF) 모델은 커널 모드 장치 드라이버의 개발을 계속 허용하지만, I/O 작업 취소, 전원 관리, 플러그 앤 플레이 장치 지원 등 문제를 일으키는 것으로 알려진 기능의 표준 구현을 제공하려고 시도한다.

애플은 I/O Kit라고 불리는 macOS의 드라이버를 개발하기 위한 오픈 소스 프레임워크를 가지고 있다.

Linux 환경에서 프로그래머는 커널의 일부로서, 별도로 로드 가능한 모듈로서 또는 사용자 모드 드라이버(USB 디바이스와 같이 커널 인터페이스가 존재하는 특정 유형의 디바이스의 경우)로서 장치 드라이버를 구축할 수 있다.마케데프는 ttyS(단자), lp(병렬 포트), hd(디스크), 루프, 사운드(믹서, 시퀀서, dsp, 오디오)를 포함한 Linux의 장치 목록을 포함한다.[4]

마이크로소프트 윈도우즈 .sys 파일과 리눅스 .ko 파일은 로드 가능한 장치 드라이버를 포함할 수 있다.로드 가능한 장치 드라이버의 장점은 필요할 때만 로드한 다음 언로드할 수 있어 커널 메모리를 절약할 수 있다는 것이다.

커널 모드 대 사용자 모드

특히 최신 마이크로소프트 윈도우즈 플랫폼에서 장치 드라이버는 커널 모드(x86 CPU의 경우 링 0) 또는 사용자 모드(x86 CPU의 경우 링 3)에서 실행될 수 있다.[5]사용자 모드에서 드라이버를 실행하면 커널 메모리를 덮어써 시스템을 손상시킬 수 없으므로, 사용자 모드 장치 드라이버의 주요 이점은 안정성 향상이다.[6]반면에 사용자/커널 모드 전환은 대개 상당한 성능 오버헤드를 초래하므로, 커널 모드 드라이버는 지연 시간이 낮은 네트워킹에 선호된다.

커널 공간은 시스템 호출을 통해서만 사용자 모듈이 접근할 수 있다.UNIX 셸 또는 기타 GUI 기반 응용프로그램과 같은 최종 사용자 프로그램은 사용자 공간의 일부분이다.이러한 애플리케이션은 커널 지원 기능을 통해 하드웨어와 상호 작용한다.

적용들

현대적인 하드웨어와 운영체제의 다양성 때문에 드라이버는 많은 다른 환경에서 작동한다.[7]운전자는 다음과 접속할 수 있다.

장치 드라이버에 대한 일반적인 추상화 수준은 다음과 같다.

  • 하드웨어의 경우:
    • 직접 연결
    • 장치 제어 레지스터에 쓰기 또는 읽기
    • 일부 고급 인터페이스 사용(예: Video BIOS)
    • 다른 하위 수준 장치 드라이버 사용(예: 디스크 드라이버를 사용하는 파일 시스템 드라이버)
    • 완전히 다른[8] 작업을 수행하면서 하드웨어로 작업 시뮬레이션
  • 소프트웨어의 경우:
    • 운영 체제가 하드웨어 리소스에 직접 액세스할 수 있도록 허용
    • 원시 요소만 구현
    • 비 드라이버 소프트웨어용 인터페이스 구현(예: TWAIN)
    • 언어 구현, 때로는 상당히 높은 수준(: PostScript)

따라서 주어진 하드웨어에 맞는 올바른 장치 드라이버를 선택하고 설치하는 것이 컴퓨터 시스템 구성의 핵심 구성요소인 경우가 많다.[9]

가상 장치 드라이버

가상 장치 드라이버는 장치 드라이버의 특정 변종을 나타낸다.이들은 예를 들어 DOS 프로그램이 마이크로소프트 윈도우즈 컴퓨터에서 실행되거나 게스트 운영 체제(예: Xen 호스트)에서 실행되는 경우와 같이 하드웨어 디바이스, 특히 가상화 환경에서 에뮬레이트하는 데 사용된다.가상 디바이스 드라이버는 게스트 운영 체제가 하드웨어와 대화할 수 있도록 하는 대신, 가상 시스템 내에서 실행되는 게스트 운영 체제와 해당 드라이버가 실제 하드웨어에 액세스하는 듯한 착각을 가질 수 있도록 반대 역할을 수행하고 하드웨어 일부를 에뮬레이션한다.게스트 운영 체제에서 하드웨어에 액세스하려는 시도는 기능 호출과 같이 호스트 운영 체제의 가상 디바이스 드라이버로 라우팅된다.가상 디바이스 드라이버는 가상 시스템에 인터럽트와 같은 시뮬레이션된 프로세서 수준 이벤트도 전송할 수 있다.

가상 장치는 가상화되지 않은 환경에서도 작동할 수 있다.예를 들어 가상 네트워크 어댑터가상 사설망과 함께 사용되는 반면 가상 디스크 디바이스는 iSCSI와 함께 사용된다.가상 디바이스 드라이버의 좋은 예는 데몬 툴이 될 수 있다.

VxDs, VLM 및 VDD와 같은 몇 가지 변형된 가상 디바이스 드라이버가 있다.

오픈 소스 드라이버

일반적으로 사용되는 장치 드라이버에 대한 Solaris 설명:

  • FAS: 고속/광역 SCSI 컨트롤러
  • hme: 고속(10/100Mbit/s) 이더넷
  • isp: 차동 SCSI 컨트롤러 및 SunSwift 카드
  • glm: (Gigabaud Link Module[12]) UltraSCSI 컨트롤러
  • scsi: 소형 컴퓨터 직렬 인터페이스(SCSI) 장치
  • soc+ 또는 소셜 파이버 채널 중재 루프(FCAL)
  • soc: SPARC 스토리지 어레이(SSA) 컨트롤러 및 제어 장치
  • 소셜: FCAL용 직렬 광학 컨트롤러(soc+)

API

식별자

PCI 버스 또는 USB의 장치는 각각 4개의 16진수로 구성된 2개의 ID로 식별된다.공급업체 ID는 장치의 공급업체를 식별한다.장치 ID는 해당 제조업체/공급업체로부터 특정 장치를 식별한다.

PCI 장치에는 종종 장치의 메인 칩에 대한 ID 쌍이 있고, 또한 칩 제조업체와 다를 수 있는 공급업체를 식별하는 서브시스템 ID 쌍이 있다.

참고 항목

참조

  1. ^ a b "What is all device driver?". WhatIs.com. TechTarget. Archived from the original on 13 February 2021. Retrieved 19 March 2018.
  2. ^ EMC Education Services (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons. ISBN 9780470618332. Archived from the original on 2021-02-13. Retrieved 2020-11-10.
  3. ^ Burke, Timothy (1995). Writing device drivers: tutorial and reference. Digital Press. ISBN 9781555581411. Archived from the original on 2021-01-26. Retrieved 2016-08-05.
  4. ^ "MAKEDEV — Linux Command — Unix Command". Linux.about.com. 2009-09-11. Archived from the original on 2009-04-30. Retrieved 2009-09-17.
  5. ^ "User-mode vs. Kernel-mode Drivers". Microsoft. 2003-03-01. Archived from the original on 2008-03-09. Retrieved 2008-03-04.
  6. ^ "Introduction to the User-Mode Driver Framework (UMDF)". Microsoft. 2006-10-10. Archived from the original on 2010-01-07. Retrieved 2008-03-04.
  7. ^ Deborah Morley (2009). Understanding Computers 2009: Today and Tomorrow. Cengage Learning. ISBN 9780324830132. Archived from the original on 2021-06-09. Retrieved 2020-11-10.
  8. ^ Computer Peripherals and Interfaces. Technical Publications Pune. January 2008. pp. 5–8. ISBN 978-8184314748. Retrieved 2016-05-03.
  9. ^ "What are Device Drivers and why do we need them?". drivers.com. April 17, 2015. Archived from the original on November 20, 2016. Retrieved March 19, 2018.
  10. ^ "CCISS". SourceForge. 2010. Archived from the original on 2010-08-21. Retrieved 2010-08-11. Drivers for the HP (previously Compaq) Smart Array controllers which provide hardware RAID capability.
  11. ^ Russell, Steve; et al. (2003-10-21). Abbreviations and acronyms. Server Consolidation with the IBM eserver xSeries 440 and VMware ESX Serve. IBM International Technical Support Organization. p. 207. ISBN 0-7384-2684-9. Retrieved 2011-08-14.[영구적 데드링크]
  12. ^ "US Patent 5969841 - Gigabaud link module with received power detect signal". PatentStorm LLC. Archived from the original on 2011-06-12. Retrieved 2009-09-08. An improved Gigabaud Link Module (GLM) is provided for performing bi-directional data transfers between a host device and a serial transfer medium.
  13. ^ "Unified Audio Model (Windows CE 5.0)". msdn.microsoft.com. Archived from the original on 2017-06-22. Retrieved 2016-09-19.
  14. ^ Dell US. "What are DCH drivers and why do you need to know about them? Dell US". www.dell.com. Retrieved 2020-10-29.
  15. ^ "dxd - dynax driver framework: Main Page". dxd.dynax.at. Archived from the original on 2016-05-29. Retrieved 2016-09-19.

외부 링크