![장치 파일과 장치 드라이버의 차이점](https://linux55.com/image/4354/%EC%9E%A5%EC%B9%98%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EC%9E%A5%EC%B9%98%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90.png)
저는 장치 드라이버 프로그래밍의 초보자입니다.
Linux에서 장치 드라이버와 장치 파일의 차이점을 이해하지 못합니다.
누구든지 차이점을 설명할 수 있나요?
답변1
ㅏ장치 드라이버특정 유형의 장비를 작동하거나 제어하는 소프트웨어입니다. 현대에는전체 커널운영 체제 이는 일반적으로 커널의 일부입니다. Linux를 포함한 많은 모놀리식 커널은 런타임에 실행 가능한 모듈을 로드할 수 있는 모듈식 설계를 갖추고 있습니다. 장치 드라이버는 일반적으로 이 기능을 활용하지만 장치 드라이버가 커널 이미지로 컴파일되는 것을 방지할 수 있는 방법은 없습니다.
ㅏ장치 파일장치 드라이버에 대한 인터페이스이며 마치 일반 파일인 것처럼 파일 시스템에 나타납니다. Unix 계열 운영 체제에서는 일반적 /dev
으로 다음 디렉터리에 위치합니다.장치 노드. 장치 파일은 다음을 나타낼 수 있습니다.캐릭터 장치, 스트리밍 데이터를 한 번에 한 문자씩 내보내거나블록 장치데이터 블록에 대한 무작위 액세스를 허용합니다.
장치 노드는 다음과 같이 구성됩니다.mknod
시스템 호출. 장치 노드에 의해 노출된 커널 리소스는기본 및 보조 번호. 일반적으로 주요 장치 번호는 장치 드라이버를 식별하고, 보조 장치 번호는 드라이버가 제어하는 특정 장치를 식별합니다.
장치 파일에 포함된 내용은 장치 드라이버가 장치 파일을 통해 공개하는 내용에 따라 달라집니다. 예를 들어, 마우스를 나타내는 문자 장치 파일은 /dev/input/mice
마우스 움직임을 문자 스트림으로 노출하는 반면하드 디스크를 나타내는 블록 장치 파일예를 들어 /dev/sda
, 장치 메모리의 주소 지정이 가능한 영역을 노출합니다. 일부 장치 파일은 입력을 허용하므로 사용자 공간 응용 프로그램이 장치 파일에 기록하여 장치와 통신할 수 있습니다.
답변2
Thomas Nyman의 말에 덧붙이자면,
Linux의 모든 것은 파일이고 USB, 하드 디스크 등과 같은 일부 내부 장치는 자동으로 마운트되기 때문에 장치를 사용하기 전에 파일 시스템 개체에 마운트해야 합니다.
새 장치가 시스템과 상호 작용하려면 장치 파일을 사용하는 소프트웨어 프로그램인 장치 드라이버가 있어야 합니다.
따라서 기본적으로 장치 파일은 장치 드라이버에 대한 인터페이스를 제공합니다. c를 사용하여 Linux에서 자신만의 장치 드라이버를 작성할 수 있습니다.