장치 드라이버 - 위키백과, 우리 모두의 백과사전 장치 드라이버 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 운영 체제 공통 기능 프로세스 관리 인터럽트 메모리 관리 파일 시스템 장치 드라이버 네트워킹 ( TCP / IP, UDP ) 보안 ( 프로세스 / 메모리 보호 ) 입출력 v. d. e. h 장치 드라이버 / 제어기 ( 문화어 : 장치구동기, 장치구동프로그람 ) 또는 디바이스 드라이버 ( 영어 : device driver ) 는 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램이다. 컴퓨터를 구성하는 다양한 입출력 장치마다 각각 장치드라이버가 프로그램 되어 커널에 통합되어 실행된다. 높은 수준의 컴퓨터 프로그램들이 컴퓨터 하드웨어 장치와 상호 작용하기 위해 만들어진 하나의 컴퓨터 프로그램이다. 장치드라이버는 커널의 일부분이기는 하나 커널과 통합되는 것은 처음부터 해당 드라이버 프로그램 코드소스가 커널 전체 소스에 포함되어 컴파일되는 경우도 있고, 그리고 별도로 컴파일된 파일 ( 윈도의 *. sys, 리눅스의 *. o ) 의 형태로 존재하고 부팅 시 또는 필요 시 해당 파일이 로드되어 커널과 통합되기도 한다. 드라이버는 흔히 컴퓨터 버스, 또는 하드웨어와 이어진 통신 하위 시스템을 통해 장치와 통신한다
##음토론기여계정 만들기로그인 이름공간 문서토론 변수 보기 읽기편집역사 보기 더 보기 검색 둘러보기 대문사용자 모임요즘 화제최근 문서 보기임의 문서로도움말기부 도구 여기를 가리키는 문서가리키는 글의 최근 올리기특수 문서 목록고유 링크문서 정보위키데이터 항목이 문서 인용하기 다른 프로젝트 공용 인쇄 / 내보내기 책 만들기PDF로 다운로드인쇄용 판 다른 언어 日 本 語 MelayuNederlandsNorsk / 中 文 語 링크 편집 이 문서는 2019년 3월 25일 ( 월 ) 13 : 10에 마지막으로 편집되었습니다. 모든 문서는 크리에이티브 커먼즈 저작자표시 - 동일조건변경허락 3. 0에 따라 사용할 수 있으며, 추가적인 조건이 적용될 수 있습니다. 자세한 내용은 이용 약관을 참고하십시오. 미국 및 다른 국가에 등록되어 있는 Wikimedia Foundation, Inc. 소유의 등록 상표입니다. 개인정보 정책 위키백과 소개 면책 조항 개발자 쿠키 정책 모바일 보기
##을 추가할 것을 요청한다. 거꾸로, 하드웨어 장치가 운영 체제에 응답해야 할 때, 논리 계층을 사용하여 연역 레이어에 응답한다. 리눅스 장치 드라이버는 운영 체제 커널 안에 만들어진다. 그러므로 적절한 비트 대역폭을 위해 자동으로 만들어진다. 충분한 기술적인 하드웨어 정보를 사용할 수 있으면, 리눅스 커널 팀은 아무런 대가 없이 이를 쓸 것이다. 이로써 하드웨어 제공 업체와 최종 사용자 둘 다 드라이버에 대해 걱정하지 않게 도와 준다. 게다가, 장치 드라이버는 커널의 일부로 만들어지거나, 불러 올 수 있는 모듈로 따로 만들어질 수 있다. 마이크로소프트 윈도의. sys 파일과 리눅스의. ko 모듈은 불러올 수 있는 장치 드라이버이다. 불러올 수 있는 장치 드라이버의 이점은 필요할 때만 불러오고, 뒤에는 사용하지 않을 수도 있으므로 커널 메모리를 아낄 수 있다는 것이다. 개발 [ 편집 ] 장치 드라이버를 기록하려면 하드웨어와, 주어진 플랫폼 기능의 소프트웨어를 깊이 있게 이해해야 한다. 장치들은 "... 높은 권한을 가진 환경에서 작동하며 잘못 사용되면 심각한 문제를 일으킬 수 있다... " [ 1 ] 반대로, 현대의 운영 체제들 위에서 돌아가는 사용자 수준의 대부분의 소프트웨어는 시스템에 큰 영향을 미치지 않고 사용이 중지될
##되어 커널과 통합되기도 한다. 드라이버는 흔히 컴퓨터 버스, 또는 하드웨어와 이어진 통신 하위 시스템을 통해 장치와 통신한다. 요청하는 프로그램이 드라이버의 명령어를 호출하면, 드라이버는 장치에 명령어를 전달한다. 장치가 드라이버에게 데이터를 되돌려 주면, 드라이버는 원래 요청한 프로그램의 명령어로 데이터를 다시 전달한다. 드라이버는 하드웨어에 의존하며 특정한 운영 체제를 따른다. 이러한 드라이버는 비동기 시간에 의존하는 하드웨어 인터페이스에 필요한 인터럽트를 다룰 수 있다. 장치 드라이버는 흔히 장치 칩의 레지스터에 접근하여 하드웨어를 제어하며 하드웨어와 주변 기기를 사용하는 프로그램의 중간 다리 역할을 한다. MS - DOS의 경우 하드웨어를 제어하기 위한 x86 기계어 명령어 IN, OUT은 응용 프로그램에서 직접 사용할 수 있다. 그러나 본격적인 운영체제가 도입된 경우 ( 윈도 NT 계열, 유닉스 계열 등 ), 커널과 응용 프로그램이 분리되어 설계되고 실행된다. 장치 드라이버는 커널의 일부분으로 응용 프로그램에서는 완전히 분리된 자원과 실행 방식을 가진다. 커널은 부팅 시에 시작되어 컴퓨터 종료시 커널이 끝난다. 장치 드라이버는 하드웨어와 밀접하게 연관되고 해당 장치를 제어하는 프로그램이다. 커널 공간에서 이루어지는 작업으로는 입출력, 네트워크 등의
밀접하게 연관되고 해당 장치를 제어하는 프로그램이다. 커널 공간에서 이루어지는 작업으로는 입출력, 네트워크 등의 하드웨어 제어, 메모리와 같은 컴퓨터의 리소스 관리, 응용 프로그램의 실행 제어 등이 있다. 커널과는 달리 응용 프로그램은 사용자 요청에 의해 저장장치로부터 메모리에 로드되어 실행한다. 응용 프로그램이 하드웨어를 직접 제어할 수는 없기 때문에, 커널의 장치 드라이버를 사용하기 위해 시스템 호출 방법으로 커널에 접근하여 자료를 처리한다. 전자 제품에서 각각의 주변 기기들을 제어하기 위해 설계된 펌웨어 또한 장치 드라이버로 분류된다. 장치 드라이버의 실제 예는 소스가 공개된 리눅스 커널 소스에서 / driver 디렉터리 밑에 있는 파일들을 참조하여 볼 수 있다. 목차 1 목적 2 설계 3 개발 4 장치 드라이버 응용 프로그램 5 오픈 드라이버 6 API와의 관계 7 가상 장치 드라이버 8 같이 보기 9 외부 링크 목적 [ 편집 ] 장치 드라이버는 장치와 응용 프로그램 · 운영 체제 사이의 해석기 역할을 하며 프로그래밍을 단순하게 한다. 높은 수준의 코드는 코드가 제어하는 하드웨어 장치를 독립적으로 제어할 수 있다. 프린터와 같은 장치는 버전에 따라 고유의 특별한 명령어들을 요구한다. 반면, 파일을 프린터로 보내는 것과 같은, 대부분의 응용 프로그램들은
카드 다양한 종류의 로컬 버스 - 특히 현대 시스템의 버스 마스터링 다양한 종류의 낮은 대역을 가진 입출력 버스 - 마우스, 컴퓨터 키보드, USB와 같은 포인팅 장치 하드 디스크, CD - ROM, 플로피 디스크, 플로피 디스크 버스 ( ATA, SATA, SCSI ) 와 같은 컴퓨터 저장 장치 다른 파일 시스템 지원 추가 스캐너와 디지털 카메라 지원 추가 장치 드라이버를 일반적으로 가져오는 수준으로는 하드웨어에서 : 직접 상호 작용 높은 수준의 인터페이스를 사용 ( 예 : 비디오 바이오스 ) 또다른, 낮은 수준의 장치 드라이버 사용 ( 예 : 디스크 드라이버를 사용하는 파일 시스템 드라이버 ) 완전한 다른 무언가를 하는 동안 하드웨어와의 작업을 시뮬레이트 소프트웨어에서 : 운영 체제가 하드웨어 자원에 직접 접근 원시 컴퓨터만 추가 드라이버가 아닌 소프트웨어를 위한 인터페이스 추가 ( 예 : 트웨인 ) 가끔씩 매우 높은 수준의 언어 추가 ( 예 : 포스트스크립트 ) 주어진 하드웨어에 올바른 장치 드라이버를 선택하고 설치하는 것이 컴퓨터 시스템 구성에서 중요하다. 오픈 드라이버 [ 편집 ] 프린터 : CUPS. 스캐너 : SANE. 비디오 : Vidix API와의 관계 [ 편집 ] 드라이버는 운영 체제의 일부이다. 사용자의 프로세스의 자격인 API 호출로 비롯하여, 드라이버의 코드를 불러 오지만, 드라이버의 코드 자체는, 사용자 프로세스가 아닌 커널 코드의 일부
따라 고유의 특별한 명령어들을 요구한다. 반면, 파일을 프린터로 보내는 것과 같은, 대부분의 응용 프로그램들은 PRINTLN과 같은 높은 수준의 포괄적인 명령어들을 사용하여 장치를 접근한다. 드라이버는 이러한 포괄적인 명령어들을 받아들이고, 이 명령어들을 장치가 요구하는 낮은 수준의 명령어들로 변환한다. 설계 [ 편집 ] 장치 드라이버는 논리 계층과 물리 계층으로 나뉜다. 논리 계층은 이더넷 포트 또는 디스크 드라이브와 같은 장치의 클래스를 위한 데이터를 처리한다. 물리 계층은 특정한 장치 인스턴스와 통신한다. 예를 들어, 직렬 포트는 모든 시리얼 포트 하드웨어에 일반적으로 쓰이는 XON / XOFF와 같은 표준적인 통신 프로토콜을 다루는데, 직렬 포트 논리 계층이 이것을 관리한다. 논리 계층은 특별한 직렬 포트의 칩과 통신해야 한다. 16550 UART 하드웨어는 PL - 011과 다르다. 물리 계층은 이러한 칩의 특정한 차이를 번지로 매긴다. 그 동안 해 온 것 같이, 운영 체제의 요청은 먼저 논리 계층으로 이동한다. 차례대로, 논리 계층은 물리 계층 위에서 하드웨어가 이해할 만한 용어로 운영 체제의 요청을 추가할 것을 요청한다. 거꾸로, 하드웨어 장치가 운영 체제에 응답해야 할 때, 논리 계층을 사용하여 연역 레이어에
제어 블록 인터럽트 스레드 문맥 교환 스케줄링 CPU 모드 보호 모드 수퍼바이저 모드 스케줄링 알고리즘 공동 다중작업 / 시분할 선점 라운드 로빈 고전 우선순위 스케줄링 멀티레벨 피드백 큐 최단 작업 우선 메모리 관리 메모리 보호 메모리 세그먼트 페이징 세그멘테이션 오류 일반 보호 실패 버스 오류 예 아미가OS BeOS BSD 도스 GNU 리눅스 크롬 OS 맥 OS 모르프OS OS / 2 ReactOS 솔라리스 유닉스 윈도우 더 보기 기타 개념 부트 로더 라이브 CD 라이브 USB PXE API 가상 파일 시스템 가상 테이프 라이브러리 CLI TUI GUI VUI HAL 전거 통제 LCCN : sh93009551 GND : 4185971 - 6 BNF : cb12492202q ( 데이터 ) NDL : 01108739 BNE : XX546589 원본 주소 " " 분류 : 장치 드라이버운영 체제 기술윈도우 NT 커널숨은 분류 : 문화어 표기를 포함한 문서영어 표기를 포함한 문서LCCN 식별자를 포함한 위키백과 문서GND 식별자를 포함한 위키백과 문서BNF 식별자를 포함한 위키백과 문서 둘러보기 메뉴 개인 도구 로그인하지 않음토론기여계정 만들기로그인 이름공간 문서토론 변수 보기 읽기편집역사 보기 더 보기
편집 ] 특별한 장치 드라이버로 가상 장치 드라이버가 있다. 마이크로소프트 윈도가 설치된 컴퓨터에서 MS - DOS 프로그램을 돌린다든지, Xen 호스트와 같은 게스트 운영 체제를 실행하는 것과 같은, 가상화 환경에서 쓰인다. 하드웨어와 대화하기 위해 게스트 운영 체제를 사용하는 대신, 가상 장치 드라이버를 사용하여 하드웨어의 일부를 가상으로 구현 ( emulate ) 한다. 이리하여 가상 머신 안에서 돌아가는 게스트 운영 체제와 시스템 드라이버들은 실제 하드웨어를 받아들인 것 같은 착각을 일으킨다. 게스트 운영 체제가 하드웨어를 받아들이는 시도들은 기능 요청들을 위해 호스트 운영 체제의 가상 장치 드라이버로 전향된다. 가상 장치 드라이버는 가상 머신으로의 인터럽트와 같은, 시뮬레이트된, 프로세서 수준의 이벤트들을 보낼 수 있다. 같이 보기 [ 편집 ] 인스톨레이션 ( 셋업 ) 펌웨어 오픈 하드웨어 레지스터 시스템 호출 외부 링크 [ 편집 ] 마이크로소프트 윈도 하드웨어 개발자 중심 vdeh운영 체제일반 역사 연표 목록 점유율 비교 개발 커널일반 구조 모놀리식 커널 마이크로커널 하부 구조 엑소커널 나노커널 하이브리드 구성 요소 사용자 / 커널 공간 서버 적재 가능 커널 모듈 장치 드라이버 프로세스 관리개념 프로세스 프로세스 제어 블록 인터럽트 스레드 문맥 교환 스케줄링 CPU 모드 보호 모드 수퍼바이저 모드 스케줄링 알고리즘 공동 다중작업 / 시분
, 현대의 운영 체제들 위에서 돌아가는 사용자 수준의 대부분의 소프트웨어는 시스템에 큰 영향을 미치지 않고 사용이 중지될 수 있다. 사용자 모드로 실행하는 드라이버들도, 장치가 잘못 프로그래밍되어 있을 경우, 시스템과 충돌할 수 있다. 이러한 요인들은 문제를 진단 하는 데에 가장 어렵고 위험하게 만든다. 그러므로 장치 드라이버는 하드웨어를 개발하는 회사에 다니는 소프트웨어 엔지니어들이 작성한다. 그 까닭은, 그들이 하드웨어를 설계하지 않는 대부분의 사람들보다 더 알맞은 정보를 가지고 있기 때문이다. 게다가, 전통적으로 하드웨어 제조업체에서 제공업체들의 관심이 " 그들의 손님이 그들의 하드웨어를 최적으로 사용한다 " 에 맞춰져 있다. 보통, 논리 장치 드라이버 ( LDD ) 는 운영 체제 판매자가 작성하는 반면, 물리 장치 드라이버 ( PDD ) 는 장치 제공 업체가 추가한다. 그러나 최근 장치 드라이버를 제공하지 않는 업체들은 자유 운영 체제를 위한 수많은 장치 드라이버를 사용해 왔다. 이 때, 하드웨어 제공업체는 장치 통신 정보를 제공하는 것이 중요하다. 리버스 엔지니어링을 통해 이러한 정보를 알 수 있지만, 소프트웨어 보다 하드웨어 쪽에선 훨씬 배우기가 어렵다. 마이크로소프트는 제대로 쓰이지 않는 장치 드라이버에서 비롯되는 시스템의 불안을 줄이고
장치 드라이버/제어기(문화어: 장치구동기, 장치구동프로그람) 또는 디바이스 드라이버(영어: device driver)는 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램이다. 컴퓨터를 구성하는 다양한 입출력 장치마다 각각 장치드라이버가 프로그램 되어 커널에 통합되어 실행된다. 높은 수준의 컴퓨터 프로그램들이 컴퓨터 하드웨어 장치와 상호 작용하기 위해 만들어진 하나의 컴퓨터 프로그램이다. 장치드라이버는 커널의 일부분이기는 하나 커널과 통합되는 것은 처음부터 해당 드라이버 프로그램 코드소스가 커널 전체 소스에 포함되어 컴파일되는 경우도 있고, 그리고 별도로 컴파일된 파일(윈도의 *.sys, 리눅스의 *.o)의 형태로 존재하고 부팅 시 또는 필요 시 해당 파일이 로드되어 커널과 통합되기도 한다. 드라이버는 흔히 컴퓨터 버스, 또는 하드웨어와 이어진 통신 하위 시스템을 통해 장치와 통신한다. 요청하는 프로그램이 드라이버의 명령어를 호출하면, 드라이버는 장치에 명령어를 전달한다. 장치가 드라이버에게 데이터를 되돌려 주면, 드라이버는 원래 요청한 프로그램의 명령어로 데이터를 다시 전달한다. 드라이버는 하드웨어에 의존하며 특정한 운영 체제를 따른다. 이러한 드라이버는 비동기 시간에 의존하는 하드웨어 인터페이스에 필요한 인터럽트를 다룰 수 있다.장치 드라이버는 흔히 장치 칩의 레지스터에 접근하여 하드웨어를 제어하며 하드웨어와 주변 기기를 사용하는 프로그램의 중간 다리 역할을 한다. MS-DOS의 경우 하드웨어를 제어하기 위한 x86 기계어 명령어 IN,OUT은 응용 프로그램에서 직접 사용할 수 있다. 그러나 본격적인 운영체제가 도입된 경우 (윈도 NT 계열, 유닉스 계열 등), 커널과 응용 프로그램이 분리되어 설계되고 실행된다. 장치 드라이버는 커널의 일부분으로 응용 프로그램에서는 완전히 분리된 자원과 실행 방식을 가진다. 커널은 부팅 시에 시작되어 컴퓨터 종료시 커널이 끝난다. 장치 드라이버는 하드웨어와 밀접하게 연관되고 해당 장치를 제어하는 프로그램이다. 커널 공간에서 이루어지는 작업으로는 입출력, 네트워크 등의 하드웨어 제어, 메모리와 같은 컴퓨터의 리소스 관리, 응용 프로그램의 실행 제어 등이 있다. 커널과는 달리 응용 프로그램은 사용자 요청에 의해 저장장치로부터 메모리에 로드되어 실행한다. 응용 프로그램이 하드웨어를 직접 제어할 수는 없기 때문에, 커널의 장치 드라이버를 사용하기 위해 시스템 호출 방법으로 커널에 접근하여 자료를 처리한다. 전자 제품에서 각각의 주변 기기들을 제어하기 위해 설계된 펌웨어 또한 장치 드라이버로 분류된다. 장치 드라이버의 실제 예는 소스가 공개된 리눅스 커널 소스에서 /driver 디렉터리 밑에 있는 파일들을 참조하여 볼 수 있다.