2012-12-08 6 views
0

나는 우분투 12.04를 실행 중이고 ls /dev을 실행했을 때 나열된 모든 항목이 실제로 내 컴퓨터에 연결된 (또는 연결할 수있는) 모든 장치/하드웨어 구성 요소의 장치 드라이버임을 나타냅니다.을 가정합니다. 이 올바른지? 그렇지 않다면, 리눅스는 모든 장치 드라이버를 어디에 저장합니까?Linux 디바이스 드라이버 개발 : 2012 년에 어떻게 생겼습니까?

C로 작성된 드라이버는 무엇입니까? C++? 어셈블러? 어떤 현대 IDE/기술 스택 장치 드라이버 개발자가 사용합니까?

답변

1

아니요, 올바르지 않습니다. /dev은 장치 드라이버를 나타내는 특수 장치 파일로 가득 찬 폴더입니다. 그래서 내가 뭔가를 할 때 /dev/sda 나는 SATA 드라이버의 파일을 다루는 것이 아니라 오히려 어떤 SATA 드라이버가로드 될 것인가에 대한 인터페이스입니다. 장치 파일은 드라이버가 드라이버를 호출하는 시스템 호출과 함께 장치를 사용자 공간에 노출시키는 방법입니다.

일반적으로 드라이버는 /lib/modules에 저장됩니다.

작업 부하를 줄이고 어셈블리에 쓰지 않으려면 드라이버가 C로 작성됩니다. 기술적 인면이나 정치적인 이유 때문에 리눅스 커널 전체에 C++이 한 줄도 존재하지 않습니다 (Linus Torvalds는 그것을 보지 못합니다).

IDE? 어떤 커널 개발자도 IDE를 사용하는 것은 의심 스럽습니다. 대부분 Vim이나 EMACS 만 사용합니다. 커널 소스에 커밋하는 git과 디버깅을 위해 GDB/KDB. 그리고 다른 명령 줄 도구가 필요합니다 (예 : diff).

관련 문제