* 커널이란?
- 운영체제의 핵심 부분.
: DRAM(동적 RAM)에 상주하여 시스템의 구동에 필요한 환경설정과 수행되는 프로그램을 스케줄링하는
소프트웨어.
+스케줄링 : 컴퓨터 시스템을 구성하고 있는 주기억장치, 입출력장치, 처리시간등의 시스템 자원을 언제 배분할 것인가를 결정하는 프로그램 기능.
- 시스템 자원 관리.
- 모든 시스템이 원할하게 작동할 수 있도록 제어하는 소프트웨어.
* 커널의 세부 기능
- Task 관리 (Task Management) : 물리적인 자원을 task라는 추상적인 자원으로써 제공해줌.
> task의 생성, 실행, 스케줄링, 프로세스간 통신등의 서비스를 제공.
+ Task : 컴퓨터 상에서 하나의 작업.
+ Process : 컴퓨터 상에서 하나의 작업을 이루는 과정.
+ Thread : 프로세스를 이루는 하나 하나의 개별 작업.
- 메모리 관리 (Memory Management) : 메모리를 세그먼트나 페이지라는 개념으로 제공해줌.
> 물리 메모리 관리, 가상메모리 관리 그리고 이들을 위한 세그멘테이션, 페이징, 페이지 부재 결함 처리등의 서비스를 제공.
- 파일 시스템 관리 (File System Management) : 디스크를 파일이라는 개념으로 제공해줌.
> 파일의 생성, 접근 제어, inode관리, 디렉토리 관리, 수퍼 블록 관리등의 서비스를 제공.
- 디바이스 관리 (Device Management) : 각종 장치를 디바이스 드라이버를 통해 일관되게 접속하도록 해줌.
> 디스크 터미널, CD, 네트워크 카드 등과 같은 주변 장치를 구동하는 드라이버들로 구성.
- 네트워크 관리 (Network Management) : 네트워크 장치를 소켓이라는 개념으로 제공해줌.
> 소켓 인터페이스, TCP/IP 같은 통신 프로토콜 등의 서비스를 제공함.
* 리눅스 커널의 구성
<간략화된 리눅스 커널의 구성>
- 응용 프로그램 : 사용자 모드에서 구동되는 프로그램.
- 시스템 콜 인터페이스 : 응용 프로그램에게 커널의 서비스를 제공하는 인터페이스.
사용자가 커널 수준의 기능이나 모듈을 사용하기 위해서는 반드시 시스템 호출 ( 시스템 콜)을 이용하여야 한다.
- 커널 : 프로세스 관리, 메모리 관리, IPC, 파일 시스템, 네트워킹, 디바이스 드라이버 등.
- 하드웨어 : CPU, RAM, HDD, FDD, 네트워크 장치, 기타 여러 주변 장치.
<세부적인 리눅스 커널의 구성>
* 사용자 모드와 커널 모드
: 리눅스 커널은 프로그램을 실행할 때 커널모드와 사용자 모드에서 실행한다.
- 커널모드에서의 프로그램 : 직접적인 하드웨어 요청이나 중요한 시스템 요청을 할 때 사용되는 모드.
- 사용자모드 : 사용자가 응용 프로그램을 실행할 수 있다.
+ 리눅스 커널에서의 프로그램 수행과정.
-사용자 모드
1. 프로그램 실행
2. 하드웨어 장치 사용 요청
3. 커널에게 제어권을 넘김
-커널 모드
4. 하드웨어 장치 사용
5. 하드웨어 장치 사용 완료
6. 사용자 모드로 제어권을 다시 넘김
-사용자 모드
7. 다음 명령어 실행
* 리눅스 커널 소스
: 일반적으로 /usr/src/linux 디랙터리에 존재.
- 하부 디렉터리가 커널의 어떤 내용을 담고 있는가?
- document : 커널에 관계된 문서들이 있다. / 커널 프로그래머를 위한 기술적인 문서 파일들을 포함한다.
- arch : 아키텍처에 관련된 코드가 들어있다. / 포팅할 수 있는 각 프로세서 아키텍처에 의존적인 기능들이 구현 되어있다.
> 리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현된 디렉토리.
+ 포팅 : 실행가능한 프로그램이 원래 설계된 바와 다른 컴퓨터 환경에서 동작할 수 있도록 하는 과정.
- fs : 파일 시스템에 관한 소스토드들이 존재한다.
> 리눅스에서 지원하는 다양한 파일시스템 예)open(), read(),write()등의 시스템 호출이 구현된 디렉터리.
- init : 커널이 실행되기위한 모든 코드. / 커널이 시작하는데 필요한 함수들을 포함한다.
> 커널 메인 시작 함수가 구현된 디렉터리.
- ipc : 전통적 프로세스간의 통신. / 프로세스간 통신을 위한 함수들을 포함한다
> 리눅스 커널이 지원하는 프로세스간 통신 기능이 구현된 디렉터리이다.
.
- kernel : 커널의 핵심 코드, 시스템콜, 스케줄러. / 커널의 주요 시스템 호출과 기능들이 구현되어 있다.
>task 관리자가 구현된 디렉터리. task의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리등의 기능이 구현되어있다.
- lib : 커널 라이브러리 함수. / 보조함수들과 스트링 관련, 압축 관련 함수들이 구현되어 있다.
- mm : 메모리 관리. / 메모리 관련 소스들이 있다.
> 메모리 관리자가 구현된 디렉터리. 물리 메모리, 가상 메모리, 테스크 마다 할당되는 메모리 객체 관리등의 기능이 구현되어 있다.
- net : 많은 종류의 network 프로토콜 지원. / 통신과 관련된 프로토콜 등이 구현되어 있다.
> 리눅스 커널이 지원하는 프로세스간 통신기능이 구현된 디렉터리이다.
<참조 : ESDP 표준교재>
'삽질의 현장 > - 리눅스' 카테고리의 다른 글
[Surro] :: 3. 리눅스 파일 시스템 (0) | 2013.11.01 |
---|---|
[Surro] :: 2. 리눅스 시스템 전체 부팅과정 (0) | 2013.10.31 |