SlideShare a Scribd company logo
1 of 90
Download to read offline
마스터 제목 스타일 편집 
1 1 리눅스 커널 
- 개요 및 이슈 
2010. 1. 29 
노태상
마스터 제목 스타일 편집 
리눅스 커널 개요 
 커널 개요 
 리눅스 커널 개요 
 리눅스 커널 기본기능 
 리눅스 커널 부팅 
2 2
마스터 제목 스타일 편집 
3 3 
커널 개요 - 운영체제란? 
운운영영체체제제란란?? 
 자원 관리자 (Resource Manager) 
운운영영체체제제가가 관관리리해해야야 될될 자자원원 
 물리적 자원 
 CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하 
고 있는 요소들과 주변장치 등 
 추상적 자원 
 태스크(task), 쓰레드(thread) : CPU 추상화 
 세그먼트(segment), 페이지(page) : 메모리 추상화 
 파일, inode : 디스크 추상화 
 프로토콜, 패킷 : 네트워크 추상화
마스터 제목 스타일 편집 
4 4 
커널 개요 - 커널이란? 
커커널널이이란란?? 
 운영체제를 이루는 가장 핵심적인 소프트웨어 
 운영체제를 구성하고 있는 핵심으로서 타깃보드의 시스템 구동에 
필요한 환경설정과 수행되는 프로그램들을 관리하는 소프트웨어 
커커널널의의 세세부부 기기능능 
 프로세스 관리 (Process Management) 
 메모리 관리 (Memory Management) 
 파일 시스템 관리 (File System Management) 
 장치 관리 (Device Management) 
 네트워크 관리 (Network Management)
마스터 제목 스타일 편집 
5 5 
커널 개요 - 커널의 기능 
프프로로세세스스 관관리리 
 프로세스의 생성 및 소멸 
 프로세스 간 통신 
 CPU 스케줄링 
메메모모리리 관관리리 
 가상 메모리 관리 
 메모리 하드웨어 관리 
파파일일 시시스스템템 관관리리 
 가상 파일 시스템에 의한 
여러 파일 시스템 타입 지 
원 
 디스크 물리적 구조를 논리 
적 구조로 표현 
장장치치 관관리리 
 입출럭 요청 검증 
 입출력 요청 작언 스케줄 
링 
 주변장치와 메모리 간의 
자료전송 
네네트트워워크크 관관리리  인터럽트 요청 처리 
 통신 프로토콜 구현 
 네트워크 라우팅 및 주소지 
정
마스터 제목 스타일 편집 
6 6 
커널 개요 - 커널의 구조
마스터 제목 스타일 편집 
7 7 
커널 개요 - 커널의 종류 
MMoonnoolliitthhiicc KKeerrnneell 
MMiiccrroo KKeerrnneell 
 리눅스는 Monolithic Kernel임
마스터 제목 스타일 편집 
8 8 
리눅스 커널 개요 
리리눅눅스스 커커널널의의 역역할할 
 응용 프로그램이 동작하기 위한 기본 환 
경을 제공 
 응용 프로그램은 최소한의 절차로 응용 
프로그램 본래의 목적인 처리를 실행할 
수 있게 함 
 응용 프로그램을 대신하여 하드웨어를 제 
어하는 편리한 기능을 제공 
 응용 프로그램의 요청(시스템 콜)을 받아 
동작하는 이벤트 중심의 프로그램 
 응용 프로그램으로부터 시스템 콜이 요청 
되거나 하드웨어로부터 인터럽트가 요청 
되면, 그 요청에 대응하는 처리를 수행함 
응응용용 프프로로그그램램과과 커커널널
마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널 구조 
편집 
9 9
마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 기본 편집 
기능 
10 
10
마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 장점 
편집 
리리눅눅스스 장장점점 리리눅눅스스 모모듈듈 
11 
11 
모 
듈 
적재 
제거 
사용 
자 
영역 
커널 
영역 
 오래되었고 많은 사람들이 사용 
 검증됨, 안정적, 다양한 기능 제공 
 오픈 소스, 오픈 아키텍처 
 수많은 개발자에 의하여 발전됨 
 개발자 필요에 이하여 변경가능 
 소규모 모듈단위로 설계됨 
 구조 변경 및 재구성이 용이 
 동적 로딩 및 제거 가능 커널코드 제공 
 다중 프로세서 지원 
 SMP(Symmet r ic Mul t i Processing) 
지원 
 실시간 운영을 지원함 
 실시간 임베디드 분야에 활용 가능
마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 소스 편집 
트리 
12 
12
마스터 리눅스 커널 기본 제목 기능 – 스타일 프로세스 관리 
편집 
13 
13 
프프로로세세스스 관관리리 
 프로그램의 실행상태를 관리 
 리눅스 커널은 지정된 프로그 
램을 실행하기 위한 환경을 
구축하고, 프로그램의 실행이 
끝나면 이들을 깨끗하게 정리 
함 
프프로로세세스스 관관리리를를 위위한한 커커널널의의 자자료료구구조조 
 프로세스 ID, 그룹 ID, 세션 ID 
 실행 우선순위 
 프로세스 공간 정보 
 이용 중인 파일에 관한 정보 등 
<실행가능 프로세스와 프로세스 스케줄 
링>
마스터 리눅스 커널 기본 제목 기능 – 스타일 프로세스 관리 
편집 
14 
14 
시시그그널널 
 프로세스에 비동기 이벤트를 전달하기 위한 간단한 장치 
 시그널을 받은 프로세스는 실행을 일단 중지 후 시그널 핸들러를 실행 
한 후 다시 중단된 지점부터 프로세스의 실행을 재개함 
스스레레드드((TThhrreeaadd)) 
 리눅스 커널 스레드는 일종의 프로세스로 구현되고 있음 
 프로세스와 다른 점 
 스레드 간에 프로세스 공간을 공유 
 스레드 관련 정보를 관리 
 프로세스를 관리하는 데이터 구조를 그대로 이용하여 스레드를 관리함 
 프로세스 스케줄러의 입장에서 프로세스와 스레드는 동일 
 POSIX 스레드 인터페이스는 리눅스 커널에서 기본으로 제공하는 인터 
페이스가 아니라 라이브러리에 의해 커널 스레드 인터페이스로 변환됨.
마스터 리눅스 커널 기본 제목 기능 – 스타일 메모리 관리 
편집 
15 
15 
물물리리 메메모모리리 관관리리 
 물리 메모리를 페이지 단위로 관리함 
 페이지 
 가상메모리를 사용할 때 CPU에서 지원하는 메모리 관리의 최소 단위 
임 
 페이지 크기는 CPU 종류에 따라 다름 
 버디 시스템(Buddy System) 
 페이지 단위로 물리메모리의 빈 영역을 효율적으로 관리하기 위한 구 
조 
 서로 이웃한 빈 영역을 결합하여 보다 큰 빈 영역을 생성 
 슬랩 할당자(Slab Allocator) 
 페이지보다 작은 메모리 영역을 효율적으로 관리하기 위한 관리 구조 
 내부 단편화(f ragment) 발생을 최소화 
 메모리 캐시 이용 효율을 고려한 메모리 관리 방식
마스터 리눅스 커널 기본 제목 기능 – 스타일 메모리 관리 
편집 
16 
16 
가가상상 메메모모리리 관관리리 
 물리적으로 분산된 페이지를 모아서 가상공 
간에 연속으로 할당 
 물리 메모리의 단편화 문제를 고려할 필요 
가 없음 
 다중 가상 공간 사용 
 각 프로세스의 주소 공간을 독립적으로 할 
당함 
<다중 가상 공 
간> 
요요구구 페페이이징징((DDeemmaanndd PPaaggiinngg)) 
 참조가 발생한 영역에 대해 페이지 단위로 물 
리 메모리를 할당하는 기법 
 스왑(Swap) 시스템 
 참조 빈도가 낮은 영역의 물리메모리는 
반환 
 COW(Copy-On-Wr ite)
마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 
편집 
17 
17 
파파일일 시시스스템템 
 기억 장치 상의 데이터를 파일이라고 하는 형식을 통해서 액세스 순서를 
