90
마스터 제목 스타일 편집 1 1 리눅스 커널 - 개요 및 이슈 2010. 1. 29 노태상

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

Embed Size (px)

Citation preview

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

마스터 제목 스타일 편집

11

리눅스 커널- 개요 및 이슈

2010. 1. 29노태상

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

마스터 제목 스타일 편집

22

리눅스 커널 개요

커널 개요

리눅스 커널 개요 리눅스 커널 기본기능 리눅스 커널 부팅

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

마스터 제목 스타일 편집

33

운영체제란?운영체제란?

자원 관리자 (Resource Manager)

커널 개요 - 운영체제란?

운영체제가 관리해야 될 자원운영체제가 관리해야 될 자원

물리적 자원

CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하

고 있는 요소들과 주변장치 등

추상적 자원

태스크(task), 쓰레드(thread) : CPU 추상화

세그먼트(segment), 페이지(page) : 메모리 추상화

파일, inode : 디스크 추상화

프로토콜, 패킷 : 네트워크 추상화

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

마스터 제목 스타일 편집

44

커널이란?커널이란?

운영체제를 이루는 가장 핵심적인 소프트웨어

운영체제를 구성하고 있는 핵심으로서 타깃보드의 시스템 구동에

필요한 환경설정과 수행되는 프로그램들을 관리하는 소프트웨어

커널 개요 - 커널이란?

커널의 세부 기능커널의 세부 기능

프로세스 관리 (Process Management)

메모리 관리 (Memory Management)

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

장치 관리 (Device Management)

네트워크 관리 (Network Management)

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

마스터 제목 스타일 편집

55

프로세스 관리프로세스 관리

프로세스의 생성 및 소멸

프로세스 간 통신

CPU 스케줄링

커널 개요 - 커널의 기능

메모리 관리메모리 관리

가상 메모리 관리

메모리 하드웨어 관리

파일 시스템 관리파일 시스템 관리

가상 파일 시스템에 의한 여러 파일 시스템 타입 지원

디스크 물리적 구조를 논리적 구조로 표현

장치 관리장치 관리

입출럭 요청 검증

입출력 요청 작언 스케줄링

주변장치와 메모리 간의 자료전송

인터럽트 요청 처리네트워크 관리네트워크 관리

통신 프로토콜 구현

네트워크 라우팅 및 주소지정

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

마스터 제목 스타일 편집

66

커널 개요 - 커널의 구조

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

마스터 제목 스타일 편집

77

Monolithic KernelMonolithic Kernel

커널 개요 - 커널의 종류

Micro KernelMicro Kernel

    

리눅스는 Monolithic Kernel임

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

마스터 제목 스타일 편집

88

리눅스 커널 개요

리눅스 커널의 역할리눅스 커널의 역할

응용 프로그램이 동작하기 위한 기본 환

경을 제공

응용 프로그램은 최소한의 절차로 응용

프로그램 본래의 목적인 처리를 실행할

수 있게 함

응용 프로그램을 대신하여 하드웨어를 제

어하는 편리한 기능을 제공

응용 프로그램의 요청(시스템 콜)을 받아

동작하는 이벤트 중심의 프로그램

응용 프로그램으로부터 시스템 콜이 요청

되거나 하드웨어로부터 인터럽트가 요청

되면, 그 요청에 대응하는 처리를 수행함

응용 프로그램과 커널응용 프로그램과 커널

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

마스터 제목 스타일 편집

99

리눅스 커널 개요 - 리눅스 커널 구조

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

마스터 제목 스타일 편집

1010

리눅스 커널 개요 - 리눅스 커널의 기본 기능

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

마스터 제목 스타일 편집

1111

리눅스 커널 개요 - 리눅스 커널의 장점

모듈

적재

제거

커널영역

사용자

영역

리눅스 모듈리눅스 모듈리눅스 장점리눅스 장점

오래되었고 많은 사람들이 사용

검증됨, 안정적, 다양한 기능 제공

오픈 소스, 오픈 아키텍처

수많은 개발자에 의하여 발전됨

개발자 필요에 이하여 변경가능

소규모 모듈단위로 설계됨

구조 변경 및 재구성이 용이

동적 로딩 및 제거 가능 커널코드 제공

