it-swarm-ko.tech

커널 내부에서 컴파일 된 커널 모듈의 이점?

커널 모듈을 커널로 컴파일하면 어떤 이점이 있습니까 (로드 가능한 모듈 대신)?

19
uray

내가 아는 한 속도 차이는 없습니다.

할당 단위가 한 페이지이므로 몇 kB의 커널 메모리를 얻을 수 있다고 생각합니다. 따라서 일반적인 아키텍처에서 각 모듈은 예상되는 모듈 당 평균 약 2kB (½ 페이지)를 낭비합니다. 임베디드 시스템에서도 그다지 중요하지 않습니다. 또한 커널과 동일한 방식으로 모듈을 압축 할 수 있으므로 약간의 디스크 공간을 확보 할 수 있습니다. 이는 스토리지가 거의없는 임베디드 시스템에서 더 적합 할 수 있습니다.

모듈을 모두 제거 할 수 있다면 약간의 커널 메모리 (모듈 로더 필요 없음), 디스크 공간 (모듈 유틸리티 필요 없음) 및 시스템 복잡성 (모듈로드를 배포에 기능으로 포함 할 필요 없음)을 절약 할 수 있습니다. ). 이러한 점은 하드웨어를 확장 할 수없는 일부 임베디드 디자인에서 매우 매력적입니다.

몇 가지 잠재적 인 이점. 성능은 논쟁의 여지가 있습니다. 동적 로더와 관련된 일부 런타임 오버 헤드를 피할 수 있지만 실시간 스케줄러에 의존하지 않는 한 큰 문제는 아닐 것입니다.

시스템에서 큰 페이지를 활용하는 경우 더 큰 정적 커널 이미지를 만들면 페이지 설명자 캐시를보다 효율적으로 사용할 수 있습니다. 일부 시스템은 커널을 '케이지'하여 하나의 메모리 지역에 단단히 압축하여 사소한 페이지 오류로 인한 지연을 어느 정도 완화 할 수 있습니다.

구조적으로 One Big Image를 제공하는 것이 적합 할 수 있습니다. 독립 모듈 수가 적을수록 유지 관리가 더 쉽고 유연성 손실이 중요하지 않다고 주장합니다. 이런 종류의 추론의 대부분은 스타일과 연습 문제로 모험을 시작합니다.

4
mfe

때로는 필요합니다. vital 드라이버 (예 : SCSI 드라이버)를 모듈로 컴파일하면 시스템이 부팅되지 않습니다.

모듈로 컴파일하지 않는 아니 에 대한 또 다른 좋은 후보는 루트 파티션의 파일 시스템 유형입니다. 커널이 ext3/lib/modules/ 읽는 것을 이해하지 못한다면 어떻게 모듈을로드합니까?

모듈을 사용하려면 커널이 커널 모듈을 읽고로드하기 위해 시스템에 대해 충분히 알아야합니다. 그것을 사용하고 시행 착오 :-)

2
nc3b

커널 내부의 내장 하드웨어에 대한 모든 드라이버를 정적으로 컴파일합니다. 예외는 영구적이지 않은 하드웨어 (예 : USB 연결 하드웨어)입니다.

내 하드웨어 구성이 곧 변경되지 않을 것이므로 모듈에 신경 쓰지 않습니다.

2
Stephane