일관성 있게 제공함 
 리눅스 커널은 디바이스나 커널 내의 데이터 구조도 파일로 처리함 
 리눅스 커널은 각각의 파일에 i-노드로 불리는 데이터 구조를 할당하여 
관리함 
 파일 디스크립터를 통하여 파일에 접근 
캐캐시시((CCaacchhee)) 
 리눅스 커널은 파일 접근을 빠르게 하기 위하여 각종 데이터를 메모리에 
보관함 
 페이지 캐시 : 파일 데이터 자체를 보관함 
 i-노드 캐시 : 자주 사용되는 파일의 i-노드를 복사해서 메모리에 보관함 
 Dent ry 캐시 
 파일 이름을 보관, 경로 탐색을 빠르게 하기 위해 사용됨 
 커널이 수행하는 처리 중에서 가장 중요한 처리 중의 하나임
마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 
편집 
18 
18 
가가상상 파파일일 시시스스템템((VVFFSS)) 
<파일 시스템 계층> 
 사용자는 이용하고 있는 파일시스템이 어떤 파일시스템인지 알 필요가 
없음 
 하위 파일시스템의 형식에 의존하지 않고 동일한 인터페이스로 조작할 
수 있음 
 가상파일시스템 아래에는 다양한 종류의 파일시스템을 배치할 수 있음
마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 
편집 
파파일일시시스스템템 관관련련 용용어어들들 
19 
19 
 로컬 파일 시스템 
 네트워크 파일 시스템 
 유사 파일 시스템 
 기억 장치 위에 있는 파일 이외의 것을 진짜 파일인 것처럼 가장하는 파일 시스 
템 
 proc 파일 시스템, sysfs 파일 시스템 
 리눅스 표준 파일 시스템 
 ext2 
 저널링(journal ing) 파일 시스템 ext3 
 Ext2 파일 시스템에 저널링 기능을 추가 
 내결함성(fault tolerance)을 높이는 것으로 시스템의 이상종료 후 파일시스템 
복구를 최적화하기 위하여 도입됨 
 블록 디바이스 
 파일 시스템의 요청에 따라 실제로 입출력 처리를 수행 
 버퍼 및 페이지 단위로 입출력 수행
마스터 리눅스 커널 기본 제목 기능 – 스타일 장치 관리 
편집 
AApppplliiccaattiioonn 
SSyysstteemm CCaallll IInntteerrffaaccee 
VViirrttuurree FFiillee SSyysstteemm((VVFFSS)) 
BBuuffffeerr CCaacchhee 
Appl icat ion 
 리눅스 커널은 장치관리 구조로 파일 시스템을 사용함 
20 
20 
Character 
Device Driver 
HHaarrddwwaarree 
Network 
Subsystem 
DDeevviiccee IInntteerrffaaccee 
Area 
Kernel Area 
Hardware 
Block 
Device Driver 
Network 
Device Driver 
BBSSDD ssoocckkeett 
IInneett((AAFF__IINNEETT)) 
Transport(TCP,UD 
P) 
NNeettwwoorrkk((IIPP))
마스터 리눅스 커널 기본 제목 기능 – 스타일 네트워크 관리 
편집 
21 
21 
소소켓켓 
 임의의 프로세스 
및 프로세서간 통 
신 
 하위층에 다양한 
통신프로토콜을 
정의할 수 있음 
 소켓 인터페이스 
는 리눅스 커널 
내에 구현됨 
<TCP/IP 프로토콜 스택 계 
층>
마스터 제목 스타일 편집 
22 
22 
리눅스 커널 부팅 
임임베베디디드드 리리눅눅스스 커커널널 생생성성 절절차차
마스터 제목 스타일 편집 
임임베베디디드드 시시스스템템에에 커커널널 적적재재 
 File System Downloading 
 Kernel Image Downloading 
 Kernel Image 
Fusing : Flash() 
23 
23 
리눅스 커널 부팅 
Target 
Host (PC) 
Host File System 
FFiillee SSyysstteemm 
KKeerrnneell IImmaaggee 
BBoooott LLooaaddeerr 
SDRAM 
FFiillee SSyysstteemm 
KKeerrnneell IImmaaggee 
Flash Memory 
FFiillee SSyysstteemm 
KKeerrnneell IImmaaggee 
BBoooott LLooaaddeerr 
 Boot Loader Fusing 
 File System 
Fusing : Flash() 
 Target Booting Start !!!
마스터 제목 스타일 편집 
24 
24 
리눅스 커널 부팅 
커커널널 압압축축 해해제제 절절차차
마스터 제목 스타일 편집 
25 
25 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
26 
26 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
27 
27 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
28 
28 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
29 
29 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
30 
30 
리눅스 커널 부팅 
커커널널 부부팅팅 절절차차
마스터 제목 스타일 편집 
리눅스 커널 이슈 
• 프로세스 스케줄링 
• 인터럽트 
• 지연처리 
• 타이머 
• 시스템 콜 
• 동기화 
31 
31
마스터 제목 스타일 편집 
32 
32 
프로세스 스케줄링 
프프로로세세스스란란?? 
 프로그램이 움직이고 있는 상태 
 프로그램은 1개이더라도 그 프로그램을 실행하고 있는 프로세스는 
여러 개 존재할 수 있음 
 콘텍스트(Context) 
 프로세스가 동작하기 위한 프로세스 공간과 프로세스가 동작할 때 
의 레지스터 값 등 
 각각의 프로세스는 콘텍스트를 가짐 
 리눅스 커널에서는 스레드도 일종의 프로세스로 관리함 
 task_struct 구조체 
 개개의 프로세스 및 스레드에 관한 정보 저장 구조체
마스터 제목 스타일 편집 
33 
33 
프로세스 스케줄링 
프프로로세세스스 전전환환 
 Process 
Switch 
 Process 
Dispatch
마스터 제목 스타일 편집 
34 
34 
프로세스 스케줄링 
프프로로세세스스 스스케케줄줄러러 
 응답 성능 
 Preemption 
 처리율 
(Throughput)
마스터 제목 스타일 편집 
35 
35 
프로세스 스케줄링 
프프로로세세스스 실실행행 우우선선순순위위
마스터 제목 스타일 편집 
36 
36 
프로세스 스케줄링 
멀티프로세서 멀티프로세서 시시스스템템에에서서의의 프프로로세세스스 스스케케줄줄링링 
<프로세스와 캐시의 관계>
마스터 제목 스타일 편집 
37 
37 
프로세스 스케줄링 
OO((11)) 스스케케줄줄러러 구구조조
마스터 제목 스타일 편집 
38 
38 
프로세스 스케줄링 
프프로로세세스스 상상태태 
 실행가능 상태 
 실행상태 
 실행 준비 상태 
 대기상태 
 INTERRUPTIBLE 
 UNINTERRUPTIB 
LE
마스터 제목 스타일 편집 
39 
39 
프로세스 스케줄링 
프프로로세세스스 상상태태 천천이이
마스터 제목 스타일 편집 
40 
40 
프로세스 스케줄링 
대대기기 프프로로세세스스의의 wwaakkee__uupp
마스터 제목 스타일 편집 
41 
41 
프로세스 스케줄링 
wwaakkee__uupp 함함수수 집집합합
마스터 제목 스타일 편집 
42 
42 
프로세스 스케줄링 
복복수수 이이벤벤트트 대대기기
마스터 제목 스타일 편집 
43 
43 
인터럽트 (Interrupt) 
인인터터럽럽트트 
 하드웨어가 리눅스 커널 기능을 호출하는 구조 
 프로세스가 리눅스 커널 기능을 호출할 때는 시스템 콜 사용 
 리눅스 커널에 있어서 중요한 이벤트 
 리눅스 커널은 이벤트 구동형 프로그램임 
 디바이스를 효율적으로 제어하기 위한 구조 
리리눅눅스스 커커널널 인인터터럽럽트트 처처리리의의 특특징징 
 응답성의 확보 
 하드웨어 인터럽트 (IRQ) 
 소프트 인터럽트 (IRQ) 
 멀티 프로세서의 대응 