다중 프로세서 지원

SMP(Symmetric Mult i Processing)

지원

실시간 운영을 지원함

실시간 임베디드 분야에 활용 가능

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

마스터 제목 스타일 편집

1212

리눅스 커널 개요 - 리눅스 커널의 소스 트리

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

마스터 제목 스타일 편집

1313

리눅스 커널 기본 기능 – 프로세스 관리

프로세스 관리프로세스 관리

프로그램의 실행상태를 관리

리눅스 커널은 지정된 프로그

램을 실행하기 위한 환경을

구축하고, 프로그램의 실행이

끝나면 이들을 깨끗하게 정리

프로세스 관리를 위한 커널의 자료구조프로세스 관리를 위한 커널의 자료구조

프로세스 ID, 그룹 ID, 세션 ID

실행 우선순위

프로세스 공간 정보

이용 중인 파일에 관한 정보 등

<실행가능 프로세스와 프로세스 스케줄

링>

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

마스터 제목 스타일 편집

1414

리눅스 커널 기본 기능 – 프로세스 관리

시그널시그널

프로세스에 비동기 이벤트를 전달하기 위한 간단한 장치

시그널을 받은 프로세스는 실행을 일단 중지 후 시그널 핸들러를 실행

한 후 다시 중단된 지점부터 프로세스의 실행을 재개함

스레드(Thread)스레드(Thread)

리눅스 커널 스레드는 일종의 프로세스로 구현되고 있음

프로세스와 다른 점

스레드 간에 프로세스 공간을 공유

스레드 관련 정보를 관리

프로세스를 관리하는 데이터 구조를 그대로 이용하여 스레드를 관리함

프로세스 스케줄러의 입장에서 프로세스와 스레드는 동일

POSIX 스레드 인터페이스는 리눅스 커널에서 기본으로 제공하는 인터

페이스가 아니라 라이브러리에 의해 커널 스레드 인터페이스로 변환됨.

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

마스터 제목 스타일 편집

1515

리눅스 커널 기본 기능 – 메모리 관리

물리 메모리 관리물리 메모리 관리

물리 메모리를 페이지 단위로 관리함

페이지

가상메모리를 사용할 때 CPU에서 지원하는 메모리 관리의 최소 단위

페이지 크기는 CPU 종류에 따라 다름

버디 시스템(Buddy System)

페이지 단위로 물리메모리의 빈 영역을 효율적으로 관리하기 위한 구

서로 이웃한 빈 영역을 결합하여 보다 큰 빈 영역을 생성

슬랩 할당자(Slab A l locator)

페이지보다 작은 메모리 영역을 효율적으로 관리하기 위한 관리 구조

내부 단편화(fragment) 발생을 최소화

메모리 캐시 이용 효율을 고려한 메모리 관리 방식

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

마스터 제목 스타일 편집

1616

리눅스 커널 기본 기능 – 메모리 관리

가상 메모리 관리가상 메모리 관리

물리적으로 분산된 페이지를 모아서 가상공

간에 연속으로 할당

물리 메모리의 단편화 문제를 고려할 필요

가 없음

다중 가상 공간 사용

각 프로세스의 주소 공간을 독립적으로 할

당함

<다중 가상 공

간>

요구 페이징(Demand Paging)요구 페이징(Demand Paging)

참조가 발생한 영역에 대해 페이지 단위로 물

리 메모리를 할당하는 기법

스왑(Swap) 시스템

참조 빈도가 낮은 영역의 물리메모리는

반환

COW(Copy-On-Wr ite)

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

마스터 제목 스타일 편집

1717

리눅스 커널 기본 기능 – 파일 시스템 관리

파일 시스템파일 시스템

기억 장치 상의 데이터를 파일이라고 하는 형식을 통해서 액세스 순서를

일관성 있게 제공함

리눅스 커널은 디바이스나 커널 내의 데이터 구조도 파일로 처리함

리눅스 커널은 각각의 파일에 i-노드로 불리는 데이터 구조를 할당하여

관리함

파일 디스크립터를 통하여 파일에 접근

캐시(Cache)캐시(Cache)

리눅스 커널은 파일 접근을 빠르게 하기 위하여 각종 데이터를 메모리에

보관함

페이지 캐시 : 파일 데이터 자체를 보관함

