Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

130199
1107
135858


리눅스 커널 레시피(4월 출간 예정) 전체 목차 -----Table of Contents-----

@ 리눅스 개발자분들께...

제 블로그에 오셔서 제 책이 언제 출간되는지 궁금해하시는 분이 계신 것 같은데요.
그래서 진행 과정을 공유드리려고 합니다.

이번 주 월요일(3/23/2020)에 최종 원고를 출판사에 전달했고 지금은 인덱스 작업 중에 있습니다.
4월 초에 출간이 될 예정이고 출간은 더 이상 연기되지는 않습니다.

참고로 책은 1부(700페이지)와 2부(900페이지)로 나눠져 있으며, 챕터들은 다음과 같이 구성돼 있습니다.

   * 1부: 리눅스 소개, 라즈베리 파이 설정, 커널 디버깅, 프로세스, 인터럽트, 인터럽트 후반부, 워크큐
   * 2부: 커널 타이머, 동기화, 스케줄링, 시스템 콜, 시그널, 가상 파일 시스템, 메모리 관리, 부록

혹시 궁금한 점이 있으면 댓글 주시면 답신드리겠습니다.

Thanks,
Austin Kim


리눅스의 전망과 소개


라즈베리 파이 설정 

라즈베리 파이 설치하기
라즈베리 파이 기본 설정하기 
라즈비안 리눅스 커널 빌드


리눅스커널 디버깅


프로세스

프로세스 소개 
프로세스 확인하기  
프로세스는 어떻게 생성할까?  
유저 레벨 프로세스 실행 실습  
커널 스레드  
커널 내부 프로세스의 생성 과정   
프로세스의 종료 과정 분석  
태스크 디스크립터(task_struct 구조체)  
스레드 정보: thread_info 구조체  
프로세스의 태스크 디스크립터에 접근하는 매크로 함수  
프로세스 디버깅  
   * glibc의 fork() 함수를 gdb로 디버깅하기  

인터럽트 처리



인터럽트 후반부 처리









6.9 Soft IRQ 서비스는 누가 언제 처리하나?




6.13 Soft IRQ 디버깅
6.13.1 ftrace Soft IRQ 이벤트 분석 방법
6.13.2 /proc/softirqs로 Soft IRQ 서비스 실행 횟수 확인

워크큐

7.1 워크큐 소개
   7.1.1 워크큐 주요 개념 알아보기
   7.1.2 워크큐의 특징은 무엇인가
   7.1.3 워크큐를 다른 인터럽트 후반부 기법과 비교해보기
   7.1.4 워크큐를 잘 알아야 하는 이유
7.2 워크큐 종류 알아보기
   7.2.1 alloc_workqueue() 함수 분석하기  
   7.2.2 7가지 워크큐를 알아보기
7.3 워크란
   7.3.1 struct work_struct 구조체
   7.3.2 워크는 어떻게 초기화를 할까?
7.4 워크를 워크큐에 어떻게 큐잉할까?
   7.4.1 워크를 워크큐에 큐잉하는 예제 코드 살펴보기
   7.4.2 워크큐 전체 흐름도에서 워크를 워크큐에 큐잉하는 과정 소개
   7.4.3 워크를 워크큐에 큐잉하는 인터페이스 함수 분석하기
   7.4.4 __queue_work() 함수 분석하기
   7.4.5 __queue_work_on() 함수에서 호출하는 워크큐 내부 함수 분석하기
7.5 워크는 누가 언제 실행하나?
   7.5.1 워크 실행의 출발점인 worker_thread() 함수 분석 
   7.5.2 process_one_work() 함수 분석
7.6. 워커 스레드란
   7.6.1 워커와 워커 스레드란
   7.6.2 워커 자료구조인 struct worker 구조체 알아보기
   7.6.3 워커 스레드는 누가 언제 만들까
   7.6.4 워커 스레드를 만드는 create_worker() 함수 분석하기
   7.6.5 create_worker() 함수에서 호출한 워크큐 커널 함수 분석하기
   7.6.6 워커 스레드 핸들 worker_thread() 함수 분석하기 