<인터럽트 응답성 처리 예>
마스터 제목 스타일 편집 
44 
44 
인터럽트 (Interrupt) 
인인터터럽럽트트의의 종종류류
마스터 제목 스타일 편집 
45 
45 
인터럽트 (Interrupt) 
인인터터럽럽트트의의 발발생생 및및 처처리리
마스터 인터럽트 (Interrupt) 제목 – 인터럽트 스타일 관리 테이블 
편집 
46 
46
마스터 제목 스타일 편집 
47 
47 
인터럽트 (Interrupt) 
인인터터럽럽트트 핸핸들들러러 등등록록 함함수수
마스터 제목 스타일 편집 
48 
48 
인터럽트 (Interrupt) 
하하드드웨웨어어 인인터터럽럽트트 기기동동 구구조조
마스터 제목 스타일 편집 
인터럽트 (Interrupt) – 하드웨어 인터럽트 제어 함수 
<하드웨어 인터럽트 제어함수(CPU 레벨)> 
<하드웨어 인터럽트 제어함수(인터럽트 컨트롤러 레 
49 
49 
벨)>
마스터 제목 스타일 편집 
50 
50 
인터럽트 (Interrupt) 
인인터터럽럽트트 요요청청 보보류류
마스터 제목 스타일 편집 
51 
51 
지연처리 (delay) 
인인터터럽럽트트 지지연연처처리리 
 소프트 인터럽트 
 하드웨어 인터럽트를 금지하지 않음 
 소프트 인터럽트 핸들러는 그 원인을 제공한 하드웨어 인터럽트 
핸들러와 동일한 CPU 상에서 동작함 
 하드웨어 인터럽트 핸들러가 요청할 때 발생함 
 소프트 인터럽트 핸들러는 하드웨어 인터럽트 핸들러에서 수행한 
처리를 물려받아 동작함 
 Tasklet 
 소프트 인터럽트를 범용화한 구조 
 하드웨어 인터럽트와 제휴하여 효율적으로 동작함
마스터 제목 스타일 편집 
52 
52 
지연처리 (delay) 
소소프프트트 인인터터럽럽트트 데데이이터터 구구조조
마스터 제목 스타일 편집 
53 
53 
지연처리 (delay) 
소소프프트트 인인터터럽럽트트 종종류류
마스터 제목 스타일 편집 
54 
54 
지연처리 (delay) 
소소프프트트 인인터터럽럽트트 제제어어 함함수수
마스터 제목 스타일 편집 
지연처리 (delay) – workqueue (지연처리 구현 구조) 
55 
55 
WWoorrkkqquueeuuee의의 구구조조 
 주로 프로세스 콘텍스 
트 처리 지연에 이용 
됨 
 각종 D/D 지연실행 
 블록 I/O요청의 지연 
실행 
 비동기 I/O 처리
마스터 제목 스타일 편집 
지연처리 (delay) – workqueue (지연처리 구현 구조) 
56 
56 
타타이이머머 리리스스트트와와 wwoorrkkqquueeuuee
마스터 제목 스타일 편집 
지연처리 (delay) – workqueue (지연처리 구현 구조) 
WWoorrkkqquueeuuee 제제어어 함함수수 
57 
57
마스터 제목 스타일 편집 
58 
58 
타이머 (Timer) 
 타이머의 역할 리리눅눅스스 타타이이머머 
 시간 count 
 제한 시간 관리 
• 통신처리에서의 재 발송 처리 
• 응답 없는 디바이스에 대한 실행 재처리 
• 주기적인 폴링 처리 
• SIGALRM 시그널 생성 
 리눅스 커널은 주기적으로 발생하는 인터럽트(타이머 인터 
럽트)를 이용하여 타이머 기능을 동작 시킴 
 리눅스 타이머 종류 
 글로벌 타이머 
 CPU 로컬 타이머
마스터 제목 스타일 편집 
59 
59 
타이머 (Timer) 
리리눅눅스스 타타이이머머의의 동동작작
마스터 제목 스타일 편집 
60 
60 
타이머 (Timer) 
로컬타이머 로컬타이머 소소프프트트 인인터터럽럽트트 핸핸들들러러 실실행행
마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 
편집 
61 
61 
타타이이머머 벡벡터터의의 분분할할 
 타이머 리스트 
- 이미 설정된 일정시 
간 후에 콜백되는 핸 
들러를 등록하기 위 
한 범용적인 구조
마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 
편집 
62 
62 
ttvv11 벡벡터터의의 실실행행
마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 
편집 
63 
63 
ttvv22 벡벡터터를를 ttvv11벡벡터터로로 대대체체
마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 
편집 
64 
64 
타타이이머머 리리스스트트 관관련련 제제어어함함수수
마스터 타이머 (Timer) 제목 – 구간( interval 스타일 ) 타이머 
편집 
65 
65 
인인터터벌벌 타타이이머머 
 절대시간 지정 타이머 
 SIGALRM 
 실행시간 지정 타이머 
 SIGVTLALARM 
 SIGPROF
마스터 제목 스타일 편집 
66 
66 
시스템 콜 (system Cal l ) 
시시스스템템 콜콜이이란란?? 
 프로세스가 커널에게 명시적으로 서비스를 요청하는 인터페이스 
 커널이 사용자 수준 응용에게 서비스를 제공하는 인터페이스 
 사용자 모드에서 사용할 수 있도록 밖으로 노출되어 있는 커널 함 
수 
 Software Inter rupt를 통한 커널에 대한 서비스 요청 
 시스템 콜을 하게 되는 순간부터 사용자 모드에서 커널 모드로 전 
환됨 
 시스템 콜을 시작하면 커널코드가 사용자 프로세스 환경 
(context) 아래에서 동작하게 됨 
 시스템 콜을 일으키는 루틴을 wrapper routine이라 함 
 open()은 sys_open()의 wrapper routine
마스터 제목 스타일 편집 
67 
67 
시스템 콜 (system Cal l ) 
시시스스템템 콜콜 예예 
 프로세스 관리자가 제공하는 서비스와 관련된 시스템 콜 
 fork(), execve(), getpid(), signal() 등 
 파일 시스템이 제공하는 서비스와 관련된 시스템 콜 
 open(), rea(), wr ite(), ioct l(), close() 등 
 메모리 관리자가 제공하는 시스템 콜 
 brk() 등 
 네트워크 관리 부분과 관련된 시스템 콜 
 socket(), bind(), connect() 등 
 디바이스 드라이버가 제공하는 시스템 호출 
 없음
마스터 제목 스타일 편집 
68 
68 
시스템 콜 (system Cal l ) 
보보호호 모모드드 
<보호 모드> 
 보호모드 
 커널은 커널 자체 프로세스나 커 
널 자원을 보호하기 위하여 CPU 
가 제공하는 보호 기능을 사용함 
 프로세스가 직접 커널 함수(실행 
코드)를 호출할 수 없게 함 
 리눅스 특권 레벨 
 레벨 0 : 커널 레벨 
 레벨 3 : 사용자 프로세스 레벨 
 레벨 1,2 : 사용 않음 
 특권 레벨의 변경 
 소프트웨어 인터럽트 (sof tware 
inter rupt)
마스터 제목 스타일 편집 
시스템 콜 (system Cal l ) – 시스템 콜 인터페이스 
69 
69
마스터 제목 스타일 편집 
70 
70 
시스템 콜 (system Cal l ) 
시시스스템템 콜콜 처처리리 과과정정 –– xx8866
마스터 제목 스타일 편집 
AApppplliiccaattiioonn LLiibbrraarryy SS//WW iinntteerrrruupptt 
71 
71 
시스템 콜 (system Cal l ) 
시시스스템템 콜콜 처처리리 과과정정 -- AARRMM 
sk_open() 
{ 
} 
sk_release() 
{ 
} 
sk_write() 
{ 
}sk_read() 
{ 
} 
sswwii 990000000055 
sswwii 990000000066 
sswwii 990000000044 
f->f_op->open :sk_open 
f->f_op->release:sk_release 
f->f_op->write:sk_write 
f->f_op->read :sk_read 
test open() 
sys_open() 
sys_release() 
sys_write() 
sys_read() 
main(){ 
open() 
close() 
write() 
read() 
} 
close() 
write() 
read() 
sswwii 990000000033 
Vector Table 
0x08 b vector_swi 
vector_swi 
Switch(num) 
5 
6 
4 
3 
SSyysstteemm ccaallll VVFFSS DDeevviiccee ddrriivveerr
마스터 제목 스타일 편집 
72 
72 
시스템 콜 (system Cal l ) 
시시스스템템 콜콜의의 종종류류 
시시스스템템 콜콜 핸핸들들러러 등등록록
마스터 시스템 콜 – 시스템 제목 콜 처리 스타일 예 : fread( ) 편집 
호출 
73 
73
마스터 동기화 (Synchronization) 제목 스타일 – 필요성 
편집 
74 
74 
커커널널 처처리리의의 특특성성 
 커널 핸들러의 비동기적 & 동시 실행 
 프로세스의 시스템 콜 
 외부 장치로부터의 인터럽트 
 동일한 자원이나 서로 관련된 자원을 사용하는 등 경쟁이 발생함 
