강의

멘토링

로드맵

하드웨어

/

임베디드 · IoT

리눅스 커널의 구조와 원리: 워크큐 [저자 직강 1부-7]

시스템 소프트웨어에서 가장 많이 쓰이는, 최신 리눅스 커널(v6.1)의 '워크큐'의 핵심 개념을 "디버깅을 통해 배우는 리눅스 커널의 구조와 원리"의 저자가 제대로 설명합니다.

(5.0) 수강평 2개

수강생 43명

이런 걸 배울 수 있어요

  • 워크큐를 구성하는 기본 개념과 동작 방식

  • 디바이스 드라이버 관점으로 워크큐의 처리 방식

  • 딜레이 워크의 주요 개념

  • TRACE32 메모리 덤프로 워크큐 디버깅하기

시스템 반도체, 자동차 분야 등 시스템 소프트웨어 개발자라면

꼭 알아야 할 리눅스 커널

모든 IT 기기에서 가장 많이 사용되는 운영체제는 무엇일까요? 바로 리눅스 운영체제입니다. 스마트 폰, 디지틀 TV, 항공 엔터테인먼트 시스템 및 서버에 사용되고 있습니다. 시스템 반도체 업체에서 리눅스(리눅스 디바이스 드라이버)를 활용해 자신이 설계한 하드웨어를 제어합니다. 또한 전기 자동차(Automotive)을 구성하는 다양한 부품(인포테인먼트, 자율주행, 텔레메틱스)에도 리눅스가 많이 활용되고 있습니다.

리눅스 운영체제의 핵심은 리눅스 커널입니다. Armv8-A 아키텍처와 더불어 현재 시스템 소프트웨어 업계에서 가장 많이 필요한 기반 지식이 요구되는 내용이 리눅스 커널이라고도 볼 수 있어요.

시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 리눅스 시스템 소프트웨어 분야에서 주니어 개발자   

시스템 반도체, 전기 자동차 분야와 같은 리눅스 시스템 소프트웨어 개발 분야에서 일하고 싶은 취업 준비생 

리눅스 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학 희망자

리눅스 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자 

그런데 리눅스 커널은 시스템 소프트웨어 분야의 입문자에 있어 거대한 장벽과 같은 존재입니다. 입문자들은 리눅스 커널을 배우다가 수 차례 포기한 경험이 있을 것입니다. 그 어려운 리눅스 커널 버전이 업그레이드되면서 점점 더 복잡하게 진화하고 있습니다. 2024년 이후에는 리눅스 커널 버전은 v6.6 이상으로 업그레이드되고 있는데, 진입 장벽이 더 높아지고 있습니다.

시스템 반도체, 전기 자동차 분야를 포함한 다양한 분야에 포진된 리눅스 시스템 소프트웨어 개발자 분들은 리눅스 커널을 잘 알아야 개발 역량을 키울 수 있다는 사실은 알고 있습니다. 하지만 리눅스 커널을 어떻게 배워야 하고 무엇보다 실무에서 어떤 내용을 잘 알아야 하는지 감을 잡기 어려운 상황입니다.

리눅스 디바이스 드라이버 개발의 핵심 중 핵심: 워크큐

리눅스 시스템 소프트웨어 개발자로 입문하면 대부분 리눅스 디바이스 드라이버를 개발합니다. 이 과정에서 반드시 알아야 할 기능은 바로 워크큐입니다. 그 이유는 몇 가지 들자면;

  • 워크큐는 인터럽트 후반부 기법으로 사용된다.

  • 디바이스 드라이버의 많은 기능들은 워크큐에서 제공하는 API를 사용해 구현된다.

또한 리눅스 커널을 이루는 많은 기능들도 워크큐에서 제공하는 API를 사용해서 동작합니다. 그래서 제가 쓴 '리눅스 커널의 구조와 원리' 책의 7장에서 다음과 같은 '워크큐'를 설명합니다.

이번 강의는 다양한 방식으로 독자 분들이 디버깅 실습(TRACE32 메모리 덤프 분석, ftrace 분석)을 통해 워크큐를 배울 수 있게 구성했습니다.다.

강의의 차별화 포인트