7.7 워크큐 실습 및 디버깅
   7.7.1 ftrace 워크큐 이벤트 소개
   7.7.2 라즈베리파이에서 ftrace로 워크큐 동작 확인
   7.7.3 인터럽트 후반부로 워크큐 추가 실습 및 로그 분석
7.8 딜레이 워크 소개
   7.8.1 딜레이 워크란 무엇인가?
   7.8.2 딜레이 워크 전체 흐름도 소개
   7.8.3 딜레이 워크는 어떻게 초기화할까?
   7.8.4 딜레이 워크 실행의 시작점은 어디일까?
   7.8.5 딜레이 워크는 누가 언제 큐잉할까?
7.9 라즈베리파이 딜레이 워크 실습 및 로그 확인
   7.9.1 패치 코드 내용과 작성 방법 알아보기
   7.9.2 ftrace 로그 설정 방법 소개
   7.9.3 ftrace 로그 분석해보기
7.10 정리

커널 시간관리

커널 타이머 관리 주요 개념 소개
jiffies란
커널 타이머 제어
동적 타이머 초기화
동적 타이머 등록하기
동적 타이머는 누가 언제 실행하나?
라즈베리파이 커널 타이머 실습 및 로그 분석
   
커널 동기화

커널 동기화 기본 개념 소개
레이스 발생 동작 확인
커널 동기화 기법 소개
스핀락
뮤텍스란
커널 동기화 디버깅

프로세스 스케줄링

스케줄링 소개
프로세스 상태 관리
   어떤 함수가 프로세스 상태를 바꿀까?
스케줄러 클래스
런큐
CFS 스케줄러
   CFS 관련 세부 함수 분석  
선점 스케줄링(Preemptive Scheduling)   
프로세스는 어떻게 깨울까?
스케줄링 핵심 schedule() 함수 분석
컨택스트 스위칭
스케줄링 디버깅
   스케줄링 프로파일링
     CPU에 부하를 주는 테스트   
     CPU에 부하를 주지 않는 테스트 

시스템 콜

시스템 콜 주요 개념 소개
유저 공간에서 시스템 콜은 어떻게 발생할까
시스템 콜 핸들러는 어떤 동작을 할까? 
시스템 콜 실행 완료 후 무슨 일을 할까?
시스템 콜 관련 함수  
시스템 콜 디버깅  
   

시그널이란

시그널이란
시그널 설정은 어떻게 할까
시그널 생성 과정 함수 분석
프로세스는 언제 시그널을 받을까
시그널 전달과 처리는 어떻게 할까?
시그널 제어 suspend() 함수 분석 
시그널 ftrace 디버깅
 
  
가상 파일시스템 

가상 파일시스템 소개
파일 객체
파일 객체 함수 오퍼레이션 동작
프로세스는 파일객체 자료구조를 어떻게 관리할까?
슈퍼블록 객체
아이노드 객체
덴트리 객체
가상 파일시스템 디버깅

커널 메모리 

가상 주소를 물리 주소로 어떻게 변환할까?   
메모리 존(Zone)에 대해서   
커널 메모리 할당은 어떻게 할까   
슬랩 메모리 할당자와 kmalloc 슬랩 캐시 분석   
커널 메모리 디버깅


"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)



핑백

