Skip to main content

Linux 커널이란 무엇입니까?

Linux Device Drivers Part - 9 : Kernel Symbols and Symbol Tables (유월 2025)

Linux Device Drivers Part - 9 : Kernel Symbols and Symbol Tables (유월 2025)
Anonim

일반 사용자와 하드 코어보다 적은 팬에게 Linux는 운영 체제입니다. 그러나 "Linux"라는 제목은 운영체제를 구동하는 커널을 위해 예약되어 있습니다. 리눅스 커널이 무엇인지 궁금하다면, 새로운 사용자를 염두에두고 그 질문에 대답 해보자.

모드

커널이 무엇인지 설명하기 전에 "사용자 모드"와 "커널 모드"라는 용어를 이해하는 것이 중요합니다. 사용자 모드는 코드 실행시 하드웨어 또는 참조 메모리에 직접 액세스 할 수있는 기능이없는 경우입니다. 하드웨어 및 메모리에 액세스하려면 사용자 모드에서 실행되는 코드가 명령을 시스템 API (Application Programming Interface)에 위임해야합니다. 커널 모드는 실행 코드가 모든 하드웨어에 제한없이 액세스 할 수 있으며 운영 체제에서 가장 신뢰할 수있는 기능을 위해 예약되어 있습니다.

커널이란 무엇입니까?

모든 운영 체제에는 커널이 있습니다. Windows, macOS, iOS, Android, Chrome OS 및 Linux에는 각각 모든 응용 프로그램을 컴퓨터의 실제 하드웨어와 연결하는 하위 수준의 시스템이 있습니다. 커널이 없으면 응용 프로그램 중 어느 것도 실제 컴퓨터를 사용할 수 없습니다. Firefox, Chrome, LibreOffice, MS Office 또는 Outlook과 같은 앱이 작동하지 않습니다. 커널은 또한 프로세스 간 통신 (IPC)을 사용하여 프로세스가 정보를 교환하도록 허용합니다.

(일반적으로 말하면) 세 가지 유형의 커널이 있습니다.

  • 단일체 커널:이 커널은 CPU, 메모리, IPC, 장치 드라이버, 파일 시스템 관리 및 시스템 서버 호출을 포함합니다. 또한 응용 프로그램에 무료 시스템 메모리를 넘기는 책임도 있습니다. 이러한 종류의 커널은 일반적으로 하드웨어 및 멀티 태스킹에 액세스하는 것이 좋습니다.
  • 마이크로 커널: 마이크로 커널은 최소한의 접근 방식을 취하고 CPU, 메모리 및 IPC 만 관리합니다.
  • 하이브리드 커널: 하이브리드 커널은 사용자 또는 커널 모드에서 실행하려는 것을 결정할 수 있습니다. 이것이 두 가지 장점을 모두 제공하지만 하드웨어 제조업체가 실행중인 코드와 하드웨어 사이의 인터페이스 역할을하는 드라이버를 만드는 데 더 많은 것을 요구합니다.

Linux는 오픈 소스 인 Monolithic Kernel을 사용하는 반면, MacOS와 Windows는 모두 Hybrid Kernels를 사용합니다. 리눅스 커널은 Linus Torvalds가 1991 년에 고안 한 것입니다. Torvalds는 현재까지도 Linux 커널의 주요 개발자로 계속 성장하고 있으며 전 세계의 개발자가 Linux 커널에 기여하고 있습니다. 실제로 1,000 개 이상의 회사에서 약 10,000 명의 개발자가 Linux 커널에 기여한 것으로 추산됩니다 (2005 년 추적이 시작된 이래로).

커널은 어디에 있습니까?

터미널 창을 열고 명령을 실행하면 ls / boot,라는 파일이 표시됩니다. vmlinuz-VERSION (여기서 VERSION은 릴리스 이름 또는 번호입니다). vmlinuz 파일은 실제 부팅 가능한 Linux 커널이고 "z"는 커널이 압축되었음을 나타냅니다. 그래서 vmlinux 대신에 vmlinuz가 있습니다.

initrd.img-VERSION, system.map-VERSION 및 config-VERSION (여기서 VERSION은 이름 또는 릴리스 번호 임)과 같은 다른 중요한 커널 파일이 / boot 디렉토리 내에 있습니다. 이러한 다른 파일은 다음과 같은 목적으로 사용됩니다.

  • initrd: 실제 커널 파일을 추출하고 실행하는 작은 램 디스크로 사용됩니다.
  • system.map: 커널을 로딩하기 전에 메모리 관리에 사용됩니다.
  • 구성:로드 할 옵션과 모듈을 커널에 지시합니다.

모듈

모듈이 없다면, 커널은 그다지 유용하지 않을 것이다. 모듈은 모든 시스템 메모리를 사용하지 않고도 하드웨어와 통신하는 데 필요한 드라이버를 효과적으로 작동시킵니다. 모듈은 또한 주변 장치와의 통신, 파일 시스템 관리, 보안 등과 같은 기능을 커널에 추가합니다. 다음 명령을 사용하여 모듈을 커널에 나열, 추가 및 제거 할 수 있습니다.

  • lsmod 현재로드 된 모든 커널 모듈을 나열합니다.
  • 인사 실행중인 커널에 커널 모듈을로드합니다.
  • rmmod 실행중인 커널에서 모듈을 언로드합니다.

따라서 간단한 명령을 통해 Linux 커널을 매우 유연하게 볼 수 있습니다.

현재 커널

이 글을 쓰는 시점에서, 안정적인 리눅스 커널은 4.18.5이지만 모든 리눅스 배포판이 최신 커널을 포함하지는 않습니다. 사실, 업데이트 된 Elementary OS 데스크탑 배포판은 커널 4.15.0-30을 실행합니다. 그 번호는 무엇을 의미합니까? 초등 OS의 최신 커널의 경우 다음을 의미합니다.

  • 4는 주요 버전입니다.
  • 15는 부 버전입니다.
  • 0-30은 개정판입니다.

kernel.org에서 다른 버전의 Linux 커널을 다운로드하여 직접 컴파일 할 수도 있습니다. 리눅스 커널을 컴파일하는 것은 그들이하는 일을 정말로 아는 사람들에게 가장 좋은 일이다. 부적절하게 컴파일 된 커널은 시스템을 부팅 할 수 없게 만듭니다. 따라서이 레벨에서 코드를 컴파일하는 어려운 작업에 뛰어들 준비가되어 있지 않으면 선택 배포판에서 제공되는 기본 커널을 사용하십시오.