lecture 7 process management - skkunyx.skku.ac.kr/wp-content/uploads/2015/03/lecture-7... ·...
TRANSCRIPT
14
1
Embedded Software Lab.
Embedded Software Lab
Daejun Park, Eunsoo Park
Lecture 7 Process Management
14
2
Embedded Software Lab.
• 프로세스 정의
• 리눅스의 프로세스
• 프로세스 스케줄링
• 리눅스 프로세스 스케줄러
• 실습 – Schedule() 함수 분석
Agenda
14
3
Embedded Software Lab.
• 프로세서(processor) : 중앙처리장치 (예: 펜티엄, 쿼드코어 등)
• 프로그램(program) : 사용자가 컴퓨터에 작업을 시키기 위한 명령어의 집합
프로세스?
14
6
Embedded Software Lab.
• 프로세스 상태 및 전이 – 프로세스는 User Mode에서 실행
– User Mode에서 System Call을 하면 Kernel Mode로 전환
– 수명 중이던 프로세스가 깨어나 실행 대기 상태로 전환
– 실행 대기 상태인 프로세스를 스케줄러가 스케줄링하여 실행
프로세스 상태 변화
14
7
Embedded Software Lab.
• struct task_struct 로 프로세스 정보 저장 프로세스 디스크립터 (include/linux/sched.h)
리눅스의 프로세스
task_struct 구조체는 Odroid Kernel version 기준으로 350 Line이 넘는 구조체로 프로세스와 관련한 수많은 정보들을 가지고 있음.
Process Memory Region 관리
Process State 관리
14
8
Embedded Software Lab.
• 스케줄링 정책? – 언제, 어떻게 실행시킬 새로운 프로세스를 선택하는가를 결정
프로세스 스케줄링
Process 1 Process 2 Process 3 Process 4
CPU
Scheduling
• 목적 – 각 프로세스의 빠른 응답시간 보장
– 백그라운드에서 작업중인 프로세스의 성능 보장
– Process Starvation* 회피
– 프로세스 우선순위의 반영
Run Queue
14
9
Embedded Software Lab.
• 사용하는 Resource의 종류에 따라 CPU bound, I/O bound로 나누는 것이 전통.
• 그 밖에, 다음과 같은 분류도 존재 – Interactive (Shell, Text Editor), Batch (compiler, DB Engine),
Real-Time (Video / Sound Application)
– Interactive는 wating이 많은 것이 특징
– Batch는 I/O Bound이므로 CPU를 다른 프로세스에 비해 많이 사용하지 않음.
– Real-Time은 Block이 되어서는 안됨.
프로세스 분류
14
10
Embedded Software Lab.
• 실행중인 프로세스를 중단하고 다른 프로세스로 전환하는 작업. ex) “Process A가 Process B에 의해 Preemption되었다” Process A가 중단되고 B가 Scheduling되어 실행 중이다.
• 이러한 작업을 Scheduler가 하게 되고, 일정 Time quantum이 지날 때마다 Scheduler가 호출되어 프로세스 선점을 수행 – Time Quantum이 길면? 프로세스가 동시에 실행되지 않고 Serialized.
– Time Quantum이 짧으면? Process Switch Overhead가 과도하게 커짐.
프로세스 선점 (Process preemption)
14
11
Embedded Software Lab.
프로세스 스케줄링 과정
2, 3 Scheduler’s role() 2 : Multi core를 지원하기 위해 추가됨
Process A
CPU1
CPU2
CPU3
CPU4
1. Wake!
(TASK_RUNNING) 2. Insert to RunQueue
Run Queue
Run Queue
Run Queue
Run Queue
3. Schedule()
Selecting next processSwitching process
14
12
Embedded Software Lab.
• O(1) Scheduler – Linux 2.6 – 커널이 Priority Table에 Runnable 프로세스를 삽입
– 높은 Slot에 들어있는 Process를 다음 실행할 Process로 선정
– 최대 Priority Table Entry 개수 만큼의 탐색시간이 필요 O(1)
– Process Starvation 야기 Priority가 낮은 process는 Scheduling되지 않을 수 있음
Linux Scheduler
14
13
Embedded Software Lab.
• Completely Fair Scheduler (CFQ) – 리눅스의 기본 Process Scheduler
– Virtual Time으로 정렬되는 RB-Tree로 Run queue 구현
– Priority를 직접 사용하지 않으나 Virtual Time이 올라가는 Weight로 작용
– 실행될 Process는 RB-Tree에서 Left-most의 노드에 달린 Process
Linux Scheduler (cont.)
14
14
Embedded Software Lab.
• Process를 Scheduling하는 함수인 Schedule()함수를 코드 단위로 분석하여 Report 작성. – 코드 위치는 kernel/sched/core.c
실습
__schedule()를 분석할 것
• 코드 분석 시 막히는 사항은 조교에게 문의
• 객체 지향적인 코드가 사용되었고, sched_class라는 구조체가 Scheduler
클래스.
• CFS (Complete Fair Scheduler) <kernel/sched/fair.c>를 참고하여
Schedule()에서 사용하는 scheduler 코드에 관한 분석을 CFS를 바탕으
로 하면 가산점 부여.