Post

Linux 커널

1. Linux 커널이란

Linux 커널은 Linux 운영 체제(OS)의 주요 구성 요소이자 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스이다. 그리고 두 가지 관리 리소스 사이에서 최대한 효과적으로 통신한다.

커널이라는 이름은 단단한 껍질 안의 씨앗처럼 OS 내에 위치하고 전화기, 노트북, 서버 또는 컴퓨터 유형에 관계없이 하드웨어의 모든 주요 기능을 제어하기 때문에 붙은 이름이다.

2. 커널의 기능

커널은 다음과 같은 4가지 기능을 수행한다.

  • 메모리 관리: 메모리가 어디에서 무엇을 저장하는데 얼마나 사용되는지를 추적한다.

  • 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정한다.

  • 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다.

  • 시스템 호출 및 보안: 프로세스의 서비스 요청을 수신한다.

올바르게 구현된 커널은 사용자가 볼 수 없으며 커널 공간이라는 자신만의 작은 작업 공간에서 메모리를 할당하고 저장되는 모든 항목을 추적한다.

웹 브라우저 및 파일과 같이 사용자가 볼 수 있는 것을 사용자 공간이라고 한다. 이러한 애플리케이션은 시스템 호출 인터페이스(SCI)를 통해 커널과 통신한다.

커널은 강력한 경영진(하드웨어)을 위해 분주하게 일하는 개인 비서이다. 비서의 할 일은 직원 및 대중(사용자)으로부터 수신되는 메시지 및 요청(프로세스)을 경영진에게 전달하고, 어디에 무엇이 저장되어 있는지 기억(메모리)하고, 특정한 시간에 누가 경영진을 얼마 동안 만날 수 있는지 결정하는 것이다.

3. OS 내에서 커널의 위치

커널과 관련하여 Linux 시스템은 다음과 같은 3개 레이어로 구성되어 있다고 볼 수 있다.

  • 하드웨어: 시스템의 토대가 되는 물리적 머신으로, 메모리(RAM)와 프로세서 또는 중앙 처리 장치(CPU) 그리고 입출력(I/O) 장치(예: 스토리지, 네트워킹 및 그래픽)로 구성된다. CPU는 계산을 수행하고 메모리를 읽고 쓴다.

  • Linux 커널: OS의 핵심이다. 메모리에 상주하며 CPU에 명령을 내리는 소프트웨어이다.

  • 사용자 프로세스: 실행 중인 프로그램으로, 커널이 관리한다. 사용자 프로세스가 모여 사용자 공간을 구성한다. 사용자 프로세스를 단순히 프로세스라고도 한다. 또한, 커널은 이러한 프로세스 및 서버가 서로 통신(프로세스 간 통신 또는 IPC라고 함)할 수 있도록 해준다.

시스템에서 실행되는 코드는 커널 모드 또는 사용자 모드라는 두 가지 모드 중 하나로 CPU에서 실행된다. 커널 모드에서 실행 중인 코드는 하드웨어에 무제한 액세스가 가능한 반면, 사용자 모드에서는 CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한한다.

메모리도 이와 유사하게 구분된다(커널 공간 및 사용자 공간). 이러한 두 가지 작은 세부 사항이 보안, 컨테이너 구축 및 가상 머신을 위한 권한 구분과 같은 복잡한 작업의 토대가 된다.

또한, 이는 프로세스가 사용자 모드에서 실패할 경우 손상이 제한적이며 커널에 의해 복구될 수 있음을 의미한다. 그러나 커널 프로세스는 메모리와 프로세서에 액세스할 수 있기 때문에 충돌이 발생하면 시스템 전체가 중지될 수 있다.

안전 장치가 마련되어 있고 경계를 넘기 위해서는 권한이 필요하기 때문에, 사용자 프로세스 충돌은 일반적으로 큰 문제를 유발하지는 않는다.

또한 Linux 커널은 실시간 패치 적용 중에 계속 작업할 수 있으므로 패치가 보안 수정에 적용되는 동안 다운타임이 발생하지 않는다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.