최근에 Linux에 그래픽 장치 드라이버를 설치했는데 크기가 수십 KB에 불과하다는 것을 알았습니다. 그러나 Windows에서는 수십 MB입니다. 이유를 알고 싶습니다.
답변1
Linux의 커널 드라이버(.ko 파일)는 하드웨어 액세스와 일부 기본 기능만 처리합니다.
그래픽 드라이버의 경우 이는 다음과 같습니다.
- 텍스트 모드
- 프레임 버퍼 그래픽 모드("이 영역 복사"와 같은 간단한 2D 가속 포함)
- 명령 대기열 렌더링을 위한 인터페이스
이 모든 작업은 특히 다른 구성 요소를 재사용하는 경우 몇 킬로바이트 내에 달성할 수 있습니다.
OpenGL 렌더링, 셰이더 컴파일 및 제출과 같은 복잡한 작업은 시스템 안정성을 손상시킬 수 있으므로 커널에서 처리되지 않습니다. 대신 이러한 작업은 일반적으로 X 서버나 3D 그래픽을 사용하는 프로그램과 같은 별도의 프로세스에서 처리되며 명령 목록은 드라이버로 전송되며 드라이버는 이를 단순히 카드로 전달합니다. 다시 말하지만, 드라이버는 구성 요소를 많이 재사용합니다.
Windows에서는 구성 요소화에 따른 이점이 없기 때문에 이 모든 것을 커널 모듈(.sys)로 압축하는 것이 아이디어입니다(다양한 공급업체는 일반적으로 함께 작동하지 않음).
답변2
글쎄요, 필요한 드라이버 파일의 대부분이 실제로 Linux에 있기 때문입니다. 그래서 이 그래픽 장치에 필요한 파일이 많지 않습니다. Windows의 경우 이러한 장치 드라이버가 코어에 포함되지 않을 수 있으므로 더 많은 드라이버 파일이 필요합니다. 따라서 크기도 더 큽니다.