배배제제((EExxcclluussiioonn)) 처처리리 
 여러 커널 핸들러가 동시에 실행되더라도 특정 커널 핸들러가 어 
떤 자원을 사용하고 있는 동안에 또 다른 핸들러가 이 자원에 영 
향을 주지 못하도록 접근하지 못하게 하는 방법 
 시스템에 준비된 배제 
 프로세스 콘텍스트 사이 
 인터럽트 콘텍스트 
 다른 CPU 상의 콘텍스트
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
75 
75 
세세마마포포어어 동동작작 
 세마포어 
 비교적 긴 시간을 확보하는 자원에 대해서 이 
용 
 세마포어 이용 예 
 파일 접근 배제 : i-노드 관리 구조체
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
76 
76 
읽읽기기//쓰쓰기기 세세마마포포어어 동동작작
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
읽읽기기//쓰쓰기기 세세마마포포어어에에 대대한한 갱갱신신 접접근근 
77 
77
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
읽읽기기//쓰쓰기기 세세마마포포어어 관관련련 함함수수 
78 
78
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
선선점점 금금지지에에 의의한한 접접근근 배배제제 
79 
79 
 선점(Preemption) 
 커널 2.6부터는 커널코 
드 실행 중에도 선점 
가능 
 CPU 종속 자원에 대한 
배제 필요 시 명시적으 
로 선점을 금지할 필요 
가 있음 
 스핀락은 필요 없음
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 
배제 
마스터 제목 스타일 편집 
선선점점권권의의 억억제제..허허가가 함함수수 
80 
80
마스터 제목 스타일 편집 
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 
인인터터럽럽트트 금금지지에에 의의한한 접접근근 배배제제 
81 
81
마스터 제목 스타일 편집 
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 
소프트 소프트 인인터터럽럽트트 금금지지에에 의의한한 접접근근 배배제제 
82 
82
마스터 제목 스타일 편집 
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 
인인터터럽럽트트 금금지지 관관련련 함함수수 
83 
83
마스터 제목 스타일 편집 
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 
스스핀핀락락에에 의의한한 배배제제 
84 
84 
 스핀락(Spin Lock) 
 멀티프로세서 시스템 
에서 CPU감 경쟁을 
조정하기 위한 배제 
구조 
 Busy wait 
 잠금 변수를 취득하 
지 못한 CPU는 잠금 
이 해제될 때까지 그 
자리에서 계속 기다 
림
마스터 제목 스타일 편집 
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 
읽읽기기//쓰쓰기기 스스핀핀락락에에 의의한한 배배제제 
85 
85
마스터 제목 스타일 편집 
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 
86 
86 
스스핀핀락락 관관련련 함함수수
마스터 제목 스타일 편집 
동기화 (Synchronization) – RCU (Read Copy Update) 
87 
87 
RRCCUU 동동작작 예예 
 RCU 
 멀티프로세서 시 
스템 전용의 배 
제 처리 
 커널 2.6에서 
도입됨 
 포인터로 결합된 
데이터 구조를 
보호할 때 이용 
함 
 빈번하게 배제가 
필요한 자원에 
유용
마스터 제목 스타일 편집 
동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 
메메모모리리 장장벽벽?? 
88 
88 
 메모리 장벽이란? 
 실제 메모리 상의 데이터 접근의 순서가 제대로 지켜지 
지 않음 
 메모리 접근 순서가 지켜져야 하는 이유 
 메모리 상의 데이터를 각종 I/O 컨트롤러와 교환 
 다른 CPU로부터 참조나 갱신을 하기 위하여 CPU 간의 
동일한 데이터 참조 
 메모리 장벽의 원인 
 내부에서 명령어의 순서를 바꿔서 실행하는 CPU 존재 
(CPU 자원 효율화 목표)
마스터 제목 스타일 편집 
동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 
명명령령어어 순순서서 변변경경의의 경경우우 -- AARRMM 
사이클 1 2 3 4 5 6 7 8 9 10 
89 
89 
F D E 
명령 
ADD R0, R1, R2 
M W 
SUB R1, R2, R4 F D E 
M W 
AND R2, R1, R0 F D E 
M W 
LDR R4, [ R5 ] F D E 
M W 
XOR R0, R4, R2 F D I 
E 
M W 
ADD R1, R2, R3 F I 
D E 
SBC R1, R2, R3 F D 
F : Fetch D : Decode E : Execute M : Memory W : Write I : Interlock 
M 
E
마스터 제목 스타일 편집 
동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 
메메모모리리 장장벽벽 처처리리 매매크크로로 
90 
90

More Related Content

What's hot

우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기Hoyoung Jung
 
리눅스에 대하여
리눅스에 대하여리눅스에 대하여
리눅스에 대하여ETRIBE_STG
 
리눅스 스터디 1회차
리눅스 스터디 1회차리눅스 스터디 1회차
리눅스 스터디 1회차준혁 이
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어Chulgyu Shin
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1UNIST
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part Isprdd
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호ETRIBE_STG
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
 
cross compile
cross compilecross compile
cross compilehe4722
 
우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일he4722
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기Pete Lee
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APIHongmin Park
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespaceSam Kim
 
Ipython server(Jupyter Server) 만들기
Ipython server(Jupyter Server) 만들기Ipython server(Jupyter Server) 만들기
Ipython server(Jupyter Server) 만들기Hyun-sik Yoo
 

What's hot (20)

우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 
리눅스에 대하여
리눅스에 대하여리눅스에 대하여
리눅스에 대하여
 
리눅스 스터디 1회차
리눅스 스터디 1회차리눅스 스터디 1회차
리눅스 스터디 1회차
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
리눅스서버세팅-김태호
리눅스서버세팅-김태호리눅스서버세팅-김태호
리눅스서버세팅-김태호
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
cross compile
cross compilecross compile
cross compile
 
우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
 
Ipython server(Jupyter Server) 만들기
Ipython server(Jupyter Server) 만들기Ipython server(Jupyter Server) 만들기
Ipython server(Jupyter Server) 만들기
 

Viewers also liked

Linux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoLinux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoBreno Vitorino
 
리눅스 간단 강의 1강
리눅스 간단 강의 1강리눅스 간단 강의 1강
리눅스 간단 강의 1강Junsu Kim
 
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...In-Memory Computing Summit
 
High Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelHigh Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelKernel TLV
 
Redis on NVMe SSD - Zvika Guz, Samsung
 Redis on NVMe SSD - Zvika Guz, Samsung Redis on NVMe SSD - Zvika Guz, Samsung
Redis on NVMe SSD - Zvika Guz, SamsungRedis Labs
 
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리중선 곽
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초 Yong Joon Moon
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법중선 곽
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의Kwangyoun Jung
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
Accelerating hbase with nvme and bucket cache
Accelerating hbase with nvme and bucket cacheAccelerating hbase with nvme and bucket cache
Accelerating hbase with nvme and bucket cacheDavid Grier
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 

Viewers also liked (14)

Linux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e VirtualizaçãoLinux: Kernel, Runlevels e Virtualização
Linux: Kernel, Runlevels e Virtualização
 
