Linux 커널
Linux 커널(이하 커널)은 Linux OS의 주요 구성요소이자 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스이다. 커널은 두가지 관리 리소스 사이에서 최대한 효과적으로 통신한다.
커널은 OS내에 위치하고 전화기, 노트북, 서버 등 컴퓨터 유형에 관계없이 하드웨어의 모든 주요 기능을 제어한다.
올바르게 구현된 커널은 사용자가 볼 수 없으며 커널 공간이라는 자신만의 작은 작업 공간에서 메모리를 할당하고 저장되는 모든 항목을 추적한다. 커널은 웹 브라우저 및 파일과 같이 사용자가 볼 수 있는 사용자 공간과 따로 존재하며 사용자 공간에 있는 애플리케이션과는 시스템 호출 인터페이스(SCI)를 통해 통신한다.
커널의 기능
- 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지 추적
- 프로세스 관리: 어느 프로세스가 중앙처리장치(CPU)를 언제 얼마나 오랫동안 사용할 지 결정
- 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할 수행
- 시스템 호출 및 보안: 프로세스의 서비스 요청 수신
OS 내에서 커널의 위치
커널과 관련하여 Linux 시스템은 다음과 같은 3개의 레이어로 구성되어 있다.
- 하드웨어: 시스템의 토대가 되는 물리적 머신, 메모리(RAM), 프로세서 또는 CPU, 입출력(I/O) 장치(ex: 스토리지, 네트위킹 및 그래픽)로 구성
- Linux 커널: OS의 핵심 메모리에 상주하며 CPU에 명령을 내리는 SW
- 사용자 프로세스: 실행중인 프로그램. 커널이 관리함. 사용자 프로세스가 모여 사용자 공간을 구성. 사용자 프로세스를 줄여 프로세스라고도 함. 커널은 프로세스 및 서버가 서로 통신(프로세스간 통신, IPC)할 수 있게 도움.
시스템에서 실행되는 코드는 커널모드/사용자모드 중 하나로 CPU에서 실행된다. 커널모드에서 실행 중인 코드는 하드웨어에 무제한 액세스가 가능한 반면, 사용자 모드에서는 CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한한다. 이는 보안, 컨테이너 구축, 가상머신을 위한 권한구분과 같은 복잡한 작업의 토대가 된다.
프로세스가 사용자모드에서 실패할 경우 손상이 제한적이며 커널에 의해 복구될 수 있다. 하지만 커널 프로세스는 메모리와 프로세서 사이에 액세스할 수 있기 떄문에 충돌이 발생하면 시스템 전체가 중지될 수 있다.
또한 Linux 커널은 실시간 패치 적용 중에 계속 작업할 수 있으므로 패치가 보안 수정에 적용되는 동안 다운타임이 발생하지 않는다.
자신이 사용하는 리눅스에서 커널 버전 확인하기
$ uname -r
쉘
쉘이란 운영체제에서 제공하는 명령을 실행하는 프로그램이다. 시스템으로 지원하는 명령어들을 묶어 프로그램화 한 것으로 사용자와 운영체제 사이에서 인터프리터 역할을 한다.
쉘 스크립트 프로그래밍
- 리눅스에서 업무를 자동화하기위해 사용
- C언어와 유사
- 변수, loop문, if문 사용할 수 있음
- 별도로 컴파일하지 않고 텍스트 파일 형태로 바로 실행할 수 있음
- vi 편집기로 작성 가능
'Linux' 카테고리의 다른 글
리눅스 공부를 위한 세팅하기(가상머신에 우분투 설치) 2 (2) | 2023.11.03 |
---|---|
리눅스 공부를 위한 세팅하기(Oracle VM VirtualBox, Ubuntu) 1 (0) | 2023.11.02 |
운영체제(Unix, Linux) (0) | 2023.10.26 |