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