다음 그림은 장치 파일, 장치 드라이버 및 하드웨어 장치 간의 관계를 보여줍니다.
Application <---> /dev/device_file <---> device driver <---> hardware device
따라서 응용 프로그램은 장치 파일에 데이터를 쓴 다음 장치 드라이버에 데이터를 전달하고, 그런 다음 해당 데이터를 하드웨어 장치에 전달합니다(읽을 때는 그 반대가 발생함).
그러나 Linux에는 하드웨어 장치를 가리키지 않는 일부 장치 드라이버가 있습니다. 예를 들어 /dev/random 장치 파일은 하드웨어 장치를 가리키지 않는 장치 드라이버를 가리킵니다.
Application <---> /dev/random <---> device driver
/dev/random이 "장치 드라이버"를 가리킨다고 말하는 것이 정확합니까, 아니면 사용할 수 있는 다른 용어가 있습니까?
답변1
모델이 잘못되었습니다. 개발 파일은 udev
(또는 이전 버전의 Linux)에서 제공됩니다 devfs
. 지금은 udev
별개입니다 systemd
. 이 중 어느 것도 필요하지 않습니다. Windows에서와 마찬가지로 직접 API 호출과 함께 드라이버를 사용할 수 있습니다. 사실, 내가 아는 한 일부 시스템은 이를 기반으로 구축되지 않았습니다.
CreateFile은 /dev
어떤 파일이든 생성하는 함수일 뿐입니다 dev
. 확인하다mount | grep ' /dev '
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8087376k,nr_inodes=2021844,mode=755)
^ See the udev. That's what created the abstraction.
드라이버는 커널에 존재합니다. 파일/IO를 장치에 연결할 수 있도록 추상화 계층을 제공합니다. 이는 모든 것이 파일이라는 Unix 방법론을 따릅니다.아니요필수의.