덧글

  • padawan 2019/02/08 08:31 # 삭제 답글

    기존과 다른 커널책이 출간된다니 기대가 되네요. 오래오래 소장하고픈 멋진 책 기대하겠습니다. 마지막 탈고 작업으로 바쁘실텐데 힘내세요!!
  • AustinKim 2019/02/08 11:04 #

    격려해주셔서 감사합니다. 즐거운 하루 되십시오!
  • 궁그 2019/05/30 16:37 # 삭제 답글

    이책 언제출간되나요?
    바로 사고싶은데 어느싸이트에서 구매가능한가요?
  • AustinKim 2019/05/31 06:15 #

    7월말이나 8월초에 출간될 것 같습니다. 유명 출판사에서 내는 책이니 yes24와 같은 어느 온라인 서점에 가도 구매할 수 있을 것입니다.
    제 블로그에 관심을 가져주셔서 감사합니다.
  • 궁그 2019/06/05 16:05 # 삭제 답글

    와~~목빠지게 기다리고있습니다 ^^
    많이 힘드실것같습니다 ㅠㅠ 힘내십시오!!
  • AustinKim 2019/06/09 09:33 #

    응원해주시고 격려해주셔서 정말 감사합니다.
    혹시 출간 전에 미리 보고 싶은 챕터가 있으신가요? 이메일 주시면 1~2챕터 정도는 PDF로 전달드릴 수 있습니다.
  • kyle 2019/06/09 11:32 # 삭제 답글

    안녕하세요. 나온다면 구매하고싶습니다. 그런데 혹시 ebook으로도 출간하실 생각인가요?
    메모나 검색같은 기능때문에 eBook 정말 편하더라고요. 물론 무거운책을 안들고다녀도 된다는 장점도 있고요.
    어쨋든 정말 기대됩니다!
  • AustinKim 2019/06/09 14:55 #

    응원해주셔서 감사합니다.
    일단 원고를 마무리한 다음 출판사와 이야기해서 eBook 출간도 추진해야 겠군요.
  • djk 2019/07/16 11:01 # 삭제 답글

    현재 iamroot 커널스터디중인데, 이책 기대중입니다. e-book도 기대중이고, 미리 1~2chapter 받을수 있을까요? 3~4장 중 가능한 챕터 부탁드립니다. kindboy1200@daum.net
  • AustinKim 2019/07/16 11:24 #

    지금 집필 중인 책에 관심을 가져 주셔서 감사합니다.
    우선 '4장 프로세스' 챕터 보내 드리면 어떨까요? 내용을 읽고 혹시 질문을 주실 수 있나요?
    베타리더가 되어 주시면 더 감사하겠습니다.
  • djk 2019/07/17 20:21 # 삭제

    안녕하세요, 스터디원들과도 함께 공유해서 보도록 하고, 말씀 하신 베타리더역할도 같이 해보자고 제안해보겠습니다.
    감사합니다.
  • AustinKim 2019/07/18 00:21 #

    댓글 주셔서 감사합니다.

    다음 정보와 함께 저에게 메일 주시면 4장 원고를 먼저 보내드리겠습니다.
    austindh.kim@gmail.com

    이름/리눅스 커널을 공부하는 목적/리눅스 소스 코드를 분석한 기간

    (예시)
    이름: 이병규
    리눅스 커널을 공부하는 목적: 개발 능력을 키우기 위해/운영체제를 알고 싶어서/취미 삼아서
    리눅스 소스 코드를 분석한 기간: 1주일/8년/아직 없음

    베타 리더를 하시는 분들이 많아 관리를 위해 간략한 정보를 요청드리는 것입니다.
    편하게 생각해주셨으면 좋겠습니다.
  • 아잉 2019/07/30 21:35 # 삭제 답글

    지나가다 우연히 알게 되었습니다. 또 다른 커널 책이라니 기대가 정말 많이 됩니다.. 현기증 나요..ㅠㅠ
  • AustinKim 2019/07/30 23:01 #

    응원해주셔서 감사합니다! 자주 블로그에 오셔서 좋은 정보 얻어 가셨으면 좋겠습니다.
  • roqkf 2019/08/06 13:10 # 삭제 답글

    책 기다리고 있겠습니다!! 화이팅!!
  • AustinKim 2019/08/07 22:17 #

    응원해주셔서 감사합니다.
  • 기린 2019/09/18 10:36 # 삭제 답글

    좋은 책 나오면 사야죠~^^
  • Guillermo 2019/09/18 18:20 #

    감사합니다. ^^
  • 너구리 2019/09/26 17:31 # 삭제 답글

    책 기다리고 있습니다. :)
  • AustinKim 2019/09/26 20:27 #

    감사합니다.
    조만간 출간 예정이니 조금만 기다려 주세요. :)
  • applemaste 2019/10/15 03:19 # 삭제 답글

    리눅스 커널을 공부하며 정말 많은 정보를 얻어간 블로그인데 책을 출간하신다니 정말 기대됩니다 ㅎㅎ
    출간되면 꼭 한권 사서 평생 펴보지 않을까 싶습니다.
    감사합니다.
  • Guillermo 2019/10/17 05:57 #

    응원해주셔서 감사합니다. 자주 오셔서 유용한 정보 얻어 가셨으면 좋겠네요.
  • ybgwon 2019/11/08 13:17 # 삭제 답글

    책 나왔나 해서 한번씩 들립니다. 서두르지 마시고 잘 정리하셔서 좋은 책 부탁드립니다.
  • AustinKim 2019/11/08 17:21 #

    응원 감사합니다. 즐거운 주말 보내세요.
  • Daniel 2019/11/18 15:17 # 답글

    저도 책 나왔는지 종종 확인하러 들르며 응원하고 있습니다 :)
  • AustinKim 2019/12/22 09:59 #

    응원해주셔서 감사합니다.
    참고로 책은 2020년 1월에 출간될 예정입니다.
  • Diallo 2019/12/21 19:14 # 삭제 답글

    책 나오자마자 살 예정입니다~ 얼른 나왔으면 좋겟어요
  • AustinKim 2019/12/22 10:00 #

    응원해주셔서 감사합니다.
    참고로 책은 2020년 1월에 출간될 예정이니 조금만 기다려주세요.
  • kkikyul 2019/12/26 19:27 # 삭제 답글

    7월달부터 책이 나오길 계속 기다리고 있습니다..ㅎㅎ좋은 책 만들어주세요 감사합니다.
  • c-lan-guru 2019/12/31 22:47 # 삭제 답글

    책 기대하고 있는 사람입니다.
    현재 외국에 거주하고 있는데요,
    혹시 전자책으로도 출판하실 의향이 있으신가요?
    나오는 순간 1초의 망설임도 없이 살 생각입니다! ^^
    곧 새해인데 새해복 많이받으시길!
  • AustinKim 2020/01/01 09:30 #

    출간될 책에 관심을 가져주셔서 감사합니다,

    책의 분량이 만만치 않아 출판사와 전자책의 출판을 검토 중입니다.
    전자책의 출판 시기만 조율되면 출간될 것 같습니다.
  • c-lan-guru 2020/01/01 11:45 # 삭제

    답변 감사합니다
    책 출판을 위해 많은 노력하고 계실텐데 응원합니다!
  • AustinKim 2020/01/05 09:08 #

    응원해주셔서 감사합니다.
  • codex 2020/01/29 18:24 # 삭제 답글

    커널 개발 하고있는데 덕분에 도움이 많이 되었습니다. 2018년 부터 책 출간 소식이 있길래 빨리 보고 싶은 마음에
    매일 오스틴님 블로그에 와서 소식없나 보고 있습니다.
    항상 응원하고 저희 팀원분들도 오스틴님 블로그에서 많은 내용 배우면서 작업 하고 있습니다.
    화이팅 하세요!!!!
  • AustinKim 2020/02/01 22:07 #

    (아, 이제 댓글을 확인했습니다.)
    응원해주셔서 감사합니다. 제 블로그의 글이 개발에 도움이 된다고 하시니 뿌뜻합니다.
    책은 *정말로* 2월 중순에 출간될 예정이니 참고하시면 되겠습니다.
    그리고, 책의 분량은 1500 페이지로, 1부와 2부로 나눠서 출간될 것 같습니다.

    즐거운 주말 되세요.
  • c-lan-guru 2020/02/16 22:10 # 삭제 답글

    안녕하세요, 책 출간에 대해 질문드립니다.
    어느 출판사에 출간하실 예정이신가요?
    전자책은 동시에 출간하시진않나요?
  • AustinKim 2020/02/17 09:45 #

    출간될 책에 관심을 가져 주셔서 감사합니다.
    출판사는 '위키북스'이고 '이북(E-book) 출간'은 조금 시간이 걸릴 것 같습니다.

    Thanks,
    Austin Kim
  • Kuriz 2020/02/17 21:23 # 삭제 답글

    나오면 바로 살려고 기다리고 있습니다. 노력하신 양 만큼 많이 팔릴거라 믿습니다.
  • AustinKim 2020/02/18 13:07 #

    응원해주셔서 감사합니다.
    자주 오셔서 유용한 정보를 얻어 가셨으면 좋겠습니다.

    Thanks,
    Austin Kim
  • 폭8 2020/02/18 13:03 # 삭제 답글

    그러고 보니 출판사 계약때문에 작성글들 내려가는거 아닌지요?
    물론 나오자마자 책 구매하려고 합니다만 걱정이네요
  • AustinKim 2020/02/18 13:10 #

    제 블로그의 글을 관심있게 봐주셔서 감사합니다.
    블로그에 이미 올린 글은 '절대' 삭제되지 않을 것이니 걱정하지 않으셔도 좋습니다.
    오히려 책에서 다루지 않는 내용이 블로그에 더 업데이트될 예정입니다.

    Thanks,
    Austin Kim
  • 2020/02/18 16:04 # 삭제 답글 비공개

    비공개 덧글입니다.
  • AustinKim 2020/02/18 19:11 #

    출간될 책에 관심을 가져 주셔서 감사합니다.

    문장의 표현이나 흐름의 관점으로는 출간될 책은 블로그에 있는 글보다는 '조금 더 부드러운 표현'으로 구성돼 있습니다.
    그런데 기술적인 관점(소스 코드 분석 + 디버깅 방법)으로 보면 블로그의 내용과 책의 내용은 거의 유사합니다.

    Thanks,
    Austin Kim
  • c-lan-guru 2020/03/26 17:21 # 삭제 답글

    책 드디어 출판되는군요! 축하드립니다!
    그간 정말 수고 많으셨습니다.
  • AustinKim 2020/03/26 18:42 #

    응원해주셔서 감사합니다.
  • padawan 2020/03/26 17:40 # 삭제 답글

    바쁘신 와중에 출판 준비 하시느라 고생 많으셨습니다.
    4월이 기다려 지네요..^^
    꼭 2권 모두 구매해서 1독 하겠습니다.
  • AustinKim 2020/03/26 18:42 #

    감사합니다. 책이 리눅스 개발에 많이 도움이 됐으면 좋겠습니다.
  • wayne 2020/03/30 11:15 # 삭제 답글

    좋은글 많이 올려주셔서 잘 보고 있습니다.^^

    조언을 조금 구하고 싶은 부분이 있어서 글 남깁니다.

    제가 북한 os 붉은별 3.0을 분석하고 있는데 linux kernel 2.6.38.을 자체개발해서 사용하고 있더라구요

    근데 독립망 환경이라서 블로그에서 설명해주시는 strace 등 각종 추적 패키지를 설치를 할 수가 없던데

    apt-자체 명령어가 안먹드라구요

    수동으로 설치하는 방법을 알고계실거같아서 방법좀 공유 부탁드립니다.
  • 2020/03/31 10:00 # 삭제 답글 비공개

    비공개 덧글입니다.
  • AustinKim 2020/03/31 10:22 #

    죄송합니다만, 제가 15+년 동안 개발 업체 내에 파묻혀 코딩과 디버깅만 하다보니
    리눅스 커널을 연구하는 대학원 연구실에 대한 정보가 부족합니다.

    아마 운영체제를 연구하는 대학원에서 리눅스 커널을 깊게 분석할 것 같은데요.
    IAMROOT와 같은 리눅스커널 모임에서 관련 정보를 찾으셔도 좋을 것 같습니다.
댓글 입력 영역