Linux 커널은 컴퓨터의 하드웨어와 인터페이스하는 가장 낮은 수준의 쉽게 교체 가능한 소프트웨어입니다. 커널은 "사용자 모드"에서 실행되는 모든 응용 프로그램을 물리적 하드웨어에 연결하고 프로세스가 다음을 사용하여 서로 정보를 얻을 수 있도록 합니다. 프로세스 간 통신.
이 기사의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
1,300만 줄 이상의 코드가 포함된 Linux 커널은 세계에서 가장 큰 오픈 소스 프로젝트 중 하나입니다.
그럼 커널은 뭔가요?
커널은 컴퓨터의 하드웨어와 인터페이스하는 가장 낮은 수준의 쉽게 교체 가능한 소프트웨어입니다. 이는 "사용자 모드"에서 실행되는 모든 애플리케이션을 물리적 하드웨어에 연결하는 역할을 하며 프로세스(서버라고 함)가 프로세스 간 통신(IPC)을 사용하여 서로 정보를 얻을 수 있도록 합니다.
다양한 유형의 커널
물론 커널을 처음부터 빌드할 때 커널을 빌드하는 방법과 아키텍처 고려 사항이 다양합니다. 일반적으로 대부분의 커널은 모놀리식, 마이크로커널, 하이브리드의 세 가지 유형 중 하나에 속합니다. Linux는 모놀리식 커널인 반면, OS X(XNU)와 Windows 7은 하이브리드 커널을 사용합니다. .
모놀리식 커널
모놀리식 커널은 CPU, 메모리, IPC뿐만 아니라 장치 드라이버, 파일 시스템 관리, 시스템 서버 호출 등도 포함한다는 점에서 마이크로커널과 반대입니다. 모놀리식 코어는 하드웨어 액세스 및 멀티태스킹에 더 나은 경향이 있습니다. 프로그램이 메모리나 실행 중인 다른 프로세스에서 정보를 가져와야 하는 경우 작업이 완료될 때까지 대기열에서 기다리는 대신 액세스할 수 있는 더 직접적인 회선이 있기 때문입니다. 그러나 하이퍼바이저 모드에서 더 많은 항목이 실행될수록 오작동할 경우 더 많은 항목이 충돌할 수 있으므로 문제가 발생할 수 있습니다.
장점
프로그램 하드웨어에 더 직접적으로 접근 가능
프로세스 간 통신이 더 쉬워짐
장치가 지원되는 경우 추가 설치가 필요하지 않음
프로세서 시간이 없으므로 프로세스가 더 빠르게 반응 대기열
단점
큰 설치 공간
큰 메모리 공간
모든 것이 관리자 모드에서 실행되기 때문에 안전하지 않음
Linux 커널 파일은 어디에 있습니까?
Ubuntu의 커널 파일은 /boot 폴더에 저장되며 이름은 vmlinuz-version입니다. vmlinuz라는 이름은 유닉스 세계에서 유래되었습니다. 그들은 60년대에 커널을 "unix"라고 불렀습니다. 그래서 Linux는 90년대에 처음 개발되었을 때 커널을 "linux"라고 부르기 시작했습니다.
더 쉬운 멀티태스킹 기능을 제공하기 위해 가상 메모리가 개발되었을 때 커널이 가상 메모리를 지원한다는 것을 나타내기 위해 파일 앞에 "vm"을 붙였습니다. 한동안 리눅스 커널을 vmlinux라고 불렀으나 커널이 너무 커져 사용 가능한 부팅 메모리에 맞지 않아 커널 이미지를 압축하고 끝 x를 az로 변경하여 zlib 압축을 사용하여 압축한 것을 보여줍니다. 이 압축은 항상 사용되는 것은 아니며 종종 LZMA 또는 BZIP2가 대신 사용되며 일부 커널에서는 간단히 zImage라고 부릅니다.
버전 번호는 ABCD 형식이며 AB는 2.6일 것입니다. C는 버전, D는 패치 또는 핫픽스를 의미합니다.
/boot 폴더에는 initrd .img-version이라는 또 다른 매우 중요한 파일이 있습니다. , system.map-version 및 config-version. initrd 파일은 실제 커널 파일을 추출하고 실행하기 위한 작은 RAM 디스크로 사용됩니다. system.map 파일은 커널이 완전히 로드되기 전에 메모리 관리에 사용되며, 구성 파일은 커널을 컴파일할 때 커널 이미지에 로드할 옵션과 모듈을 커널에 알려줍니다.
Linux 커널 아키텍처
Linux 커널은 모놀리식 커널이므로 다른 유형의 커널에 비해 설치 공간이 크고 복잡합니다. 이는 Linux 초기에 상당한 논쟁을 불러일으킨 설계 기능이었으며 여전히 모놀리식 커널에 내재된 동일한 설계 결함으로 인해 어려움을 겪고 있습니다.
Linux 커널 개발자가 이러한 결함을 해결하기 위해 수행한 작업 중 하나는 런타임에 로드 및 언로드할 수 있는 커널 모듈을 만드는 것입니다. 즉, 즉시 커널에서 기능을 추가하거나 제거할 수 있습니다. 이는 서버 프로세스(예: 저수준 가상화)를 실행하는 모듈을 포함하여 커널에 하드웨어 기능을 추가하는 것뿐만 아니라 경우에 따라 컴퓨터를 재부팅할 필요 없이 전체 커널을 교체할 수도 있습니다.
재부팅하지 않고도 Windows 서비스 팩으로 업그레이드할 수 있다고 상상해보세요...
커널 모듈
Windows에 사용 가능한 모든 드라이버가 이미 설치되어 있고 필요한 드라이버만 열면 어떻게 됩니까? 이는 기본적으로 Linux에서 커널 모듈이 수행하는 작업입니다. LKM(로드 가능한 커널 모듈)이라고도 하는 커널 모듈은 사용 가능한 메모리를 모두 소모하지 않고 모든 하드웨어에서 커널을 계속 실행하는 데 중요합니다.
모듈은 일반적으로 장치, 파일 시스템, 시스템 호출과 같은 기본 커널에 기능을 추가합니다. LKM의 파일 확장자는 .ko이며 일반적으로 /lib/modules 디렉터리에 저장됩니다. 모듈식 특성으로 인해 부팅 중에 menuconfig 명령을 사용하여 로드하거나 로드하지 않을 모듈을 설정하거나 /boot/config 파일을 편집하여 커널을 쉽게 사용자 정의할 수 있습니다. 또는 modprobe 명령을 사용하여 모듈을 동적으로 로드 및 언로드할 수 있습니다.
타사 및 폐쇄 소스 모듈은 일부 배포판(예: Ubuntu)에서 사용할 수 있으며 모듈의 소스 코드를 사용할 수 없기 때문에 기본적으로 설치되지 않을 수 있습니다. 소프트웨어 개발자(예: nVidia, ATI 등)는 소스 코드를 제공하지 않지만 대신 자체 모듈을 구축하고 배포에 필요한 .ko 파일을 컴파일합니다. 이러한 모듈은 맥주에서는 무료이지만 음성만큼 무료는 아니므로 일부 배포판에는 이러한 모듈이 포함되지 않습니다. 왜냐하면 관리자는 이 모듈이 비자유 소프트웨어를 제공함으로써 커널을 "오염"시킨다고 믿기 때문입니다.
커널은 마법이 아니지만 제대로 작동하는 컴퓨터에 필수적입니다. Linux 커널은 커널 수준 드라이버를 포함하고 "즉시 사용 가능한" 많은 기능을 지원한다는 점에서 OS X 및 Windows와 다릅니다. 소프트웨어와 하드웨어가 함께 작동하는 방식과 컴퓨터를 시작하는 데 필요한 파일에 대해 자세히 알아보시기 바랍니다.
위 내용은 리눅스 커널이 무슨 뜻인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!