lecture 7 process management - skkunyx.skku.ac.kr/wp-content/uploads/2015/03/lecture-7... ·...

14
14 1 Embedded Software Lab. Embedded Software Lab Daejun Park, Eunsoo Park Lecture 7 Process Management

Upload: others

Post on 30-May-2020

2 views

Category:

Documents


0 download

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

4

Embedded Software Lab.

프로세스의 메모리 구조

14

5

Embedded Software Lab.

프로세스 메모리 구조 (cont.)

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()를 분석할 것

• 코드 분석 시 막히는 사항은 조교에게 문의

[email protected]

• 객체 지향적인 코드가 사용되었고, sched_class라는 구조체가 Scheduler

클래스.

• CFS (Complete Fair Scheduler) <kernel/sched/fair.c>를 참고하여

Schedule()에서 사용하는 scheduler 코드에 관한 분석을 CFS를 바탕으

로 하면 가산점 부여.