[Linux] 커널이란?

sz L·2024년 3월 26일
0

OS

목록 보기
5/5

컴퓨터는 하드웨어와 소프트웨어로 구분할 수 있다

하드웨는 물리적으로 만질 수 있는 키보드, 모니터, 본체 등이 있다.
소프트웨어는 운영체제(Linux, MacOS, Windows 등)와 응용프로그램(Excel, Chrome등)이 있다.

그리고 운영체제에는 커널(Kernel)과 시스템 프로그램으로 구분된다.

커널

운영체제의 핵심부분으로 주로 디바이스 관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공과 같은 기능을 관리하는 등, 컴퓨터의 자원을 관리한다.

커널은 항상 컴퓨터 자원만 바라보고 있어 사용자와 직접적인 상호작용은 하지 않는다.
따라서 사용자와 상호작용을 위해 필요한 것이 시스템 프로그램(shell)이다.

위 그림과 같이 커널의 목표는 컴퓨터의 물리적(하드웨어) 자원과 추상화 자원을 관리하는 것이다.

물리적 자원인 하드웨어에 접근하기는 너무 복잡하고 어렵기 때문에 물리적 자원을 추상화하여 사용자가 보다 쉽게 접근하기 위해 커널이 필요함

User Space엔 C/C++과 같은 컴퓨팅 언어로 작성된 프로그램 파일이 존재(Task).
Task엔 사용자의 명령이 담겨있다.

Kernel Space와 User Space 사이엔 System Call Interface가 있다.
Task가 Kernel이 관리하는 자원에 접근해야 한다면, System Call Interface를 통해 Kernel Space의 자원 관리자에게 요청이 전달됨.
또, 커널의 각 자원 관리자는 사용자의 요청에 맞게 알맞는 하드웨어에 사용자 명령을 전달하고 작업을 수행한다.

커널을 구성하는 자원 관리자

  • 태스크(Task) 관리자
    물리적 자원인 CPU를 추상적 자원인 Task로 제공
  • 메모리(Memory) 관리자 
    물리적 자원인 메모리를 추상적 자원인 Page 또는 Segement로 제공

  • 파일 시스템(File System) 관리자 
    물리적 자원인 디스크를 추상적 자원인 File로 제공

  • 네트워크(Network) 관리자
    물리적 자원인 네트워크 장치를 추상적 자원인 Socket으로 제공

  • 디바이스 드라이버(Device Driver) 관리자
    각종 외부 장치에 대한 접근

  • Interrupt Handling
    인터럽트 핸들러

  • I/O Communication
    입출력 통신 관리

profile
가랑비는 맞는다 하지만 폭풍은 내 것이야

0개의 댓글