리눅스 커널 소스 해설2 [소스 실행 분석기]
저자 정재준
"리눅스 커널 소스 해설2 [소스 실행 분석기]"는 커널연구회에서 제작한 어플리케이션 입니다. 리눅스 커널 소스를 qt 어플리케이션 프로젝트로 구성하여 사용자 콘솔에서 직접 실행하면서 분석할 수 있습니다. 커널 소스는 커널 모드에서 실행해야 하는 특성으로 인해서 소스를 빌드하고 실행 및 디버깅하기가 상당히 까다롭습니다. 커널연구회는 그동안 커널 소스를 분석하면서 이런 불편한 점들을 해결하기 위해서 많은 노력을 했습니다. 커널 소스 중에서 하드웨어 의존적인 소스는 커널 모드에서 하드웨어를 직접 제어해야 하므로 따로 분리해서 실행하기 어렵습니다. 그러나 하드웨어에 상관없이 소프트웨어 알고리즘으로 동작하는 소스들(자료구조, 구조체, 공통 라이브러리, 스케쥴러 등)은 별도로 분리하여 사용자 어플리케이션으로 실행할 수 있습니다. 이렇게 하면 소스를 분석 및 디버깅하기 좋아지고 소스도 쉽게 익힐 수 있습니다. 커널연구회는 다년간의 노력과 노하우로 커널 소스 중에서 단독으로 분리할 수 있는 소스들을 파일 단위로 분리하여 qt 프로젝트로 구성하여 사용자 콘솔 어플리케이션으로 실행할 수 있도록 했습니다. 이렇게 하면 커널 소스를 행단위로 하나씩 실행하면서 자세히 분석 및 디버깅 할 수 있습니다.
커널연구회의 "리눅스 커널 소스 해설2 [소스 실행 분석기]”는 위의 내용을 이해하기 쉽도록 설명한 책입니다. 리눅스 커널 소스들중에서 환경설정, 초기화, 자료구조, 구조체, 공통 라이브러리, 스케쥴러, 디바이스 트리 파싱, 디바이스 코어 소스를 따로 분리 했습니다. 분리한 소스들은 파일 단위로 qt 어플리케이션 프로젝트로 구성하여 qt에서 실행 및 디버깅할 수 있습니다. 또한 사용자 콘솔 화면에서 직접 실행하여 소스를 분석할 수 있습니다. 소스 파일 경로 구조는 리눅스 커널 소스 구조와 동일하게 구성하여 소스를 학습할때 혼선없이 일관성을 유지할 수 있도록 했습니다. 리눅스 커널 소스는 Long Term 안정화 버전인 v5.4을 기준으로 분석기에 적용 했습니다.
책내용 요약
책정보
전체 목차
Table of Contents
리눅스 커널 소스 해설2 [소스 실행 분석기]
저작권 2
ISBN 3
저자 소개 4
머리말 5
목차 8
1. 커널 소스 실행 분석기 개요 14
1.1 소스 경로 구조 16
1.2 qt 프로젝트 18
1.3 userspace RCU 패키지 22
1.4 소스 실행 및 디버깅 25
1.5 소스 공유(github) 31
2. 작업 메뉴별 기능 소개 33
2.1 메인 메뉴 34
2.2 환경 설정 메뉴 37
디버그 메세지 범위 설정 39
DTB 파일명 설정 42
2.3 기본 훈련 메뉴 43
Data Types 44
Basic Pointer Test 46
Basic Struct Test 46
Bits Operation Test 48
CPU Mask Test 49
Run Time(CPU cycles) Test 51
Sort Test 51
2.4 알고리즘 및 구조체 학습 메뉴 53
Linked List Test 55
List Sort Test 57
Red-Black Tree Test 58
XArray Test 62
2.5 커널 시작 소스 테스트 메뉴 68
setup_arch test 69
sched_init test 70
numa_init test 72
sched_init_smp test 74
2.6 스케쥴러 소스 테스트 메뉴 78
Basic PELT Test 메뉴 80
CFS Test 메뉴 82
DeadLine Test 메뉴 83
2.7 드라이버 소스 테스트 메뉴 85
Device Tree Test 메뉴 90
3. 환경설정 소스 설명 92
3.1 Config View 95
3.2 함수 호출 스택 깊이 계산 97
3.3 스택 깊이별 디버그 메세지 98
4. 기본 훈련 소스 설명 103
4.1 Data Types 105
4.2 Basic Pointer Test 110
4.3 Basic Struct Test 115
4.4 Bits Operations Test 118
4.5 CPU Mask Test. 122
4.6 Run Time(CPU cycles) Test. 126
4.7 Sort Test. 130
5. 알고리즘 및 구조체 소스 설명 134
5.1 Linked List Test 소스 설명 136
5.2 List Sort Test 소스 설명 150
5.3 Red-Black Tree Test 소스 설명 154
5.4 XArray Test 소스 설명 165
XArray 구조체 166
XArray 노드 연결 169
XArray 노드 삽입 170
XArray 인덱스 탐색 174
XArray 인덱스 삭제 177
XArray의 단점 179
XArray 소스 테스트 181
XArray 소스 수정 188
5.5 IDA, IDR Test 소스 설명 205
idr, ida 구조체 206
idr 할당 209
idr 테스트 212
ida 테스트 214
idr, ida 점검 테스트 217
6. 커널 시작 소스 설명 220
6.1 setup_arch() test 225
6.2 sched_init() test 234
sched_init 메모리 할당 237
sched_init 구조체 연결 242
sched_init 소스 실행 및 테스트 245
6.3 numa_init() test 248
NUMA 구조 이해 249
numa_init() 소스 테스트 252
6.4 sched_init_smp() test 255
7. 스케쥴러 소스 설명 265
7.1 sched_test_menu() 273
7.2 test_sched_new_task 275
7.2 test_sched_current_task_info 278
7.3 test_sched_deactivate_task 279
7.4 test_sched_setscheduler 281
7.5 test_sched_schedule 284
7.6 test_sched_create_group 285
7.7 test_sched_wake_up_process 286
7.8 pr_sched_tg_info 287
7.9 _menu_sched_basic_pelt_test 290
7.10 _menu_sched_cfs_test 291
7.11 _menu_sched_dl_test 292
8. WorkQueue 이해 294
8.1 queue_work 295
workqueue 구조체 정리 300
queue_work() 실행 과정 302
8.2 workqueue_init 305
workqueue_init_early() 소스 설명 305
workqueue_init() 소스 설명 310
8.3 worker_thread 312
9. 드라이버 소스 설명 316
9.1 Device Tree 구조체 319
9.2 menu_drivers() 323
9.3 dtb_set_file_name 325
9.4 dtb_test_read_file 326
9.5 dtb_test_hex_dump 329
9.6 _menu_of_unittest 331
10. 리눅스 커널 최신 버전 비교 334
11. 커널연구회 멤버쉽 347
리눅스 커널 소스 해설2 [소스 실행 분석기]