BACKEND/LINUX

Kernel, Kernel Module

이-프 2024. 7. 3. 11:47

커널이란 ?

  • OS에서 가장 핵심적인 역할인 자원(메모리, 프로세서 등)을 관리하고, 시스템이 원활하게 돌아갈 수 있도록 제어해주는 공간을 의미
  • ex) 리눅스(OS)라 하는 것도, 실제적으론 리눅스란 os의 커널 이름을 말하는 것이고, 이게 확장된 의미로 사용되어 현재의 ‘리눅스’라는 OS로 지칭하게 된 것
  • 메모리에 상주하고, CPU에 명령을 내리는 소프트웨어
  • ⇒ 하드웨어와 프로세스를 잇는 핵심 인터페이스이다. (통신 효과적으로 하기 ! )

 

커널 모듈이란?

  • 요청 시, 커널에 로드 및 언로드할 수 있는 코드 조각
  • 시스템을 다시 부팅하지 않고, 커널에 로드하거나, 언로드할 수 있는 코드
  • 관리자가 필요할 때마다 장치 드라이버를 통합하거나, 새로운 커널 기능을 활성화하는 데 유용하다

 

💡 초창기의 커널은 ?

  • 지원할 하드웨어가 많지 않았어서, 커널에 하드웨어를 지원하는 코드를 원래 모두 넣어뒀었음.
  • 하지만, 운영체제가 무거워지자, 하드웨어를 제어하는 코드 중에서, 필요할 때만 가끔씩 사용하는 코드를 별도로 보관하게 됐음 ⇒ “모듈”
  • 모듈은 작은 단위이기에, 커널 컴파일에 비해 훨씬 적은 시간이 소요되며, 컴파일 이후에 적재와 제거가 가능하다는 장점이 있다.

 

💡 만약 모듈이 없다면 ?

  • 모놀리식 커널을 빌드하고, 커널 이미지에 직접 새로운 기능을 추가해야함
  • 더 큰 커널을 사용하는 것 외에도, 새로운 기능을 추가할 때마다 커널을 다시 빌드하고 재부팅해야함

⇒ 그러므로 모듈을 사용하여 컴파일 시간을 단축하는 것을 목표로한다.

  • 실제로, 모듈을 사용하면, Linux 커널이 실행되는 동안 코드를 추가할 수 있다.

 

커널 컴파일은 언제할까?

  • 커널은 시스템을 운영하기 위한 가장 기본적인 코드가 포함되어 있으므로, 시스템 운영을 위해 필수적인 작업 !

ex) 실제로 회사에서 제품을 설치하기 위해 서버에 CentOS를 설치한 후(CentOS 설치시, 커널도 동시에 설치됨), 커널에 커널 소스(~.tar)를 압축해서 풀고, 내부 sh파일을 실행시켜 응용프로그램 제품을 설치했음. 이후, 이를 매니징하는 단계에서 로그를 확인했을 때, Kernel에서 지속적으로 Notice 로그를 보여주는 것을 확인할 수 있음 !

'BACKEND > LINUX' 카테고리의 다른 글

Sudo, Su, - 를 활용한 Linux 명령어 사용  (0) 2024.07.02