리눅스 커널 소스 해설3 [스케쥴러]

28,000원 33,000원
기본 할인5,000원
• 스케쥴러 전체 개요
• sched_class 구조체
• sched_init() 함수
• 스케쥴 도메인과 그룹
• Stop Scheduler
• DeadLine Scheduler
• RealTime Scheduler
• Fair Scheduler(CFS)
• Idle Scheduler
• activate/deactive_task()
• schedule 실행 과정
• 태스크 동작상태(State)
• CPU Load Average
• PELT(Per Entity Load Tracking)
• PELT, CFS 스케쥴링 테스트
• CPU Load Balancing
• CFS Bandwidth
• NO_HZ
추가 금액
수량
품절된 상품입니다.
주문 수량   0개
총 상품 금액 0원
페이스북
네이버 블로그
밴드

리눅스 커널 소스 해설3 [스케쥴러]


"리눅스 커널 소스 해설3 [스케쥴러]"는 전세계적으로 가장 많은 컴퓨터 기기에서 사용되고 있는 컴퓨터 운영체제인 리눅스 커널의 스케쥴러 소스를 자세히 설명하는 책입니다.  리눅스 커널 소스는 오픈소스로 누구나 접근할 수 있지만, 소스의 복잡성과 난해함 때문에 이것을 쉽게 설명하는 기술서가 많이 부족합니다.  커널연구회는 수년간 꾸준히 리눅스 커널 소스를 분석하여 쉽게 설명하는 기술서를 출판해오고 있으며, 관련 업계에 종사하는 엔지니어들에게 도움을 드리고 있습니다.  이번에 리눅스 커널중에서 가장 중요한 역할을 하는 스케쥴러 소스를 분석하여 자세히 설명하는 해설서를 다음과 같은 내용으로 출판하게 되었습니다.

 

책내용 요약


• 스케쥴러 전체 개요

sched_class 구조체

sched_init() 함수

• 스케쥴 도메인과 그룹

Stop Scheduler

DeadLine Scheduler

RealTime Scheduler

Fair Scheduler(CFS)

Idle Scheduler

activate/deactive_task()

schedule 실행 과정

• 태스크 동작상태(State)

CPU Load Average

PELT(Per Entity Load Tracking)

PELT, CFS 스케쥴링 테스트

CPU Load Balancing

CFS Bandwidth

NO_HZ

WorkQueue

 

책정보


• 리눅스 커널 소스 해설3 [스케쥴러]

• 저자 정재준

• 발행인: 정재준

• 발행처: 커널연구회

• 출판사등록번호: 2011-75

• 출판사등록일: 20110927

• 전화: 031-592-0478 / 팩스: 031-594-5307

• 발행일: 20220920

ISBN: 978-89-97750-16-0

• 페이지수: 425

• 가격: 33천원

• 책크기: 가로 188mm X 세로 257mm (B5)

 

책서두


스케쥴링은 어떻게 해야 하는가? 일상생활에 영어가 많이 들어와 있어서 “스케쥴링”을 우리말로 해석하려 하면 오히려 부자연스러울 수 있습니다만, 스케쥴링은 우리말로 “일정관리” 혹은 “작업관리” 라고 할 수 있습니다. 일정(작업)관리는 우리가 생활속에서 하는 것이기 때문에 이 표현이 오히려 쉽게 다가 옵니다. 우리는 항상 “나의 일감들을 어떻게 관리하고 실행하는 것이 좋을까?” 고민 하면서 최적의 효율로 최대 효과가 나오도록 실천 합니다. 더구나 일감들이 너무 많아서 혼자 관리하기 힘들면 일감의 종류와 특성별로 전담하는 관리자(매니저)들을 고용 하기도 합니다. 컴퓨터도 우리와 같은 고민을 합니다. 특히 리눅스 커널은 컴퓨터 성능이 발전 하면서 발생하는 여러가지 일감들을 최대한 효율적으로 관리하기 위해서 스케쥴러를 고용 했습니다. 커널 스케쥴러 입장에서는 일감을 임무(태스크: task)로 정의하여 관리 합니다. 앞으로 우리는 리눅스 커널 스케쥴러와 친하게 소통해야 하므로 일감을 태스크(task)라고 하겠습니다. 그리고 커널은 태스크들을 특성별로 좀더 효율적으로 관리하기 위해서 맞춤형 스케쥴러들을 고용 했습니다.

 

