리눅스(linux)의 커널(Kernel)이란? 

커널은 간단히 말해서 운영체제의 핵심 부분라고도 할 수 있습니다.

물론 정확히는 커널 그자체가 운영체제가 될 수는 없지만 지금 리눅스 커널은 운영체제의 거의 모든 기능을 

가지고 있어서 일반적으로 커널은 운영체제라는 말이 통용되고 있습니다. 그럼 운영체제는 무엇인가?


운영체제는 하드웨어 플랫폼에 포함되어있는 모든 하드웨어 구성요소에 작용하면서 컴퓨터 시스템에서 

실행되는 모든 응용 프로그램의 구동 환경을 제공합니다. 그리고 모든 프로세스 관리, 

하드웨어나 메모리 관리등 시스템 자원을 관리하는 기능을 가진 일종의 자원관리 프로그램입니다. 

한마디로 말해서 컴퓨터와 사용자 사이에 존재하면서 둘 사이를 연결해 주는 역할을 하는 

가장 기본적인 프로그램입니다.


커널(Kernel)의 세부기능!

커널(Kernel)의 세부적인 기능은 다음과 같고 이에 대한 구조는 아래 그림으로 나타내었습니다.  

프로세스 관리(Process Management)

메모리 관리(Memory Management)

파일 시스템 관리(File System Management)

디바이스 관리(Device Management)

네트워크 관리(Network Management)

커널.jpg

-리눅스 커널(linux kernel) 구조도-



이제 커널이 무엇인지 아시겠죠? 다음으로 넘어가 리눅스 커널의 구성을 알아보겠습니다. 리눅스 커널

은 아래와 같이 크게 네 가지로 구성되어 있습니다.


응용프로그램 : 사용자 모드(user mode)에서 구동되는 프로그램

시스템 콜 인터페이스 : 응용프로그램에게 커널의 서비스를 제공하는 인터페이스

커널 (kernel): 프로세스 관리, 메모리 관리, IPC, 파일 시스템, 네트워킹, 디바이스 드라이버 등

하드웨어 : CPU, RAM, HDD, FDD, 네트워크 장치, 기타 여러 주변장치 등

커널1.jpg

사용자모드(user mode)와 커널모드(kernel mode)

리눅스 커널은 프로그램을 실행할 때 크게 두 가지의 모드에서 실행을 합니다. 커널 모드(kernel mode)와 

사용자 모드(user mode)인데, 이 두 모드에 대해서 간단히 설명을 하자면 커널 모드에서의 

프로그램들은 직접적인 하드웨어 요청이나 중요한 시스템청을 할 때 사용되는 모드입니다. 일반적으로 

사용자가 직접적으로 하드웨어 장치를 사용한다면 큰 문제가 발생할 수도 있는 데 이것을 방지하기 위해서 

커널 모드로 프로그램이 행되면서 하드웨어 제어를 커널에서만 할 수 있도록 한 것이입니다.

원래 사용자가 어느 한 프로그램을 실행하면 사용자 모드에서 실행이 되다가 그 프로그램이 하드웨어 장치를

사용해야 할 경우 사용자 모드에서 실행되고 있던 프로그램이 커널모드로 제어권이 넘어가서 

하드웨어 장치를 사용하게 됩니다. 하드웨어 장치를 다 사용하게 되면 다시 프로그램은 사용자 모드로 다시 

제어권이 넘어가서 나머지 프로그램을 실행하게 됩니다.

커널2.jpg

 - 리눅스 커널(linux kernel)에서의 프로그램 수행도 -

리눅스 커널(linux kernel) 소스

일반적으로 리눅스 커널소스 파일들은 /usr/src/linux 디렉터리에 존재합니다.

우리가 커널에 대해 이해하더라도 하부 디렉터리가 커널의 어떤 내용을 담고 있는지를

알아야 보다 효율적인 커널 작업을 수행할 수 있으리라 생각됩니다.

각각의 디렉터리에 들어가서 해당하는 커널 소스들을 한번 씩 찾아보는 것이 커널을 이해하는 

가장 근본적이면서 가장 빠른 지름길이라 생각됩니다.

커널3.jpg

  - 커널(kernel)내의 중요 디렉터리 -

사실 원래 리눅스 커널(linux kernel)에서 수행되는 프로그램 수행은 이것보다 훨씬 복잡하고 

이해하기도 힘들지만 지금은 기본적인 리눅스 커널에 대한 설명으로 된 내용만 여기에 올렸습니다. 


번호 제목 글쓴이 조회 날짜
218 리눅스에서 프로세스 종료하기 2 컴퓨터매니아 8451 2013.11.05
» 리눅스 커널(linux kernel)에 대한 설명! 7 아름다운소망 8367 2013.10.11
216 헌 외장하드 활용 6 jay 8300 2013.12.23
215 [Apache 웹서버] 1. 강좌를 시작하며 (OS, etc.) 8 컴퓨터매니아 8299 2013.10.13
214 리눅스 서버운영체제인(CentOS)! 첫걸음 4 file 아름다운소망 8051 2013.10.12
213 VMware - USB로 부팅하기 1 의미없는시간 7998 2013.10.09
212 우분투에서 오픈수세로 갈아타다~ 2 gam123 7961 2013.11.19
211 리눅스의 init과 RunLevel 3 컴퓨터매니아 7945 2013.11.04
210 LXLE 14.04 "한글설정"과 "한/영" 키 사용......^^ 19 file 언제나당당 7936 2014.06.16
209 Linux를 USB에 꾸겨 넣어 사용하는 여러가지 방법 5 인덕 7925 2014.10.19
208 CentOS 7 - XFS(파일 시스템)과 kpatch 4 file 아름다운소망 7753 2014.11.13
207 리눅스(linux) 기초 - 셀=쉘(Shell) 1 file 아름다운소망 7696 2013.10.12
206 1. xubuntu 설치하기 10 file 카리스마조 7504 2013.10.09
205 grub rescue > _ 3 jay 7475 2013.12.10
204 리눅스 시스템 백업 복구툴 1 컴터그만하고공부해라 7382 2015.01.06
203 WanDrv6.1 자동 수동을 선택해 윈도버전에 맞게 실행해주는 배치파일및 사용법입니다. 11 file 돌나물 7360 2014.06.07
202 우분투에서 HWP 파일 연결시키는 방법. 1 file eentire 7351 2013.11.03
201 컴맹도 하는 우분투 14.04 설치하기! 3 게릴라웹 7315 2014.08.06
200 [우분투 환히 알기] 시냅틱 패키지 관리자 3 의미없는시간 7232 2013.10.12
199 리눅스에서 HDD와 USB의 읽기 쓰기 속도 확인 구르뫼취한농부 7209 2015.01.10

 빠른 글쓰기




   Copyright 2013-2023 LinuxForum