i-노드 캐시 : 자주 사용되는 파일의 i-노드를 복사해서 메모리에 보관함

Dentry 캐시

파일 이름을 보관, 경로 탐색을 빠르게 하기 위해 사용됨

커널이 수행하는 처리 중에서 가장 중요한 처리 중의 하나임

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

마스터 제목 스타일 편집

1818

리눅스 커널 기본 기능 – 파일 시스템 관리

가상 파일 시스템(VFS)가상 파일 시스템(VFS)

사용자는 이용하고 있는 파일시스템이 어떤 파일시스템인지 알 필요가

없음

하위 파일시스템의 형식에 의존하지 않고 동일한 인터페이스로 조작할

수 있음

가상파일시스템 아래에는 다양한 종류의 파일시스템을 배치할 수 있음

<파일 시스템 계층>

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

마스터 제목 스타일 편집

1919

리눅스 커널 기본 기능 – 파일 시스템 관리

파일시스템 관련 용어들파일시스템 관련 용어들 로컬 파일 시스템

네트워크 파일 시스템

유사 파일 시스템

기억 장치 위에 있는 파일 이외의 것을 진짜 파일인 것처럼 가장하는 파일 시스

proc 파일 시스템, sysfs 파일 시스템

리눅스 표준 파일 시스템

ext2

저널링( journaling) 파일 시스템 ext3

Ext2 파일 시스템에 저널링 기능을 추가

내결함성(fault tolerance)을 높이는 것으로 시스템의 이상종료 후 파일시스템

복구를 최적화하기 위하여 도입됨

블록 디바이스

파일 시스템의 요청에 따라 실제로 입출력 처리를 수행

버퍼 및 페이지 단위로 입출력 수행

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

마스터 제목 스타일 편집

2020

리눅스 커널 기본 기능 – 장치 관리

리눅스 커널은 장치관리 구조로 파일 시스템을 사용함

System Call InterfaceSystem Call Interface

Virture File System(VFS)Virture File System(VFS)

Buffer CacheBuffer Cache

ApplicationApplication

CharacterDevice DriverCharacter

Device Driver

HardwareHardware

Network SubsystemNetwork Subsystem

Device InterfaceDevice Interface

Kernel Area

ApplicationArea

Hardware

BlockDevice Driver

BlockDevice Driver

Network Device Driver

Network Device Driver

BSD socketBSD socket

Inet(AF_INET)Inet(AF_INET)

Transport(TCP,UDP)

Transport(TCP,UDP)

Network(IP)Network(IP)

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

마스터 제목 스타일 편집

2121

리눅스 커널 기본 기능 – 네트워크 관리

소켓소켓

임의의 프로세스

및 프로세서간 통

하위층에 다양한

통신프로토콜을

정의할 수 있음

소켓 인터페이스

는 리눅스 커널

내에 구현됨

<TCP/ IP 프로토콜 스택 계

층>

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

마스터 제목 스타일 편집

2222

리눅스 커널 부팅

임베디드 리눅스 커널 생성 절차 임베디드 리눅스 커널 생성 절차

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

마스터 제목 스타일 편집

2323

리눅스 커널 부팅

Target

Host (PC)

Boot LoaderBoot Loader

Kernel ImageKernel Image

File SystemFile System

Host File System

File SystemFile System

Kernel ImageKernel Image

Boot LoaderBoot Loader

Flash Memory

SDRAM

File SystemFile System

Kernel ImageKernel Image

Boot Loader Fusing

Kernel Image Downloading

Kernel Image

Fusing : Flash()

File System Downloading

File System

Fusing : Flash()

Target Booting Start !!!

임베디드 시스템에 커널 적재 임베디드 시스템에 커널 적재

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

마스터 제목 스타일 편집

2424

리눅스 커널 부팅커널 압축 해제 절차 커널 압축 해제 절차

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

마스터 제목 스타일 편집

2525

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

2626

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

2727

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

2828

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

2929

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

3030

리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차

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

마스터 제목 스타일 편집

3131

리눅스 커널 이슈

• 프로세스 스케줄링• 인터럽트• 지연처리• 타이머• 시스템 콜• 동기화

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

마스터 제목 스타일 편집

3232

프로세스 스케줄링