우리는 일상 생활속에서 일감들을 스케쥴링하는 것을 고민하며 살고 있기 때문에, 이 고민을 리눅스 커널 스케쥴러들과 같이 한다면 좀더 쉽게 태스크를 스케쥴링하는 방법들을 이해할 수 있을 것입니다. 더구나 커널 스케쥴러는 오히려 우리보다 더 좋은 방향으로 스케쥴링을 하고 있어서 한 수 배울 수도 있고, 반대로 우리가 스케쥴러를 잘 알고 있어서 좀더 좋은 방법을 가르쳐 줄 수도 있습니다.

 

목차


Table of Contents

리눅스 커널 소스 해설3 [스케쥴러] 1

저작권 2

ISBN 3

저자 소개 4

머리말 7

목차 9

스케쥴러 전체 개요 18

스케줄러 설정(set scheduler) 25

스케쥴러 실행(schedule) 27

sched_class 구조체 34

stop_sched_class 37

dl_sched_class 38

rt_sched_class 39

fair_sched_class 40

idle_sched_class 42

스케쥴러 중요 함수 실행 흐름 43

sched_init() 함수 45

sched_init() 구조체 할당 48

sched_init() 구조체 연결 54

sched_create_group() 함수 57

스케쥴 도메인과 그룹 67

SMPNUMA 시스템 67

sched_init_smp() 함수 74

sched_init_numa() 함수 75

sched_init_domains() 함수 84

Stop Scheduler 93

sched_set_stop_task() 함수 94

enqueue_task_stop() 함수 95

set_next_task_stop() 함수 96

pick_next_task_stop() 함수 96

dequeue_task_stop() 함수 97

put_prev_task_stop() 함수 97

balance_stop() 함수 98

DeadLine Scheduler 99

sched_setattr() 함수 102

enqueue_task_dl() 함수 106

set_next_task_dl() 함수 110

pick_next_task_dl() 함수 111

dequeue_task_dl() 함수 112

put_prev_task_dl() 함수 113

DeadLine 스케쥴링 요약 114

select_task_rq_dl() 함수 118

balance_dl() 함수 119

RealTime Scheduler 120

enqueue_task_rt() 함수 125

set_next_task_rt() 함수 130

pick_next_task_rt() 함수 131

dequeue_task_rt() 함수 134

put_prev_task_rt() 함수 135

RealTime 스케쥴링 요약 136

switched_from_rt() 함수 140

switched_to_rt() 함수 141

select_task_rq_rt() 함수 142

balance_rt() 함수 143

Fair Scheduler(CFS) 144

enqueue_task_fair() 함수 146

set_next_task_fair() 함수 149

pick_next_task_fair() 함수 149

dequeue_task_fair() 함수 156

put_prev_task_fair() 함수 158

switched_from_fair() 함수 159

switched_to_fair() 함수 160

select_task_rq_fair() 함수 161

balance_fair() 함수 164

Idle Scheduler 165

set_next_task_idle() 함수 166

pick_next_task_idle() 함수 167

dequeue_task_idle() 함수 167

activate/deactive_task() 함수 169

activate_task() 함수 169

deactivate_task() 함수 170

wake_up_new_task() 함수 172

wake_up_process() 함수 173

list_add_leaf_cfs_rq() 함수 174

schedule 실행 과정 176

PREEMPT 선택 176

schedule() 함수 호출 흐름 182

_TIF_NEED_RESCHED 플래그 183

scheduler_tick() 함수 187

task_tick_fair() 함수 189

task_tick_rt() 함수 191

check_preempt_curr() 함수 193

pick_next_task() 함수 197