이번 강의는 그 동안 한번도 유튜브나 어느 강의 플렛폼에서 다룬 적이 없는 콘텐츠로 구성되어 있습니다! 리눅스 커널의 워크큐와 관련된 자료 구조(system_wq 글로벌 변수, worker_pool 구조체, work_struct 구조체)를 리눅스 커널 메모리 덤프를 통해 디버깅합니다.이 강의를 수강하시는 분은 3개의 메모리 덤프를 내려 받아 직접 실습하실 수 있습니다.

1. 워크큐 디버깅용 리눅스 커널 덤프 제공 (3개)

이 강의를 수강하시면 3개의 메모리 덤프를 '인프런 강의 자료'에서 내려 받아 직접 TRACE32 시뮬레이터 프로그램을 활용해 디버깅할 수 있습니다. 2개의 메모리 덤프는 Armv8-A 기반 라즈베리 파이, 1건의 메모리 덤프는 RISC-V 기반 VisionFive2에서 받은 메모리 덤프입니다. 워크큐 기법의 다양한 동작(워크 아이템 큐잉, 워크 아이템 실행, 워커 풀, 글로벌 워크큐)을 직접 디버깅하면서 익힐 수 있습니다.

*참고로 TRACE32 시뮬레이터 프로그램은 다음과 같은 기존의 리눅스 커널 강의에서 내려 받을 수 있습니다:

  • 리눅스 커널의 구조와 원리: 디버깅 - Advanced 실전 [저자 직강 1부-3]

  • 리눅스 커널의 구조와 원리: 프로세스 [저자 직강 1부-4]

  • 리눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]

  • 리눅스 커널의 구조와 원리: 인터럽트 후반부 [저자 직강 1부-6]

2. 워크큐의 기본 개념을 쉽고 자세하게 설명

리눅스 커널을 배울 때 커널 소스를 분석합니다. 그런데 커널 소스를 분석하는 과정에서 많은 걸림돌을 만납니다. 해당 함수가 어떤 흐름으로 호출되는지, 분석하는 루틴의 자료 구조가 실제 어떤 값인지 확인하기 어렵습니다. 이번 강의는 이 모든 걸림돌을 해체합니다.

워크큐와 관련된 리눅스 커널 소스를 TRACE32 프로그램의 콜 스택과 상세한 자료 구조와 함께 분석합니다. 혼자서 리눅스 커널을 배울 때 보다 훨씬 더 효율적으로 워크큐 기법을 배울 수 있습니다. 또한 메모리 덤프에서 추출한 ftrace 메시지까지 분석하므로 입체적으로 워크큐의 동작 원리를 세세하게 파악할 수 있습니다.

3.디바이스 드라이버 관점과 리눅스 커널 관점으로 워크큐를 설명

워크큐를 처음 배우는 분들은 너무 어렵다고 합니다. 대부분 워크큐를 설명하는 책이나 블로그는 입문자가 아니라, 리눅스 커널을 어느 정도 잘 아는 개발자를 대상으로 구성됐기 때문입니다. 이번 강의는 입문자 분들이 워크큐를 잘 이해할 수 있게, 아래 2가지 관점으로 워크큐를 설명합니다:

  • 디바이스 드라이버 관점: 워크 아이템 기준으로 설명

  • 리눅스 커널 관점: 워크큐를 이루는 세세한 자료 구조를 설명

이번 강의를 듣고 나서 바로 디바이스 드라이버 개발을 시작할 수 있고, 이어서 심도있는 워크큐 기법의 동작 방식도 익힐 수 있습니다.

4. 글로벌 시스템 반도체 업체의 리눅스 커널 BSP 개발자들이 하는 디버깅 방법 소개

최근 시스템 반도체 업계가 떠오르고 있습니다. 글로벌 시스템 반도체 업체 리눅스 커널 시스템 개발자는 어떤 방식으로 리눅스 커널 드라이버를 디버깅할까요?

이번 강의에서 이 내용을 다룹니다. 리눅스 커널 메모리 덤프를 TRACE32 시뮬레이터를 사용해 프로세스와 관련된 커널의 자료 구조를 디버깅하면서 crash-utility로 메모리 덤프를 로딩해 커널의 주요 동작을 분석합니다.

5. 책에서 다루지 못한 내용도 설명

실전 개발에 많이 쓰이는 워크큐 와치독(CONFIG_WQ_WATCHDOG)을 다음과 같은 내용과 함께 설명합니다.

  • 라즈베리 파이에서 직접 워크큐 와치독(CONFIG_WQ_WATCHDOG)을 활성화하는 방법

  • 워크큐 와치독의 동작을 ftrace로 디버깅

