운영체제(OS), 각종 응용 프로그램, 그리고 다양한 하드웨어 장치는 서로 전혀 다른 개발 그룹에 의해 만들어집니다. 따라서 기본적으로 운영체제나 프로그램은 하드웨어 장치와 직접 소통할 수 없습니다. 바로 이 지점에서 장치 드라이버(device driver)가 등장합니다. 장치 드라이버는 운영체제와 하드웨어 사이에서 통역사 역할을 하는 소프트웨어로, 시스템에 연결된 하드웨어가 원활하게 작동하도록 돕습니다.
예를 들어 프린터 드라이버는 운영체제에 선택한 정보를 페이지에 인쇄하는 방법을 알려주고, 오디오 파일의 비트를 적절한 음향 출력으로 변환하려면 사운드 카드 드라이버가 반드시 필요합니다. 이처럼 시스템에 연결되는 거의 모든 하드웨어마다 자신만의 드라이버가 존재하는 것입니다.

장치 드라이버란 무엇인가?
운영체제는 하드웨어 내부 작동 방식의 세부 사항까지 알 필요가 없습니다. 운영체제는 장치 드라이버를 통해 해당 하드웨어와 인터페이스만 연결하면 되기 때문입니다. 만약 해당 드라이버가 설치되어 있지 않다면, 운영체제와 하드웨어 사이에는 아무런 통신 경로가 생기지 않고, 그 하드웨어는 제대로 작동하지 않거나 아예 작동하지 않을 수 있습니다.
장치 드라이버와 하드웨어는 장치가 연결된 컴퓨터 버스(computer bus)를 통해 서로 통신합니다. 또한 드라이버는 운영체제마다 다르며 특정 하드웨어에 의존적입니다. 장치 드라이버는 '소프트웨어 드라이버' 또는 단순히 '드라이버'라고도 불립니다.
장치 드라이버는 어떻게 작동할까?
하드웨어 장치가 시스템의 프로그램과 통신하려는 상황을 생각해 보겠습니다. 이것은 마치 서로 다른 언어를 사용하는 두 사람이 대화하려는 상황과 같습니다. 그래서 통역사가 필요하고, 이 역할을 하는 것이 바로 장치 드라이버입니다. 프로그램은 '하드웨어가 무엇을 해야 하는지'에 대한 정보를 드라이버에 전달하고, 드라이버는 그 정보를 받아 실제 작업을 수행하도록 장치를 움직입니다.
즉, 장치 드라이버는 소프트웨어 프로그램이나 운영체제의 명령을 하드웨어가 이해할 수 있는 언어로 번역합니다. 시스템이 효율적으로 구동되려면 필요한 모든 장치 드라이버가 갖춰져 있어야 합니다. 시스템을 켜면 운영체제는 장치 드라이버들과 BIOS와 통신하여 각종 하드웨어 작업을 수행할지 판단합니다.
만약 장치 드라이버가 없다면 어떻게 될까요? 시스템이 장치와 통신할 방법이 없거나, 아니면 모든 소프트웨어 프로그램이 하드웨어와 직접 인터페이스하는 방법을 알아야 합니다. 오늘날처럼 프로그램과 하드웨어의 종류가 매우 다양한 상황에서 이는 사실상 불가능합니다. 모든 종류의 하드웨어와 직접 통신할 수 있는 소프트웨어를 만드는 것은 현실성이 없기 때문입니다. 그래서 장치 드라이버는 게임 체인저라고 할 수 있습니다.
하드웨어 장치와 소프트웨어 프로그램 양쪽 모두 원활한 작동을 위해 장치 드라이버에 의존합니다. 프로그램은 일반적으로 범용 명령으로 장치에 접근하고, 장치 드라이버는 이를 해당 장치가 이해할 수 있는 전용 명령으로 변환해 줍니다.
장치 드라이버는 대개 운영체제에 기본 탑재(built-in)된 형태로 제공되며, 제조업체가 배포합니다. 다만 하드웨어나 소프트웨어 구성 요소가 교체되거나 업데이트되면 기존 드라이버는 더 이상 쓸모가 없어질 수 있습니다.
가상 장치 드라이버(Virtual Device Driver)
가상 장치 드라이버는 하드웨어 장치가 운영체제나 프로그램과 통신을 맺도록 도와주는 드라이버 구성 요소로, 이름 그대로 가상 장치를 위한 드라이버입니다. 가상 장치 드라이버는 데이터 흐름을 원활하게 유지하며, 여러 응용 프로그램이 충돌 없이 하나의 특정 하드웨어 장치에 동시 접근할 수 있도록 해 줍니다. 가상 장치 드라이버가 하드웨어로부터 인터럽트(interrupt) 신호를 받으면, 장치 설정 상태를 기준으로 다음 조치를 결정합니다.
가상 장치 드라이버는 어디에 사용될까?
소프트웨어로 하드웨어 장치를 에뮬레이션(emulation)할 때 가상 장치 드라이버가 사용됩니다. 대표적인 예가 VPN입니다. VPN을 사용하면 인터넷에 안전하게 연결하기 위해 가상 네트워크 카드(virtual network card)가 생성되는데, 이 가상 카드가 제대로 작동하려면 적절한 드라이버가 필요합니다. 이 드라이버는 보통 VPN 소프트웨어가 설치 과정에서 함께 설치해 줍니다.
모든 장치에 드라이버가 필요할까?
장치에 드라이버가 필요한지 여부는 운영체제가 해당 하드웨어 장치와 그 기능을 인식하는지에 달려 있습니다. 운영체제가 인식하지 못해 별도의 드라이버가 필요한 주변기기로는 비디오 카드, USB 장치, 사운드 카드, 스캐너, 프린터, 모뎀, 네트워크 카드, 카드 리더 등이 있습니다.
반면 운영체제는 흔히 사용되는 하드웨어가 기본 수준에서 작동할 수 있도록 몇 가지 범용(generic) 드라이버를 내장하고 있습니다. 물론 이 경우에도 운영체제가 해당 장치의 기능을 인식한다는 전제가 필요합니다. 범용 드라이버로 작동할 수 있는 장치로는 RAM, 키보드, 마우스, 스피커, 모니터, 하드 드라이브, 디스크 드라이브, CPU, 파워 서플라이, 조이스틱 등이 있습니다. 다만 운영체제가 제공하는 범용 드라이버는 하드웨어 제조사가 제공하는 드라이버만큼 자주 업데이트되지 않는다는 점을 유의해야 합니다.
드라이버를 설치하지 않으면 어떻게 될까?
드라이버가 설치되지 않은 장치는 아예 작동하지 않거나 일부 기능만 작동할 수 있습니다. 예를 들어 마우스나 키보드 같은 장치는 드라이버 없이도 기본적으로 작동합니다. 하지만 마우스에 추가 버튼이 있거나 키보드에 특수 기능키가 있다면, 그러한 확장 기능들은 작동하지 않습니다.
윈도우 사용자라면 드라이버가 누락되었을 때 장치 관리자(Device Manager)에서 드라이버 충돌 오류를 확인할 수 있습니다. 제조사는 보통 드라이버가 만들어내는 오류를 없애기 위해 드라이버 업데이트를 배포하므로, 항상 최신 버전의 드라이버를 유지하는 것이 좋습니다.
또한 드라이버는 해당 장치가 실제로 시스템에 설치되어 있을 때만 작동한다는 점도 중요합니다. 존재하지 않는 하드웨어용 드라이버를 설치하려 해도 설치되지 않습니다. 예를 들어 비디오 카드가 없는 시스템에 비디오 카드 드라이버를 설치한다고 해서 비디오 카드를 사용할 수 있는 능력이 생기지는 않습니다. 하드웨어 장치와 그에 맞는 최신 드라이버, 두 가지가 모두 갖춰져야 합니다.
장치 드라이버의 종류
오늘날 사용되는 거의 모든 하드웨어 장치에는 각각의 드라이버가 존재합니다. 이러한 드라이버는 크게 두 가지 범주로 분류할 수 있습니다. 바로 사용자 장치 드라이버와 커널 장치 드라이버입니다.
1. 사용자 장치 드라이버(User Device Driver)
사용자 장치 드라이버는 사용자가 시스템을 사용하는 동안 직접 실행시키는 드라이버입니다. 커널 소프트웨어와 관련된 장치를 제외한, 사용자가 시스템에 연결한 장치들이 여기에 해당합니다. 플러그 앤 플레이(plug and play) 장치용 드라이버가 대표적인 사용자 장치 드라이버로 분류됩니다.
시스템 리소스의 부담을 덜기 위해 사용자 장치 드라이버는 디스크에 기록됩니다. 다만 게임용 장치의 드라이버는 빠른 반응 속도를 위해 보통 메인 메모리에 유지됩니다.
2. 커널 장치 드라이버(Kernel Device Driver)
운영체제에 내장된 소프트웨어 형태로 제공되는 범용 드라이버를 커널 장치 드라이버라고 합니다. 이 드라이버들은 운영체제의 일부로서 메모리에 로드되며, 드라이버를 가리키는 포인터(pointer)가 메모리에 저장되어 필요할 때 언제든 호출됩니다. 프로세서, 메인보드, BIOS 등 커널 소프트웨어와 관련된 장치들이 커널 장치 드라이버의 대상입니다.
커널 장치 드라이버에는 공통적인 문제점이 하나 있습니다. 호출되면 RAM에 로드되는데, 이 메모리는 가상 메모리로 옮길 수 없습니다. 따라서 여러 장치 드라이버가 동시에 구동되면 시스템이 느려질 수 있습니다. 이를 해결하기 위해 각 운영체제는 최소 시스템 요구 사항을 정해 두고, 커널 장치 드라이버에 필요한 리소스를 미리 확보합니다. 덕분에 사용자는 메모리 요구량을 크게 신경 쓰지 않아도 됩니다.
그 외의 드라이버 분류
① 범용(Generic) 드라이버와 OEM 드라이버
운영체제와 함께 제공되는 드라이버를 범용 장치 드라이버라고 합니다. 범용 드라이버는 브랜드와 관계없이 특정 장치에 대해 작동합니다. 윈도우 10에는 자주 사용되는 하드웨어 장치들을 위한 범용 드라이버가 포함되어 있습니다.
반면 하드웨어 장치에 운영체제가 인식하지 못하는 고유 기능이 있는 경우가 있습니다. 이때 장치 제조업체가 해당 장치에 맞는 드라이버를 직접 제공하는데, 이를 OEM 장치 드라이버라고 합니다. 이런 장치가 제대로 작동하려면 운영체제 설치 후 드라이버를 별도로 설치해야 합니다. 윈도우 XP 시절에는 심지어 메인보드 드라이버조차 별도로 설치해야 했습니다. 오늘날 대부분의 최신 시스템은 내장형 범용 드라이버를 기본 제공합니다.
② 블록(Block) 드라이버와 문자(Character) 드라이버
장치 드라이버는 데이터를 읽고 쓰는 방식에 따라 블록 드라이버와 문자 드라이버로 나눌 수 있습니다. 하드 디스크, CD-ROM, USB 드라이브 같은 장치들이 용도에 따라 분류됩니다.
블록 드라이버는 한 번에 두 개 이상의 문자를 읽거나 쓸 때 사용되는 방식입니다. 블록(block)이라는 단위가 생성되고, 블록 장치는 블록 크기에 맞는 양의 정보를 가져오려고 시도합니다. 하드 디스크와 CD-ROM이 대표적인 블록 장치 드라이버입니다.
문자 드라이버는 데이터를 한 번에 한 문자씩 읽고 쓰는 방식입니다. 문자 장치 드라이버는 직렬 버스(serial bus)를 활용하며, 직렬 포트에 연결된 모든 장치는 문자 드라이버를 사용합니다. 예를 들어 마우스는 직렬 포트에 연결되는 장치이므로 문자 장치 드라이버를 사용합니다.
장치 드라이버 관리 방법
윈도우 시스템의 모든 드라이버는 장치 관리자를 통해 관리됩니다. 드라이버는 설치 후 크게 신경 쓸 필요가 없지만, 가끔 버그 수정이나 새로운 기능 추가를 위한 업데이트가 배포됩니다. 따라서 가끔씩 드라이버 업데이트를 확인하고 설치하는 것이 좋은 습관입니다. 이를 쉽게 해 주는 드라이버 검사·업데이트 프로그램들도 있습니다.
특히 기억해야 할 점은, 제조업체가 제공하는 드라이버 업데이트는 공식 웹사이트에서 항상 무료로 배포된다는 사실입니다. 장치 드라이버 업데이트에 돈을 지불하는 일이 없도록 주의하세요!
드라이버를 최신 상태로 유지하는 것이 중요한 이유는, 하드웨어 장치의 많은 문제가 사실 장치 드라이버의 문제에서 비롯되는 경우가 많기 때문입니다.
핵심 요약
- 장치 드라이버는 운영체제와 응용 프로그램이 시스템에 연결된 하드웨어와 통신할 수 있도록 돕는 통역사 역할의 소프트웨어다.
- 현대 운영체제는 자주 쓰이는 주변기기를 위한 내장 드라이버를 기본 제공한다.
- 그 외의 하드웨어를 사용하려면 제조사가 제공하는 해당 장치 드라이버를 설치해야 한다.
- 장치 드라이버를 최신 상태로 유지하는 것은 시스템의 안정적인 작동에 필수적이다.
- 별도의 외부 드라이버가 필요한 장치는 운영체제가 그 기능을 인식하지 못하는 장치뿐이다.