프로세스란?프로세스란?

프로그램이 움직이고 있는 상태

프로그램은 1개이더라도 그 프로그램을 실행하고 있는 프로세스는

여러 개 존재할 수 있음

콘텍스트(Context)

프로세스가 동작하기 위한 프로세스 공간과 프로세스가 동작할 때

의 레지스터 값 등

각각의 프로세스는 콘텍스트를 가짐

리눅스 커널에서는 스레드도 일종의 프로세스로 관리함

task_struct 구조체

개개의 프로세스 및 스레드에 관한 정보 저장 구조체

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

마스터 제목 스타일 편집

3333

프로세스 스케줄링

프로세스 전환프로세스 전환

Process

Switch

Process

Dispatch

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

마스터 제목 스타일 편집

3434

프로세스 스케줄링

프로세스 스케줄러프로세스 스케줄러

응답 성능

Preemption

처리율

(Throughput)

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

마스터 제목 스타일 편집

3535

프로세스 스케줄링프로세스 실행 우선순위프로세스 실행 우선순위

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

마스터 제목 스타일 편집

3636

프로세스 스케줄링멀티프로세서 시스템에서의 프로세스 스케줄링멀티프로세서 시스템에서의 프로세스 스케줄링

<프로세스와 캐시의 관계>

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

마스터 제목 스타일 편집

3737

프로세스 스케줄링O(1) 스케줄러 구조O(1) 스케줄러 구조

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

마스터 제목 스타일 편집

3838

프로세스 스케줄링

프로세스 상태프로세스 상태

실행가능 상태

실행상태

실행 준비 상태

대기상태

INTERRUPT IBLE

UNINTERRUPT IB

LE

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

마스터 제목 스타일 편집

3939

프로세스 스케줄링

프로세스 상태 천이프로세스 상태 천이

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

마스터 제목 스타일 편집

4040

프로세스 스케줄링

대기 프로세스의 wake_up대기 프로세스의 wake_up

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

마스터 제목 스타일 편집

4141

프로세스 스케줄링

wake_up 함수 집합wake_up 함수 집합

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

마스터 제목 스타일 편집

4242

프로세스 스케줄링

복수 이벤트 대기복수 이벤트 대기

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

마스터 제목 스타일 편집

4343

인터럽트 (Interrupt)

인터럽트인터럽트

하드웨어가 리눅스 커널 기능을 호출하는 구조

프로세스가 리눅스 커널 기능을 호출할 때는 시스템 콜 사용

리눅스 커널에 있어서 중요한 이벤트

리눅스 커널은 이벤트 구동형 프로그램임

디바이스를 효율적으로 제어하기 위한 구조

리눅스 커널 인터럽트 처리의 특징리눅스 커널 인터럽트 처리의 특징

응답성의 확보

하드웨어 인터럽트 (IRQ)

소프트 인터럽트 (IRQ)

멀티 프로세서의 대응

<인터럽트 응답성 처리 예>

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

마스터 제목 스타일 편집

4444

인터럽트 (Interrupt)

인터럽트의 종류인터럽트의 종류

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

마스터 제목 스타일 편집

4545

인터럽트 (Interrupt)

인터럽트의 발생 및 처리인터럽트의 발생 및 처리

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

마스터 제목 스타일 편집

4646

인터럽트 (Interrupt) – 인터럽트 관리 테이블

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

마스터 제목 스타일 편집

4747

인터럽트 (Interrupt)

인터럽트 핸들러 등록 함수인터럽트 핸들러 등록 함수

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

마스터 제목 스타일 편집

4848

인터럽트 (Interrupt)하드웨어 인터럽트 기동 구조하드웨어 인터럽트 기동 구조

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

마스터 제목 스타일 편집

4949

인터럽트 (Interrupt) – 하드웨어 인터럽트 제어 함수

<하드웨어 인터럽트 제어함수(인터럽트 컨트롤러 레

벨)>

<하드웨어 인터럽트 제어함수(CPU 레벨)>

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

마스터 제목 스타일 편집

5050

인터럽트 (Interrupt)인터럽트 요청 보류인터럽트 요청 보류

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

마스터 제목 스타일 편집

5151

지연처리 (delay)

인터럽트 지연처리인터럽트 지연처리

