상세 컨텐츠

본문 제목

[Liunx] 모듈 과 커널

프로그래밍/linux

by 2hansoul 2021. 6. 14. 20:19

본문

반응형

모듈이란?

커널에서 작업해야 하는 기능이 있는데 이를 추가하기 위해서는 커널을 수정해서 재컴파일해야 한다. 하지만 이는 너무 번거로우므로 리눅스와 같은 운영체제에서는 모듈이라는 기능을 제공하여 특정 커널의 기능을 사용하고자 할 때 실시간(동적)으로 추가할 수 있게 하고 있다.

예를 들어, USB 드라이버를 생각해보자. USB를 연결하면, 장치가 추가되었기 때문에 이를 처리하기 위해 커널은 처리를 하게 된다. 하지만 커널이 벤더사마다의 USB 드라이버를 설치해두고 있을리가 없으니 USB 드라이버를 통해 커널에 특정 기능을 추가하여 처리할 수 있도록 한다. 만약 특정 기능을 추가하지 못 한다면 USB를 꽂기 위해 USB 드라이버의 기능을 직접 커널에 추가해서 재컴파일해야하는 번거로움이 생길 것이다...

커널이란?

운영체제(OS, Operating System)의 핵심 부분으로 프로세스, 파일, 네트워크, 장치 등을 관리하는 사용자에게 편리한 인터페이스를 제공해주는 시스템 소프트웨어이다.

Monolithic 커널 : 시스템에 관련된 모든 기능을 커널에 때려박은 형태이다. 모든 기능이 커널에서 동작하기 때문에 기능도 많고 Ring 레벨을 변경할 필요가 없기 때문에 빠르지만 기능을 추가하려면 커널을 수정해서 재컴파일해야 한다는 단점 존재

(Linux는 Monolithic 커널이며, 단점을 해결하기 위해 실시간으로 모듈을 추가할 수 있는 기능을 제공[insmod 명령어])

Micro 커널 : 시스템의 주요 핵심 기능만을 커널에 넣고 그 이외는 프로세스로 돌리는 형태이다. 핵심기능은 커널이 처리해주기 때문에 기능 추가를 원할 때 프로세스만 추가하면 커널을 재컴파일해야 하는 일은 없다. 다만, 핵심기능만 커널에서 사용하기 때문에 Ring 레벨의 변화가 자주 있어 좀 느리다.

Hybrid 커널 : 커널의 본래 역할이 아니더라도 어느정도 커널에 기능을 집어넣은 Mirco 커널이다. 어느정도 기능을 추가하여 기존의 Micro 커널의 단점을 조금은 해결하였다

반응형

관련글 더보기

댓글 영역