리눅스 간단 강의 1강
리눅스 간단 강의 1강리눅스 간단 강의 1강
리눅스 간단 강의 1강
 
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...
IMCSummit 2015 - Day 1 Developer Track - Evolution of non-volatile memory exp...
 
High Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelHigh Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux Kernel
 
Redis on NVMe SSD - Zvika Guz, Samsung
 Redis on NVMe SSD - Zvika Guz, Samsung Redis on NVMe SSD - Zvika Guz, Samsung
Redis on NVMe SSD - Zvika Guz, Samsung
 
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
 
파이썬 심화
파이썬 심화파이썬 심화
파이썬 심화
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Accelerating hbase with nvme and bucket cache
Accelerating hbase with nvme and bucket cacheAccelerating hbase with nvme and bucket cache
Accelerating hbase with nvme and bucket cache
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 

Similar to 노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)

운영체제 Sig2
운영체제 Sig2운영체제 Sig2
운영체제 Sig2YoungGun Na
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file formatYoungjun Chang
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계우진 신
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장Sunggon Song
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
[OS] Operating System 5 layer
[OS] Operating System 5 layer[OS] Operating System 5 layer
[OS] Operating System 5 layerssuserb2b4e71
 
(120128) #fitalk sql server anti-forensics
(120128) #fitalk   sql server anti-forensics(120128) #fitalk   sql server anti-forensics
(120128) #fitalk sql server anti-forensicsINSIGHT FORENSIC
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱PgDay.Seoul
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 
Linux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerLinux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerInfraEngineer
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkitYoungjun Chang
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Sung wook Kang
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis병준 김
 

Similar to 노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D) (20)

운영체제 Sig2
운영체제 Sig2운영체제 Sig2
운영체제 Sig2
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제UNIX 시스템 2014-2018년 기말시험 기출문제
UNIX 시스템 2014-2018년 기말시험 기출문제
 
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file format
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
[OS] Operating System 5 layer
[OS] Operating System 5 layer[OS] Operating System 5 layer
[OS] Operating System 5 layer
 
(120128) #fitalk sql server anti-forensics
(120128) #fitalk   sql server anti-forensics(120128) #fitalk   sql server anti-forensics
(120128) #fitalk sql server anti-forensics
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
 
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
[Pgday.Seoul 2017] 2. PostgreSQL을 위한 리눅스 커널 최적화 - 김상욱
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
Linux Kernel 101 for Beginner
Linux Kernel 101 for BeginnerLinux Kernel 101 for Beginner
Linux Kernel 101 for Beginner
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkit
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 

More from Ubuntu Korea Community

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt Ubuntu Korea Community
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회Ubuntu Korea Community
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesUbuntu Korea Community
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationUbuntu Korea Community
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들Ubuntu Korea Community
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티Ubuntu Korea Community
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고Ubuntu Korea Community
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조Ubuntu Korea Community
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기Ubuntu Korea Community
 

More from Ubuntu Korea Community (20)

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회
 
Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022
 
Overview of the Flatpak
Overview of the FlatpakOverview of the Flatpak
Overview of the Flatpak
 
Usage of the MQTT
Usage of the MQTTUsage of the MQTT
Usage of the MQTT
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack Techniques
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop Application
 
나의 우분투 이야기
나의 우분투 이야기나의 우분투 이야기
나의 우분투 이야기
 
Malware Dataset & Ubuntu
Malware Dataset & UbuntuMalware Dataset & Ubuntu
Malware Dataset & Ubuntu
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기
 
기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT
 
모바일에 딥러닝 심기
모바일에 딥러닝 심기모바일에 딥러닝 심기
모바일에 딥러닝 심기
 

