디바이스 드라이버

최근 수정 시각:
10
편집
IP 우회 수단(프록시 서버, VPN, Tor 등)이나 IDC 대역 IP로 접속하셨습니다. (#30172495)
(VPN이나 iCloud의 비공개 릴레이를 사용 중인 경우 나타날 수 있습니다.)
잘못된 IDC 대역 차단이라고 생각하시는 경우 게시판에 문의하시길 바랍니다.
토론역사
 
 
 
 
 
 
 
 
 
1. 개요2. 상세3. 장치의 종류4. 커널 모드 드라이버5. 유저 모드 드라이버6. 각종 드라이버
6.1. GPU 드라이버6.2. 휴먼 인터페이스 장치 드라이버
6.2.1. 사운드 드라이버6.2.2. 포인팅 장치 드라이버
6.3. 네트워크 드라이버6.4. 저장 장치 드라이버6.5. 범용 드라이버
7. 가상 장치 드라이버8. 미니필터 드라이버
 
 
 
 
 
 
 
 
 
 
 
 

1. 개요[편집]

 
 
 
 
 
 
 
 
 
 
 
 
Device Driver

컴퓨터에서 하드웨어 장치를 운영체제에 연결하기 위해 필요한 소프트웨어. 하드웨어의 기능을 추상화하는 역할이 주 목적이다. 몇몇 사람들은 드라이브라고 잘못 부르기도 한다.

Windows 95까지는 순화하여 '장치 제어기'라고 불렀다.
 
 
 
 
 
 
 
 
 
 
 
 

2. 상세[편집]

 
 
 
 
 
 
 
 
 
 
 
 
연결을 하기 위해 해당하는 하드웨어나 특수한 소프트웨어 인터페이스에 대한 별도의 정보가 포함되어 있다. 예를 들어 프린터나 디스플레이 모니터 등을 새로 구입했다면 사용자는 이에 관련된 드라이버를 새로 설치해야 한다. 또한 지금 쓰고 있는 드라이버에 문제가 생겼다면 당연히 최신 버전의 드라이버로 업데이트를 해줘야 한다. 대표적으로 GeForce 20의 경우 Windows에서 자동으로 잡아주는 드라이버에서는 언리얼 엔진에서 주기적인 모니터 깜빡임을 유발하기 때문에 반드시 최신 드라이버를 받아서 새로 깔아 줘야 한다. 반대로 이전 버전으로 롤백해 줘야 하는 경우도 있다.

그래서 대개 유명 메이커는 자사의 제품에 대해서 꾸준한 드라이버 지원을 해 주며, 운영 체제 차원에서도 드라이버가 제공되지만, 그렇지 않은 경우에는 제품 공급사에서 별도로 제공하는 드라이버를 사용하면 된다. 그리고 사실, 웬만하면 공급사가 제공하는 드라이버를 사용하는 게 좋다. 특히 회사가 그렇게 자랑하는 특수 기능을 이용하려면 공급된 드라이버를 깔아야 한다. 안 그러면 컴퓨터는 돌아가지만 제 성능을 하나도 못 낸다. 쉽게 비유하면 차를 잘 만들어 놓고 운전자가 없거나 개판이면 문제라는 것.

자신의 컴퓨터에 설치된 하드웨어의 드라이버를 못 찾겠으면 3DP Chip같은 자신의 하드웨어에 맞는 드라이버를 찾아주는 유틸리티로 간단히 찾아낼 수 있다. 만약 Windows 7 이상 버전이면 어지간한 하드웨어는 전부 잡아내서 전용 드라이버로 설치해 주기도 한다.

제조사가 망하거나, 출시 후 너무 오랜 시간이 지나면 드라이버를 제공하지 않는다. 대체로 유명 제조사라 해도 출시 후 6~8년이 지난 후에 나온 윈도우에 대해서는 지원을 포기했다. 이런 경우 사용자는 OS 업그레이드를 못 하고 일부러 구형 OS를 사용하거나, 멀쩡한 부품을 갖다 버려야 한다. 이런 목적으로 2019년까지 Windows 98을 돌리는 펜티엄 3 컴퓨터를 유지하는 경우가 간혹 있다. 똥컴 문서 참고. 아주 간혹 오픈소스 드라이버가 나오는 경우는 있다.

윈도우 기본[1] 드라이버는 드라이버 날짜가 2006-06-21(수)라고 되어있는 경우가 많다. 날짜만 보면 이용 중인 윈도우의 출시일[2]보다 훨씬 과거일 텐데, 이는 마이크로소프트가 드라이버 업데이트를 하지 않는 게 아니고 제조사 제공 드라이버를 직접 설치할 때 그것이 우선으로 되게 하기 위해서라고 한다. #
 
 
 
 
 
 
 
 
 
 
 
 

3. 장치의 종류[편집]

 
 
 
 
 
 
 
 
 
 
 
 
장치의 입출력 특성에 따라서 드라이버의 구조가 크게 달라진다. 장치는 주로 문자, 블록, 네트워크 장치로 나뉜다, 이러한 구분은 주로 유닉스 계열 OS에서 다룬다.[3] 그러나 이 분류는 하드웨어 자체의 입출력 단위를 기준으로 만든 것이기에 윈도우나 심지어 마이크로프로세서 같은 환경에서도 하드웨어 직접 제어 시에 유사한 접근법이 쓰인다.
  • 문자 디바이스
    과거 바이트(int8, char) 단위로 입출력하던 장치를 말한다. 보통 바이트 단위로 입출력한다고 부르지만 요즘에는 데이터 스트림을 입출력한다고 부르기도 한다. 예시로는 사운드카드, 키보드, 마우스, UART 등이 있다. 순차 접근만 가능하고 스트림을 입출력하는 특성상 지터에 매우 민감하여[4] 데이터 안정성을 위해 인터럽트와 데이터 버퍼, DMA를 사용하는 것이 일반적이다.
  • 블록 디바이스
    블록(페이지) 단위로 입출력하는 장치를 말한다. 블록이라 함은 일정한 길이의 데이터 스트림을 말한다. HDD나 SSD 같은 저장장치가 내부적으로 블록 단위로 입출력하기 때문에 주로 저장장치가 블록 디바이스에 해당한다. 임의 접근이 가능하고 블록 단위로만 데이터를 주고 받기 때문에 보통 블록 단위로 RAM에 캐싱을 한다. 컴퓨터 전원을 갑자기 끄면 데이터가 손상된다고 하는 이유 중 하나가 블록 디바이스의 특성 때문이다.
  • 네트워크 디바이스
    패킷 단위로 입출력하는 장치를 말한다. NIC가 대표적인 네트워크 디바이스이며 USB, PCI-E 컨트롤러로 여기에 해당될 수 있다. 패킷의 순서가 실제 데이터 순서와 달라도 무방하고 입출력 단위인 패킷의 길이가 블록 디바이스와는 다르게 비교적 자유롭다는 특징이 있다.
  • 가속/연산 디바이스
    전통적인 장치 구분은 아니지만 GPU같은 코프로세서 연산장치를 따로 분류하려는 움직임이 있다. 이러한 외부 연산장치는 자체적인 명령어, 메모리 구조, 명령 큐를 가지는 등 사실상 커널의 통제권 밖에 있어 왔기 때문에 커널에서는 별도 장치로 분류하지 않아 왔다. GPU 같은 외부 연산장치는 일단 문자 디바이스로 포함하기는 하지만 실제 드라이버 구조는 매우 다르다.
 
 
 
 
 
 
 
 
 
 
 
 

4. 커널 모드 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
많은 드라이버는 성능 및 호환성의 문제로 인해 커널 모드에서 실행되며 커널 수준 특권명령어를 사용할 수 있다. 기본적으로 권한의 제약을 받지 않고 모든 객체에 접근할 수 있으며 커널보다 상위 계층인 하이퍼바이저나 CPU 자체에서 차단되는[5] 특정 영역이 아니라면 하드웨어를 직접적으로 제어할 수 있다.[6] 그러나 커널 영역은 실패가 발생하는 경우 시스템 전체에 영향을 줄 수 있으며, 만일 하나 커널이나 드라이버 중에서 오류가 발생할 경우 이를 제대로 처리하지 못하면 그대로 커널 패닉으로 직행하게 된다.

드라이버는 대부분 커널에 설치되는 모듈의 형태이며, 확장자는 Windows의 경우 3.1까지는 drv, Windows 9x 계열은 drv와 vxd(가상장치), Windows NT 계열은 sys, macOS에서는 .kext(커널 확장)[7], 리눅스 커널에서는 .ko(커널 모듈)이다. 리눅스의 경우 커널 소스에 포함된 드라이버는 컴파일 시 옵션에 따라서 커널 이미지에 내장되도록 할 수도 있고, 웬만한 리눅스 배포판에서는 커널에서 지원하는 드라이버를 대부분 커널 모듈로 포함시킨다.[8]

이렇듯 커널에 영향을 줄 수 있는 소프트웨어이기 때문에 옛날에는 드라이버끼리 충돌을 일으켜서 커널 패닉이 일어나는 일이 종종 있었다. 빌 게이츠의 굴욕 역시 이거 때문에 벌어진 일이다. 그래서 당시에는 속칭 '궁합'을 잘 맞추는 것도 컴퓨터 실력을 측정하는 기준이 되기도 했다. 물론 지금은 거의 옛날 이야기가 되었다. 안전성을 엄격하게 확인하여 Microsoft의 WHQL 인증을 받은 하드웨어 드라이버만 작동할 수 있게 되어서 드라이버로 인해 커널 패닉이 발생하는 경우가 많이 줄어들었다. 또한 드라이버가 불안정하면 아무리 성능이 좋아도 널리 쓰이기가 힘들어서 고수들만 많이 쓰는 부품이 되기도 한다. 대표적인 예로 예전에 인기가 있었던 국산 사운드 카드인 사운드 트랙 시리즈는 드라이버 설치가 까다롭기로 악명이 자자했었다.

또 커널 모드에서 동작한다는 점에서 보안 취약점으로 작용하기도 했다. 해커들이 드라이버를 만들어 악성 코드에 삽입. 실행 시 드라이버를 자동으로 설치하는 식이다.[9] 악성 드라이버의 주 목적은 무제한 접근 허용, 악성 코드 보호 등이다. 그렇다보니 Microsoft도 이에 대한 대책을 마련해 놓았다. Windows 2000 이후의 NT 계열 윈도우는 서명이 없거나 올바르지 않은(변조된) 드라이버는 설치 시 경고 메시지를 띄우고 설치 여부를 사용자가 선택할 수 있다. 또한 64비트 운영체제의 경우 커널 패치 보호가 적용되어 있어 드라이버의 신뢰 수준에 따라 커널 코드 접근 권한을 차등화하고 있다. 그밖에도 신뢰 수준에 따라 커널 로드 시 즉시 실행되는 드라이버와 커널 부팅 이후 실행되는 드라이버로도 나뉘게 된다.[10] 또한 마이크로소프트에서는 커널 자체를 가상화 환경에서 실행하여 커널보다 권한이 높은 가상 머신에 의해 보안이 관리되도록 하는 가상화 기반 보안을 활성화하였다.

Windows 8 이후부터[11] 서명이 안 된 드라이버는 설치를 매우 까다롭게 해놨다. 먼저 UEFI 설정에서 보안 부트(Secure Boot) 기능을 끄고, 관리자 권한으로 명령 프롬프트를 실행한 다음 bcdedit /set {default} bootmenupolicy legacy를 입력한 후 다시 부팅해 부팅 로고가 뜨기 직전에 F8키를 눌러서 Windows 부팅 관리자로 접근하거나, 윈도우가 돌아가고 있는 상황에선 Windows 10 Redstone 4 기준으로 시작 → 설정에 들어가서 업데이트 및 보안 → 복구 → 고급 시작 옵션 아랫쪽의 지금 다시 시작 버튼을 눌러 재부팅을 시켜, 고급 시작 옵션 화면이 떴을 때 '드라이버 서명 적용 사용 안 함'을 선택해 부팅하지 않는 이상은 아예 설치하지 못하게 막아놨다.

이 방식은 서명이 되지 않은 드라이버를 하나만 설치할 때나 해당되고, 2개 이상을 설치해야 한다면 드라이버를 매번 설치할 때마다 Windows 부팅 관리자를 띄워서 '드라이버 서명 적용 사용 안 함'을 선택해야 한다. 그래서 부팅하기 매우 번거로워지기 때문에 좀 더 편리한 방법을 소개한다. 먼저 명령 프롬프트를 관리자 권한으로 실행한다. 명령 프롬프트에서 bcdedit -set TESTSIGNING ON을 입력한 후[12] '작업을 완료했습니다.'[13][14]라고 뜬걸 확인하고 재부팅을 하면 굳이 매번 Windows 부팅 관리자를 띄워야 하는 번거로움은 사라질 것이다. 하지만 필요한 드라이버를 전부 다 설치하고 그냥 내버려두는 것은 보안상 좋지 않기 때문에 다시 관리자 권한으로 명령 프롬프트를 실행해서 bcdedit -set TESTSIGNING OFF를 입력한 후 재부팅을 하고, UEFI 설정에 들어가서 보안 부트 기능을 다시 켜줘야 한다.

그 외에도 커널 디버거를 키고 WinDbg로 연결시키면 자동으로 테스트 서명 및 드라이버 서명 확인 적용 사용 안함이 적용된다.

자신이 직접 드라이버를 만들고 싶다면 Windows SDK와 DDK를 설치하면 된다. 일반 소프트웨어와 달리 드라이버는 오류가 발생하면 사소한 것이라도 반드시 파란 화면을 보게 되며, 이때 오류코드는 KMODE_EXCEPTION_NOT_HANDLED이다. 그래서 일반 프로그램을 제작하는 것보다 더욱 주의해야 하며, 실제 컴퓨터가 아닌 가상머신이나 테스트 전용 컴퓨터에서 드라이버 작동을 테스트해야 한다. 이런 이유로 DDK에는 드라이버 개발을 위한 WinDbg라는 윈도우 디버깅 도구가 들어가 있다. 참고로 드라이버 개발 중에 블루스크린이 일어나는 대부분의 원인은 포인터 참조과 관련되어 있다. 즉 포인터 변수를 잘못 다루면 블루스크린이 일어날 수 있다는 것이다.

Windows 커널C언어로 개발되었기에 드라이버도 C언어로 작성해야 문제가 발생하지 않는다. 물론 MS는 C++를 드라이버 개발에 사용하는 것을 금지하지는 않지만 C와 C++는 각각 절차 지향, 객체 지향이기에 문제가 발생할 수 있다. 따라서 C++의 기능(RTTI, C++ 스타일 예외, new/delete, 등)을 사용할 수 없다. #
 
 
 
 
 
 
 
 
 
 
 
 

5. 유저 모드 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
이름에서 알 수 있듯이 유저모드에서 동작하는 드라이버이다.

커널 모드 드라이버는 커널과 같은 링에서 동작하므로 커널과 같은 수준의 하드웨어에 대한 접근, 메모리에 대한 접근이 가능하며 커널 모드 드라이버가 버그를 발생시키는 경우 커널도 함께 터지지만 유저모드 드라이버는 드라이버 프로세스 자체만 터진다.
또한 커널 모드 드라이버에 취약점이나 악의적인 동작을 수행하는 코드가 있는 경우 컴퓨터 전체가 장악되는 등 보안성에 있어 매우 민감하기 때문에 사용자 모드에서 작동하는 사용자 모드 드라이버를 만들어 사용하기도 한다.

마이크로커널은 많은 장치 드라이버들과 서비스들을 담고 있는 모놀리식 커널의 오작동이나 보안 취약 문제를 우려하여 만들어진 커널 설계 방법으로, 마이크로커널의 구조를 채택하는 경우 사용자 모드 드라이버가 기본적으로 사용된다.

하지만 사용자 모드 드라이버는 하드웨어에 접근하기 위해선 커널을 통해야 하므로 ioctl같은 시스템 콜을 사용하여야 한다. 이로 인해 발생하는 오버헤드로 인한 성능 문제로 인해 대부분의 Windows, Linux 드라이버는 커널 모드 드라이버이다. 다만 장치 속도가 느리고 하드웨어 제어의 필요성이 낮은 프린터 드라이버 등에서는 대부분 사용자 모드 드라이버로 바뀌었으며 프린터 커널 드라이버 설치는 최신 윈도우에서는 기본적으로 꺼져 있다. 하지만 일부 구형 프린터는 여전히 커널 드라이버를 쓰고 있어 로컬 그룹 정책 편집기에서 커널 드라이버 설치를 켜야 한다.

이를 위한 절충으로 하드웨어와 직접적으로 통신하는 최소한의 기능만을 가진 드라이버를 커널 드라이버로 제작하고, 그 외 요소는 전부 유저모드로 작성해 대부분의 처리를 유저모드에서 처리 후 커널 모드 드라이버로 전송하는 방식으로 동작하며 실제로 그래픽스 드라이버가 이렇게 동작한다.
 
 
 
 
 
 
 
 
 
 
 
 

6. 각종 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
사운드, 네트워크, 프린터 드라이버 등이 있다.
 
 
 
 
 
 
 
 
 
 
 
 

6.1. GPU 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6.2. 휴먼 인터페이스 장치 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
  • USB HID 규격 드라이버[16]
 
 
 
 
 
 
 
 
 
 
 
 

6.2.1. 사운드 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
  • Microsoft High Definition Audio 드라이버[17]
  • Realtek High Definition Audio 드라이버
  • NVIDIA High Definition Audio 드라이버[HDMI/DP]
  • VIA High Definition Audio 드라이버
  • IDT(구 SigmaTel) High Definition Audio 드라이버[19]
  • SoundMAX High Definiiton Audio 드라이버
  • Creative Sound Blaster 드라이버
  • AMD(구 ATI) High Definition Audio 드라이버[HDMI/DP]
  • 인텔 디스플레이 오디오 드라이버[HDMI/DP]
  • Synaptics(구 Conexant) High Definition Audio 드라이버[22]
 
 
 
 
 
 
 
 
 
 
 
 

6.2.2. 포인팅 장치 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6.3. 네트워크 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6.4. 저장 장치 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

6.5. 범용 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
비교적 단순한 제어만 필요로 하는 기기들은 독자적인 드라이버를 만들 필요가 없이 여러 장치에 사용이 가능한 범용 드라이버를 만들어 놓고 사용자 모드의 응용 프로그램을 통해 장치를 제어하기도 한다. 예를 들면 winusb같은 경우는 윈도우에서 USB 장치에 대한 범용 드라이버로 사용이 가능하다.
 
 
 
 
 
 
 
 
 
 
 
 

7. 가상 장치 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
디바이스 드라이버 외에 '소프트웨어 드라이버'라는 종류도 있는데 이 경우는 CPU에서 Ring0 권한이나 커널 모드가 필요한 코드의 실행이나 장치의 간접 제어, 또는 간섭이 필요할 경우 사용하는 드라이버다. 리눅스의 경우는 커널 드라이버와 커널 확장 등을 통틀어서 커널 모듈이라고 말한다.

주로 '가상 하드웨어'를 구현하거나[23], VPN용 가상 랜카드[24] 혹은 커널에서 지원하지 않는 기능을 추가하는 데 사용되기도 하고, 하드웨어나 파일 시스템에 직접적으로 접근할 필요가 있는 일부 유틸리티 소프트웨어[25]방화벽이나 안티 바이러스, MDM, DRM, 안티 치트 같은 보안 소프트웨어도 드라이버로 만들어져 있다.

하지만 드라이버 특성상 악용하는 수준에 따라 운영 체제를 갈아엎는 수준으로 끝나지 않기 때문에 하드웨어 드라이버와 마찬가지로 디지털 서명이 있지 않다면 설치 시 경고가 뜨며 윈도우 8부터는 설치할 때 UEFI 설정에서 보안 부트(Secure Boot) 기능을 끄고 부팅 옵션을 변경한 후 설치할 수 있다. macOS의 경우는 루트리스의 적용으로 애플에 의해 서명되어 있는 드라이버만 설치할 수 있도록 하였다. 그리고 애플 개발자 페이지에서는 보안 소프트웨어를 드라이버로 개발하는 것을 권장하지 않고 있다. Microsoft 또한 보안 프로그램을 커널모듈로 개발하는 것을 선호하지 않는 눈치이다. 그래서 커널 패치 보호를 적용해서 사실상 커널 모듈이 커널의 핵심 부분을 마음대로 수정할 수 없게 만들어버렸다.

하지만 커널 모듈의 로드가 자유로운 PC의 특성상 커널 수준 바이러스 백신을 제거하기는 매우 어려울 것으로 보인다. 컴퓨터 바이러스 중 커널 내부에 침투하는 종류의 경우 사용자 모드의 백신만 이용해서는 탐지가 매우 어려우며, 커널 모드의 바이러스가 사용자 모드의 백신을 강제종료하는 것을 막기 위해서도 커널 드라이버가 필요하기 때문이다. 또한 윈도우 API만 가지고는 DRM이나 안티 치트 등이 요구하는 고급 보안 기능을 구현하는 것은 한계가 있다. 당장 시스템 무결성 검사를 할 때에도 Windows API를 이용할 수 있지만 정확하게 확인하기 위해서는 드라이버를 사용하는 것이 필수이다. 안티 치트의 경우 시스템 무결성과 RoT(Root of Trust)를 검증하는 것이 매우 중요한데 무결성 검증조차 아직은 커널 드라이버 없이는 제한적으로만 가능하다. DRM의 경우에도 Windows 자체적으로는 사실상 Playready라는 동영상 DRM만 제공되고 국가기관이나 기업에서 요구하는 문서 DRM의 경우 아직 윈도우에서 서드파티 프로그램에 관련 기능을 완벽하게 제공하지 않기 때문에 커널 드라이버를 통해 직접 구현하는 것이 안전하다. 방화벽이나 네트워크 접근 제어 프로그램 또한 커널 수준에서 네트워크 활동을 감시해야 제대로 된 보안성과 성능을 보장할 수 있다. OS에서 네트워크 스택 자체가 커널에 있는 이유가 네트워크 성능을 보장하기 위해서인데 이 스택의 일부분인 방화벽을 사용자 모드에 두는 경우 네트워크 성능이 낮아질 우려도 있다.

Windows API가 개선되면 안티 치트와 같은 낮은 신뢰도를 가진 프로그램의 경우에는 커널에서 제거가 가능할지도 모르지만, 바이러스 백신이나 기업이 요구하는 보안을 커널 수준 드라이버 없이 제공하는 것은 구조적으로 불가능하다.[26] 애초에 윈도우가 사무용 컴퓨터 시장에서 지배적인 위치에 있게 해 준 것이 다양한 사무용 프로그램 특히 시스템에 깊이 접근하는 보안 툴과의 호환성을 보장했던 이유도 있었다.
 
 
 
 
 
 
 
 
 
 
 
 

8. 미니필터 드라이버[편집]

 
 
 
 
 
 
 
 
 
 
 
 
Windows XP부터 추가된 드라이버의 한 종류로 파일 입출력을 필터링할 수 있다. 모든 미니필터 드라이버들은 fltmgr.sys라는 상위 드라이버에 의해 관리된다.

이전에는 파일 쓰기나 읽기를 감지하거나 막기 위해서는 시스템 콜 테이블을 후킹할 수밖에 없었는데 잘못했다가 커널 패닉이 발생할 수도 있었는데 미니필터 드라이버가 생기면서 안정적으로 파일 쓰기나 읽기를 감지하거나 막을 수 있게 되었다. Windows 2000 이하에서는 미니필터 드라이버가 없지만 서드파티 미니필터 드라이버가 있다.

상위 드라이버인 Fltmgr.sys에서 파일 입출력 필터링와 관련된 다양한 API를 제공하며 미니필터 드라이버는 이를 통해 파일 쓰기나 읽기를 감지하거나 막을 수 있다. 예시로 안티바이러스 소프트웨어의 실시간 감시 기능이나 자동 백업/복원 프로그램의 경우 미니필터 드라이버를 이용하여 쓰기/읽기가 이루어지는 파일들을 검사하여 바이러스를 검사하거나 파일 수정을 감지하고 복구할 수 있도록 해준다.

[1] Windows 업데이트로 제공되는 제조사 드라이버가 아니라, 표준 SATA AHCI 컨트롤러와 같은 윈도우를 설치하자마자 알아서 잡히는 드라이버를 말한다.[2] Windows XP가 2001년, Windows 7이 2009년에 출시되었다.[3] 이는 주로 유닉스가 장치가 사용자에게 노출되는 부분까지 파일 기반으로 통일되어 있기 때문이다. 윈도우의 경우는 장치별로 다른 핸들을 통해 접근한다.[4] 예를 들면 16bit 44.1kHz 오디오 기기는 허용 지터가 100피코초 수준이다. 다만 이 정도의 고정밀 타이밍은 CPU를 통해 제어할 수 없고 DMA와 인터럽트를 사용하고 장치 내부에서 정주기 클럭을 사용하여 리클럭킹한다.[5] 대표적으로 오버클럭 배수락이 걸린 CPU는 클럭 설정값이 허용 범위를 벗어나면 CPU의 마이크로코드 수준에서 명령을 거부한다. 또한 부팅 직후 UEFI에서 잠금하는 특정 레지스터 예를 들면 Watchdog 타이머나 장치 비활성화 플래그, 오버클럭 비활성화 플래그, UEFI 펌웨어 영역 등은 커널 권한이라고 해도 CPU 수준에서 접근이 거부된다.[6] CPU의 몇몇 명령은 커널 모드에서만 사용할 수 있는 경우가 있는데 이를 특권 명령(Privileged Instruction)이라고 한다. 이러한 명령을 사용자 모드에서 동작하는 프로그램이 사용할 경우 CPU는 이를 실제로 실행시키지 않고 예외를 발생시킨다.[7] 해킨토시는 Mac에 쓰이지 않은 부품들의 인식 및 정상 작동을 위해 이걸 우회하여 서명되지 않은 kext를 설치한다.[8] 단 nVIDIA 그래픽 카드 드라이버 같은 경우는 라이선스 문제 때문에 리눅스 커널 소스에 들어갈 수 없다. 다만 사용자 편의를 위해 배포판에서는 자동화된 컴파일 및 설치 과정이 별도로 들어가기도 한다.[9] 특히 ActiveX나 NPAPI는 샌드박스가 없고 Windows Vista 이전까지는 관리자 권한 보호도 딱히 없었기 때문에 웹 사이트 접속만으로 커널 모듈 설치가 가능했다. 보안 프로그램의 커널 모듈도 모두 이런 식으로 설치된 것.[10] 그래서 시스템 부팅에 직접적으로 관여할 수 있는 드라이버는 많지 않다.[11] 임베디드 계열의 경우 Windows Embedded 7 Standard부터 해당된다.[12] 인터넷에 흔히 찾아볼 수 있는 가이드에는 bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS도 같이 입력하라고 되어 있는데, 이것은 Windows Vista RTM에서만 적용 가능하고 Windows 7부터는 무시되기 때문에 굳이 입력할 필요가 없다. 참고로 해당 명령어를 취소하고 원래대로 되돌리려면 bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS를 입력하면 된다.[13] 명령 프롬프트에서 bcdedit -set TESTSIGNING ON를 입력했는데 '요소 데이터를 설정하는 동안 오류가 발생했습니다. 값은 보안 부팅 정책에 의해 보호되며 수정 또는 삭제할 수 없습니다.' 라는 결과물이 출력되면 해당 PC의 메인보드 롬에 심어진 펌웨어는 바이오스가 아닌 UEFI이며, UEFI 설정 메뉴에서 보안 부트 기능이 켜져 있음을 뜻하므로 제조사가 제공한 메뉴얼을 보고 보안 부트 기능을 꺼야만 '작업을 완료했습니다.' 라고 뜨며 정상적으로 적용된다.[14] 제조사에 따라 보안 부팅 해제를 아예 차단하는 경우도 있으니 주의. 한술 더 떠서 초기형 Microsoft Surface 모델은 섬뜩하게도 빨간 배경에 Surface 로고가 뜬다. 후기형 모델은 그나마 덜 공포스러우며, 상단 빨간 바에 자물쇠만 있는 정도이다.[15] 최근 엔비디아 드라이버들은 포스웨어라는 이름을 전면에 내세우지는 않는다. 여전히 정보창의 어딘가 구석지에 포스웨어라는 이름이 가뭄에 콩나듯 보일 때도 있지만 공식적으로 그 이름은 더 이상 쓰이지 않는다.[16] 마우스나 키보드를 연결하면 이 드라이버가 알아서 잡힌다.[17] 장치 관리자에서는 'High Definition Audio 장치'로 표시된다. 만약 사운드카드를 설치하고 따로 드라이버 설치를 하지 않으면 기본적으로 이 드라이버가 잡한다. MS 드라이버가 문제를 일으키거나 고급 기능을 쓰고 싶다면 제조사 드라이버를 깔아야 하겠지만 딱히 고급 기능이 없는 일반 내장 사운드카드는 이 드라이버로도 충분하다. 윈도우 설치 후 갑자기 찢어지는 소리가 자주 난다면 MS 드라이버가 문제를 이르키고 있을 가능성이 높다.[HDMI/DP] 18.1 18.2 18.3 임베디드 오디오 출력 기능[19] 주로 HP 컴퓨터에 탑재되었고, 2000년대까지는 LG전자Dell사의 컴퓨터에도 탑재되었다.[22] 주로 LG전자의 노트북에 탑재된다.[23] 가상 머신의 필수 덕목이기도 하다.[24] 운영 체제에서 접속하는 VPN도 가상 이더넷 카드를 만들고, 서드파티 소프트웨어에서는 SoftEther VPN이 유명하다. [25] 컴퓨터 제조사에서 제공하는 소프트웨어들 예를 들면 MyASUS 등은 하드웨어나 UEFI 영역을 직접 제어하기 때문에 보통 전용 드라이버가 요구된다.[26] 장기적으로는 이러한 보안 기능들을 하이퍼바이저에 통합하는 방안이 나오고 있기는 하지만 아직 실험적이다.
CC-white 이 문서의 내용 중 전체 또는 일부는 문서의 r134 판에서 가져왔습니다. 이전 역사 보러 가기
 
 
 

크리에이티브 커먼즈 라이선스
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외)
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.

나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다.
나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •