Linux 커널이란 무엇이며 어떤 기능을합니까?
1300 만 개가 넘는 코드 라인을 가진 리눅스 커널은 세계에서 가장 큰 오픈 소스 프로젝트 중 하나이지만 커널이란 무엇인가??
그래서 커널이란 무엇인가??
커널은 컴퓨터의 하드웨어와 인터페이스하는 가장 쉽게 교체 할 수있는 소프트웨어입니다. "사용자 모드"에서 실행중인 모든 응용 프로그램을 물리적 하드웨어로 인터페이스하고 서버라고하는 프로세스가 프로세스 간 통신 (IPC)을 사용하여 서로간에 정보를 얻을 수 있도록합니다..
다른 종류의 커널
물론 처음부터 커널을 빌드 할 때 커널을 빌드하는 여러 가지 방법과 아키텍처 고려 사항이 있습니다. 일반적으로 대부분의 커널은 모 놀리 식, 마이크로 커널 및 하이브리드의 세 가지 유형 중 하나에 속합니다. Linux는 모 놀리 식 커널이지만 OS X (XNU) 및 Windows 7은 하이브리드 커널을 사용합니다. 세 가지 카테고리를 둘러보고 나중에 자세히 살펴 보겠습니다..
이미지 작성자 : 업타운 팝콘
마이크로 커널
마이크로 커널은 CPU, 메모리 및 IPC에 대한 관리 만 수행합니다. 컴퓨터의 다른 모든 것들은 액세서리로 간주되어 사용자 모드에서 처리 될 수 있습니다. 마이크로 커널은 운영 체제가 여전히 같은 방식으로 하드웨어에 액세스하려고하는 한 비디오 카드 또는 운영 체제를 변경하더라도 걱정할 필요가 없으므로 이식성의 이점이 있습니다. 마이크로 커널은 메모리와 설치 공간 모두에있어 매우 작은 설치 공간을 가지고 있으며 특정 프로세스 만 감독자 모드로 높은 권한을 갖지 않는 사용자 모드에서 실행되기 때문에보다 안전합니다..
찬성
- 이식성
- 작은 설치 공간
- 작은 메모리 공간
- 보안
단점
- 드라이버는 드라이버를 통해 더욱 추상화됩니다.
- 드라이버가 사용자 모드에 있기 때문에 하드웨어가 느리게 반응 할 수 있습니다.
- 프로세스는 정보를 얻기 위해 대기열에서 대기해야합니다.
- 프로세스가 대기하지 않고 다른 프로세스에 액세스 할 수 없습니다.
모 놀리 식 커널
모 놀리 식 커널은 CPU, 메모리 및 IPC뿐만 아니라 장치 드라이버, 파일 시스템 관리 및 시스템 서버 호출을 포함하기 때문에 마이크로 커널의 반대입니다. 모 놀리 식 커널은 하드웨어 나 멀티 태스킹에 액세스하는 경향이 있습니다. 프로그램이 메모리 나 다른 프로세스에서 정보를 가져와야하는 경우 프로그램에 액세스하는 데 직접적인 직선이 있으며 작업을 완료하기 위해 대기열에서 기다릴 필요가 없기 때문입니다. 그러나 관리자 모드에서 실행되는 것이 많을수록 시스템이 제대로 작동하지 않을 경우 시스템을 중단시킬 수있는 일이 많아 지므로 문제가 발생할 수 있습니다.
찬성
- 프로그램을위한 하드웨어에 대한보다 직접적인 액세스
- 서로간에 통신하는 프로세스가 더 쉽습니다.
- 장치가 지원되는 경우 추가 설치없이 작동해야합니다.
- 프로세서 시간 대기열이 없으므로 프로세스가 더 빠르게 반응합니다.
단점
- 대규모 설치 공간
- 대용량 메모리 풋 프린트
- 모든 것이 감독자 모드에서 실행되므로 보안 수준이 낮습니다.
Flickr에서 schoschie를 통해 이미지
하이브리드 커널
하이브리드 커널은 사용자 모드에서 실행할 항목과 감독자 모드에서 실행할 항목을 선택하고 선택할 수있는 기능이 있습니다. 때때로 장치 드라이버 및 파일 시스템 I / O 같은 것들이 사용자 모드에서 실행되며 IPC와 서버 호출은 감독자 모드로 유지됩니다. 이것은 두 가지 장점을 모두 제공하지만 드라이버의 모든 책임은 드라이버의 책임이기 때문에 하드웨어 제조업체의 작업이 더 많이 필요할 것입니다. 또한 마이크로 커널에 내재 된 대기 시간 문제 중 일부가있을 수 있습니다.
찬성
- 개발자는 사용자 모드에서 실행되는 내용과 감독자 모드에서 실행되는 내용을 선택하여 선택할 수 있습니다.
- 모 놀리 식 커널보다 작은 설치 풋 프린트
- 다른 모델보다 유연함
단점
- 마이크로 커널과 동일한 프로세스 지연으로 어려움을 겪을 수 있습니다.
- 장치 드라이버는 사용자가 관리해야합니다 (일반적으로)
리눅스 커널 파일의 위치?
커널 파일은 Ubuntu에서 / boot 폴더에 저장되며 vmlinuz라고 불립니다.-번역. vmlinuz라는 이름은 유닉스 세계에서 유래했는데, 60 년대에 유닉스를 "유닉스"라고 부르기 시작했다. 그래서 리눅스는 90 년대에 처음으로 커널을 "linux"라고 부르기 시작했다..
보다 쉬운 멀티 태스킹 능력을 위해 가상 메모리가 개발되었을 때 커널의 가상 메모리를 지원한다는 것을 보여주기 위해 "vm"이 파일의 앞부분에 붙여졌습니다. 잠시 동안 리눅스 커널은 vmlinux라고 불렀지 만, 커널이 너무 커져서 사용 가능한 부트 메모리에 맞지 않아 커널 이미지가 압축되었고 엔딩 x가 z로 변경되어 zlib 압축으로 압축되었음을 나타냅니다. 이 같은 압축이 항상 사용되는 것은 아니며, 종종 LZMA 또는 BZIP2로 대체되며, 일부 커널은 단순히 zImage.
버전 번호는 A.B.C.D 형식으로 표시되며 A.B는 아마 2.6이고 C는 사용자의 버전이며 D는 패치 또는 수정 사항을 나타냅니다.
/ boot 폴더에는 initrd.img-version, system.map-version 및 config-version이라는 매우 중요한 다른 파일도 있습니다. initrd 파일은 실제 커널 파일을 추출하고 실행하는 작은 RAM 디스크로 사용됩니다. system.map 파일은 커널이 완전히로드되기 전에 메모리 관리에 사용되며, config 파일은 커널 이미지가 컴파일 될 때 커널 이미지로로드 할 옵션과 모듈을 커널에 알려줍니다.
리눅스 커널 아키텍처
Linux 커널은 모 놀리 식이기 때문에 다른 유형의 커널에 비해 가장 큰 점유 공간과 가장 복잡합니다. 이것은 초기 리눅스에서 논쟁의 대상이었던 설계 기능이었으며 획일적 인 커널이 갖는 고유 한 설계 결함 중 일부를 여전히 가지고 있습니다.
리눅스 커널 개발자들이 이러한 결점을 해결하기 위해 한 가지는 런타임에로드 및 언로드 할 수있는 커널 모듈을 만드는 것이 었습니다. 즉, 커널 기능을 즉시 추가하거나 제거 할 수 있습니다. 이는 저수준 가상화와 같은 서버 프로세스를 실행하는 모듈을 포함시킴으로써 커널에 하드웨어 기능을 추가하는 것뿐만 아니라 경우에 따라 컴퓨터를 재부팅 할 필요없이 전체 커널을 교체 할 수도 있습니다.
재부팅 할 필요없이 Windows 서비스 팩으로 업그레이드 할 수 있다고 상상해보십시오 ...
커널 모듈
Windows에 이미 사용 가능한 모든 드라이버가 설치되어 있고 필요한 드라이버를 켜야 만한다면 어떻게 될까요? 이것은 본질적으로 리눅스 커널에서 커널 모듈이하는 일입니다. 로드 가능한 커널 모듈 (LKM)이라고도하는 커널 모듈은 사용 가능한 모든 메모리를 사용하지 않고도 모든 하드웨어에서 커널을 작동시키는 데 필수적입니다.
일반적으로 모듈은 장치, 파일 시스템 및 시스템 호출과 같은 기능을 기본 커널에 추가합니다. LKM은 파일 확장자가 .ko이고 일반적으로 / lib / modules 디렉토리에 저장됩니다. 모듈성으로 인해 menuconfig 명령으로 시작하거나 / boot / config 파일을 편집하여 모듈을로드하거나로드하지 않도록 모듈을 설정하거나 modprobe를 사용하여 모듈을로드 및 언로드 할 수 있으므로 커널을 쉽게 사용자 정의 할 수 있습니다 명령.
타사 및 폐쇄 소스 모듈은 Ubuntu와 같은 일부 배포판에서 사용할 수 있으며 모듈의 소스 코드를 사용할 수 없기 때문에 기본적으로 설치되지 않을 수 있습니다. 소프트웨어 개발자 (예 : nVidia, ATI 등)는 소스 코드를 제공하지 않고 자체 모듈을 만들고 필요한 .ko 파일을 컴파일하여 배포합니다. 이 모듈은 맥주처럼 무료이지만 연설에서와 같이 무료가 아니며 유지 보수자가 비 자유 소프트웨어를 제공하여 커널을 "오염"시키므로 일부 배포판에는 포함되어 있지 않습니다..
커널은 마술이 아니지만 모든 컴퓨터가 제대로 작동하는 데 필수적입니다. 리눅스 커널은 커널 레벨에서 드라이버를 포함하고 많은 것들이 "즉시"지원되기 때문에 OS X 및 Windows와 다릅니다. 다행히도 소프트웨어와 하드웨어가 어떻게 작동하는지 그리고 컴퓨터를 부팅하는 데 필요한 파일에 대해 조금 더 알게되기를 바랍니다..
Kernel.org
이미지 작성자 : ingridtaylar