태스크 동작상태(State) 199

TASK_NEW 201

EXIT_DEAD 201

TASK_RUNNING 202

TASK_INTERRUPTIBLE 203

TASK_UNINTERRUPTIBLE 206

기타 상태값 207

CPU Load Average 209

이동평균(Moving Average) 209

CPU Load Average 산출식 211

calc_global_load_tick() 함수 214

calc_global_load() 함수 215

calc_load() 함수 218

PELT(Per Entity Load Tracking) 223

decay_load() 함수 224

___update_load_sum() 함수 230

accumulate_sum() 함수 231

___update_load_avg() 함수 235

__update_load_avg_se() 함수 236

__update_load_avg_cfs_rq() 함수 237

Load 계산 과정 요약 238

PELT 계산 전체 흐름 240

post_init_entity_util_avg() 함수 243

activate_task() 함수 245

PELT 계산 함수들 249

update_load_avg() 함수 249

__update_load_avg_*() 함수 251

propagate_entity_load_avg() 함수 252

update_load_avg() 함수 전체 요약 256

attach_entity_cfs_rq() 함수 258

attach_entity_load_avg() 함수 258

update_tg_load_avg() 함수 261

propagate_entity_cfs_rq() 함수 263

attach_entity_cfs_rq() 전체 요약 265

enqueue_task_fair() 함수 269

update_curr() 함수 270

update_cfs_group() 함수 272

enqueue_runnable_load_avg() 함수 276

account_entity_enqueue() 함수 277

__enqueue_entity() 함수 277

enqueue_task_fair() 전체 요약 279

PELT, CFS 스케쥴링 테스트1 283

task_group 생성 284

task 생성 286

schedule 테스트 291

PELT, CFS 스케쥴링 테스트2 300

첫번째 태스크 attach 301

첫번째 태스크 enqueue 303

두번째 태스크 attach 307

두번째 태스크 enqueue 309

세번째 태스크 attach 313

세번째 태스크 enqueue 316

스케쥴링 테스트 320

네번째 태스크 attach 322

네번째 태스크 enqueue 325

PELT, CFS 스케쥴링 테스트3 330

첫번째 태스크 attach 331

첫번째 태스크 enqueue 336

두번째 태스크 attach 342

두번째 태스크 enqueue 345

세번째 태스크 attach 347

세번째 태스크 enqueue 350

네번째 태스크 attach 352

네번째 태스크 enqueue 356

CPU Load Balancing 358

rebalance_domains() 함수 360

load_balance() 함수 362

find_busiest_group() 함수 365

find_busiest_queue() 함수 368

CFS Bandwidth 370

cfs_bandwidth 구조체 372

전체흐름 요약 374

tg_set_cfs_bandwidth() 함수 377

init_cfs_bandwidth() 함수 379

do_sched_cfs_period_timer() 함수 382

distribute_cfs_runtime() 함수 383

unthrottle_cfs_rq() 함수 384

throttle_cfs_rq() 함수 385

NO_HZ 387

NO_HZ_IDLE 388

NO_HZ_FULL 389

NO_HZ Kconfig 옵션 389

NO_HZ 관련 소스 391

WorkQueue 394

queue_work 395

DECLARE_WORK 예제 395

workqueue 구조체 정리 400

queue_work() 실행 과정 402

workqueue_init 404

workqueue_init_early() 소스 설명 405

workqueue_init() 소스 설명 409

worker_thread 411

부록 415

202208[v5.19] 커널 버전 비교 415

v5.4v5.19 전체 비교 416

CPU 아키텍쳐 소스 비교 417

스케쥴러 소스 비교 418

메모리 소스 비교 420

CONFIG_SCHED_CORE 421

 

리눅스 커널 소스 해설3 [스케쥴러]

28,000원 33,000원
추가 금액
수량
품절된 상품입니다.
주문 수량   0개
총 상품 금액 0원
재입고 알림 신청
휴대폰 번호
-
-
재입고 시 알림
페이스북
네이버 블로그
밴드
floating-button-img