소프트 인터럽트

하드웨어 인터럽트를 금지하지 않음

소프트 인터럽트 핸들러는 그 원인을 제공한 하드웨어 인터럽트

핸들러와 동일한 CPU 상에서 동작함

하드웨어 인터럽트 핸들러가 요청할 때 발생함

소프트 인터럽트 핸들러는 하드웨어 인터럽트 핸들러에서 수행한

처리를 물려받아 동작함

Tasklet

소프트 인터럽트를 범용화한 구조

하드웨어 인터럽트와 제휴하여 효율적으로 동작함

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

마스터 제목 스타일 편집

5252

지연처리 (delay)소프트 인터럽트 데이터 구조소프트 인터럽트 데이터 구조

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

마스터 제목 스타일 편집

5353

지연처리 (delay)

소프트 인터럽트 종류소프트 인터럽트 종류

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

마스터 제목 스타일 편집

5454

지연처리 (delay)

소프트 인터럽트 제어 함수소프트 인터럽트 제어 함수

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

마스터 제목 스타일 편집

5555

지연처리 (delay) – workqueue (지연처리 구현 구조)

Workqueue의 구조Workqueue의 구조

주로 프로세스 콘텍스

트 처리 지연에 이용

각종 D/D 지연실행

블록 I/O요청의 지연

실행

비동기 I/O 처리

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

마스터 제목 스타일 편집

5656

지연처리 (delay) – workqueue (지연처리 구현 구조)

타이머 리스트와 workqueue타이머 리스트와 workqueue

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

마스터 제목 스타일 편집

5757

지연처리 (delay) – workqueue (지연처리 구현 구조)

Workqueue 제어 함수Workqueue 제어 함수

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

마스터 제목 스타일 편집

5858

타이머 (Timer)

리눅스 타이머리눅스 타이머 타이머의 역할

시간 count

제한 시간 관리

• 통신처리에서의 재 발송 처리

• 응답 없는 디바이스에 대한 실행 재처리

• 주기적인 폴링 처리

• SIGALRM 시그널 생성

리눅스 커널은 주기적으로 발생하는 인터럽트(타이머 인터

럽트)를 이용하여 타이머 기능을 동작 시킴

리눅스 타이머 종류

글로벌 타이머

CPU 로컬 타이머

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

마스터 제목 스타일 편집

5959

타이머 (Timer)리눅스 타이머의 동작리눅스 타이머의 동작

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

마스터 제목 스타일 편집

6060

타이머 (Timer)

로컬타이머 소프트 인터럽트 핸들러 실행로컬타이머 소프트 인터럽트 핸들러 실행

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

마스터 제목 스타일 편집

6161

타이머 (Timer) – 타이머 리스트

타이머 벡터의 분할타이머 벡터의 분할

타이머 리스트

- 이미 설정된 일정시

간 후에 콜백되는 핸

들러를 등록하기 위

한 범용적인 구조

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

마스터 제목 스타일 편집

6262

타이머 (Timer) – 타이머 리스트

tv1 벡터의 실행tv1 벡터의 실행

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

마스터 제목 스타일 편집

6363

타이머 (Timer) – 타이머 리스트tv2 벡터를 tv1벡터로 대체tv2 벡터를 tv1벡터로 대체

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

마스터 제목 스타일 편집

6464

타이머 (Timer) – 타이머 리스트

타이머 리스트 관련 제어함수타이머 리스트 관련 제어함수

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

마스터 제목 스타일 편집

6565

타이머 (Timer) – 구간(interval) 타이머

인터벌 타이머인터벌 타이머

절대시간 지정 타이머

SIGALRM

실행시간 지정 타이머

SIGVTLALARM

SIGPROF

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

마스터 제목 스타일 편집

6666

시스템 콜 (system Call)

시스템 콜이란?시스템 콜이란?

프로세스가 커널에게 명시적으로 서비스를 요청하는 인터페이스

커널이 사용자 수준 응용에게 서비스를 제공하는 인터페이스

사용자 모드에서 사용할 수 있도록 밖으로 노출되어 있는 커널 함

Software Interrupt를 통한 커널에 대한 서비스 요청

시스템 콜을 하게 되는 순간부터 사용자 모드에서 커널 모드로 전