바로 실전에 활용할 수 있는 유익한 내용까지 강의로 담았습니다.

이런 내용을 배워요

워크큐를 구성하는 핵심 기능과 로드맵을 먼저 설명합니다. 이어서 워크큐를 잘 배우는 방법을 상세하게 설명합니다.

워크큐를 구성하는 자료 구조를 큰 그림으로 설명합니다. 글로벌 워크큐와 워커풀 그리고 워크 아이템의 구조를 상세하게 설명합니다.

디바이스 드라이버 관점으로 워크(워크 아이템)이 어떻게 사용되는지 설명합니다.

워크와 관련된 자료 구조를 소개하고, 디버깅 실습으로 상세하게 각각의 필드가 어떤 값을 저장하는지 알기 쉽게 설명합니다.

워크 아이템이 큐잉되는 과정을 커널 코드 분석으로 상세하게 설명합니다.

워크 아이템이 큐잉될 때의 자료 구조(링크드 리스트)를 TRACE32 메모리 덤프 디버깅으로 상세하게 설명합니다.

워크 아이템을 실행하는 워커 스레드를 소개하고, 워커 스레드의 실행 단계를 설명합니다. 이어서 워커 스레드가 생성되는 커널 소스를 분석하고 이 과정의 콜 스택(백 트레이스)도 함께 설명합니다.

워커 스레드가 실행할 때의 동작 방식으로 커널 소스 분석으로 상세하게 설명합니다.

워커 스레드를 통해 워크 아이템이 실행되는 동작 방식을 TRACE32 디버깅을 통해 설명합니다. (3개의 메모리 덤프)

워크큐를 트레이싱하는 ftrace에 대해서 상세하게 설명하고, 관련 커널 소스 코드를 ftrace 메시지와 함께 분석합니다.

디바이스 드라이버에서 많이 활용되는 딜레이드 워크큐에 대해서 알기 쉽게 설명합니다.

딜레이드 워크의 소스 코드와 딜레이드 워크의 실행 흐름을 상세하게 분석합니다.

책에서는 다루지 않았지만 실전 프로젝트에서 많이 사용되는 워크큐 와치독을 설명합니다. CONFIG_WQ_WATCHDOG을 키는 방법을 설명하고 관련 커널 소스 코드를 분석합니다.

워크큐 와치독의 동작 방식을 ftrace 메시지 분석으로 상세하게 설명합니다.


책 집필/강의경력을 바탕으로
누구보다 깊고 상세하게!


글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' (2024년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사 (1~2차수)

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~2024년) 


국내에서 어느 누구보다 리눅스 커널을 구성하는 주요 기능을 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

수강 전 참고 사항

선수 지식 및 유의사항

  • 대략적으로 리눅스가 어떻게 동작하는지 아시면 좋습니다.

  • '리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]' 강의를 되도록 먼저 듣고 오시면 좋습니다.

  • 운영체제나 컴퓨터 구조에 대해 알고 있으면 더 편하게 수업을 들을 수 있습니다.

  • 리눅스 커널에 대한 깊이 있는 선수 지식은 필요하지 않습니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자

  • 시스템 반도체, 전기 자동차 분야와 같은 시스템 소프트웨어 개발을 하고 싶은 취업 준비생

  • 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생

  • 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자

선수 지식,
필요할까요?

  • C언어

  • 컴퓨터구조

  • 운영체제

안녕하세요
입니다.

5,669

수강생

161

수강평

86

답변

4.9

강의 평점

22

강의

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

강의문의 : austindh.kim@gmail.com

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

커리큘럼

전체

68개 ∙ (8시간 0분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

2개

5.0

2개의 수강평

  • ionia.kim님의 프로필 이미지
    ionia.kim

    수강평 9

    평균 평점 4.9

    5

    100% 수강 후 작성

    • dlrbcnvk님의 프로필 이미지
      dlrbcnvk

      수강평 19

      평균 평점 4.9

      5

      60% 수강 후 작성

      ₩44,000

      김동현 (Austin Kim)님의 다른 강의

      지식공유자님의 다른 강의를 만나보세요!

      비슷한 강의

      같은 분야의 다른 강의를 만나보세요!