Upload
ubuntu-korea-community
View
205
Download
18
Embed Size (px)
Citation preview
마스터 제목 스타일 편집
11
리눅스 커널- 개요 및 이슈
2010. 1. 29노태상
마스터 제목 스타일 편집
22
리눅스 커널 개요
커널 개요
리눅스 커널 개요 리눅스 커널 기본기능 리눅스 커널 부팅
마스터 제목 스타일 편집
33
운영체제란?운영체제란?
자원 관리자 (Resource Manager)
커널 개요 - 운영체제란?
운영체제가 관리해야 될 자원운영체제가 관리해야 될 자원
물리적 자원
CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하
고 있는 요소들과 주변장치 등
추상적 자원
태스크(task), 쓰레드(thread) : CPU 추상화
세그먼트(segment), 페이지(page) : 메모리 추상화
파일, inode : 디스크 추상화
프로토콜, 패킷 : 네트워크 추상화
마스터 제목 스타일 편집
44
커널이란?커널이란?
운영체제를 이루는 가장 핵심적인 소프트웨어
운영체제를 구성하고 있는 핵심으로서 타깃보드의 시스템 구동에
필요한 환경설정과 수행되는 프로그램들을 관리하는 소프트웨어
커널 개요 - 커널이란?
커널의 세부 기능커널의 세부 기능
프로세스 관리 (Process Management)
메모리 관리 (Memory Management)
파일 시스템 관리 (File System Management)
장치 관리 (Device Management)
네트워크 관리 (Network Management)
마스터 제목 스타일 편집
55
프로세스 관리프로세스 관리
프로세스의 생성 및 소멸
프로세스 간 통신
CPU 스케줄링
커널 개요 - 커널의 기능
메모리 관리메모리 관리
가상 메모리 관리
메모리 하드웨어 관리
파일 시스템 관리파일 시스템 관리
가상 파일 시스템에 의한 여러 파일 시스템 타입 지원
디스크 물리적 구조를 논리적 구조로 표현
장치 관리장치 관리
입출럭 요청 검증
입출력 요청 작언 스케줄링
주변장치와 메모리 간의 자료전송
인터럽트 요청 처리네트워크 관리네트워크 관리
통신 프로토콜 구현
네트워크 라우팅 및 주소지정
마스터 제목 스타일 편집
66
커널 개요 - 커널의 구조
마스터 제목 스타일 편집
77
Monolithic KernelMonolithic Kernel
커널 개요 - 커널의 종류
Micro KernelMicro Kernel
리눅스는 Monolithic Kernel임
마스터 제목 스타일 편집
88
리눅스 커널 개요
리눅스 커널의 역할리눅스 커널의 역할
응용 프로그램이 동작하기 위한 기본 환
경을 제공
응용 프로그램은 최소한의 절차로 응용
프로그램 본래의 목적인 처리를 실행할
수 있게 함
응용 프로그램을 대신하여 하드웨어를 제
어하는 편리한 기능을 제공
응용 프로그램의 요청(시스템 콜)을 받아
동작하는 이벤트 중심의 프로그램
응용 프로그램으로부터 시스템 콜이 요청
되거나 하드웨어로부터 인터럽트가 요청
되면, 그 요청에 대응하는 처리를 수행함
응용 프로그램과 커널응용 프로그램과 커널
마스터 제목 스타일 편집
99
리눅스 커널 개요 - 리눅스 커널 구조
마스터 제목 스타일 편집
1010
리눅스 커널 개요 - 리눅스 커널의 기본 기능
마스터 제목 스타일 편집
1111
리눅스 커널 개요 - 리눅스 커널의 장점
모듈
적재
제거
커널영역
사용자
영역
리눅스 모듈리눅스 모듈리눅스 장점리눅스 장점
오래되었고 많은 사람들이 사용
검증됨, 안정적, 다양한 기능 제공
오픈 소스, 오픈 아키텍처
수많은 개발자에 의하여 발전됨
개발자 필요에 이하여 변경가능
소규모 모듈단위로 설계됨
구조 변경 및 재구성이 용이
동적 로딩 및 제거 가능 커널코드 제공
다중 프로세서 지원
SMP(Symmetric Mult i Processing)
지원
실시간 운영을 지원함
실시간 임베디드 분야에 활용 가능
마스터 제목 스타일 편집
1212
리눅스 커널 개요 - 리눅스 커널의 소스 트리
마스터 제목 스타일 편집
1313
리눅스 커널 기본 기능 – 프로세스 관리
프로세스 관리프로세스 관리
프로그램의 실행상태를 관리
리눅스 커널은 지정된 프로그
램을 실행하기 위한 환경을
구축하고, 프로그램의 실행이
끝나면 이들을 깨끗하게 정리
함
프로세스 관리를 위한 커널의 자료구조프로세스 관리를 위한 커널의 자료구조
프로세스 ID, 그룹 ID, 세션 ID
실행 우선순위
프로세스 공간 정보
이용 중인 파일에 관한 정보 등
<실행가능 프로세스와 프로세스 스케줄
링>
마스터 제목 스타일 편집
1414
리눅스 커널 기본 기능 – 프로세스 관리
시그널시그널
프로세스에 비동기 이벤트를 전달하기 위한 간단한 장치
시그널을 받은 프로세스는 실행을 일단 중지 후 시그널 핸들러를 실행
한 후 다시 중단된 지점부터 프로세스의 실행을 재개함
스레드(Thread)스레드(Thread)
리눅스 커널 스레드는 일종의 프로세스로 구현되고 있음
프로세스와 다른 점
스레드 간에 프로세스 공간을 공유
스레드 관련 정보를 관리
프로세스를 관리하는 데이터 구조를 그대로 이용하여 스레드를 관리함
프로세스 스케줄러의 입장에서 프로세스와 스레드는 동일
POSIX 스레드 인터페이스는 리눅스 커널에서 기본으로 제공하는 인터
페이스가 아니라 라이브러리에 의해 커널 스레드 인터페이스로 변환됨.
마스터 제목 스타일 편집
1515
리눅스 커널 기본 기능 – 메모리 관리
물리 메모리 관리물리 메모리 관리
물리 메모리를 페이지 단위로 관리함
페이지
가상메모리를 사용할 때 CPU에서 지원하는 메모리 관리의 최소 단위
임
페이지 크기는 CPU 종류에 따라 다름
버디 시스템(Buddy System)
페이지 단위로 물리메모리의 빈 영역을 효율적으로 관리하기 위한 구
조
서로 이웃한 빈 영역을 결합하여 보다 큰 빈 영역을 생성
슬랩 할당자(Slab A l locator)
페이지보다 작은 메모리 영역을 효율적으로 관리하기 위한 관리 구조
내부 단편화(fragment) 발생을 최소화
메모리 캐시 이용 효율을 고려한 메모리 관리 방식
마스터 제목 스타일 편집
1616
리눅스 커널 기본 기능 – 메모리 관리
가상 메모리 관리가상 메모리 관리
물리적으로 분산된 페이지를 모아서 가상공
간에 연속으로 할당
물리 메모리의 단편화 문제를 고려할 필요
가 없음
다중 가상 공간 사용
각 프로세스의 주소 공간을 독립적으로 할
당함
<다중 가상 공
간>
요구 페이징(Demand Paging)요구 페이징(Demand Paging)
참조가 발생한 영역에 대해 페이지 단위로 물
리 메모리를 할당하는 기법
스왑(Swap) 시스템
참조 빈도가 낮은 영역의 물리메모리는
반환
COW(Copy-On-Wr ite)
마스터 제목 스타일 편집
1717
리눅스 커널 기본 기능 – 파일 시스템 관리
파일 시스템파일 시스템
기억 장치 상의 데이터를 파일이라고 하는 형식을 통해서 액세스 순서를
일관성 있게 제공함
리눅스 커널은 디바이스나 커널 내의 데이터 구조도 파일로 처리함
리눅스 커널은 각각의 파일에 i-노드로 불리는 데이터 구조를 할당하여
관리함
파일 디스크립터를 통하여 파일에 접근
캐시(Cache)캐시(Cache)
리눅스 커널은 파일 접근을 빠르게 하기 위하여 각종 데이터를 메모리에
보관함
페이지 캐시 : 파일 데이터 자체를 보관함
i-노드 캐시 : 자주 사용되는 파일의 i-노드를 복사해서 메모리에 보관함
Dentry 캐시
파일 이름을 보관, 경로 탐색을 빠르게 하기 위해 사용됨
커널이 수행하는 처리 중에서 가장 중요한 처리 중의 하나임
마스터 제목 스타일 편집
1818
리눅스 커널 기본 기능 – 파일 시스템 관리
가상 파일 시스템(VFS)가상 파일 시스템(VFS)
사용자는 이용하고 있는 파일시스템이 어떤 파일시스템인지 알 필요가
없음
하위 파일시스템의 형식에 의존하지 않고 동일한 인터페이스로 조작할
수 있음
가상파일시스템 아래에는 다양한 종류의 파일시스템을 배치할 수 있음
<파일 시스템 계층>
마스터 제목 스타일 편집
1919
리눅스 커널 기본 기능 – 파일 시스템 관리
파일시스템 관련 용어들파일시스템 관련 용어들 로컬 파일 시스템
네트워크 파일 시스템
유사 파일 시스템
기억 장치 위에 있는 파일 이외의 것을 진짜 파일인 것처럼 가장하는 파일 시스
템
proc 파일 시스템, sysfs 파일 시스템
리눅스 표준 파일 시스템
ext2
저널링( journaling) 파일 시스템 ext3
Ext2 파일 시스템에 저널링 기능을 추가
내결함성(fault tolerance)을 높이는 것으로 시스템의 이상종료 후 파일시스템
복구를 최적화하기 위하여 도입됨
블록 디바이스
파일 시스템의 요청에 따라 실제로 입출력 처리를 수행
버퍼 및 페이지 단위로 입출력 수행
마스터 제목 스타일 편집
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)
마스터 제목 스타일 편집
2121
리눅스 커널 기본 기능 – 네트워크 관리
소켓소켓
임의의 프로세스
및 프로세서간 통
신
하위층에 다양한
통신프로토콜을
정의할 수 있음
소켓 인터페이스
는 리눅스 커널
내에 구현됨
<TCP/ IP 프로토콜 스택 계
층>
마스터 제목 스타일 편집
2222
리눅스 커널 부팅
임베디드 리눅스 커널 생성 절차 임베디드 리눅스 커널 생성 절차
마스터 제목 스타일 편집
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 !!!
임베디드 시스템에 커널 적재 임베디드 시스템에 커널 적재
마스터 제목 스타일 편집
2424
리눅스 커널 부팅커널 압축 해제 절차 커널 압축 해제 절차
마스터 제목 스타일 편집
2525
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
2626
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
2727
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
2828
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
2929
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
3030
리눅스 커널 부팅커널 부팅 절차 커널 부팅 절차
마스터 제목 스타일 편집
3131
리눅스 커널 이슈
• 프로세스 스케줄링• 인터럽트• 지연처리• 타이머• 시스템 콜• 동기화
마스터 제목 스타일 편집
3232
프로세스 스케줄링
프로세스란?프로세스란?
프로그램이 움직이고 있는 상태
프로그램은 1개이더라도 그 프로그램을 실행하고 있는 프로세스는
여러 개 존재할 수 있음
콘텍스트(Context)
프로세스가 동작하기 위한 프로세스 공간과 프로세스가 동작할 때
의 레지스터 값 등
각각의 프로세스는 콘텍스트를 가짐
리눅스 커널에서는 스레드도 일종의 프로세스로 관리함
task_struct 구조체
개개의 프로세스 및 스레드에 관한 정보 저장 구조체
마스터 제목 스타일 편집
3333
프로세스 스케줄링
프로세스 전환프로세스 전환
Process
Switch
Process
Dispatch
마스터 제목 스타일 편집
3434
프로세스 스케줄링
프로세스 스케줄러프로세스 스케줄러
응답 성능
Preemption
처리율
(Throughput)
마스터 제목 스타일 편집
3535
프로세스 스케줄링프로세스 실행 우선순위프로세스 실행 우선순위
마스터 제목 스타일 편집
3636
프로세스 스케줄링멀티프로세서 시스템에서의 프로세스 스케줄링멀티프로세서 시스템에서의 프로세스 스케줄링
<프로세스와 캐시의 관계>
마스터 제목 스타일 편집
3737
프로세스 스케줄링O(1) 스케줄러 구조O(1) 스케줄러 구조
마스터 제목 스타일 편집
3838
프로세스 스케줄링
프로세스 상태프로세스 상태
실행가능 상태
실행상태
실행 준비 상태
대기상태
INTERRUPT IBLE
UNINTERRUPT IB
LE
마스터 제목 스타일 편집
3939
프로세스 스케줄링
프로세스 상태 천이프로세스 상태 천이
마스터 제목 스타일 편집
4040
프로세스 스케줄링
대기 프로세스의 wake_up대기 프로세스의 wake_up
마스터 제목 스타일 편집
4141
프로세스 스케줄링
wake_up 함수 집합wake_up 함수 집합
마스터 제목 스타일 편집
4242
프로세스 스케줄링
복수 이벤트 대기복수 이벤트 대기
마스터 제목 스타일 편집
4343
인터럽트 (Interrupt)
인터럽트인터럽트
하드웨어가 리눅스 커널 기능을 호출하는 구조
프로세스가 리눅스 커널 기능을 호출할 때는 시스템 콜 사용
리눅스 커널에 있어서 중요한 이벤트
리눅스 커널은 이벤트 구동형 프로그램임
디바이스를 효율적으로 제어하기 위한 구조
리눅스 커널 인터럽트 처리의 특징리눅스 커널 인터럽트 처리의 특징
응답성의 확보
하드웨어 인터럽트 (IRQ)
소프트 인터럽트 (IRQ)
멀티 프로세서의 대응
<인터럽트 응답성 처리 예>
마스터 제목 스타일 편집
4444
인터럽트 (Interrupt)
인터럽트의 종류인터럽트의 종류
마스터 제목 스타일 편집
4545
인터럽트 (Interrupt)
인터럽트의 발생 및 처리인터럽트의 발생 및 처리
마스터 제목 스타일 편집
4646
인터럽트 (Interrupt) – 인터럽트 관리 테이블
마스터 제목 스타일 편집
4747
인터럽트 (Interrupt)
인터럽트 핸들러 등록 함수인터럽트 핸들러 등록 함수
마스터 제목 스타일 편집
4848
인터럽트 (Interrupt)하드웨어 인터럽트 기동 구조하드웨어 인터럽트 기동 구조
마스터 제목 스타일 편집
4949
인터럽트 (Interrupt) – 하드웨어 인터럽트 제어 함수
<하드웨어 인터럽트 제어함수(인터럽트 컨트롤러 레
벨)>
<하드웨어 인터럽트 제어함수(CPU 레벨)>
마스터 제목 스타일 편집
5050
인터럽트 (Interrupt)인터럽트 요청 보류인터럽트 요청 보류
마스터 제목 스타일 편집
5151
지연처리 (delay)
인터럽트 지연처리인터럽트 지연처리
소프트 인터럽트
하드웨어 인터럽트를 금지하지 않음
소프트 인터럽트 핸들러는 그 원인을 제공한 하드웨어 인터럽트
핸들러와 동일한 CPU 상에서 동작함
하드웨어 인터럽트 핸들러가 요청할 때 발생함
소프트 인터럽트 핸들러는 하드웨어 인터럽트 핸들러에서 수행한
처리를 물려받아 동작함
Tasklet
소프트 인터럽트를 범용화한 구조
하드웨어 인터럽트와 제휴하여 효율적으로 동작함
마스터 제목 스타일 편집
5252
지연처리 (delay)소프트 인터럽트 데이터 구조소프트 인터럽트 데이터 구조
마스터 제목 스타일 편집
5353
지연처리 (delay)
소프트 인터럽트 종류소프트 인터럽트 종류
마스터 제목 스타일 편집
5454
지연처리 (delay)
소프트 인터럽트 제어 함수소프트 인터럽트 제어 함수
마스터 제목 스타일 편집
5555
지연처리 (delay) – workqueue (지연처리 구현 구조)
Workqueue의 구조Workqueue의 구조
주로 프로세스 콘텍스
트 처리 지연에 이용
됨
각종 D/D 지연실행
블록 I/O요청의 지연
실행
비동기 I/O 처리
마스터 제목 스타일 편집
5656
지연처리 (delay) – workqueue (지연처리 구현 구조)
타이머 리스트와 workqueue타이머 리스트와 workqueue
마스터 제목 스타일 편집
5757
지연처리 (delay) – workqueue (지연처리 구현 구조)
Workqueue 제어 함수Workqueue 제어 함수
마스터 제목 스타일 편집
5858
타이머 (Timer)
리눅스 타이머리눅스 타이머 타이머의 역할
시간 count
제한 시간 관리
• 통신처리에서의 재 발송 처리
• 응답 없는 디바이스에 대한 실행 재처리
• 주기적인 폴링 처리
• SIGALRM 시그널 생성
리눅스 커널은 주기적으로 발생하는 인터럽트(타이머 인터
럽트)를 이용하여 타이머 기능을 동작 시킴
리눅스 타이머 종류
글로벌 타이머
CPU 로컬 타이머
마스터 제목 스타일 편집
5959
타이머 (Timer)리눅스 타이머의 동작리눅스 타이머의 동작
마스터 제목 스타일 편집
6060
타이머 (Timer)
로컬타이머 소프트 인터럽트 핸들러 실행로컬타이머 소프트 인터럽트 핸들러 실행
마스터 제목 스타일 편집
6161
타이머 (Timer) – 타이머 리스트
타이머 벡터의 분할타이머 벡터의 분할
타이머 리스트
- 이미 설정된 일정시
간 후에 콜백되는 핸
들러를 등록하기 위
한 범용적인 구조
마스터 제목 스타일 편집
6262
타이머 (Timer) – 타이머 리스트
tv1 벡터의 실행tv1 벡터의 실행
마스터 제목 스타일 편집
6363
타이머 (Timer) – 타이머 리스트tv2 벡터를 tv1벡터로 대체tv2 벡터를 tv1벡터로 대체
마스터 제목 스타일 편집
6464
타이머 (Timer) – 타이머 리스트
타이머 리스트 관련 제어함수타이머 리스트 관련 제어함수
마스터 제목 스타일 편집
6565
타이머 (Timer) – 구간(interval) 타이머
인터벌 타이머인터벌 타이머
절대시간 지정 타이머
SIGALRM
실행시간 지정 타이머
SIGVTLALARM
SIGPROF
마스터 제목 스타일 편집
6666
시스템 콜 (system Call)
시스템 콜이란?시스템 콜이란?
프로세스가 커널에게 명시적으로 서비스를 요청하는 인터페이스
커널이 사용자 수준 응용에게 서비스를 제공하는 인터페이스
사용자 모드에서 사용할 수 있도록 밖으로 노출되어 있는 커널 함
수
Software Interrupt를 통한 커널에 대한 서비스 요청
시스템 콜을 하게 되는 순간부터 사용자 모드에서 커널 모드로 전
환됨
시스템 콜을 시작하면 커널코드가 사용자 프로세스 환경
(context) 아래에서 동작하게 됨
시스템 콜을 일으키는 루틴을 wrapper routine이라 함
open()은 sys_open()의 wrapper routine
마스터 제목 스타일 편집
6767
시스템 콜 (system Call)
시스템 콜 예시스템 콜 예
프로세스 관리자가 제공하는 서비스와 관련된 시스템 콜
fork(), execve(), getpid(), signal() 등
파일 시스템이 제공하는 서비스와 관련된 시스템 콜
open(), rea(), write(), ioctl(), close() 등
메모리 관리자가 제공하는 시스템 콜
brk() 등
네트워크 관리 부분과 관련된 시스템 콜
socket(), bind(), connect() 등
디바이스 드라이버가 제공하는 시스템 호출
없음
마스터 제목 스타일 편집
6868
시스템 콜 (system Call)
보호 모드보호 모드
<보호 모드>
보호모드
커널은 커널 자체 프로세스나 커
널 자원을 보호하기 위하여 CPU
가 제공하는 보호 기능을 사용함
프로세스가 직접 커널 함수(실행
코드)를 호출할 수 없게 함
리눅스 특권 레벨
레벨 0 : 커널 레벨
레벨 3 : 사용자 프로세스 레벨
레벨 1,2 : 사용 않음
특권 레벨의 변경
소프트웨어 인터럽트 (software
interrupt)
마스터 제목 스타일 편집
6969
시스템 콜 (system Call) – 시스템 콜 인터페이스
마스터 제목 스타일 편집
7070
시스템 콜 (system Call)시스템 콜 처리 과정 – x86시스템 콜 처리 과정 – x86
마스터 제목 스타일 편집
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
마스터 제목 스타일 편집
7272
시스템 콜 (system Call)
시스템 콜의 종류시스템 콜의 종류
시스템 콜 핸들러 등록시스템 콜 핸들러 등록
마스터 제목 스타일 편집
7373
시스템 콜 – 시스템 콜 처리 예 : fread() 호출
마스터 제목 스타일 편집
7474
동기화 (Synchronization) – 필요성
커널 처리의 특성커널 처리의 특성
커널 핸들러의 비동기적 & 동시 실행
프로세스의 시스템 콜
외부 장치로부터의 인터럽트
동일한 자원이나 서로 관련된 자원을 사용하는 등 경쟁이 발생함
배제(Exclusion) 처리배제(Exclusion) 처리
여러 커널 핸들러가 동시에 실행되더라도 특정 커널 핸들러가 어
떤 자원을 사용하고 있는 동안에 또 다른 핸들러가 이 자원에 영
향을 주지 못하도록 접근하지 못하게 하는 방법
시스템에 준비된 배제
프로세스 콘텍스트 사이
인터럽트 콘텍스트
다른 CPU 상의 콘텍스트
마스터 제목 스타일 편집
7575
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
세마포어 동작세마포어 동작
세마포어
비교적 긴 시간을 확보하는 자원에 대해서 이
용
세마포어 이용 예
파일 접근 배제 : i-노드 관리 구조체
마스터 제목 스타일 편집
7676
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
읽기/쓰기 세마포어 동작읽기/쓰기 세마포어 동작
마스터 제목 스타일 편집
7777
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
읽기/쓰기 세마포어에 대한 갱신 접근읽기/쓰기 세마포어에 대한 갱신 접근
마스터 제목 스타일 편집
7878
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
읽기/쓰기 세마포어 관련 함수읽기/쓰기 세마포어 관련 함수
마스터 제목 스타일 편집
7979
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
선점 금지에 의한 접근 배제선점 금지에 의한 접근 배제
선점(Preemption)
커널 2.6부터는 커널코
드 실행 중에도 선점
가능
CPU 종속 자원에 대한
배제 필요 시 명시적으
로 선점을 금지할 필요
가 있음
스핀락은 필요 없음
마스터 제목 스타일 편집
8080
동기화 (Synchronization) – 프로세스 콘텍스트 사이에서의 배제
선점권의 억제.허가 함수선점권의 억제.허가 함수
마스터 제목 스타일 편집
8181
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제
인터럽트 금지에 의한 접근 배제인터럽트 금지에 의한 접근 배제
마스터 제목 스타일 편집
8282
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제
소프트 인터럽트 금지에 의한 접근 배제소프트 인터럽트 금지에 의한 접근 배제
마스터 제목 스타일 편집
8383
동기화 (Synchronization) – 인터럽트 콘텍스트의 배제
인터럽트 금지 관련 함수인터럽트 금지 관련 함수
마스터 제목 스타일 편집
8484
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제
스핀락에 의한 배제스핀락에 의한 배제
스핀락(Spin Lock)
멀티프로세서 시스템
에서 CPU감 경쟁을
조정하기 위한 배제
구조
Busy wait
잠금 변수를 취득하
지 못한 CPU는 잠금
이 해제될 때까지 그
자리에서 계속 기다
림
마스터 제목 스타일 편집
8585
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제
읽기/쓰기 스핀락에 의한 배제읽기/쓰기 스핀락에 의한 배제
마스터 제목 스타일 편집
8686
동기화 (Synchronization) – 멀티프로세서 환경에서의 배제
스핀락 관련 함수스핀락 관련 함수
마스터 제목 스타일 편집
8787
동기화 (Synchronization) – RCU (Read Copy Update)
RCU 동작 예RCU 동작 예
RCU
멀티프로세서 시
스템 전용의 배
제 처리
커널 2.6에서
도입됨
포인터로 결합된
데이터 구조를
보호할 때 이용
함
빈번하게 배제가
필요한 자원에
유용
마스터 제목 스타일 편집
8888
동기화 (Synchronization) – 메모리 장벽 (Memory Barrier)
메모리 장벽?메모리 장벽?
메모리 장벽이란?
실제 메모리 상의 데이터 접근의 순서가 제대로 지켜지
지 않음
메모리 접근 순서가 지켜져야 하는 이유
메모리 상의 데이터를 각종 I/O 컨트롤러와 교환
다른 CPU로부터 참조나 갱신을 하기 위하여 CPU 간의
동일한 데이터 참조
메모리 장벽의 원인
내부에서 명령어의 순서를 바꿔서 실행하는 CPU 존재
(CPU 자원 효율화 목표)
마스터 제목 스타일 편집
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
마스터 제목 스타일 편집
9090
동기화 (Synchronization) – 메모리 장벽 (Memory Barrier)
메모리 장벽 처리 매크로메모리 장벽 처리 매크로