리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20
Usr/src 1. 리눅스 설치시 컴파일되는 소스들의 집합 2. 다양한 커널 버전의 폴더들이 존재 3. 추후 모듈별로 재 컴파일할때 재사용됨,지워도 상관 없음 2/20 2/20
1. Usr/src/* 구조 3/20
1. init 커널의 초기화 코드를 포함 (LILO,GRUB,PPCBOOT로부터 실행권을 넘겨 받고 Main.c 로드) 4/20
2. Drivers 시스템의 디바이스 드라이버 코드를 포함 5/20 (드라이버별로 디렉토리 세분화 ex. Usb,net,sound) 5/20
3. arch CPU에 종속적인 커널 코드를 포함 (CPU 유형별로 세분화 ex. I386,i686,arm) 6/20
4. kernel 메인 커널 코드 포함 (CPU 종속적인 코드는 arch/CPU유형/kernel) 7/20
5. mm 메모리 관련 관리 코드등을 포함 (CPU 종속적인 코드는 arch/CPU유형/mm) 8/20
6. include 커널 코드를 컴파일 하는데 필요한 헤더파일 포함 9/20 (CPU 인터럽트 처리 관련 헤더파일은 include/CPU유형/irq.h) 9/20
7. ipc 리눅스 커널이 지원하는 프로세스간 통신 기능을 위한 코드 포함 10/20 (파이프,시그널,소켓,메시지 패싱(msg.c), 공유 메모리(shm.c)) 10/20
8. fs 리눅스에서 지원하는 다양한 파일 시스템 구현 소스 포함 11/20 (EXT2,EXT3,MSDOS,NTFS,NFS 등 파일 시스템 소스 포함) 11/20
9. net 커널에서 지원하는 통신 프로토콜을 구현하기 위한 코드 포함 12/20 (TCP/IP, PPP, X.25, IPX, AppleTalk, IPv4, IPv6, Bluetooth 등) 12/20
10. lib 커널의 라이브러리 코드를 포함 (CPU 종속적인 코드는 arch/CPU유형/lib) 13/20
11. scripts 커널 구성 및 컴파일 스크립트 포함 (perl, tcl 등) 14/20
리눅스 커널의 내부 구조(3가지 레벨) 사용자 레벨(응용 프로그램 레벨), 커널 레벨, 하드웨어 레벨 3가지로 구성 커널은 이들 가운데 존재 하며 사용자 레벨에서의 요청을 수행하고 하드웨어 자원을 전반적으로 관리 커널 레벨 <- 인터페이스, 인터럽트 -> 하드웨어 레벨 커널 레벨 <- 시스템콜 -> 사용자 레벨 User level …………………………. Kernel level Hardware level 15/20
리눅스 커널의 내부 구조(Kernel 의 구성) 커널=자원관리자(물리적인 자원을 추상화시켜 추상적인 자원으로 관리) 물리적인 자원=CPU, 메모리, 디스크, 터미널, 네트워크 등 하드웨어 요소 들과 물리적인 자원 추상적인 자원=Task 및 쓰레드, 세그먼트 페이지, 파일, 디스크 드라이버 터미널 드라이버, 통신 프로토콜, 패킷등 16/20
리눅스 커널의 내부 구조(Kernel 의 구성) Process Management (PCB, Scheduler, Signals…) 프로세서의 생성부터 소멸까지 전반적인 관리 스케쥴링 등 프로세스간 통신등을 관리 File System Management (ext2fs, NTFS, msdos, NTS, FAT32…) 다양한 파일시스템들을 관리 하며, 파일의 생 성과 파일에 대한 사용자 들의 접근 기법 및 제어(가상 파일시스템(Virtual File Syetem)) Memory Management (Virtual memory, Paging…) 프로세스에 대한 메모리 할당, 페이징 기법 에 기초한 메모리 관리 등 Device Management (Device Drivers) 컴퓨터 주변의 물리적인 장치들을 디바이스 드라이버들로 구성하여 관리(블록 디바이스, 문자 디바이스, 네트워크 디바이스) Network Management (Socket, IPv4, Ethernet…) 통신에 필요한 다양한 자원들을 관리 소켓 인터페이스, 통신 프로토콜(TCP/IP,FTP,SSH…) 17/20
리눅스 커널의 내부의 상호 연관성 18/20 File System Management (ext2fs, NTFS, msdos, NTS, FAT32…) Process Management (PCB, Scheduler, Signals…) Memory Management (Virtual memory, Paging…) Device Management (Device Drivers) Network Management (Socket, IPv4, Ethernet…) 18/20
리눅스 커널의 내부의 상호 연관성 19/20 File System Management (ext2fs, NTFS, msdos, NTS, FAT32…) Process Management (PCB, Scheduler, Signals…) Memory Management (Virtual memory, Paging…) Device Management (Device Drivers) Network Management (Socket, IPv4, Ethernet…) 19/20
끝. 감사합니다. 20/20