728x90
Kernel은 Linux OS의 주요 구성 요소이다. 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스. 두 가지 관리 리소스 사이에서 최대한 효과적으로 통신한다.
- Linux OS의 구성
- 하드웨어 : 시스템의 토대가 되는 물리적 머신. 메모리(RAM)와 프로세서 또는 중앙 처리 장치(CPU) 그리고 입출력 장치로 구성된다.
- Linux 커널 : OS의 핵심. 메모리에 상주하며 CPU에 명령을 내리는 소프트웨어
- 사용자 프로세스 : 실행 중인 프로그램으로, 커널이 관리한다. 사용자 프로세스가 모여 사용자 공간을 구성한다. 커널은 프로세스와 서버가 서로 통신할 수 있도록 해준다. 이러한 통신을 프로세스 간 통신 또는 IPC라고 한다.
Linux에서 커널과 다른 구성 요소들과의 관계를 가볍게 비유하자면 다음과 같다.
- 하드웨어 : 경영진
- 커널 : 경영진을 위해 일하는 비서
- 사용자 : 직원 및 대중
- 프로세스 : 사용자로부터 수신되는 메시지 및 요청
- 메모리 : 어디에 무엇이 저장되어 있는지 기억
커널은 사용자로부터 수신되는 프로세스를 하드웨어에 전달하고, 어디에 무엇이 저장되어 있는지 기억하고, 특정한 시간에 누가 하드웨어를 사용할 수 있는지 결정한다.
- 커널의 기능
- 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지, 메모리를 할당하고 저장되는 모든 항목을 추적한다.
- 프로세스 관리 : 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지 결정한다.
- 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다.
- 시스템 호출 및 보안 : 프로세스의 서비스 요청을 수신한다.
- 커널 공간 / 사용자 공간
메모리적으로 커널 공간과 사용자 공간을 구분할 수 있다.
- 커널 공간 : 커널의 작업 공간. 커널은 보호된 메모리 공간과 디바이스의 하드웨어에 모두 접근할 수 있는 권한을 포함하여 elevated 시스템 상태에서 발견된다. 이 시스템 상태와 메모리 공간을 모두 커널 공간이라고 한다. 커널 공간 내에서 하드웨어 및 시스템 서비스에 대한 핵심 액세스가 관리되고, 나머지 시스템에 대해 서비스로서 제공된다.
- 사용자 공간 : 웹 브라우저 및 파일과 같이 사용자가 볼 수 있는 것. 이러한 어플리케이션은 시스템 호출 인터페이스(SCI)를 통해 커널과 통신한다.
- 커널 모드 / 사용자 모드
시스템에서 실행되는 코드는 커널 모드 또는 사용자 모드라는 두 가지 모드 중 하나로 CPU에서 실행된다.
- 커널 모드 : 커널 모드에서 실행 중인 코드는 하드웨어에 무제한 액세스 가능.
- 사용자 모드 : CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한.
→ 프로세스가 사용자 모드에서 실패할 경우 손상이 제한적이며, 커널에 의해 복구될 수 있지만 / 커널 프로세스에서 충돌이 발생하면 시스템 전체가 중지될 수 있다. (커널 프로세스가 메모리와 프로세서에 액세스 할 수 있기 때문)
참고
728x90
'Dev > Linux' 카테고리의 다른 글
[Linux] How to Secure A Server (0) | 2022.09.10 |
---|---|
[Linux] Troubleshoot Slow Server (1) | 2022.09.09 |
[Linux] Network commands - curl, wget (0) | 2022.08.25 |
[Linux] soft link와 hard link의 차이점 (0) | 2022.08.23 |
[Ansible] Ansible playbook example - 3 (0) | 2022.08.19 |
댓글