환됨

시스템 콜을 시작하면 커널코드가 사용자 프로세스 환경

(context) 아래에서 동작하게 됨

시스템 콜을 일으키는 루틴을 wrapper routine이라 함

open()은 sys_open()의 wrapper routine

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

마스터 제목 스타일 편집

6767

시스템 콜 (system Call)

시스템 콜 예시스템 콜 예

프로세스 관리자가 제공하는 서비스와 관련된 시스템 콜

fork(), execve(), getpid(), signal() 등

파일 시스템이 제공하는 서비스와 관련된 시스템 콜

open(), rea(), write(), ioctl(), close() 등

메모리 관리자가 제공하는 시스템 콜

brk() 등

네트워크 관리 부분과 관련된 시스템 콜

socket(), bind(), connect() 등

디바이스 드라이버가 제공하는 시스템 호출

없음

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

마스터 제목 스타일 편집

6868

시스템 콜 (system Call)

보호 모드보호 모드

<보호 모드>

보호모드

커널은 커널 자체 프로세스나 커

널 자원을 보호하기 위하여 CPU

가 제공하는 보호 기능을 사용함

프로세스가 직접 커널 함수(실행

코드)를 호출할 수 없게 함

리눅스 특권 레벨

레벨 0 : 커널 레벨

레벨 3 : 사용자 프로세스 레벨

레벨 1,2 : 사용 않음

특권 레벨의 변경

소프트웨어 인터럽트 (software

interrupt)

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

마스터 제목 스타일 편집

6969

시스템 콜 (system Call) – 시스템 콜 인터페이스

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

마스터 제목 스타일 편집

7070

시스템 콜 (system Call)시스템 콜 처리 과정 – x86시스템 콜 처리 과정 – x86

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

마스터 제목 스타일 편집

7171

시스템 콜 (system Call)시스템 콜 처리 과정 - ARM시스템 콜 처리 과정 - ARM

sk_open(){}sk_release(){}sk_write(){}sk_read(){}

f->f_op->open :sk_open

f->f_op->release:sk_release

f->f_op->write:sk_write

f->f_op->read :sk_read

sys_open()

sys_release()

sys_write()

sys_read()

main(){

open()

close()

write()

read()

}

main(){

open()

close()

write()

read()

}

test open()

close()

write()

read()

swi 900005swi 900005

swi 900006swi 900006

swi 900004swi 900004

swi 900003swi 900003

Vector Table

0x08 b vector_swi

vector_swi

Switch(num)

5

6

4

3

ApplicationApplication LibraryLibrary S/W interruptS/W interrupt

System callSystem call VFSVFS Device driverDevice driver

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

마스터 제목 스타일 편집

7272

시스템 콜 (system Call)

시스템 콜의 종류시스템 콜의 종류

시스템 콜 핸들러 등록시스템 콜 핸들러 등록

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

마스터 제목 스타일 편집

7373

시스템 콜 – 시스템 콜 처리 예 : fread() 호출

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

마스터 제목 스타일 편집

7474

동기화 (Synchronization) – 필요성

커널 처리의 특성커널 처리의 특성

커널 핸들러의 비동기적 & 동시 실행

프로세스의 시스템 콜

외부 장치로부터의 인터럽트

동일한 자원이나 서로 관련된 자원을 사용하는 등 경쟁이 발생함

배제(Exclusion) 처리배제(Exclusion) 처리

여러 커널 핸들러가 동시에 실행되더라도 특정 커널 핸들러가 어

떤 자원을 사용하고 있는 동안에 또 다른 핸들러가 이 자원에 영

향을 주지 못하도록 접근하지 못하게 하는 방법

시스템에 준비된 배제

프로세스 콘텍스트 사이

인터럽트 콘텍스트

다른 CPU 상의 콘텍스트

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

마스터 제목 스타일 편집

7575

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

세마포어 동작세마포어 동작

세마포어

비교적 긴 시간을 확보하는 자원에 대해서 이

세마포어 이용 예

파일 접근 배제 : i-노드 관리 구조체

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

마스터 제목 스타일 편집

7676

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

읽기/쓰기 세마포어 동작읽기/쓰기 세마포어 동작

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

마스터 제목 스타일 편집

7777

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

