Skip to content

Loadable kernel module

적재 가능 커널 모듈 (Loadable kernel module, LKM)은 운영 체제에서 실행 중인 커널을 확장하는 코드를 포함하는 목적 파일이다. LKM은 일반적으로 새로운 하드웨어(장치 드라이버)나 파일시스템을 위한 지원 또는 시스템 호출을 추가하는데 사용한다. LKM에 의해 제공되는 기능이 더 이상 요구되지 않으면 메모리와 자원을 할당 해제하기 위해 언로드시킬 수 있다.

대부분의 현 유닉스 계열 운영 체제와 마이크로소프트 윈도우는 적재 가능 커널 모듈들을 지원하지만 FreeBSD의 경우 커널 적재 가능 모듈(kernel loadable module, kld), OS X의 경우 커널 확장(kernel extension, kext), 윈도우 NT의 경우 커널 모드 드라이버(kernel-mode driver)처럼 각기 다른 이름을 사용할 수 있다. 커널 적재 가능 모듈(Kernel Loadable Modules, KLM)이라고도 하며 간단히 커널 모듈(Kernel Modules, KMOD)로도 부른다.

비록 이들이 서로 다른 이름을 사용하고 있기는 하지만 대부분의 유닉스 계열 시스템들과 윈도우(커널-모드 드라이버)는 적재 가능 커널 모듈을 지원한다.

장점

적재 가능 커널 모듈 없이는, 운영 체제는 모든 가능한 예상되는 기능들을 기본 커널에 직접 포함해야 할 것이다. 이것들은 사용되지 않는 동안에도 메모리에 상주함으로써 메모리를 낭비하고 사용자의 리부팅 시간을 늘린다. 적재 가능 커널 모듈을 지원하는 대부분의 운영 체제들은 요구되는 기능들을 지원하기 위해 모듈들을 포함한다.

단점

모듈러 커널에 대한 비판으로써 일명 단편화 패널티가 있다. 베이스 커널은 항상 자신의 설치 루틴들에 의해 실제 인접한 메모리에 언팩되어 있다. 그래서 베이스 커널은 절대 단편화되지 않는다. 만약 모듈들이 삽입되면 새로운 커널 코드 삽입은 커널을 단편화시킬 수 있고 이것은 작은 성능 패널티를 유발할 수 있다.

See also

Favorite site