본문 바로가기
운영체제/Linux

커널 Kernel

by eteo 2023. 12. 17.

 

 

 

 

 

커널 Kernel

 

커널은 운영체제의 가장 핵심적인 역할을 하는 부분으로 하드웨어와 응용 프로그램 간의 인터페이스 역할을 한다.

 

  • CPU, 메모리, 프로세스, 파일시스템, 입출력 등 주요 하드웨어 자원을 관리한다.
  • 부팅 시 메모리에 로드된다.
  • 항상 메모리에 올라가 있으며 하드웨어와 프로세스를 관리하는 소프트웨어이다.

 

 

커널의 주요 기능

 

커널의 주요 기능은 컴퓨터의 하드웨어 자원을 추상화하여 관리하고, 시스템 콜을 통해 사용자 및 응용 프로그램이 하드웨어 자원에 접근할 수 있도록 하는 것이다.

 

  • 프로세스 관리 : 물리적 자원인 CPU를 추상적 자원인 Task로 제공
  • 메모리 관리 : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segment로 제공
  • 파일 시스템 : 물리적 자원인 디스크를 추상적 자원인 파일로 제공
  • 네트워크 관리 : 물리적 자원인 네트워크 장치를 추상적 자원인 Socket으로 제공
  • 스케쥴링 : 프로세스들 간 실행 순서를 결정
  • 인터럽트 핸들링 : 인터럽트 요청의 처리
  • 디바이스 드라이버를 통한 주변 장치 관리
  • 입출력 처리
  • 시스템 콜 제공

 

 

 

주요 커널 이미지명

 

  • 초기 유닉스 : unix
  • BSD 기반의 유닉스 : vmunix
  • 리눅스 : vmlinuz (/boot/vmlinuz)
  • 윈도우 : ntoskrnl.exe

 

 

 

 

 

Kernel Space 와 User Space

 

운영체제는 시스템 보호를 위해 커널 영역과 유저 영역으로 메모리를 분리하여 관리한다.

 

  • 커널 영역은 메모리의 가장 높은 주소 범위를 차지하며, 커널 코드 및 데이터가 위치해 있다.
  • 유저 영역은 주로 사용자 응용 프로그램의 코드와 데이터가 위치하는 공간으로 다시 스택영역, 힙영역, 데이터영역, 코드영역으로 나뉜다.

 

 

Kernel Mode 와 User Mode

 

커널은 운영체제의 핵심 부분이므로 응용프로그램이 커널에 직접 접근하지 못하도록 두가지 모드가 존재한다.

 

  • 커널모드 : CPU가 운영체제의 핵심 부분인 커널 코드를 실행하는 모드이다. 커널 모드에서는 특권 명령을 실행할 수 있으며, 시스템 자원에 직접적으로 접근할 수 있다. 
  • 유저모드 : CPU가 사용자 응용 프로그램의 코드를 실행하는 모드이다. 유저 모드에서는 특정 권한이 제한되어 있으며, 시스템 자원에 직접적인 접근이 불가능하다. 시스템 자원에 접근할 필요가 있을 때는 시스템 콜을 통해 커널 서비스를 요청할 수 있다.

 

 

Kernel Mode 와 User Mode 의 전환

 

사용자 응용 프로그램이 시스템 자원에 직접 접근해야 하는 경우, 응용 프로그램은 시스템 콜을 호출한다. 시스템 콜은 커널 모드로의 전환을 유발하며, 커널이 해당 서비스를 수행하고, 수행이 끝나면 다시 사용자 모드로 돌아가 결과를 반환한다.

 

 

 

 

 

 

 

 

쉘 Shell

 

커널은 하드웨어를 둘러싸고 제어한다. 그리고 사용자가 커널과 상호작용할 수 있도록 인터페이스를 제공하는 것은 바로 쉘이다.

쉘은 운영체제의 핵심 요소중 하나인 명령어 해석기로서, 사용자가 입력한 명령어를 해석하고 해당하는 커널 기능과 운영체제의 서비스를 호출하여 사용자가 시스템과 상호작용할 수 있도록 해준다.

 

 

  • 사용자가 명령어를 입력하면 쉘은 해당 명령어를 해석하고 이를 커널에 전달한다.
  • 커널은 쉘에게 필요한 서비스를 제공하고 명령어의 실행 결과를 쉘에게 반환한다.
  • 쉘은 사용자에게 실행 결과를 표시하고 다음 명령어를 대기하는 상태로 전환된다.

 

 

 

 

참고 :

 

http://www.ktword.co.kr/test/view/view.php?m_temp1=408&id=522

https://minkwon4.tistory.com/295

'운영체제 > Linux' 카테고리의 다른 글

파일 디스크립터  (0) 2023.09.28
gdb의 플러그인 pwndbg 설치  (0) 2022.10.18
Linux ] cat 명령어, > 리다이렉션  (0) 2022.10.10
Linux ] gcc -O 최적화 옵션 플래그  (0) 2022.10.09
Linux ] gdb 디버거 사용법  (2) 2022.10.09