플러그 및 플레이 장치 지원에 대한 일반 정보
BIOS가 하드 드라이브, 비디오 카드 및 키보드를 식별 한 후 부팅을 시작할 준비가되었습니다 (운영 체제를 하드 디스크에서 메모리에로드). BIOS에 PNP 운영 체제 (PNP OS)가 있다고 말한 경우 위와 같이 PC를 부팅하기 시작하고 운영 체제가 PNP 구성을 완료하도록해야합니다. 그렇지 않으면 PNP-BIOS (부팅 전)는 장치의 나머지 PNP 구성을 수행하려고 시도 할 수 있습니다 (그러나 장치 드라이버에게 한 일을 알리지 않음). 그러나 드라이버는 Linux 커널에서 사용 가능한 기능을 사용하여 여전히 찾을 수 있습니다.
플러그 앤 플레이 장치에는 드라이버가 필요합니다?
이 섹션을 이해하지 못하면 다음 섹션을 읽고 하드웨어 장치 및 커뮤니케이션을 읽으십시오
지나치게 단순화 된 플러그 앤 플레이는 모뎀, 네트워크 카드, 사운드 카드 등과 같은 다양한 하드웨어 (장치)를 찾을 수있는 소프트웨어 (장치 드라이버)에 알려줍니다. 플러그 앤 플레이의 작업은 물리적 장치를 소프트웨어 (장치 드라이버)와 일치시키는 것입니다. 이를 달성하기 위해 PNP는 하드웨어에서 다음과 같은 “버스 자원”을 할당하고 설정합니다. I/O 주소, 메모리 지역, IRQ, DMA 채널 (LPC 및 ISA 버스 만 해당). 이 4 가지는 때때로 “1 차 리소스”또는 “리소스”라고 불립니다. PNP는 수행 한 작업에 대한 기록을 유지하고 장치 드라이버 가이 정보를 얻을 수 있도록합니다. 이 4 개의 버스 자원이 무엇인지 이해하지 못하면이 Howto의 다음 하위 섹션을 읽으십시오. I/O 주소, IRQ, DMA 채널, 메모리 영역. 이 버스 자원 중 3 개에 관한 Linux Gazette의 기사는 IRQ, DMA 및 기본 주소에 대한 소개입니다. 이러한 버스 자원이 할당되면 (그리고 올바른 드라이버가 설치된 경우) /dev 디렉토리의 실제 드라이버와 “파일”이 사용할 준비가되었습니다.
이 버스 자원의 PNP 할당은 때때로 “구성”이라고 불리지만 단지 낮은 수준의 구성 일뿐입니다. /etc 디렉토리에는 많은 구성 파일이 있지만 대부분은 PNP 구성을위한 것이 아닙니다. 따라서 하드웨어 장치의 대부분의 구성은 PNP 또는 버스 자원과 관련이 없습니다. 예를 들어 “Init String”에 의해 모뎀의 초기화 또는 속도를 설정하는 것은 PNP가 아닙니다. 따라서 PNP에 대해 이야기 할 때 “구성”은 특정 유형의 구성만을 의미합니다. MS Windows와 같은 다른 문서화는 단순히 버스 자료 “자원”을 호출하지만 때로는 “자원”대신 “버스 자원”이라는 용어를 사용하여 다른 종류의 리소스와 구별하기 위해 “자원”이라는 용어를 사용합니다.
PNP는 다양한 소프트웨어 및 하드웨어에서 수행하는 프로세스입니다. Linux에서 PNP를 처리 한 프로그램이 하나만 있으면 간단합니다. 그러나 Linux를 사용하면 각 장치 드라이버는 커널에서 제공하는 소프트웨어를 사용하여 자체 PNP를 수행합니다. PC의 BIOS 하드웨어는 PC에 처음 전원을 공급할 때 PNP를 수행합니다. 그리고 이것보다 더 많은 것이 있습니다.
컴퓨터는 컴퓨팅 및 RAM 메모리를 수행하여 프로그램 및 데이터를 저장하기 위해 CPU/프로세서로 구성됩니다 (빠른 액세스). 또한 다양한 종류의 디스크 드라이브, 비디오 카드, 키보드, 네트워크 장치, 모뎀 카드, 사운드 장치, USB 버스, 직렬 및 병렬 포트 등과 같은 여러 장치가 있습니다. 옛날에는 대부분의 장치가 PC의 슬롯에 삽입 된 카드에있었습니다. 오늘날, 이전 카드였던 많은 장치는 이제 마더 보드의 칩에 포함되어 있기 때문에 현재 보드에 있습니다. 전기 에너지를 제공하기위한 전원 공급 장치, 마더 보드에 다양한 버스를 제공하여 장치를 CPU에 연결 하고이 모든 것을.
마더 보드에 연결하는 카드에는 두 개 이상의 장치가 포함될 수 있습니다. 메모리 칩은 때때로 장치로 간주되지만이 Howto에 사용 된 의미에서는 플러그 앤 플레이가 아닙니다.
컴퓨터 시스템이 제대로 작동하려면 각 장치는 “장치 드라이버”의 제어하에 있어야합니다. 이것은 운영 체제 (아마도 모듈로로드 된)의 일부인 소프트웨어이며 CPU에서 실행됩니다. 장치 드라이버는 /Dev 디렉토리의 “특수 파일”과 관련이 있지만 실제로 파일은 아니지만. HDA3 (하드 드라이브 A의 제 3 차 파티션), TTYS1 (두 번째 직렬 포트), ETH0 (첫 번째 이더넷 카드) 등과 같은 이름이 있습니다.
ETH0 장치는 이더넷 카드 (NIC 카드)입니다. 이전에는 /dev /eth0 이었지만 이제는 커널의 가상 장치 일뿐입니다. ETH0이 참조하는 것은 귀하가 가진 이더넷 카드의 유형에 따라 다릅니다. 드라이버가 모듈 인 경우이 할당은 내부 커널 테이블에있을 가능성이 있지만 /etc /modules에서 찾을 수 있습니다.conf ( “별명”이라고 함). 예를 들어, “툴립”칩을 사용하는 이더넷 카드가있는 경우 “alias eth0 튤립”을 /etc /모듈에 넣을 수 있습니다.컴퓨터가 ETH0을 요청하면 튤립 드라이버를 찾습니다. 그러나 최신 커널은 일반적으로 올바른 드라이버 모듈을 찾을 수 있으므로 직접 지정할 필요가 거의 없습니다.
장치를 제어하기 위해 CPU (장치 드라이버 제어 하에서)는 명령 및 데이터를 보내고 다양한 장치의 상태 및 데이터를 읽습니다. 이렇게하려면 각 장치 드라이버는 제어하는 장치의 주소를 알아야합니다. 물리적 “채널”이 실제로 다른 많은 장치와 공유되는 PC 내부의 데이터 버스이지만 이러한 주소를 아는 것은 통신 채널을 설정하는 것과 같습니다.
이 통신 채널은 실제로 위에서 설명한 것보다 조금 더 복잡합니다. “주소”는 실제로 다양한 주소이므로 때로는 “범위”라는 단어가 “주소”대신 사용됩니다. 단일 장치의 경우 하나 이상의 범위 (중첩 없음)가있을 수 있습니다. 또한 장치 드라이버에 장치가 긴급한 “도움말”요청을 보낼 수있는 채널 (인터럽트라고도 함)의 역 부분이 있습니다.
PCI 버스에는 I/O, 메인 메모리 (IO 메모리) 및 구성의 3 개의 주소 공간이 있습니다.
플러그 및 플레이 장치 지원에 대한 일반 정보
BIOS가 하드 드라이브, 비디오 카드 및 키보드를 식별 한 후 부팅을 시작할 준비가되었습니다 (운영 체제를 하드 디스크에서 메모리에로드). BIOS에 PNP 운영 체제 (PNP OS)가 있다고 말한 경우 위와 같이 PC를 부팅하기 시작하고 운영 체제가 PNP 구성을 완료하도록해야합니다. 그렇지 않으면 PNP-BIOS (부팅 전)는 장치의 나머지 PNP 구성을 수행하려고 시도 할 수 있습니다 (그러나 장치 드라이버에게 한 일을 알리지 않음). 그러나 드라이버는 Linux 커널에서 사용 가능한 기능을 사용하여 여전히 찾을 수 있습니다.
플러그 앤 플레이 장치에는 드라이버가 필요합니다?
이 섹션을 이해하지 못하면 다음 섹션을 읽고 하드웨어 장치 및 커뮤니케이션을 읽으십시오
지나치게 단순화 된 플러그 앤 플레이는 모뎀, 네트워크 카드, 사운드 카드 등과 같은 다양한 하드웨어 (장치)를 찾을 수있는 소프트웨어 (장치 드라이버)에 알려줍니다. 플러그 앤 플레이의 작업은 물리적 장치를 소프트웨어 (장치 드라이버)와 일치시키는 것입니다. 이를 달성하기 위해 PNP는 하드웨어에서 다음과 같은 “버스 자원”을 할당하고 설정합니다. I/O 주소, 메모리 지역, IRQ, DMA 채널 (LPC 및 ISA 버스 만 해당). 이 4 가지는 때때로 “1 차 리소스”또는 “리소스”라고 불립니다. PNP는 수행 한 작업에 대한 기록을 유지하고 장치 드라이버 가이 정보를 얻을 수 있도록합니다. 이 4 개의 버스 자원이 무엇인지 이해하지 못하면이 Howto의 다음 하위 섹션을 읽으십시오. I/O 주소, IRQ, DMA 채널, 메모리 영역. 이 버스 자원 중 3 개에 관한 Linux Gazette의 기사는 IRQ, DMA 및 기본 주소에 대한 소개입니다. 이러한 버스 자원이 할당되면 (그리고 올바른 드라이버가 설치된 경우) /dev 디렉토리의 실제 드라이버와 “파일”이 사용할 준비가되었습니다.
이 버스 자원의 PNP 할당은 때때로 “구성”이라고 불리지만 단지 낮은 수준의 구성 일뿐입니다. /etc 디렉토리에는 많은 구성 파일이 있지만 대부분은 PNP 구성을위한 것이 아닙니다. 따라서 하드웨어 장치의 대부분의 구성은 PNP 또는 버스 자원과 관련이 없습니다. 예를 들어 “Init String”에 의해 모뎀의 초기화 또는 속도를 설정하는 것은 PNP가 아닙니다. 따라서 PNP에 대해 이야기 할 때 “구성”은 특정 유형의 구성만을 의미합니다. MS Windows와 같은 다른 문서화는 단순히 버스 자료 “자원”을 호출하지만 때로는 “자원”대신 “버스 자원”이라는 용어를 사용하여 다른 종류의 리소스와 구별하기 위해 “자원”이라는 용어를 사용합니다.
PNP는 다양한 소프트웨어 및 하드웨어에서 수행하는 프로세스입니다. Linux에서 PNP를 처리 한 프로그램이 하나만 있으면 간단합니다. 그러나 Linux를 사용하면 각 장치 드라이버는 커널에서 제공하는 소프트웨어를 사용하여 자체 PNP를 수행합니다. PC의 BIOS 하드웨어는 PC에 처음 전원을 공급할 때 PNP를 수행합니다. 그리고 이것보다 더 많은 것이 있습니다.
컴퓨터는 컴퓨팅 및 RAM 메모리를 수행하여 프로그램 및 데이터를 저장하기 위해 CPU/프로세서로 구성됩니다 (빠른 액세스). 또한 다양한 종류의 디스크 드라이브, 비디오 카드, 키보드, 네트워크 장치, 모뎀 카드, 사운드 장치, USB 버스, 직렬 및 병렬 포트 등과 같은 여러 장치가 있습니다. 옛날에는 대부분의 장치가 PC의 슬롯에 삽입 된 카드에있었습니다. 오늘날, 이전 카드였던 많은 장치는 현재 마더 보드의 칩에 포함되어 있기 때문에 현재 보드에 있습니다. 전기 에너지를 제공하기위한 전원 공급 장치, 마더 보드에 다양한 버스를 제공하여 장치를 CPU에 연결 하고이 모든 것을.
마더 보드에 연결하는 카드에는 두 개 이상의 장치가 포함될 수 있습니다. 메모리 칩은 때때로 장치로 간주되지만이 Howto에 사용 된 의미에서는 플러그 앤 플레이가 아닙니다.
컴퓨터 시스템이 제대로 작동하려면 각 장치는 “장치 드라이버”의 제어하에 있어야합니다. 이것은 운영 체제 (아마도 모듈로로드 된)의 일부인 소프트웨어이며 CPU에서 실행됩니다. 장치 드라이버는 /Dev 디렉토리의 “특수 파일”과 관련이 있지만 실제로 파일은 아니지만. HDA3 (하드 드라이브 A의 제 3 차 파티션), TTYS1 (두 번째 직렬 포트), ETH0 (첫 번째 이더넷 카드) 등과 같은 이름이 있습니다.
ETH0 장치는 이더넷 카드 (NIC 카드)입니다. 이전에는 /dev /eth0 이었지만 이제는 커널의 가상 장치 일뿐입니다. ETH0이 참조하는 것은 귀하가 가진 이더넷 카드의 유형에 따라 다릅니다. 드라이버가 모듈 인 경우이 할당은 내부 커널 테이블에있을 가능성이 있지만 /etc /modules에서 찾을 수 있습니다.conf ( “별명”이라고 함). 예를 들어, “툴립”칩을 사용하는 이더넷 카드가있는 경우 “alias eth0 튤립”을 /etc /모듈에 넣을 수 있습니다.컴퓨터가 ETH0을 요청하면 튤립 드라이버를 찾습니다. 그러나 최신 커널은 일반적으로 올바른 드라이버 모듈을 찾을 수 있으므로 직접 지정할 필요가 거의 없습니다.
장치를 제어하기 위해 CPU (장치 드라이버 제어 하에서)는 명령 및 데이터를 보내고 다양한 장치의 상태 및 데이터를 읽습니다. 이 작업을 수행하려면 각 장치 드라이버는 제어하는 장치의 주소를 알아야합니다. 물리적 “채널”이 실제로 다른 많은 장치와 공유되는 PC 내부의 데이터 버스이지만 이러한 주소를 아는 것은 통신 채널을 설정하는 것과 같습니다.
이 통신 채널은 실제로 위에서 설명한 것보다 조금 더 복잡합니다. “주소”는 실제로 “주소”대신 “범위”라는 단어가 때때로 “범위”라는 단어의 범위입니다. 단일 장치에 대해 하나의 범위 (중첩 없음)가있을 수도 있습니다. 또한 장치 드라이버에 장치가 긴급한 “도움말”요청을 보낼 수있는 채널 (인터럽트라고도 함)의 역 부분이 있습니다.
PCI 버스에는 I/O, 메인 메모리 (IO 메모리) 및 구성의 3 개의 주소 공간이 있습니다. 오래된 ISA 버스에는 진정한 “구성”주소 공간이 없습니다. 장치 IO에는 I/0 및 IO 메모리 공간 만 사용됩니다. 구성 주소는 고정되어 변경할 수 없으므로 할당 할 필요가 없습니다. 자세한 내용은 PCI 구성 주소 공간을 참조하십시오
CPU가 장치에 액세스하려면 장치의 주소를 컴퓨터의 주요 버스에 넣습니다 (PCI : 주소/데이터 버스). 모든 유형의 주소 (예 : I/O 및 메인 메모리 모두) PC 내부에서 동일한 버스를 공유합니다. 그러나 PC 버스의 특정 전용 와이어에서 전압의 유무가 있으면 주소가 어떤 “공간”에 있는지, I/O, 메인 메모리 (메모리 범위 참조) 또는 구성 (PCI 만 해당). PCI 장치에 구성 공간 액세스가 위에서 설명한 것보다 실제로 더 복잡하다는 것을 알리기 때문에 약간 지나치게 단순화되었습니다. 자세한 내용은 PCI 구성 주소 공간을 참조하십시오. 일반적으로 주소 지정에 대한 자세한 내용은 주소 세부 정보를 참조하십시오.
장치의 주소는 물리적 장치의 레지스터에 저장됩니다. 소프트웨어에 의해 변경 될 수 있으며 장치에 주소가 전혀 없도록 비활성화 할 수 있습니다. PCI 구성 주소를 변경하거나 비활성화 할 수없는 경우를 제외하고.
장치는 원래 I/O 주소 공간에 위치했지만 오늘날 메인 메모리에서 공간을 사용할 수 있습니다. I/0 주소는 때때로 “I/O”, “IO”, “I/O”또는 “IO”라고 불립니다. “I/O 포트”또는 “I/O 범위”라는 용어도 사용됩니다. 이 IO 포트를 메인 메모리에 위치한 “IO 메모리”와 혼동하지 마십시오. I/O 주소를 할당하는 두 가지 주요 단계 (또는 ISA 버스의 인터럽트와 같은 다른 버스 자원)가 있습니다
- I/O 주소 등을 설정하십시오. 하드웨어 (레지스터 중 하나)에서
- 장치 드라이버 가이 I/O 주소 등을 알려주십시오. ~이다
종종 장치 드라이버는이 두 가지를 모두 수행합니다. 장치 드라이버는 주소가 이전에 설정되었고 (아마도 BIOS에 의해) 해당 주소를 기꺼이 수락 할 경우 I/O 주소를 실제로 설정할 필요가 없습니다. 운전자가 주소 자체를 이전에 설정했거나 주소 자체를 설정 한 주소를 알게되면 주소가 무엇인지 분명히 알고 있으므로 운전자에게 주소를 알릴 필요가 없습니다. 이미 알고 있습니다.
위의 2 단계 프로세스 (1. 하드웨어에 주소를 설정하십시오. 2. 운전자에게 알리십시오.)은 거리에서 누군가의 집 번호를 찾는 두 부분과 같은 것입니다. 누군가가 집 앞에 숫자를 설치하여 찾을 수 있도록이 주소로 가고 싶은 사람들은 집을 찾을 수 있도록이 집 번호를 얻고 기록해야합니다. 컴퓨터의 경우 장치 하드웨어는 먼저 주소를 하드웨어에 특별 레지스터에 넣어야합니다 (주택 번호를 올리십시오). 그런 다음 장치 드라이버는이 주소를 얻어야합니다 (주소록에 집 번호를 작성하십시오). 이 두 가지 모두 소프트웨어 또는 구성 파일에 수동으로 데이터를 입력하여 자동으로 수행해야합니다. 그들 중 한 명만이 제대로 처리되면 문제가 발생할 수 있습니다.
수동 PNP 구성의 경우 어떤 사람들은이 두 단계 중 하나만 수행하는 실수를 한 다음 컴퓨터가 왜 장치를 찾을 수 없는지 궁금해합니다. 예를 들어, “SetSerial”을 사용하여 주소를 직렬 포트에 할당 할 수 있습니다. 직렬 포트 하드웨어 자체에 주소를 설정하지 않습니다. 운전자에게 잘못되었다고 말하면 곤경에 처해 있습니다. 드라이버를 알리는 또 다른 방법은 주소를 커널 모듈 (장치 드라이버) 옵션으로 제공하는 것입니다. 당신이 말하는 것이 잘못되면 문제가있을 수 있습니다. 스마트 드라이버는 하드웨어가 실제로 설정되는 방법을 감지하고 옵션에서 제공하는 잘못된 정보를 거부 할 수 있습니다 (또는 적어도 오류 메시지를 발행).
명백한 요구 사항은 장치 드라이버가 주소를 사용하기 전에 먼저 실제 장치 (예 : 카드)에서 설정해야합니다. 컴퓨터를 시작한 직후 장치 드라이버가 종종 시작되기 때문에 때때로 카드에 액세스하려고합니다 (거기에 있는지 확인하십시오.) 주소가 PNP 구성 프로그램에 의해 카드에 설정되기 전에. 그런 다음 카드가 있지만 카드를 찾을 수 없다는 오류 메시지가 표시됩니다 (아직 주소가 아직 없음).
I/O 주소와 관련하여 마지막 몇 단락에서 말한 내용은 대부분의 다른 버스 자원에 동일한 힘으로 적용됩니다. 메모리 범위, IRQS- 오버 뷰 및 DMA 채널. 이것들은 다음 3 섹션에서 설명 될 것입니다. 예외는 PCI 버스의 인터럽트가 카드 레지스터에 의해 설정되지 않고 대신 마더 보드의 칩으로 IRQ로 라우팅 (매핑)됩니다. 그런 다음 IRQ A PCI 카드를 라우팅하는 것은 정보 목적으로 만 카드의 등록부에 기록됩니다.
PC에서 사용되는 IO 주소를 보려면 /proc /ioports 파일을보십시오.
많은 장치에 주 메모리에 주소 공간이 할당됩니다. 때때로 “공유 메모리”또는 “메모리 매핑 된 IO”또는 “IO 메모리”라고합니다. 이 메모리는 물리적으로 실제 장치 내부에 있지만 컴퓨터는 메모리 칩에서 메모리에 액세스하는 것처럼 액세스합니다. 버스 자원에 대해 논의 할 때 종종 “메모리”, “mem”또는 “iomem”이라고 불립니다. 이러한 “메모리”를 사용하는 것 외에도 이러한 장치는 기존 IO 주소 공간을 사용할 수 있습니다. 컴퓨터에서 사용중인 MEM이 무엇인지 확인하려면 /Proc /Iomem을보십시오. 이 “파일”에는 일반 RAM 메모리 칩이 사용하는 메모리가 포함되어 있으므로 IOMEM 할당뿐만 아니라 일반적으로 메모리 할당을 표시합니다. 이름 대신 이상한 숫자가 표시되면 “LSPCI”를 입력하여 확인할 수있는 PCI 장치의 수입니다.
iOMEM을 사용하는 카드를 삽입하면 메인 메모리에 대한 메모리 모듈도 삽입됩니다. 주요 메모리 모듈 (Chips)과 충돌하지 않도록 PNP에 의해 높은 주소가 선택됩니다. 이 메모리는 ROM (메모리 읽기)이거나 공유 메모리 일 수 있습니다. IO 주소 공간이 장치와 CPU간에 공유되는 것처럼 장치와 CPU (장치 드라이버 실행)간에 공유 메모리가 공유됩니다. 이 공유 메모리는 장치와 메인 메모리 간의 데이터 “전송”수단 역할을합니다. 입력 출력 (IO)이지만 IO 공간에서는 수행되지 않습니다. 카드와 장치 드라이버는 모두 메모리 범위를 알아야합니다.
카드의 ROM (읽기 전용 메모리)은 다른 종류의 iOMEM입니다. 장치와 함께 사용될 프로그램 (아마도 장치 드라이버) 일 것입니다. 장치 드라이버가 여전히 필요하도록 초기화 코드가 될 수 있습니다. MS Windows뿐만 아니라 Linux에서 작동하기를 바랍니다. 그림자가 필요할 수 있으므로 더 빨리 실행하기 위해 메인 메모리 칩에 복사됩니다. 그림자가 나면 더 이상 “읽기 만”이 아닙니다.
이것을 읽은 후에는 인터럽트를 읽고 싶을 수도 있습니다. 다음은 의도적으로 지나치게 단순화되었습니다. 주소 외에도 다루는 인터럽트 번호도 있습니다 (예 : IRQ 5). 이를 IRQ (인터럽트 요청) 번호 또는 단순한 “IRQ”라고합니다. 우리는 위에서 이미 기기 드라이버가 카드와 통신 할 수 있도록 카드 주소를 알아야한다고 위에서 언급했습니다.
그러나 반대 방향으로 의사 소통은 어떻습니까?? 장치가 장치 드라이버를 즉시 알려야한다고 가정합니다. 예를 들어, 장치는 주 메모리로 향하는 많은 바이트를받을 수 있으며 이러한 바이트를 저장하는 데 사용되는 버퍼는 거의 가득 차 있습니다. 따라서 장치는 버퍼가 바이트의 들어오는 흐름에서 오버플로하기 전에 드라이버를 한 번에 한 번에 가져 오도록 지시해야합니다. 또 다른 예는 장치가 수많은 바이트를 보내고 운전자에게서 더 많은 바이트를 기다리고 있음을 드라이버에게 알리는 것입니다.
장치가 운전자에게 어떻게 신속하게 신호를 보내야합니까?? 이미 사용 중이므로 기본 데이터 버스를 사용할 수 없습니다. 대신 전용 인터럽트 와이어 (라인 또는 트레이스라고도 함)에 전압을 넣습니다. 이 전압 신호는 인터럽트 요청 (IRQ) 또는 짧은 “인터럽트”라고합니다. 16 (또는 24 등.) PC의 이러한 와이어와 각 와이어는 특정 장치 드라이버로 (간접적으로) 리드됩니다. 각 와이어에는 고유 IRQ (인터럽트 요청) 번호가 있습니다. 장치는 올바른 와이어에 인터럽트를 놓아야하며 장치 드라이버는 올바른 와이어의 인터럽트를 듣습니다. 장치가 “도움말 요청”을 보내는 와이어는 장치에 저장된 IRQ 번호로 결정됩니다. 이 동일한 IRQ 번호는 장치 드라이버가 어떤 IRQ 라인을 듣는 지 알 수 있도록 장치 드라이버에 알려야합니다.
장치 드라이버가 장치에서 인터럽트를 받으면 인터럽트가 발행 된 이유를 알아 내고 인터럽트 서비스를 위해 적절한 조치를 취해야합니다. ISA 버스에서 각 장치에는 일반적으로 고유 한 IRQ 번호가 필요합니다. PCI 버스 및 기타 특수 사례의 경우 IRQ 공유가 허용됩니다 (2 개 이상의 PCI 장치는 동일한 IRQ 번호를 가질 수 있습니다). 또한 PCI의 경우 각 PCI 장치에는 고정 “PCI 인터럽트”와이어가 있습니다. 그러나 프로그래밍 가능한 라우팅 칩은 PCI 와이어를 ISA 유형 인터럽트에 맵핑합니다. 위의 모든 작동 방식에 대한 자세한 내용은 인터럽트를 참조하십시오.
- 장치의 I/O 메모리 공간에서 바이트 덩어리를 읽고 이러한 바이트를 CPU 자체에 넣습니다
- CPU에서 메인 메모리로 이러한 바이트를 작성합니다
DMA를 사용하면 장치에서 메모리로 바이트를 직접 전송하는 한 단계 프로세스입니다. 장치에는 하드웨어에 DMA 기능이 내장되어 있어야하므로 모든 장치가 DMA를 수행 할 수있는 것은 아닙니다. DMA가 진행되는 동안 DMA 전송에서 메인 버스를 사용하고 있기 때문에 CPU는 너무 많이 할 수 없습니다.
PCI 버스는 버스 마스터 링에 의해 “DMA”를하는 동안 오래된 ISA 버스는 DMA를 느리게 할 수 있습니다. LPC 버스에는 이전 DMA와 새로운 DMA (버스 마스터 링)가 있습니다. PCI 버스에서 “버스 마스터 링”이라고 불리는 것은 종종 “Ultra DMA”, “BM-DNA”, “UDMA”또는 “DMA”라고 불리며 버스 마스터 링은 장치가 일시적으로 버스 마스터가되고 버스 마스터가 CPU와 같은 바이트를 전송할 수 있습니다. PCI 버스의 구성은 PCI 하드웨어가 현재 버스 마스터인지 및 버스 마스터가되기를 요청하는 장치를 알고 있으므로 채널 번호를 사용하지 않습니다. 따라서 PCI 버스 용 DMA 채널의 리소스 할당은 없으며이 버스에는 DMA 채널 리소스가 없습니다. LPC (Low Pin Count) 버스는 BIOS에 의해 구성되어야하므로 사용자는 DMA 채널에 대해 스스로 걱정할 필요가 없습니다.
이것은 LPC 버스와 오래된 ISA 버스를위한 것입니다. 장치가 DMA를 수행하려는 경우 인터럽트 요청과 매우 유사한 전용 DMA 요청 전선을 사용하여 DMA 수술을 발행합니다. DMA는 실제로 인터럽트를 사용하여 처리 할 수 있었지만 DMA 요청으로 알려진 특수 유형의 인터럽트를 사용하여 약간의 지연이 발생할 수 있습니다. 인터럽트와 마찬가지로 DMA 요청은 요청을받는 장치를 식별하기 위해 번호가 매겨집니다. 이 숫자를 DMA 채널이라고합니다. DMA 전송은 모두 메인 버스를 사용하고 (한 번에 한 번에만 실행할 수 있음) 실제로 데이터 흐름에 동일한 채널을 사용하지만 “DMA 채널”숫자는 “채널”을 사용하는 사람을 식별하는 역할을합니다. 각 “채널”의 현재 상태를 저장하는 마더 보드에 하드웨어 레지스터가 있습니다. 따라서 DMA 요청을 발행하려면 장치는 물리적 장치의 특수 레지스터에 저장 해야하는 DMA 채널 번호를 알아야합니다.
따라서 장치 드라이버는 어떤 식 으로든 그들이 제어하는 하드웨어에 “첨부”해야합니다. 이것은 버스 자원 (I/O, Memory, IRQ, DMA)을 물리적 장치 모두에 할당하고 장치 드라이버가 이에 대해 알아낼 수있게함으로써 수행됩니다. 예를 들어, 직렬 포트는 IRQ와 I/O 주소의 2 개의 리소스 만 사용합니다. 이 값은 모두 장치 드라이버 및 물리적 장치에 공급되어야합니다. 드라이버 (및 장치)는 /DEV 디렉토리 (예 : TTYS1)에 이름이 부여됩니다. 주소와 IRQ 번호는 실제 장치에서 카드의 구성 레지스터 (또는 마더 보드의 칩)에 저장됩니다. 오래된 하드웨어 (1990 년대 중반)는 스위치 (또는 점퍼)를 사용하여 하드웨어에서 IRQ와 주소를 물리적으로 설정했습니다. 이 설정은 누군가가 컴퓨터 덮개를 제거하고 점퍼를 움직일 때까지 고정 상태로 유지되었습니다.
그러나 PNP (점퍼 없음)의 경우, PC에 전원이 켜질 때 (점퍼 없음), 구성 레지스터 데이터는 일반적으로 PC에 전원을 켤 때마다 버스 자원 데이터가 새로 공급되도록해야합니다.
이상적인 컴퓨터
PC의 아키텍처는 IRQ, DMA 채널, I/O 주소 및 메모리 영역과 같은 제한된 수의 리소스 만 제공합니다. 제한된 숫자 장치 만 있고 모두 표준화 된 버스 자원 값 (예 : 고유 I/O 주소 및 IRQ 번호)을 사용한 경우 장치 드라이버를 장치에 첨부하는 데 아무런 문제가 없습니다. 각 장치에는 컴퓨터의 다른 장치와 충돌하지 않는 고정 리소스가 있습니다. 두 장치는 동일한 주소를 가지지 않으며 ISA 버스에 IRQ 충돌이 없을 것입니다. 각 드라이버는 고유 주소, IRQ 등으로 프로그래밍됩니다. 프로그램에 하드 코딩 된. 인생은 간단 할 것입니다.
주소 충돌을 방지하는 또 다른 방법은 각 카드의 슬롯 번호가 주소의 일부로 포함되도록하는 것입니다. 따라서 두 개의 다른 카드 사이에 주소 충돌이 없을 수 있습니다 (다른 슬롯에 있기 때문에). 카드 디자인은 카드의 다른 기능 간의 주소 충돌을 허용하지 않습니다. 구성 주소 공간 (리소스 문의 및 할당에 사용)이 실제로이를 수행하는 것으로 밝혀졌습니다. 그러나 I/O 주소 나 메모리 영역에 대해서는 수행되지 않습니다. PCI 버스에서와 같이 IRQ를 공유하는 것은 충돌을 피하지만 다른 문제를 일으킬 수 있습니다.
실제 컴퓨터
그러나 PC 아키텍처에는 충돌 문제가 있습니다. 장치 수의 증가 (동일한 유형의 여러 장치 포함)는 잠재적 충돌을 증가시키는 경향이있었습니다. 동시에, 둘 이상의 장치가 동일한 인터럽트를 공유하고 더 많은 인터럽트의 도입을 공유 할 수있는 PCI 버스의 도입은 충돌을 줄이는 경향이 있습니다. PCI로 이동하여 전반적인 결과는 가장 부족한 자원이 IRQ이기 때문에 갈등이 감소했습니다. 그러나 PCI 버스에서도 IRQ 공유를 피하는 것이 더 효율적입니다. 인터럽트가 빠르게 연속적으로 발생하고 (오디오와 같은) 공유에 빠르게 행동 해야하는 경우에는 성능 저하가 발생할 수 있습니다. 따라서 모든 PCI 장치를 동일한 IRQ로 할당하는 것은 좋지 않으므로 할당의 균형을 맞춰야합니다. 그러나 어떤 사람들은 모든 PCI 장치가 동일한 IRQ에 있음을 알게됩니다.
따라서 장치는 모든 주소, IRQ 등으로 설정할 수 있도록 약간의 유연성이 있어야합니다. 충돌을 피하고 균형을 달성하기 위해 필요합니다. 그러나 일부 IRQ와 주소는 시계 및 키보드를위한 것과 같은 표준입니다. 이들은 그러한 유연성이 필요하지 않습니다.
버스 자원의 할당 충돌 문제 외에도 장치 드라이버에게 버스 자원의 내용을 알려주는 데 실수를 저지르는 문제가 있습니다. 이는 하드 드라이브에 저장된 구성 파일에 사용 된 리소스를 유형하는 구식 수동 구성의 경우에 발생할 가능성이 높습니다. 이것은 종종 카드의 점퍼로 리소스를 설정했을 때 종종 잘 작동했습니다 (사용자가 설정 방법을 알았고이 데이터를 구성 파일에 입력하는 데 실수를하지 않은 경우). 그러나 PNP 소프트웨어에 의해 리소스가 설정되면 항상 동일하게 설정되지 않을 수 있으며 이는 PNP가 설정 한 버스 자원 값을 유형하는 수동 구성에 문제가 발생할 수 있습니다.
버스 자원 할당이 올바르게 수행되면 물리적 하드웨어와 장치 드라이버 간의 통신 통신 채널을 설정합니다. 예를 들어, 특정 I/O 주소 범위 (리소스)가 장치 드라이버와 하드웨어 조각 모두에 할당되면 이로 인해 일방 통신 통신 채널이 설정되었습니다. 운전자는 기기에 명령 및 기타 정보를 보낼 수 있습니다. 운전자가 레지스터를 읽음으로써 장치에서 정보를 얻을 수 있으므로 실제로 일원 통신입니다. 그러나 장치는 이런 식으로 커뮤니케이션을 시작할 수 없습니다. 통신을 시작하려면 장치가 IRQ가 필요하므로 운전자에게 인터럽트를 보낼 수 있습니다. 이것은 드라이버와 물리 장치가 커뮤니케이션을 시작할 수있는 양방향 통신 채널을 만듭니다.
플러그 앤 플레이 (PNP)라는 용어에는 다양한 의미가 있습니다. 넓은 의미에서는 장치를 연결하고 스스로 구성하는 자동 구성 일뿐입니다. 이 Howto에 사용 된 의미에서 PNP는 PNP 버스 자원 구성 (물리적 장치에 설정)을 구성하고 장치 드라이버에게 이에 대해 알리는 것을 의미합니다. Linux의 경우 BIOS가 버스 자원을 설정 한 방법을 결정하는 드라이버 일 뿐이며 필요한 경우 버스 자원을 변경 (재설정)하는 드라이버를 제공합니다. “PNP”는 종종 ISA 버스의 PNP를 의미하므로 ISAPNP의 메시지가 “플러그 앤 플레이 장치를 찾지 못했습니다”는 ISA PNP 장치가 발견되지 않았 음을 의미합니다. 표준 PCI 사양 ( “PNP”라는 용어를 만들기 전에 발명 됨)은 PCI 버스의 PNP와 동등한 것을 제공합니다.
PNP는 장치 드라이버와 장치를 일치시키고 통신 채널을 지정합니다 (버스 재료를 할당함으로써). 표준화 된 프로토콜을 사용하여 실제 장치 내부에 위치한 구성 레지스터와 전자적으로 통신합니다. 플러그 앤 플레이 이전의 ISA 버스에서 버스 자원은 이전에 점퍼 또는 스위치로 하드웨어 장치에 설정되었습니다. 때로는 버스 자원이 드라이버가 전자적으로 하드웨어로 설정할 수 있습니다 (일반적으로 MS OS 용으로 만 작성되지만 Linux 드라이버가 지원하는 드문 경우). 이것은 PNP와 같은 것이지만 표준화 된 프로토콜이 사용되지 않았으므로 실제로 PNP가 아니 었습니다. 일부 카드에는 이러한 소프트웨어로 재정의 할 수있는 점퍼 설정이있었습니다. PNP 이전의 Linux의 경우, 대부분의 소프트웨어 드라이버는 구성 파일 (또는 좋아요) 또는 기기의 기기를 상주 할 예정인 주소로 조사하여 버스 자원으로 할당되었습니다. 그러나이 방법은 오늘날 Linux가 이전 비 PNP 하드웨어를 사용할 수 있도록 오늘날에도 사용되고 있습니다. 때로는 이러한 오래된 방법이 오늘날 PNP 하드웨어에서 여전히 사용됩니다 (BIOS가 PNP 방법으로 하드웨어에 리소스를 할당했다고 말한 후).
PCI 버스는 처음부터 PNP와 유사했지만 일반적으로 PNP 또는 “플러그 앤 플레이”라고 부르지 않습니다. 결과적으로 PNP는 종종 ISA 버스에서 PNP를 의미합니다. 그러나이 문서의 PNP는 일반적으로 ISA 또는 PCI 버스의 PNP를 의미합니다.
이론적으로 PNP가 어떻게 작동하는지는 다음과 같습니다. 가상의 PNP 구성 프로그램은 모든 PNP 장치를 찾아서 각각 필요한 버스 자료를 묻습니다. 그런 다음 버스 자원 (IRQ 등)을 확인합니다.) 포기해야합니다. 물론, 비 PNP (레거시) 장치에서 사용하는 버스 자원이 예약 된 경우 (그들에 대해 알고 있다면) 이것들을 포기하지 않습니다. 그런 다음 일부 기준 (PNP 사양에 따라 지정되지 않음)을 사용하여 버스 자원을 제공하여 충돌이없고 모든 장치가 필요한 경우 (가능한 경우)를 얻을 수 있습니다. 그런 다음 각 물리적 장치에 버스 자원이 할당되는지 간접적으로 알려주고 장치는 지정된 버스 자원 만 사용하도록 설정합니다. 그런 다음 장치 드라이버는 어떻게 든 버스가 사용하는 버스 소송을 찾아서 제어하는 장치와 효과적으로 통신 할 수 있습니다.
예를 들어, 카드에 하나의 인터럽트 (IRQ 번호)와 1MB의 공유 메모리가 필요하다고 가정합니다. PNP 프로그램은 카드의 구성 레지스터 에서이 요청을 읽습니다. 그런 다음 주소 0xe9000000에서 시작하여 카드 IRQ5 및 1MB의 메모리 주소 공간을 할당합니다. PNP 프로그램은 또한 카드에서 정보 식별을 읽습니다. 그런 다음 적절한 장치 드라이버에게 수행 한 작업을 직접 또는 간접적으로 알려줍니다. PNP를 수행하는 드라이버 자체라면 장치의 드라이버를 찾을 필요가 없습니다 (드라이버가 이미 실행 중이므로). 그렇지 않으면 적절한 장치 드라이버를 찾아야하고 조만간 장치가 구성된 방법을 알려주십시오.
카드 (또는 PCI의 라우팅 테이블)가 특정 IRQ 번호 만 사용할 수 있거나 1MB의 메모리가 특정 범위의 주소 내에 있어야한다고 지정할 수 있기 때문에 항상 간단한 것은 아닙니다. ISA 버스에서 더 복잡한 PCI 및 ISA 버스에 대한 세부 사항이 다릅니다.
자원을 할당하는 데 일반적으로 사용되는 한 가지 방법은 하나의 장치로 시작하여 IT 버스 재료를 할당하는 것입니다. 그런 다음 다음 장치 등에 대해 동일한 작업을 수행하십시오. 그런 다음 마지막으로 모든 장치가 충돌없이 자원을 할당하면 모든 것이 정상입니다. 그러나 필요한 자원을 할당하면 충돌이 발생하면 필요한 버스 재료를 얻기 위해 돌아가서 이전 할당을 변경해야합니다. 이것을 재조정이라고합니다. Linux는 재조정을하지 않지만 MS Windows는 경우에 따라. Linux의 경우이 모든 것은 BIOS 및/또는 커널 및/또는 장치 드라이버에 의해 수행됩니다. Linux에서는 장치 드라이버가 운전자가 시작될 때까지 최종 자원 할당을 얻지 못하므로 충돌을 피하는 한 가지 방법은 충돌을 일으킬 수있는 장치를 시작하지 않는 것입니다. 그러나 BIOS는 종종 Linux가 부팅되기 전에 물리적 장치에 리소스를 할당하고 Kernel은 PCI 장치를 부팅 시간에 충돌하는지 확인합니다.
PNP 소프트웨어가 사용할 수있는 바로 가기가 있습니다. 하나는 마지막 구성에서 (컴퓨터가 마지막으로 사용되었을 때) 버스 자원을 할당 한 방법을 추적하고이를 재사용하는 것입니다. Bioss는 MS Windows와 마찬가지로이 작업을 수행하지만 표준 Linux는 그렇지 않습니다. 그러나 어떤면에서는 BIOS가 한 일을 종종 사용하기 때문에. Windows는 하드 디스크의 “레지스트리”에이 정보를 저장하고 PNP/PCI BIOS는 PC에서 비 휘발성 메모리에 저장합니다 (ESCD로 알려진 BIOS의 ESCD 데이터베이스 참조). 일부는 Linux와 같은 레지스트리가없는 것이 더 좋다고 말합니다. 그러나 Linux의 PNP도 문제가 있습니다.
MS Windows (Windows 3 제외.X와 NT4)는 PNP 였고, Linux는 원래 PNP OS가 아니었지만 점차 PNP OS가되었습니다. PNP는 PNP BIOS가 버스 자원을 구성하고 장치 드라이버는 BIOS가 수행 한 작업을 찾을 수 있기 때문에 원래 Linux에서 일했습니다. 오늘날 대부분의 드라이버는 자체 버스 자원 구성을 수행하도록 명령을 내릴 수 있으며 항상 BIOS에 의존 할 필요가 없습니다. 불행히도 운전자는 다른 장치가 나중에 필요한 버스 자원을 잡을 수 있습니다. 일부 장치 드라이버는 구성 파일에 사용한 마지막 구성을 저장하고 다음에 컴퓨터의 전원을 켤 때 사용할 수 있습니다.
장치 하드웨어가 이전 구성을 기억 한 경우 다음 부팅 시간에 PNP 구성 하드웨어가 없습니다. 하지만 하드웨어는 전원이 꺼질 때 구성을 잊어 버린 것 같습니다. 일부 장치에는 기본 구성이 포함되어 있지만 마지막으로 사용되는 장치는 반드시 사용되지는 않습니다. 따라서 PNP 장치는 PC의 전원 켜질 때마다 다시 구성되어야합니다. 또한 새 장치가 추가되면 구성해야합니다. 이 새로운 장치에 버스 자원을 할당하는 것은 기존 장치에서 일부 버스 자원을 빼앗아 대신 사용할 수있는 기존 장치 대체 버스 자원을 할당하는 것이 포함될 수 있습니다. 현재 Linux는 이러한 정교함을 할당 할 수 없습니다 (및 MS Windows XP도 할 수 없을 수도 있습니다).
PC가 처음 켜져 있으면 BIOS 칩이 컴퓨터를 시작하기 위해 프로그램을 실행합니다 (첫 번째 단계는 마더 보드 하드웨어를 확인하는 것입니다). 운영 체제가 하드 드라이브에 저장된 경우 (일반적으로대로) BIOS는 하드 드라이브에 대해 알아야합니다. 하드 드라이브가 PNP 인 경우 BIOS는 PNP 방법을 사용하여 찾을 수 있습니다. 또한 사용자가 BIOS의 CMO를 수동으로 구성하고 컴퓨터가 시작될 때 오류 메시지에 응답 할 수 있도록 화면 (비디오 카드) 및 키보드도 필요합니다. 따라서 BIOS는 항상 하드 드라이브에서 운영 체제를로드하는 데 필요한 PNP-Configure 장치.
BIOS가 하드 드라이브, 비디오 카드 및 키보드를 식별 한 후 부팅을 시작할 준비가되었습니다 (운영 체제를 하드 디스크에서 메모리에로드). BIOS에 PNP 운영 체제 (PNP OS)가 있다고 말한 경우 위와 같이 PC를 부팅하기 시작하고 운영 체제가 PNP 구성을 완료하도록해야합니다. 그렇지 않으면 PNP-BIOS (부팅 전)는 장치의 나머지 PNP 구성을 수행하려고 시도 할 수 있습니다 (그러나 장치 드라이버에게 한 일을 알리지 않음). 그러나 드라이버는 Linux 커널에서 사용 가능한 기능을 사용하여 여전히 찾을 수 있습니다.
PCI 버스 타입 LSPCI 또는 LSPCI -VV에 무엇이 있는지 확인하려면 . 또는 장치가 숫자로 표시되는 숫자 코드 형식의 동일한 정보에 대해 scanpci -v를 입력하십시오 (예 : 이름 대신 “Device 0x122d”등). 드문 경우에 Scanpci는 LSPCI를 찾을 수없는 장치를 찾을 수 있습니다.
디스플레이의 부팅 시간 메시지는 다양한 버스에서 발견 된 장치를 보여줍니다 (Shift-PageUp을 사용하여 백업을 통해). 부팅 시간 메시지를 참조하십시오
ISA는 오래된 IBM 호환 PC의 오래된 버스이며 PCI는 인텔에서 새롭고 빠른 버스입니다. PCI 버스는 오늘날 PNP를 위해 설계되었습니다. 이렇게하면 ISA 버스와 비교할 때 쉽게 PNP 버스 자원이 하드웨어 장치에 할당 된 방법을 찾을 수 있습니다.
ISA 버스의 경우 ISA 버스가 설계되었을 때 PNP를 염두에 두지 않았으며 PNP가 물리적 장치로 구성 정보를 전송하는 데 사용할 수있는 I/O 주소가 거의 없기 때문에 PNP 구현에는 실제 문제가있었습니다. 결과적으로 PNP가 ISA 버스에 신발 된 방식은 매우 복잡합니다. 전체 책이 그것에 대해 쓰여졌습니다. PNP 책을 참조하십시오. 무엇보다도 PNP 프로그램에 의해 각 PNP 장치가 임시 “핸들”을 할당하여 PNP 구성을 위해이를 해결할 수 있도록해야합니다. 이 “핸들”을 할당하는 것은 “격리”호출입니다. 복잡한 세부 사항은 ISA 격리를 참조하십시오.
ISA 버스가 멸종되면 PNP가 조금 더 쉬울 것입니다. 그러면 BIOS가 하드웨어를 어떻게 구성했는지 알아내는 것이 더 쉬울뿐만 아니라 PCI가 인터럽트를 공유 할 수 있으므로 충돌이 줄어 듭니다. 장치 드라이버를 장치와 일치시켜야하며 PC가 UP 및 실행 중일 때 추가되는 장치를 구성해야 할 필요가 있습니다. Linux가 지원하지 않는 일부 장치의 심각한 문제는 남아 있습니다.
Linux는 과거 PNP를 다루는 데 심각한 문제가 있었지만 대부분의 문제는 이제 해결되었습니다 (2004 년 중반). Linux는 원래 비 PNP 시스템에서 원래 시스템에서 커널을 컴파일 할 때 특정 옵션을 선택하면 PNP가 될 수있는 시스템으로 이동했습니다. BIOS는 IRQ를 할당 할 수 있지만 Linux는 일부를 할당하거나 BIOS가 한 일을 재 할당 할 수도 있습니다. ACPI (Advance Configuration and Power 인터페이스)의 구성 부분은 운영 체제가 자체 구성을 쉽게 수행 할 수 있도록 설계되었습니다. Kernel이 컴파일 될 때 선택한 경우 Linux는 ACPI를 사용할 수 있습니다.
Linux에서는 각 장치 드라이버가 자체 저수준 구성을 수행하는 것이 전통적입니다. Linux가 드라이버가 쉽게 사용할 수있는 커널에 소프트웨어를 제공 할 때까지 어려웠습니다. 오늘 (2005) 드라이버가 단순히 커널 함수를 호출하는 지점에 도달했으며 : PCI_ENALE_DEVICE ()와 장치가 IRQ (필요한 경우)와 장치에 지정된 주소를 모두 사용하여 구성됩니다. 이 과제는 PCI 또는 ISAPNP 장치가 커널에 의해 감지되었을 때 BIOS에 의해 이전에 할당 된 것 또는 커널이 이전에 예약 한 것일 수 있습니다. Linux가 부팅 시간에 모든 장치 IRQ를 할당하는 ACPI 옵션도 있습니다.
따라서 오늘날 어떤 의미에서, 드라이버는 여전히 구성을 수행하고 있지만 Linux에게 말함으로써 할 수 있습니다. 그래서 대부분의 구성을 수행하는 것은 Linux 커널의 비 장치 운전자 부분입니다. 따라서 적어도 일반적인 컴퓨터 아키텍처의 경우 Linux를 PNP 운영 체제라고 부르는 것이 맞습니다.
그런 다음 장치 드라이버가 장치를 찾으면 바이오스 및/또는 Linux에 의해 주소와 IRQ가 할당 된지를 확인하고 일반적으로이를 받아들입니다. 그러나 운전자가 그렇게하려면 커널에서 제공하는 기능을 사용하여 주소를 변경하려고 시도 할 수 있습니다. 그러나 커널은 다른 장치와 충돌하는 주소 나 하드웨어가 지원할 수없는 주소를 수락하지 않습니다. PC가 시작되면 일부 Linux 장치 드라이버가 하드웨어 장치와 IRQ 및 주소 범위의 내용을 찾았다는 것을 보여주는 화면의 메시지를 기록 할 수 있습니다.
따라서 커널은 드라이버가 장치가 존재하는지 확인하는 데 사용할 수있는 함수 (프로그램 코드)를 제공합니다. 커널 2.2 PCI 버스에 대해서만이 작업을 수행 할 수 있지만 커널 2.4 ISA 및 PCI 버스 모두에 대한이 기능이있었습니다 (커널을 컴파일 할 때 적절한 PNP 및 PCI 옵션이 선택된 경우). 커널 2.6은 ACPI의 더 나은 활용으로 나왔습니다. 이것은 결코 모든 드라이버가 이러한 기능을 완전하고 올바르게 사용할 것이라고 보장하지 않습니다. BIOS가 알지 못하는 레거시 장치는 귀하 (또는 일부 구성 유틸리티)가 주소, IRQ 등을 넣을 때까지 구성되지 않을 수 있습니다. 구성 파일로.
또한 커널은 동일한 버스 자원을 동시에 사용하는 것으로 알고있는 두 개의 장치를 허용하지 않음으로써 리소스 충돌을 피하는 데 도움이됩니다. 원래 이것은 IRQ와 DMA만을위한 것이지만 이제는 주소 자원을위한 것입니다.
오래된 ISA 버스가있는 경우, ISAPNP는 Boottime에서 실행하여 ISA 버스에서 PNP 장치를 찾아 구성해야합니다. “DMESG”가있는 메시지를보십시오.
커널이 장치 드라이버에게 제공 할 수있는 도움을 보려면 디렉토리 /USR /. /. /문서 중 하나입니다 . “kernel-doc”등이 포함되어 있습니다. 경고 : 여기서 문서화는 오래된 경향이 있으므로 최신 정보를 얻으려면 커널 개발자가 보낸 메일 링리스트 및 댓글을 포함하여 작성된 컴퓨터 코드에서 메시지를 읽어야합니다. 이 커널 문서 디렉토리에서는 PCI를 참조하십시오.txt ( “Linux PCI 드라이버를 쓰는 방법”) 및 파일 :/usr/include/linux/pci.시간. 당신이 드라이버 전문가이고 C 프로그래밍을 알고 있지 않는 한,이 파일은 정말로 쓰여져서 실제로 운전자를 쓸 수 없습니다. 그러나 운전자가 사용할 수있는 PNP 유형 기능에 대한 아이디어를 제공합니다.
커널 2.4 ISAPNP를 참조하십시오.txt. 커널 2.6, ISAPNP.TXT는 PNP로 대체됩니다.ISAPNP와 완전히 다른 txt.TXT 및 PCI 버스도 다루고 있습니다. 또한 O’Reilly Book : Linux Device Drivers, 3rd Ed를 참조하십시오., 2005. 전체 텍스트는 인터넷에 있습니다.
그러나 실제 PNP 운영 체제가 더 잘 처리 할 수있는 많은 것들이 있습니다
- 필요한 경우 자원을 재 할당하여 공급이 부족한 경우 버스 자원 할당
- 물리적 장치에 대해 두 개 이상의 드라이버가있을 때 드라이버 선택을 처리하십시오
각 운전자 자체이기 때문에 운전자는 다른 장치가 필요로하는 버스 자원을 잡을 수 있습니다 (아직 커널에 의해 할당되지 않음). 따라서 더 정교한 PNP Linux 커널이 더 나을 것입니다. 모든 요청이있는 후 커널이 할당을 수행했습니다. 또 다른 대안은 장치가 요청한 리소스를 얻을 수없는 경우 이미 할당 된 자원을 재 할당하는 것입니다.
“버스 자원 부족”문제는 두 가지 이유로 문제가되지 않습니다. 한 가지 이유는 PCI 버스가 ISA 버스를 교체하고 있기 때문입니다. PCI에서는 IRQ가 공유 될 수 있으므로 IRQ가 부족하지 않습니다 (공유가 약간 효율적이지 않더라도). 또한 PCI는 DMA 리소스를 사용하지 않습니다 (이러한 리소스가 필요없이 DMA와 동일하지만).
두 번째 이유는 장치 I/0에 더 많은 주소 공간을 사용할 수 있기 때문입니다. ISA 버스의 기존 I/O 주소 공간은 64KB로 제한되었지만 PCI 버스에는 4GB가 있습니다. 더 많은 물리적 장치가 IO 주소 공간 대신 메인 메모리 주소를 사용하고 있기 때문에 ISA 버스에서도 여전히 더 많은 공간이 있습니다. 32 비트 PC에는 4GB 메인 메모리 주소 공간이 있으며이 버스 자원의 대부분은 장치 IO에 사용할 수 있습니다 (4GB의 메인 메모리가 설치되지 않는 한).
플러그 및 플레이 장치 지원에 대한 일반 정보
플러그 앤 플레이 장치는 설치없이 즉시 사용할 수 있습니다. 컴퓨터에 연결 되 자마자 자동으로 감지 및 구성됩니다. 적절한 장치 드라이버가 자동으로 설치됩니다. 사용자는 입력을 할 필요가 없습니다.
그러나 운영 체제의 자동 설치는 특정 조건에서만 작동합니다.g. (Windows 도움말에서 자세히보기) : :
- 장치 드라이버에는 하나가 있습니다 “Windows 용으로 개발되었습니다” 로고 또는 디지털 서명.
- 장치 드라이버는 이미 컴퓨터에 있습니다.
이러한 조건이 충족되지 않으면 운영 체제가 하드웨어 마법사를 시작합니다. 사용자가 로컬 관리자 권한이없는 경우이 마법사로 설치를 완료 할 수 없습니다.
이러한 상황에서 DSM ’S 플러그 및 플레이 장치를 지원하면 지역 관리자 권한이없는 사용자없이 장치를 설치할 수 있습니다.
- Wan Miniport 드라이버
- 가상 네트워크 어댑터
이 기사가 유용 했습니까??
플러그 N- 플레이 장치를 강제로 특정 드라이버를 사용하도록합니다
장비: Presonus Revelator 마이크 목표: USB-to-RJ45 확장을 통해 마이크를 더 멀리 사용하고 싶습니다. 기본적으로 이더넷 코드 위로 USB를 전송합니다. 문제: 마이크가 노트북에 직접 연결되면 잘 작동합니다. 하지만 익스텐더 위에 연결하면 아무것도 녹음 할 수 없으며 컴퓨터가 장치를 전혀 등록하지 않습니다. 마이크는 전력을 수신하고 컴퓨터는 “연결”노이즈를 만듭니다. 기기 관리자: 두 시나리오에서 장치 관리자를 확인했습니다. 직접 연결되면 “오디오 입력 및 출력”에 “마이크 (계시기)”가 표시됩니다. RJ45 위에 연결되면 “알 수없는 장치”아래에 “계시기”와 노란색 경고 삼각형이 표시되어 드라이버가로드되지 않았 음을 나타냅니다. 드라이버 정보: 프로그램을 사용하여 USBDEVIEW를 사용하여 다른 연결을 사용하여 연결할 때 장치에 깊이있는 정보를 수집했습니다. 아래는 나란히 비교됩니다.
직접 연결되었습니다 | RJ45를 통해 연결되었습니다 | |
---|---|---|
장치 이름 | 계시 자 | 계시 자 |
설명 | USB 복합 장치 | 계시 자 |
기기 종류 | 알려지지 않은 | 공급 업체 별 |
연결 | 예 | 예 |
플러그를 분리하기에 안전합니다 | 예 | 아니요 |
장애가 있는 | 아니요 | 아니요 |
USB 허브 | 아니요 | 아니요 |
일련 번호 | JM1C20431589 | JM1C20431589 |
Vendorid | 194f | 194f |
제품 ID | 0d01 | 0d01 |
펌웨어 개정 | 1.02 | 1.02 |
USB 클래스 | 0 | FF |
USB 서브 클래스 | 0 | 0 |
USB 프로토콜 | 0 | 0 |
부모의 접두사 | 6 & 1EA95F5F & 0 | 6 & 1EA95F5F & 0 |
서비스 이름 | USBCCGP | |
서비스 설명 | @USB.INF,%일반적인.SVCDESC%; Microsoft USB 일반 부모 드라이버 | |
드라이버 파일 이름 | USBCCGP.SYS | |
장치 MFG | (표준 USB 호스트 컨트롤러) | |
힘 | 200 MA | 200 MA |
USB 버전 | 2 | 2 |
드라이버 설명 | USB 복합 장치 | |
드라이버 버전 | 10.0.19041.1949 | |
운전자 감염 | 합성물.데브.NT | |
드라이버 inppath | USB.inf | |
인스턴스 ID | USB \ VID_194F & PID_0D01 \ JM1C20431589 | USB \ VID_194F & PID_0D01 \ JM1C20431589 |
기능 | “이동식, 독특한, 놀라운” | “제거 가능, 고유 한” |
주요 차이점은 직접 연결되면 마이크가 복합 장치로 인식된다는 것입니다 (UsbDeview는 또한 동시에 다른 USB 장치가로드되는 것을 보여줍니다). RJ45에 연결하면 인식되지 않으며 드라이버로드가 없습니다. 다른 장치를 연결할 수 있습니다?: USB 드라이브와 다른 브랜드의 마이크 (Audio-Technica AT2020)가있는 RJ45 커넥터를 시도했습니다. 두 경우 모두 그들은 잘 작동하고 동일한 운전자를로드했습니다. 마이크는 복합 장치이지만 문제가 없기 때문에 특히 흥미 롭습니다. 질문: 내 컴퓨터가 두 시나리오에서 동일한 드라이버를 사용하도록 강요 할 수 있습니까?? 나는 인터넷 검색을 해왔지만 내가 찾을 수있는 것은 회사 웹 사이트에서 드라이버 다운로드와 관련된 것입니다 (내가 찾을 수있는 것은 없습니다). 장치 관리자를 통해 수동으로 SYS 및 INF 파일을 선택하려고했지만 작동하지 않은 것 같습니다. 그래도이 단계를 잘못하고있을 가능성이 있습니다.
장치 드라이버 란 무엇입니까?? 정의, 유형 및 응용 프로그램
장치 드라이버는 컴퓨터에 연결된 하드웨어를 관리하고 기능을 지원하는 UI가없는 프로그램입니다.
Chiradeep Basumallick 기술 작가
2022 년 10 월 12 일
장치 드라이버는 컴퓨터에 연결된 하드웨어 구성 요소 또는 주변 장치를 관리하고 컴퓨터를 부드럽게 작동시킬 수있는 사용자 인터페이스 (UI)가없는 소프트웨어 프로그램으로 정의됩니다. 이 기사는 장치 드라이버, 다양한 유형 및 5 가지 중요한 응용 프로그램의 작동에 대해 설명합니다.
목차
-
- 장치 드라이버 란 무엇입니까??
- 9 가지 유형의 장치 드라이버
- 장치 드라이버의 응용 프로그램
장치 드라이버 란 무엇입니까??
장치 드라이버는 사용자 인터페이스 (UI)가없는 소프트웨어 프로그램으로 컴퓨터에 연결된 하드웨어 구성 요소 또는 주변 장치를 관리하고 컴퓨터를 부드럽게 작동시킬 수 있습니다.
장치 드라이버는 특정 컴퓨터 연결 장치를 작동하는 특수 소프트웨어입니다. 하드웨어로 소프트웨어 인터페이스를 제공하면 운영 체제 및 기타 컴퓨터 응용 프로그램이 하드웨어 기능에 액세스 할 수 있습니다.
하드웨어는 장치 드라이버가 장치와 상호 작용하는 컴퓨터 버스/통신 서브 시스템에 연결됩니다. 그들은 하드웨어 의존적이고 운영 시스템 별 (OS)입니다. 그들은 시간에 따른 비동기 하드웨어 인터페이스에 필수적인 인터럽트 처리를 제공합니다.
장치 드라이버’주요 목표는 컴퓨터 및 네트워크 하드웨어 구성 요소가 특정 장치와 인터페이스하고 상호 작용할 수 있도록하는 것입니다. 그들은 특정 유형의 장치와 관련하여 커널에 의해 작성된 요청을 처리합니다. 장치 드라이버는 컴퓨터의 메시지 및 메커니즘을 정의합니다’S 운영 체제 및 응용 프로그램은 장치에 액세스하거나 장치를 요청할 수 있습니다. 또한 컴퓨터로 전달하기위한 장치 응답 및 메시지를 처리합니다.
장치 운전자 기능
장치 드라이버는 OS 커널 레이어 내부에서 작동합니다. 기능을 위해 하드웨어 작업에 대한 저수준 액세스가 필요하기 때문에 고도로 특권 환경에서 작동합니다. 그들은 컴퓨터를 활성화합니다’s 운영 체제 (OS)는 개발 된 하드웨어와 인터페이스하기 위해. 장치를 컴퓨터에 연결하는 컴퓨터 버스를 통해 드라이버 및 장치가 통신합니다.
장치 드라이버는 장치 지침에 액세스하고 실행하기 위해 운영 체제로부터 조언을 받아야합니다. 작업을 완료 한 후 하드웨어 장치를 전송합니다’S 출력 또는 운영 체제에 대한 메시지. 모뎀, 라우터, 스피커, 키보드 및 프린터와 같은 장치에는 장치 드라이버가 작동해야합니다.
장치 드라이버 개발 이해
장치 드라이버는 프린터 또는 키보드와 같은 주변 장치를 컴퓨터와 상호 작용할 수 있습니다. 다음은 Windows, Linux 또는 MACOS와 같은 운영 체제를위한 장치 드라이버를 개발하는 동안 개발자 또는 프로그래머가 취할 수있는 단계를 설명합니다.
1. 장비를 알고 있습니다
장치 드라이버를 설계 할 때 프로그래머는 플랫폼을 심층적으로 파악해야합니다’s 하드웨어. 그들은 하드웨어가 호스트 및 장치 드라이버 소프트웨어의 위치와 통신하는 데 사용하는 버스 인터페이스를 알아야합니다. 관련 용어 및 정의를 이해하려면 장치 데이터 시트를 읽어야합니다. 또한 데이터 전송이 발생하는 방법을 알아야합니다.
기본 장치가 칩의 시스템 인 경우 개발자는 드라이버가 펌웨어 및 명령 프로토콜과 어떻게 상호 작용하는지 알아야합니다. 또한 새로운 유형의 하드웨어를 처리 할 때 개발자가 문서화가 부족할 준비를해야합니다. 따라서 평소보다 더 많은 테스트를 수행 할 준비가되어 있어야합니다.
2. 드라이버 코드를 작성하십시오
이 단계에서 개발자는 선호하는 하드웨어의 작동하는 프로토 타입을 얻어야합니다. 그런 다음 커널 모드 드라이버를 작성해야합니다.
장치가 잘못 설계된 경우 사용자 모드에서 실행되는 드라이버는 시스템 충돌을 일으킬 수 있습니다. 마찬가지로, 운전자가 특권이 높은 설정에서 작동 할 때 문제가 발생하면 운영 문제가 발생할 수 있습니다. 따라서 개발자는 선택한 운영 체제에 사용할 수있는 드라이버 개발 문서의 정보를 활용해야합니다. Windows 또는 Linux.
개발 된 첫 번째 장치 드라이버 기능은로드 및 언로드 기능입니다. 운영 체제가 시작되고 중지되면 이러한 기능을 호출합니다. 하중/언로드 기능의 주요 책임 중 하나는 하드웨어가 시스템에 연결되어 있는지 여부를 감지하는 것입니다. 사용자는 특정 버스에서 지정된 장치 ID를 사용하여 하드웨어를 감지 할 수 있습니다. 하드웨어가 연결되면로드 기능이 성공적입니다. 그렇지 않은 경우 언로드 기능을 호출하십시오.
삼. 하드웨어를 초기화하십시오
장치가 하드웨어를 감지 할 수 있으면 다음 단계가 초기화됩니다. 필요한 초기화 유형은 하드웨어 종류에 따라 다를 수 있습니다. 초기화는 글쓰기에서 장치 레지스터, 장치에 마이크로 코드 다운로드, 독점 명령 프로토콜을 사용하여 장기적으로 통신하는 것까지 다양합니다.
4. 하드웨어를 제어하십시오
하드웨어 제어는 개발자가 하드웨어와 초기화하고 통신 할 수있는 경우에만 가능합니다. 제어 프로세스는 장치에 따라 다릅니다. 개발자는 장치가 단순히 한 장치에서 다른 장치로 데이터를 전달하는지 여부를 고려해야합니다.
예를 들어, 스마트 폰에서 스피커로 음악을 전달할 때. 또한 장치가 다른 장치에 데이터 및 지침을 지속적으로 전송 할 것인지 고려해야합니다. 예를 들어, 프린터에 종이의 한쪽에 흑백 인쇄를하고 색상의 양면 인쇄.
장치 드라이버는 속도 재생 속도 및 컴퓨터를 통해 빠른 향상 입력과 같은 데이터 설정을 켜고 장치의 명령으로 켜집니다. 이전 세 단계와 달리 이것은 더 많은 시간이 걸릴 수 있습니다. 처음 세 단계는 OS가로드됨에 따라 일회성 작업 일 수 있습니다. 그러나 개발자는 OS를 설정하고 실행 한 후 4 단계를 여러 번 수행해야 할 수도 있습니다. 사용자는 때때로 3 단계와 4 단계를 단일 단계로 병합 할 수 있습니다.
5. 하드웨어와 데이터 통신을 시작하십시오
여러 장치는 오디오 또는 비디오 등 일부 형태의 데이터를 처리합니다. 장치가 초기화되면 개발자는 필요에 따라 꾸준한 데이터 스트림을 보낼 수 있습니다. 장치 드라이버는 고급 응용 프로그램과 데이터 전송을위한 하위 수준 하드웨어 또는 펌웨어 사이의 파이프 역할을합니다.
첫 번째 단계에서 언급했듯이 개발자는 데이터 통신을 위해 설계된 프로토콜을 알아야합니다. 데이터 전송은 인터럽트 중심 또는 폴링 될 수 있습니다. OS는 데이터 전송 과정에서 사용되는 메시징 또는 인터럽트 서비스 루틴과 같은 시설을 제공합니다. 개발자는 단일 데이터 패킷을 전송하고 1 단계에서 3 단계에서 전체 프로세스가 잘 작동하도록 시작해야합니다.
6. 제어 데이터 통신
이 단계에서 개발자는 여러 상황에서 데이터 전송을 제어하고 통신을 관리해야합니다. 문제가 발생하면 사용자는 주변 장치가 동일한 오류 메시지를 보내는 것을 방지해야합니다. 오디오 스트림에서 버퍼 오버플로 또는 음질에 중대한 문제가 있으면 STOP 명령을 보내야합니다.
7. 드라이버를 테스트하고 디버깅하십시오
테스트는 중요한 측면입니다. 개발자는 장치가 인식되고 초기화되도록 장치를 테스트해야합니다. 또한 장치 드라이버가 예상대로 작동하도록 기능 테스트를 실행해야합니다. 또한 원활한 작동을 위해 하드웨어를 변경할 준비가되어 있어야합니다. 또한 개발자는 다른 운영 체제 버전에서 장치 드라이버를 테스트하여 전방 및 후진 호환인지 확인해야합니다. 장치 드라이버가 작동하면 개발자가 등록 할 수 있습니다.
9 가지 유형의 장치 드라이버
개발자는 다음 유형의 장치 드라이버를 구별 할 수 있습니다
1. 커널 장치 드라이버
커널 장치 드라이버는 OS의 일부로 운영 체제 (OS)가 장착 된 일부 일반 하드웨어로 구성됩니다. 여기에는 마더 보드, 프로세서 및 바이오스가 포함됩니다. 필요할 때 랜덤 액세스 메모리 (RAM)에 호출 및로드됩니다. 그들 중 일부가 동시에 작동 할 때 기계의 속도가 느려질 수 있습니다. 따라서 각 OS에 대한 최소 요구 사항이 있습니다.
커널 장치 드라이버가 계층화되어 있습니다. 파일 시스템 드라이버와 같은 상위 레벨 드라이버는 응용 프로그램에서 데이터를 수신하고 필터링하여 하위 레벨 드라이버로 전달하여 드라이브 기능을 지원합니다. 커널 장치 드라이버는 잘 정의 된 필수 기능 세트가있는 개별 및 모듈 식 구성 요소로 구현됩니다.
2. 사용자 모드 장치 드라이버
사용자 모드 장치 드라이버는 사용자 모드에서 실행됩니다. 그들은 세션 중에 사용자가 트리거 할 수있는 장치 드라이버를 참조합니다. 시스템을 사용하는 경우 사용자는 외부 플러그 앤 플레이 장치와 같이 사용할 자체 외부 장치가있을 수 있습니다. 이 장치는 또한 운전자가 기능해야합니다. Windows 시스템에서 사용자 모드 장치 드라이버는 Win32 응용 프로그램과 커널 모드 드라이버 또는 기타 운영 체제 간의 인터페이스를 제공합니다. 사용자는 이러한 드라이버를 디스크에 작성하여 컴퓨터 자원의 긴장을 줄일 수 있습니다.
삼. 캐릭터 드라이버
문자 장치 드라이버는 구조화되지 않은 하드웨어에 대한 액세스를 제공합니다. 특정 장치 주소를 사용하지 않고 장치로 데이터를 전송합니다. 그들은 순차 데이터의 스트림으로 한 번에 하나의 바이트를 읽거나 쓰는 것을 허용합니다. 캐릭터 드라이버는 버퍼 캐시를 통해 입력/출력 (I/O)을 처리하지 않으므로 I/O를 처리하는 데 더 유연합니다. 블록 장치와 쌍을 이루어 버퍼 캐시를 우회하여 사용자의 프로그램 주소 공간에 직접 원시 I/O 작업을 제공합니다.
또한 I/O 제어 명령, 장치 폴링 및 메모리 매핑과 같은 추가 인터페이스를 제공합니다. 예는 모뎀 및 버스 컨트롤러입니다.
4. 차단 드라이버
블록 장치 드라이버는 하드웨어에 대한 구조화 된 액세스를 제공합니다. I/O를 수행하기 위해 커널에서 제공하는 버퍼 캐시의 파일 시스템 블록 크기 버퍼를 사용합니다. 버퍼 캐시는 블록 장치를 통해 자주 액세스하는 블록을 저장하기 위해 커널에서 설정 한 메모리 풀입니다. 버퍼 캐시는 장치에서 I/O 작동이 필요한 I/O 쿼리의 양을 줄입니다.
또한 블록 장치 드라이버는 액세스 가능한 블록 지향 I/O를 제공하고 데이터 내구성을 보여줍니다. 파일 시스템 요청을 취하고 요청 된 블록을 전송하기 위해 I/O 절차를 디스크에 발행합니다. 예로는 USB 메모리 키 및 디스크 드라이브가 있습니다.
5. 원래 장비 제조업체 (OEM) 드라이버
장치 드라이버는 일반 또는 OEM 관련으로 분류 할 수 있습니다. 일반 드라이버는 OEM 하드웨어에 작동 소프트웨어가있는 장치 드라이버를 참조. 특정 장치 유형의 다른 브랜드를 가진 일반 드라이버를 사용할 수 있습니다. 예를 들어 Linux는 다른 소프트웨어를 수동으로 설치할 필요없이 작동하는 여러 일반 드라이버와 작동합니다.
OEM은 독점 장치 드라이버를 만들 수 있으며 OS를 설치 한 후 별도로 설치해야합니다. OEM 드라이버 키보드와 같은 하드웨어가 호스트 OS와 통신 할 수 있습니다. 예를 들어, OEM 드라이버는 Google Assistant 및 Alexa의 OEM 하드웨어와 조명 제어 시스템을 OEM 하드웨어와 통합하는 것과 같은 기능을 활성화합니다.
6. 가상 장치 드라이버
가상 장치 드라이버는 가상 머신 또는 VM을 제어하는 데 필수적입니다 . 그들은 가상화 및 비 계약 환경 모두에서 작동합니다. 가상화 환경 에서이 드라이버는 호스트 장치의 하드웨어를 모방하는 데 사용됩니다. 호스트 장치의 리소스 하드웨어를 제어하거나 관리하여 게스트와 호스트 장치가 예상대로 실행되도록합니다.
예를 들어, 게스트 운영 체제가 호스트에서 작동하면 기능 호출을 가상 장치 드라이버로 만들어 하드웨어에 액세스합니다. 또한 인터럽트와 같은 프로세서 수준 발생을 모방하여 가상 시스템으로 전송합니다.
7. 바이오스
기본 입력 출력 시스템 (BIOS)은 컴퓨터에서 가장 기본적인 드라이버입니다. ROM (Read-only Memory) 칩에 위치하여 하드 디스크가 형식화 될 때에도 BIOS를 사용할 수 있도록합니다. 이 과정에서 컴퓨터를 부팅하고 일련의 지침을 제공하는 것이 담당합니다. 또한 시작 중에 필요한 파워 온 셀프 테스트 (Post)도 수행합니다. BIOS는 또한 키보드 및 모니터와 같은 기본 하드웨어 용 드라이버를 제공하여 운영 체제와 인터페이스하여 의도 한대로 작동하는지 확인합니다.
8. 마더 보드 드라이버
마더 보드 드라이버는 Windows와 Linux가 모두 활용할 수있는 간단한 응용 프로그램입니다. 운영 체제 내에 존재하며 기본 컴퓨터 운영을 가능하게합니다. 이 드라이버는 키보드와 마우스를 허용하는 응용 프로그램으로 구성됩니다’작동하는 S USB 장치 및 I/O 포트. 일부 마더 보드에는 비디오 및 오디오를 지원하는 드라이버가 있습니다.
마더 보드 드라이버는 인텔 컴퓨터 용 B460과 같은 칩셋 모델에만 해당됩니다. 마더 보드를 실현합니다’최대 잠재력과 연결에 연결된 구성 요소가 올바르게 작동하도록 사용자는 추가 드라이버를 설치해야 할 수도 있습니다.
9. 오픈 소스 드라이버
오픈 소스 드라이버는 무료 및 오픈 소스 라이센스에 따라 출시 된 드라이버를 참조. 예를 들어, 오픈 소스 그래픽 드라이버는 디스플레이가 그래픽 하드웨어의 일부인 경우 디스플레이의 출력을 제어합니다. 오픈 소스 드라이버 소스 코드는 모든 사람이 사용할 수 있으므로 소프트웨어 협업을보다 쉽게 만듭니다. 사람들이 악의적 인 코드를 확인할 수 있으므로 더 신뢰할 수 있습니다.
오픈 소스 드라이버는 더 많은 개인 정보를 제공합니다. 사용자가 사용자를 추적하면 사람들은 추적이 제거 된 소프트웨어 사본을 재분배 할 수 있습니다. 더 많은 사람들이 계속 개선함에 따라 오픈 소스 드라이버는 더 오래 지속되므로 회사가 배포를 중단하더라도 사본이 남아 있습니다.
장치 드라이버의 응용 프로그램
개인 및 엔터프라이즈 컴퓨팅의 필수 빌딩 블록은 다음과 같은 방식으로 사용됩니다
1. 스토리지 시스템에 액세스하기위한 장치 드라이버
컴퓨터 스토리지 시스템은 사용자가 데이터를 저장하고 주문형으로 사용할 수 있도록합니다. 여기에는 USB 플래시 드라이브, 하드 드라이브 및 네트워크 연결 스토리지와 같은 외부 및 내부 장치가 포함됩니다. 스토리지 시스템의 드라이버는 컴퓨터와 상호 작용할 수 있습니다. 이를 통해 컴퓨터가 내부 또는 외부 스토리지 시스템에 액세스하고 정보를 쿼리하며 데이터 전송을 허용 할 수 있습니다.
OS가 감지하지 않으므로 드라이버없이 스토리지 장치를 컴퓨터에 연결하면 어려워집니다. 일반적으로 하드 디스크 및 CD-ROM은 OS에 의해 인식되며 드라이버를 수동으로 설치할 필요가 없습니다. 사용자는 제조업체에서 드라이버를 설치해야합니다’S 웹 사이트가 자동으로 감지되지 않은 경우.
2. 입력 및 출력 장치 용 장치 드라이버
컴퓨터’S OS는 장치 드라이버와 상호 작용하여 하드웨어 기능이 예상대로 작동하도록합니다. 입력 장치에는 마우스 및 키보드가 포함되며 출력 장치에는 모니터와 같은 디스플레이 장치가 포함됩니다. 키보드, 마우스 및 모니터는 플러그 앤 플레이 장치로 분류됩니다.
일반적으로 플러그 앤 플레이 장치의 드라이버는 일반적이며 컴퓨터로 수동 설치가 필요하지 않습니다’S OS는 그들을 인식하고 자동으로 설치합니다. 그러나 외부 장치가 플러그 앤 플레이 장치가 아닌 경우 사용자는 설치 디스크에서 드라이버를 수동으로 설치하거나 다운로드해야 할 수도 있습니다. 이를 통해 OS는 이러한 장치를 인식 할 수 있습니다.
삼. 디지털 카메라 용 장치 드라이버
디지털 카메라 드라이버는 컴퓨터와 같은 다른 장치 간의 통신을 허용하는 프로그램입니다. 드라이버가 없으면 OS는이 장치를 감지하지 않습니다. Linux Systems가 지연됨에 따라 대부분의 디지털 카메라는 Windows OS 와만 호환됩니다.
디지털 카메라 드라이버는 카메라에서 컴퓨터로 사진을 전송할 수 있습니다. 그들은 디지털 카메라가 컴퓨터를 필요로하지 않고 Pictbridge Capable 컴퓨터 프린터에 직접 Pictbridge 표준을 사용하여 사진을 인쇄 할 수 있도록합니다. 비디오 출력 포트의 드라이버를 통해 사용자는 한 번에 하나의 비디오 나 사진을 선택하여 텔레비전에 사진을 표시 할 수 있습니다.
4. Android와 같은 모바일 운영 체제 드라이버
휴대폰에는 컴퓨터와 통신 할 수있는 드라이버가 있습니다. 드라이버는 대부분의 전화기의 펌웨어와 함께 번들로 제공되므로 OS가 지정되지 않았으므로 컴퓨터가 하드웨어를 지원하도록 컴퓨터를로드 할 수 있습니다. 그러나 때때로 사용자는 드라이버를 설치하려면 먼저 OEM PC 소프트웨어를 설치해야 할 수도 있고 데이터 전송을 허용 할 수도 있습니다.
드라이버는 Android Things 및 Android와 같은 운영 체제를 기반으로 한 게임 컨트롤러 또는 키보드와 같은 주변 장치를 통합 할 수 있습니다. 드라이버는 하드웨어의 액세스 및 제어를 가능하게합니다. 또한 스마트 장치가 사용자 정의 응용 프로그램과 함께 작동 할 수 있습니다.
5. 우수한 비디오 성능을위한 장치 드라이버
그래픽 카드는 컴퓨터 시스템의 핵심 구성 요소이며 컴퓨터, 게임 또는 기타 그래픽 집약적 인 작업에서 우수한 비디오 성능을 담당합니다. 그래픽 드라이버는 그래픽 카드가 컴퓨터와 상호 작용할 수 있도록합니다’S 운영 체제이므로 그래픽 카드에서 최고 성능을 얻는 데 필수적입니다.
그래픽 드라이버 및 기타 Windows 11 (또는 오래된) 드라이버를 업데이트하면 사용자가 속도 향상을주고 문제를 해결하고 때로는 새로운 기능을 제공 할 수도 있습니다. 예를 들어, 게임 드라이버 업데이트는 초당 프레임을 늘려 지연을 줄일 수 있습니다.
테이크 아웃
소비자와 비즈니스가 점점 더 장치와 주변 장치를 사용함에 따라 장치 드라이버는 IT 인프라에 필수적입니다 . 현대식 운전자 기술은 자원 소비를 줄이고 속도를 높여 컴퓨터 기능을 향상시킬 수 있습니다. 그렇기 때문에 전체 장치 생태계가 원활하게 작동하도록 운전자가 어떻게 작동하는지, 정기적 인 드라이버 패치 및 업데이트 일정을 알고 있어야합니다.
이 기사가 장치 드라이버에 대해 배울 때 도움이 되었습니까?? 우리에게 알려주세요 페이스 북 새 창을 엽니 다 , 트위터 새 창을 엽니 다 , 그리고 LinkedIn 새 창을 엽니 다 . 우리’D 당신의 의견을 듣는 것을 좋아합니다!
DevOps에 대한 자세한 내용
- 2022 년 상위 10 위의 Azure DevOps 인증
- DevOps 라이프 사이클이란 무엇입니까?? 정의, 주요 구성 요소 및 관리 모범 사례
- 2022 년 10 대 스크럼 마스터 인증
- Top 18 Azure Devops 인터뷰 질문 2022 년
- 2022 년에 10 위의 DevOps 인증 및 과정