읽기/쓰기 세마포어에 대한 갱신 접근읽기/쓰기 세마포어에 대한 갱신 접근

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

마스터 제목 스타일 편집

7878

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

읽기/쓰기 세마포어 관련 함수읽기/쓰기 세마포어 관련 함수

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

마스터 제목 스타일 편집

7979

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

선점 금지에 의한 접근 배제선점 금지에 의한 접근 배제

선점(Preemption)

커널 2.6부터는 커널코

드 실행 중에도 선점

가능

CPU 종속 자원에 대한

배제 필요 시 명시적으

로 선점을 금지할 필요

가 있음

스핀락은 필요 없음

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

마스터 제목 스타일 편집

8080

동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제

선점권의 억제.허가 함수선점권의 억제.허가 함수

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

마스터 제목 스타일 편집

8181

동기화 (Synchronization) – 인터럽트 콘텍스트의 배제

인터럽트 금지에 의한 접근 배제인터럽트 금지에 의한 접근 배제

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

마스터 제목 스타일 편집

8282

동기화 (Synchronization) – 인터럽트 콘텍스트의 배제

소프트 인터럽트 금지에 의한 접근 배제소프트 인터럽트 금지에 의한 접근 배제

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

마스터 제목 스타일 편집

8383

동기화 (Synchronization) – 인터럽트 콘텍스트의 배제

인터럽트 금지 관련 함수인터럽트 금지 관련 함수

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

마스터 제목 스타일 편집

8484

동기화 (Synchronization) – 멀티프로세서 환경에서의 배제

스핀락에 의한 배제스핀락에 의한 배제

스핀락(Spin Lock)

멀티프로세서 시스템

에서 CPU감 경쟁을

조정하기 위한 배제

구조

Busy wait

잠금 변수를 취득하

지 못한 CPU는 잠금

이 해제될 때까지 그

자리에서 계속 기다

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

마스터 제목 스타일 편집

8585

동기화 (Synchronization) – 멀티프로세서 환경에서의 배제

읽기/쓰기 스핀락에 의한 배제읽기/쓰기 스핀락에 의한 배제

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

마스터 제목 스타일 편집

8686

동기화 (Synchronization) – 멀티프로세서 환경에서의 배제

스핀락 관련 함수스핀락 관련 함수

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

마스터 제목 스타일 편집

8787

동기화 (Synchronization) – RCU (Read Copy Update)

RCU 동작 예RCU 동작 예

RCU

멀티프로세서 시

스템 전용의 배

제 처리

커널 2.6에서

도입됨

포인터로 결합된

데이터 구조를

보호할 때 이용

빈번하게 배제가

필요한 자원에

유용

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

마스터 제목 스타일 편집

8888

동기화 (Synchronization) – 메모리 장벽 (Memory Barrier)

메모리 장벽?메모리 장벽?

메모리 장벽이란?

실제 메모리 상의 데이터 접근의 순서가 제대로 지켜지

지 않음

메모리 접근 순서가 지켜져야 하는 이유

메모리 상의 데이터를 각종 I/O 컨트롤러와 교환

다른 CPU로부터 참조나 갱신을 하기 위하여 CPU 간의

동일한 데이터 참조

메모리 장벽의 원인

내부에서 명령어의 순서를 바꿔서 실행하는 CPU 존재

(CPU 자원 효율화 목표)

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

마스터 제목 스타일 편집

8989

동기화 (Synchronization) – 메모리 장벽 (Memory Barrier)

명령어 순서 변경의 경우 - ARM명령어 순서 변경의 경우 - ARM

F D E

1 2 3 4 5 6 7 8 9 10사이클

명령

ADD   R0, R1, R2

F D ESUB   R1, R2, R4

F D EAND   R2, R1, R0

F D ELDR   R4,   [ R5 ]

F D EXOR   R0, R4, R2

F D EADD   R1, R2, R3

F DSBC   R1, R2, R3

F : Fetch D : Decode E : Execute M : Memory W : Write I : Interlock

M W

I

I

M W

M W

M W

M W

M

E

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

마스터 제목 스타일 편집

9090

동기화 (Synchronization) – 메모리 장벽 (Memory Barrier)

메모리 장벽 처리 매크로메모리 장벽 처리 매크로