노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)

  • 1. 마스터 제목 스타일 편집 1 1 리눅스 커널 - 개요 및 이슈 2010. 1. 29 노태상
  • 2. 마스터 제목 스타일 편집 리눅스 커널 개요  커널 개요  리눅스 커널 개요  리눅스 커널 기본기능  리눅스 커널 부팅 2 2
  • 3. 마스터 제목 스타일 편집 3 3 커널 개요 - 운영체제란? 운운영영체체제제란란??  자원 관리자 (Resource Manager) 운운영영체체제제가가 관관리리해해야야 될될 자자원원  물리적 자원  CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하 고 있는 요소들과 주변장치 등  추상적 자원  태스크(task), 쓰레드(thread) : CPU 추상화  세그먼트(segment), 페이지(page) : 메모리 추상화  파일, inode : 디스크 추상화  프로토콜, 패킷 : 네트워크 추상화
  • 4. 마스터 제목 스타일 편집 4 4 커널 개요 - 커널이란? 커커널널이이란란??  운영체제를 이루는 가장 핵심적인 소프트웨어  운영체제를 구성하고 있는 핵심으로서 타깃보드의 시스템 구동에 필요한 환경설정과 수행되는 프로그램들을 관리하는 소프트웨어 커커널널의의 세세부부 기기능능  프로세스 관리 (Process Management)  메모리 관리 (Memory Management)  파일 시스템 관리 (File System Management)  장치 관리 (Device Management)  네트워크 관리 (Network Management)
  • 5. 마스터 제목 스타일 편집 5 5 커널 개요 - 커널의 기능 프프로로세세스스 관관리리  프로세스의 생성 및 소멸  프로세스 간 통신  CPU 스케줄링 메메모모리리 관관리리  가상 메모리 관리  메모리 하드웨어 관리 파파일일 시시스스템템 관관리리  가상 파일 시스템에 의한 여러 파일 시스템 타입 지 원  디스크 물리적 구조를 논리 적 구조로 표현 장장치치 관관리리  입출럭 요청 검증  입출력 요청 작언 스케줄 링  주변장치와 메모리 간의 자료전송 네네트트워워크크 관관리리  인터럽트 요청 처리  통신 프로토콜 구현  네트워크 라우팅 및 주소지 정
  • 6. 마스터 제목 스타일 편집 6 6 커널 개요 - 커널의 구조
  • 7. 마스터 제목 스타일 편집 7 7 커널 개요 - 커널의 종류 MMoonnoolliitthhiicc KKeerrnneell MMiiccrroo KKeerrnneell  리눅스는 Monolithic Kernel임
  • 8. 마스터 제목 스타일 편집 8 8 리눅스 커널 개요 리리눅눅스스 커커널널의의 역역할할  응용 프로그램이 동작하기 위한 기본 환 경을 제공  응용 프로그램은 최소한의 절차로 응용 프로그램 본래의 목적인 처리를 실행할 수 있게 함  응용 프로그램을 대신하여 하드웨어를 제 어하는 편리한 기능을 제공  응용 프로그램의 요청(시스템 콜)을 받아 동작하는 이벤트 중심의 프로그램  응용 프로그램으로부터 시스템 콜이 요청 되거나 하드웨어로부터 인터럽트가 요청 되면, 그 요청에 대응하는 처리를 수행함 응응용용 프프로로그그램램과과 커커널널
  • 9. 마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널 구조 편집 9 9
  • 10. 마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 기본 편집 기능 10 10
  • 11. 마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 장점 편집 리리눅눅스스 장장점점 리리눅눅스스 모모듈듈 11 11 모 듈 적재 제거 사용 자 영역 커널 영역  오래되었고 많은 사람들이 사용  검증됨, 안정적, 다양한 기능 제공  오픈 소스, 오픈 아키텍처  수많은 개발자에 의하여 발전됨  개발자 필요에 이하여 변경가능  소규모 모듈단위로 설계됨  구조 변경 및 재구성이 용이  동적 로딩 및 제거 가능 커널코드 제공  다중 프로세서 지원  SMP(Symmet r ic Mul t i Processing) 지원  실시간 운영을 지원함  실시간 임베디드 분야에 활용 가능
  • 12. 마스터 리눅스 커널 개요 제목 - 리눅스 스타일 커널의 소스 편집 트리 12 12
  • 13. 마스터 리눅스 커널 기본 제목 기능 – 스타일 프로세스 관리 편집 13 13 프프로로세세스스 관관리리  프로그램의 실행상태를 관리  리눅스 커널은 지정된 프로그 램을 실행하기 위한 환경을 구축하고, 프로그램의 실행이 끝나면 이들을 깨끗하게 정리 함 프프로로세세스스 관관리리를를 위위한한 커커널널의의 자자료료구구조조  프로세스 ID, 그룹 ID, 세션 ID  실행 우선순위  프로세스 공간 정보  이용 중인 파일에 관한 정보 등 <실행가능 프로세스와 프로세스 스케줄 링>
  • 14. 마스터 리눅스 커널 기본 제목 기능 – 스타일 프로세스 관리 편집 14 14 시시그그널널  프로세스에 비동기 이벤트를 전달하기 위한 간단한 장치  시그널을 받은 프로세스는 실행을 일단 중지 후 시그널 핸들러를 실행 한 후 다시 중단된 지점부터 프로세스의 실행을 재개함 스스레레드드((TThhrreeaadd))  리눅스 커널 스레드는 일종의 프로세스로 구현되고 있음  프로세스와 다른 점  스레드 간에 프로세스 공간을 공유  스레드 관련 정보를 관리  프로세스를 관리하는 데이터 구조를 그대로 이용하여 스레드를 관리함  프로세스 스케줄러의 입장에서 프로세스와 스레드는 동일  POSIX 스레드 인터페이스는 리눅스 커널에서 기본으로 제공하는 인터 페이스가 아니라 라이브러리에 의해 커널 스레드 인터페이스로 변환됨.
  • 15. 마스터 리눅스 커널 기본 제목 기능 – 스타일 메모리 관리 편집 15 15 물물리리 메메모모리리 관관리리  물리 메모리를 페이지 단위로 관리함  페이지  가상메모리를 사용할 때 CPU에서 지원하는 메모리 관리의 최소 단위 임  페이지 크기는 CPU 종류에 따라 다름  버디 시스템(Buddy System)  페이지 단위로 물리메모리의 빈 영역을 효율적으로 관리하기 위한 구 조  서로 이웃한 빈 영역을 결합하여 보다 큰 빈 영역을 생성  슬랩 할당자(Slab Allocator)  페이지보다 작은 메모리 영역을 효율적으로 관리하기 위한 관리 구조  내부 단편화(f ragment) 발생을 최소화  메모리 캐시 이용 효율을 고려한 메모리 관리 방식
  • 16. 마스터 리눅스 커널 기본 제목 기능 – 스타일 메모리 관리 편집 16 16 가가상상 메메모모리리 관관리리  물리적으로 분산된 페이지를 모아서 가상공 간에 연속으로 할당  물리 메모리의 단편화 문제를 고려할 필요 가 없음  다중 가상 공간 사용  각 프로세스의 주소 공간을 독립적으로 할 당함 <다중 가상 공 간> 요요구구 페페이이징징((DDeemmaanndd PPaaggiinngg))  참조가 발생한 영역에 대해 페이지 단위로 물 리 메모리를 할당하는 기법  스왑(Swap) 시스템  참조 빈도가 낮은 영역의 물리메모리는 반환  COW(Copy-On-Wr ite)
  • 17. 마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 편집 17 17 파파일일 시시스스템템  기억 장치 상의 데이터를 파일이라고 하는 형식을 통해서 액세스 순서를 일관성 있게 제공함  리눅스 커널은 디바이스나 커널 내의 데이터 구조도 파일로 처리함  리눅스 커널은 각각의 파일에 i-노드로 불리는 데이터 구조를 할당하여 관리함  파일 디스크립터를 통하여 파일에 접근 캐캐시시((CCaacchhee))  리눅스 커널은 파일 접근을 빠르게 하기 위하여 각종 데이터를 메모리에 보관함  페이지 캐시 : 파일 데이터 자체를 보관함  i-노드 캐시 : 자주 사용되는 파일의 i-노드를 복사해서 메모리에 보관함  Dent ry 캐시  파일 이름을 보관, 경로 탐색을 빠르게 하기 위해 사용됨  커널이 수행하는 처리 중에서 가장 중요한 처리 중의 하나임
  • 18. 마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 편집 18 18 가가상상 파파일일 시시스스템템((VVFFSS)) <파일 시스템 계층>  사용자는 이용하고 있는 파일시스템이 어떤 파일시스템인지 알 필요가 없음  하위 파일시스템의 형식에 의존하지 않고 동일한 인터페이스로 조작할 수 있음  가상파일시스템 아래에는 다양한 종류의 파일시스템을 배치할 수 있음
  • 19. 마스터 리눅스 커널 기본 제목 기능 – 스타일 파일 시스템 관리 편집 파파일일시시스스템템 관관련련 용용어어들들 19 19  로컬 파일 시스템  네트워크 파일 시스템  유사 파일 시스템  기억 장치 위에 있는 파일 이외의 것을 진짜 파일인 것처럼 가장하는 파일 시스 템  proc 파일 시스템, sysfs 파일 시스템  리눅스 표준 파일 시스템  ext2  저널링(journal ing) 파일 시스템 ext3  Ext2 파일 시스템에 저널링 기능을 추가  내결함성(fault tolerance)을 높이는 것으로 시스템의 이상종료 후 파일시스템 복구를 최적화하기 위하여 도입됨  블록 디바이스  파일 시스템의 요청에 따라 실제로 입출력 처리를 수행  버퍼 및 페이지 단위로 입출력 수행
  • 20. 마스터 리눅스 커널 기본 제목 기능 – 스타일 장치 관리 편집 AApppplliiccaattiioonn SSyysstteemm CCaallll IInntteerrffaaccee VViirrttuurree FFiillee SSyysstteemm((VVFFSS)) BBuuffffeerr CCaacchhee Appl icat ion  리눅스 커널은 장치관리 구조로 파일 시스템을 사용함 20 20 Character Device Driver HHaarrddwwaarree Network Subsystem DDeevviiccee IInntteerrffaaccee Area Kernel Area Hardware Block Device Driver Network Device Driver BBSSDD ssoocckkeett IInneett((AAFF__IINNEETT)) Transport(TCP,UD P) NNeettwwoorrkk((IIPP))
  • 21. 마스터 리눅스 커널 기본 제목 기능 – 스타일 네트워크 관리 편집 21 21 소소켓켓  임의의 프로세스 및 프로세서간 통 신  하위층에 다양한 통신프로토콜을 정의할 수 있음  소켓 인터페이스 는 리눅스 커널 내에 구현됨 <TCP/IP 프로토콜 스택 계 층>
  • 22. 마스터 제목 스타일 편집 22 22 리눅스 커널 부팅 임임베베디디드드 리리눅눅스스 커커널널 생생성성 절절차차
  • 23. 마스터 제목 스타일 편집 임임베베디디드드 시시스스템템에에 커커널널 적적재재  File System Downloading  Kernel Image Downloading  Kernel Image Fusing : Flash() 23 23 리눅스 커널 부팅 Target Host (PC) Host File System FFiillee SSyysstteemm KKeerrnneell IImmaaggee BBoooott LLooaaddeerr SDRAM FFiillee SSyysstteemm KKeerrnneell IImmaaggee Flash Memory FFiillee SSyysstteemm KKeerrnneell IImmaaggee BBoooott LLooaaddeerr  Boot Loader Fusing  File System Fusing : Flash()  Target Booting Start !!!
  • 24. 마스터 제목 스타일 편집 24 24 리눅스 커널 부팅 커커널널 압압축축 해해제제 절절차차
  • 25. 마스터 제목 스타일 편집 25 25 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 26. 마스터 제목 스타일 편집 26 26 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 27. 마스터 제목 스타일 편집 27 27 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 28. 마스터 제목 스타일 편집 28 28 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 29. 마스터 제목 스타일 편집 29 29 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 30. 마스터 제목 스타일 편집 30 30 리눅스 커널 부팅 커커널널 부부팅팅 절절차차
  • 31. 마스터 제목 스타일 편집 리눅스 커널 이슈 • 프로세스 스케줄링 • 인터럽트 • 지연처리 • 타이머 • 시스템 콜 • 동기화 31 31
  • 32. 마스터 제목 스타일 편집 32 32 프로세스 스케줄링 프프로로세세스스란란??  프로그램이 움직이고 있는 상태  프로그램은 1개이더라도 그 프로그램을 실행하고 있는 프로세스는 여러 개 존재할 수 있음  콘텍스트(Context)  프로세스가 동작하기 위한 프로세스 공간과 프로세스가 동작할 때 의 레지스터 값 등  각각의 프로세스는 콘텍스트를 가짐  리눅스 커널에서는 스레드도 일종의 프로세스로 관리함  task_struct 구조체  개개의 프로세스 및 스레드에 관한 정보 저장 구조체
  • 33. 마스터 제목 스타일 편집 33 33 프로세스 스케줄링 프프로로세세스스 전전환환  Process Switch  Process Dispatch
  • 34. 마스터 제목 스타일 편집 34 34 프로세스 스케줄링 프프로로세세스스 스스케케줄줄러러  응답 성능  Preemption  처리율 (Throughput)
  • 35. 마스터 제목 스타일 편집 35 35 프로세스 스케줄링 프프로로세세스스 실실행행 우우선선순순위위
  • 36. 마스터 제목 스타일 편집 36 36 프로세스 스케줄링 멀티프로세서 멀티프로세서 시시스스템템에에서서의의 프프로로세세스스 스스케케줄줄링링 <프로세스와 캐시의 관계>
  • 37. 마스터 제목 스타일 편집 37 37 프로세스 스케줄링 OO((11)) 스스케케줄줄러러 구구조조
  • 38. 마스터 제목 스타일 편집 38 38 프로세스 스케줄링 프프로로세세스스 상상태태  실행가능 상태  실행상태  실행 준비 상태  대기상태  INTERRUPTIBLE  UNINTERRUPTIB LE
  • 39. 마스터 제목 스타일 편집 39 39 프로세스 스케줄링 프프로로세세스스 상상태태 천천이이
  • 40. 마스터 제목 스타일 편집 40 40 프로세스 스케줄링 대대기기 프프로로세세스스의의 wwaakkee__uupp
  • 41. 마스터 제목 스타일 편집 41 41 프로세스 스케줄링 wwaakkee__uupp 함함수수 집집합합
  • 42. 마스터 제목 스타일 편집 42 42 프로세스 스케줄링 복복수수 이이벤벤트트 대대기기
  • 43. 마스터 제목 스타일 편집 43 43 인터럽트 (Interrupt) 인인터터럽럽트트  하드웨어가 리눅스 커널 기능을 호출하는 구조  프로세스가 리눅스 커널 기능을 호출할 때는 시스템 콜 사용  리눅스 커널에 있어서 중요한 이벤트  리눅스 커널은 이벤트 구동형 프로그램임  디바이스를 효율적으로 제어하기 위한 구조 리리눅눅스스 커커널널 인인터터럽럽트트 처처리리의의 특특징징  응답성의 확보  하드웨어 인터럽트 (IRQ)  소프트 인터럽트 (IRQ)  멀티 프로세서의 대응 <인터럽트 응답성 처리 예>
  • 44. 마스터 제목 스타일 편집 44 44 인터럽트 (Interrupt) 인인터터럽럽트트의의 종종류류
  • 45. 마스터 제목 스타일 편집 45 45 인터럽트 (Interrupt) 인인터터럽럽트트의의 발발생생 및및 처처리리
  • 46. 마스터 인터럽트 (Interrupt) 제목 – 인터럽트 스타일 관리 테이블 편집 46 46
  • 47. 마스터 제목 스타일 편집 47 47 인터럽트 (Interrupt) 인인터터럽럽트트 핸핸들들러러 등등록록 함함수수
  • 48. 마스터 제목 스타일 편집 48 48 인터럽트 (Interrupt) 하하드드웨웨어어 인인터터럽럽트트 기기동동 구구조조
  • 49. 마스터 제목 스타일 편집 인터럽트 (Interrupt) – 하드웨어 인터럽트 제어 함수 <하드웨어 인터럽트 제어함수(CPU 레벨)> <하드웨어 인터럽트 제어함수(인터럽트 컨트롤러 레 49 49 벨)>
  • 50. 마스터 제목 스타일 편집 50 50 인터럽트 (Interrupt) 인인터터럽럽트트 요요청청 보보류류
  • 51. 마스터 제목 스타일 편집 51 51 지연처리 (delay) 인인터터럽럽트트 지지연연처처리리  소프트 인터럽트  하드웨어 인터럽트를 금지하지 않음  소프트 인터럽트 핸들러는 그 원인을 제공한 하드웨어 인터럽트 핸들러와 동일한 CPU 상에서 동작함  하드웨어 인터럽트 핸들러가 요청할 때 발생함  소프트 인터럽트 핸들러는 하드웨어 인터럽트 핸들러에서 수행한 처리를 물려받아 동작함  Tasklet  소프트 인터럽트를 범용화한 구조  하드웨어 인터럽트와 제휴하여 효율적으로 동작함
  • 52. 마스터 제목 스타일 편집 52 52 지연처리 (delay) 소소프프트트 인인터터럽럽트트 데데이이터터 구구조조
  • 53. 마스터 제목 스타일 편집 53 53 지연처리 (delay) 소소프프트트 인인터터럽럽트트 종종류류
  • 54. 마스터 제목 스타일 편집 54 54 지연처리 (delay) 소소프프트트 인인터터럽럽트트 제제어어 함함수수
  • 55. 마스터 제목 스타일 편집 지연처리 (delay) – workqueue (지연처리 구현 구조) 55 55 WWoorrkkqquueeuuee의의 구구조조  주로 프로세스 콘텍스 트 처리 지연에 이용 됨  각종 D/D 지연실행  블록 I/O요청의 지연 실행  비동기 I/O 처리
  • 56. 마스터 제목 스타일 편집 지연처리 (delay) – workqueue (지연처리 구현 구조) 56 56 타타이이머머 리리스스트트와와 wwoorrkkqquueeuuee
  • 57. 마스터 제목 스타일 편집 지연처리 (delay) – workqueue (지연처리 구현 구조) WWoorrkkqquueeuuee 제제어어 함함수수 57 57
  • 58. 마스터 제목 스타일 편집 58 58 타이머 (Timer)  타이머의 역할 리리눅눅스스 타타이이머머  시간 count  제한 시간 관리 • 통신처리에서의 재 발송 처리 • 응답 없는 디바이스에 대한 실행 재처리 • 주기적인 폴링 처리 • SIGALRM 시그널 생성  리눅스 커널은 주기적으로 발생하는 인터럽트(타이머 인터 럽트)를 이용하여 타이머 기능을 동작 시킴  리눅스 타이머 종류  글로벌 타이머  CPU 로컬 타이머
  • 59. 마스터 제목 스타일 편집 59 59 타이머 (Timer) 리리눅눅스스 타타이이머머의의 동동작작
  • 60. 마스터 제목 스타일 편집 60 60 타이머 (Timer) 로컬타이머 로컬타이머 소소프프트트 인인터터럽럽트트 핸핸들들러러 실실행행
  • 61. 마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 편집 61 61 타타이이머머 벡벡터터의의 분분할할  타이머 리스트 - 이미 설정된 일정시 간 후에 콜백되는 핸 들러를 등록하기 위 한 범용적인 구조
  • 62. 마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 편집 62 62 ttvv11 벡벡터터의의 실실행행
  • 63. 마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 편집 63 63 ttvv22 벡벡터터를를 ttvv11벡벡터터로로 대대체체
  • 64. 마스터 타이머 (Timer) 제목 – 타이머 스타일 리스트 편집 64 64 타타이이머머 리리스스트트 관관련련 제제어어함함수수
  • 65. 마스터 타이머 (Timer) 제목 – 구간( interval 스타일 ) 타이머 편집 65 65 인인터터벌벌 타타이이머머  절대시간 지정 타이머  SIGALRM  실행시간 지정 타이머  SIGVTLALARM  SIGPROF
  • 66. 마스터 제목 스타일 편집 66 66 시스템 콜 (system Cal l ) 시시스스템템 콜콜이이란란??  프로세스가 커널에게 명시적으로 서비스를 요청하는 인터페이스  커널이 사용자 수준 응용에게 서비스를 제공하는 인터페이스  사용자 모드에서 사용할 수 있도록 밖으로 노출되어 있는 커널 함 수  Software Inter rupt를 통한 커널에 대한 서비스 요청  시스템 콜을 하게 되는 순간부터 사용자 모드에서 커널 모드로 전 환됨  시스템 콜을 시작하면 커널코드가 사용자 프로세스 환경 (context) 아래에서 동작하게 됨  시스템 콜을 일으키는 루틴을 wrapper routine이라 함  open()은 sys_open()의 wrapper routine
  • 67. 마스터 제목 스타일 편집 67 67 시스템 콜 (system Cal l ) 시시스스템템 콜콜 예예  프로세스 관리자가 제공하는 서비스와 관련된 시스템 콜  fork(), execve(), getpid(), signal() 등  파일 시스템이 제공하는 서비스와 관련된 시스템 콜  open(), rea(), wr ite(), ioct l(), close() 등  메모리 관리자가 제공하는 시스템 콜  brk() 등  네트워크 관리 부분과 관련된 시스템 콜  socket(), bind(), connect() 등  디바이스 드라이버가 제공하는 시스템 호출  없음
  • 68. 마스터 제목 스타일 편집 68 68 시스템 콜 (system Cal l ) 보보호호 모모드드 <보호 모드>  보호모드  커널은 커널 자체 프로세스나 커 널 자원을 보호하기 위하여 CPU 가 제공하는 보호 기능을 사용함  프로세스가 직접 커널 함수(실행 코드)를 호출할 수 없게 함  리눅스 특권 레벨  레벨 0 : 커널 레벨  레벨 3 : 사용자 프로세스 레벨  레벨 1,2 : 사용 않음  특권 레벨의 변경  소프트웨어 인터럽트 (sof tware inter rupt)
  • 69. 마스터 제목 스타일 편집 시스템 콜 (system Cal l ) – 시스템 콜 인터페이스 69 69
  • 70. 마스터 제목 스타일 편집 70 70 시스템 콜 (system Cal l ) 시시스스템템 콜콜 처처리리 과과정정 –– xx8866
  • 71. 마스터 제목 스타일 편집 AApppplliiccaattiioonn LLiibbrraarryy SS//WW iinntteerrrruupptt 71 71 시스템 콜 (system Cal l ) 시시스스템템 콜콜 처처리리 과과정정 -- AARRMM sk_open() { } sk_release() { } sk_write() { }sk_read() { } sswwii 990000000055 sswwii 990000000066 sswwii 990000000044 f->f_op->open :sk_open f->f_op->release:sk_release f->f_op->write:sk_write f->f_op->read :sk_read test open() sys_open() sys_release() sys_write() sys_read() main(){ open() close() write() read() } close() write() read() sswwii 990000000033 Vector Table 0x08 b vector_swi vector_swi Switch(num) 5 6 4 3 SSyysstteemm ccaallll VVFFSS DDeevviiccee ddrriivveerr
  • 72. 마스터 제목 스타일 편집 72 72 시스템 콜 (system Cal l ) 시시스스템템 콜콜의의 종종류류 시시스스템템 콜콜 핸핸들들러러 등등록록
  • 73. 마스터 시스템 콜 – 시스템 제목 콜 처리 스타일 예 : fread( ) 편집 호출 73 73
  • 74. 마스터 동기화 (Synchronization) 제목 스타일 – 필요성 편집 74 74 커커널널 처처리리의의 특특성성  커널 핸들러의 비동기적 & 동시 실행  프로세스의 시스템 콜  외부 장치로부터의 인터럽트  동일한 자원이나 서로 관련된 자원을 사용하는 등 경쟁이 발생함 배배제제((EExxcclluussiioonn)) 처처리리  여러 커널 핸들러가 동시에 실행되더라도 특정 커널 핸들러가 어 떤 자원을 사용하고 있는 동안에 또 다른 핸들러가 이 자원에 영 향을 주지 못하도록 접근하지 못하게 하는 방법  시스템에 준비된 배제  프로세스 콘텍스트 사이  인터럽트 콘텍스트  다른 CPU 상의 콘텍스트
  • 75. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 75 75 세세마마포포어어 동동작작  세마포어  비교적 긴 시간을 확보하는 자원에 대해서 이 용  세마포어 이용 예  파일 접근 배제 : i-노드 관리 구조체
  • 76. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 76 76 읽읽기기//쓰쓰기기 세세마마포포어어 동동작작
  • 77. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 읽읽기기//쓰쓰기기 세세마마포포어어에에 대대한한 갱갱신신 접접근근 77 77
  • 78. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 읽읽기기//쓰쓰기기 세세마마포포어어 관관련련 함함수수 78 78
  • 79. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 선선점점 금금지지에에 의의한한 접접근근 배배제제 79 79  선점(Preemption)  커널 2.6부터는 커널코 드 실행 중에도 선점 가능  CPU 종속 자원에 대한 배제 필요 시 명시적으 로 선점을 금지할 필요 가 있음  스핀락은 필요 없음
  • 80. 동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제 마스터 제목 스타일 편집 선선점점권권의의 억억제제..허허가가 함함수수 80 80
  • 81. 마스터 제목 스타일 편집 동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 인인터터럽럽트트 금금지지에에 의의한한 접접근근 배배제제 81 81
  • 82. 마스터 제목 스타일 편집 동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 소프트 소프트 인인터터럽럽트트 금금지지에에 의의한한 접접근근 배배제제 82 82
  • 83. 마스터 제목 스타일 편집 동기화 (Synchronization) – 인터럽트 콘텍스트의 배제 인인터터럽럽트트 금금지지 관관련련 함함수수 83 83
  • 84. 마스터 제목 스타일 편집 동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 스스핀핀락락에에 의의한한 배배제제 84 84  스핀락(Spin Lock)  멀티프로세서 시스템 에서 CPU감 경쟁을 조정하기 위한 배제 구조  Busy wait  잠금 변수를 취득하 지 못한 CPU는 잠금 이 해제될 때까지 그 자리에서 계속 기다 림
  • 85. 마스터 제목 스타일 편집 동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 읽읽기기//쓰쓰기기 스스핀핀락락에에 의의한한 배배제제 85 85
  • 86. 마스터 제목 스타일 편집 동기화 (Synchronization) – 멀티프로세서 환경에서의 배제 86 86 스스핀핀락락 관관련련 함함수수
  • 87. 마스터 제목 스타일 편집 동기화 (Synchronization) – RCU (Read Copy Update) 87 87 RRCCUU 동동작작 예예  RCU  멀티프로세서 시 스템 전용의 배 제 처리  커널 2.6에서 도입됨  포인터로 결합된 데이터 구조를 보호할 때 이용 함  빈번하게 배제가 필요한 자원에 유용
  • 88. 마스터 제목 스타일 편집 동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 메메모모리리 장장벽벽?? 88 88  메모리 장벽이란?  실제 메모리 상의 데이터 접근의 순서가 제대로 지켜지 지 않음  메모리 접근 순서가 지켜져야 하는 이유  메모리 상의 데이터를 각종 I/O 컨트롤러와 교환  다른 CPU로부터 참조나 갱신을 하기 위하여 CPU 간의 동일한 데이터 참조  메모리 장벽의 원인  내부에서 명령어의 순서를 바꿔서 실행하는 CPU 존재 (CPU 자원 효율화 목표)
  • 89. 마스터 제목 스타일 편집 동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 명명령령어어 순순서서 변변경경의의 경경우우 -- AARRMM 사이클 1 2 3 4 5 6 7 8 9 10 89 89 F D E 명령 ADD R0, R1, R2 M W SUB R1, R2, R4 F D E M W AND R2, R1, R0 F D E M W LDR R4, [ R5 ] F D E M W XOR R0, R4, R2 F D I E M W ADD R1, R2, R3 F I D E SBC R1, R2, R3 F D F : Fetch D : Decode E : Execute M : Memory W : Write I : Interlock M E
  • 90. 마스터 제목 스타일 편집 동기화 (Synchronization) – 메모리 장벽 (Memory Barrier) 메메모모리리 장장벽벽 처처리리 매매크크로로 90 90