강의

멘토링

커뮤니티

Hardware

/

Embedded IoT

Cấu trúc và nguyên lý của Linux Kernel: Workqueue [Bài giảng trực tiếp của tác giả Phần 1-7]

Khái niệm cốt lõi của 'workqueue' trong kernel Linux mới nhất (v6.1), được sử dụng nhiều nhất trong phần mềm hệ thống, được tác giả của "Học cấu trúc và nguyên lý kernel Linux thông qua debugging" giải thích một cách đúng đắn.

(5.0) 2 đánh giá

63 học viên

  • austinkim
Linux
Operating System
ARM Architecture
linux-kernel
armv8

Bạn sẽ nhận được điều này sau khi học.

  • Khái niệm cơ bản và cách thức hoạt động của Work Queue

  • Cách xử lý workqueue từ góc độ device driver

  • Các khái niệm chính của Delay Work

  • Gỡ lỗi workqueue bằng memory dump của TRACE32

1. Phát hành coupon giảm giá 40% khi vượt qua 500 người🙏

Để kỷ niệm việc vượt qua 500 học viên đăng ký khóa học Linux Kernel, chúng tôi phát hành coupon giảm giá 40%. Cảm ơn các bạn. Chỉ dành cho 100 người đầu tiên.

2. Hướng dẫn lộ trình 🎯

Bài gi강này là lộ trình'Linux kernel - khóa học cơ bản dành cho nhà phát triển phần mềm hệ thống'được bao gồm trong khóa học.

Nếu bạn là nhà phát triển phần mềm hệ thống trong lĩnh vực bán dẫn hệ thống, ô tô, v.v.

Kernel Linux cần thiết phải biết

Hệ điều hành được sử dụng nhiều nhất trên tất cả các thiết bị IT là gì? Chính là hệ điều hành Linux. Nó được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí hàng không và máy chủ. Các công ty bán dẫn hệ thống sử dụng Linux (Linux device driver) để điều khiển phần cứng mà họ thiết kế. Ngoài ra, Linux cũng được ứng dụng rộng rãi trong các bộ phận khác nhau cấu thành xe điện (Automotive) như hệ thống thông tin giải trí (infotainment), tự lái và telematics.

Cốt lõi của hệ điều hành Linux là kernel Linux. Cùng với kiến trúc Armv8-A, có thể nói rằng kernel Linux là nội dung đòi hỏi kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện tại.

✅ Trong lĩnh vực phần mềm hệ thống Linux bao gồm bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment) là nhà phát triển junior

Người chuẩn bị việc làm muốn làm việc trong lĩnh vực phát triển phần mềm hệ thống Linux như bán dẫn hệ thống, xe điện

✅ Người mong muốn học cao học trong lĩnh vực phần mềm hệ thống Linux (bộ nhớ, hệ thống tập tin, hệ điều hành)

✅ Các lập trình viên từ lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux

Tuy nhiên, kernel Linux là một rào cản khổng lồ đối với những người mới bắt đầu trong lĩnh vực phần mềm hệ thống. Những người mới bắt đầu có lẽ đã có kinh nghiệm từ bỏ việc học kernel Linux nhiều lần. Kernel Linux vốn đã khó khăn này đang ngày càng phát triển phức tạp hơn khi các phiên bản được nâng cấp.Từ năm 2024 trở đi, phiên bản kernel Linux đã được nâng cấp lên v6.6 trở lên vànhưng rào cản gia nhập đang ngày càng cao hơn.

Các nhà phát triển phần mềm hệ thống Linux hoạt động trong nhiều lĩnh vực khác nhau bao gồm bán dẫn hệ thống, xe điện đều biết rằng họ cần hiểu rõ về Linux kernel để có thể nâng cao năng lực phát triển. Tuy nhiên, việc nắm bắt được cách học Linux kernel như thế nào và quan trọng hơn là cần biết những nội dung gì trong công việc thực tế là một tình huống khó khăn.

Cốt lõi của cốt lõi trong phát triển Linux Device Driver: Workqueue

Khi bắt đầu làm nhà phát triển phần mềm hệ thống Linux, hầu hết sẽ phát triển trình điều khiển thiết bị Linux. Trong quá trình nàyTính năng bắt buộc phải biết chính là work queue. Lý do là có thể kể ra một vài điều sau;

  • Workqueue được sử dụng như một kỹ thuật xử lý nửa sau của interrupt.

  • Nhiều chức năng của device driver được triển khai bằng cách sử dụng API do workqueue cung cấp.

Ngoài ra, nhiều chức năng tạo nên nhân Linux cũng hoạt động bằng cách sử dụng API do workqueue cung cấp. Vì vậy, trong chương 7 của cuốn sách 'Cấu trúc và Nguyên lý của Nhân Linux' mà tôi đã viết, tôi giải thích về 'workqueue' như sau.

Bài giảng này được cấu trúc để người đọc có thể học về workqueue thông qua thực hành debug bằng nhiều cách khác nhau (phân tích memory dump TRACE32, phân tích ftrace).

Điểm khác biệt của khóa học

Khóa học này được cấu thành từ nội dung chưa từng được đề cập trên YouTube hay bất kỳ nền tảng giảng dạy nào khác! Chúng ta sẽ debug các cấu trúc dữ liệu liên quan đến workqueue của Linux kernel (biến toàn cục system_wq, cấu trúc worker_pool, cấu trúc work_struct) thông qua memory dump của Linux kernel. Những người tham gia khóa học này có thể tải xuống 3 memory dump để thực hành trực tiếp.

1. Cung cấp kernel dump Linux để debug workqueue (3 cái)

Khi bạn tham gia khóa học này, bạn có thể tải xuống 3 memory dump từ 'Tài liệu khóa học Inflearn' và trực tiếp sử dụng chương trình mô phỏng TRACE32 để debug. 2 memory dump được lấy từ Raspberry Pi dựa trên Armv8-A, 1 memory dump được lấy từ VisionFive2 dựa trên RISC-V. Bạn có thể học các hoạt động đa dạng của kỹ thuật workqueue (queuing work item, thực thi work item, worker pool, global workqueue) thông qua việc debug trực tiếp.

*Để tham khảo, chương trình mô phỏng TRACE32 có thể tải xuống từ các khóa học kernel Linux hiện có như sau:

  • Cấu trúc và nguyên lý của Linux Kernel: Debugging - Advanced thực chiến [Tác giả trực tiếp giảng dạy phần 1-3]

  • Cấu trúc và nguyên lý của Linux Kernel: Process [Bài giảng trực tiếp của tác giả Phần 1-4]

  • Cấu trúc và nguyên lý của Linux Kernel: Interrupt [Tác giả trực tiếp giảng dạy Phần 1-5]

  • Cấu trúc và nguyên lý của Linux Kernel: Nửa sau của Interrupt [Tác giả trực tiếp giảng dạy Phần 1-6]

2. Giải thích khái niệm cơ bản về WorkQueue một cách dễ hiểu và chi tiết

Khi học nhân Linux, chúng ta phân tích mã nguồn nhân. Tuy nhiên, trong quá trình phân tích mã nguồn nhân, chúng ta gặp phải nhiều trở ngại. Khó có thể xác định hàm đó được gọi theo luồng nào, cấu trúc dữ liệu của routine phân tích thực sự có giá trị gì. Bài giảng này sẽ phá bỏ tất cả những trở ngại đó.

Phân tích mã nguồn kernel Linux liên quan đến workqueue cùng với call stack và cấu trúc dữ liệu chi tiết của chương trình TRACE32. Bạn có thể học kỹ thuật workqueue hiệu quả hơn nhiều so với việc tự học kernel Linux một mình. Ngoài ra, việc phân tích cả các thông điệp ftrace được trích xuất từ memory dump giúp bạn có thể nắm bắt chi tiết nguyên lý hoạt động của workqueue một cách lập thể.

3. Giải thích workqueue từ góc độ device driver và góc độ Linux kernel

Những người mới bắt đầu học workqueue thường nói rằng nó quá khó. Điều này là do hầu hết các cuốn sách hoặc blog giải thích về workqueue không được viết cho người mới bắt đầu, mà được cấu thành dành cho các nhà phát triển đã hiểu khá rõ về Linux kernel. Khóa học này sẽ giải thích workqueue theo 2 góc độ dưới đây để các bạn mới bắt đầu có thể hiểu rõ workqueue:

  • Quan điểm trình điều khiển thiết bị: Giải thích dựa trên work item

  • Quan điểm nhân Linux: Giải thích các cấu trúc dữ liệu chi tiết tạo nên workqueue

Sau khi nghe xong bài giảng này, bạn có thể bắt đầu phát triển device driver ngay lập tức và tiếp tục học cách thức hoạt động chuyên sâu của kỹ thuật workqueue.

4. Giới thiệu phương pháp debug của các nhà phát triển BSP kernel Linux tại các công ty bán dẫn hệ thống toàn cầu

Gần đây ngành bán dẫn hệ thống đang nổi lên. Các nhà phát triển hệ thống Linux kernel tại các công ty bán dẫn hệ thống toàn cầu sẽ debug driver Linux kernel theo cách nào?

Trong bài giảng này, chúng ta sẽ đề cập đến nội dung sau. Sử dụng TRACE32 simulator để debug các cấu trúc dữ liệu của kernel liên quan đến process từ memory dump của Linux kernel, đồng thời loading memory dump bằng crash-utility để phân tích các hoạt động chính của kernel.

5. Giải thích cả những nội dung không được đề cập trong sách

Giải thích về watchdog của work queue (CONFIG_WQ_WATCHDOG) được sử dụng nhiều trong phát triển thực tế cùng với các nội dung sau đây.

  • Cách kích hoạt trực tiếp watchdog hàng đợi công việc (CONFIG_WQ_WATCHDOG) trên Raspberry Pi

  • Gỡ lỗi hoạt động của watchdog workqueue bằng ftrace

Chúng tôi đã đưa vào khóa học những nội dung hữu ích mà bạn có thể áp dụng ngay vào thực tế.

Bạn sẽ học những nội dung như thế này

Trước tiên, tôi sẽ giải thích các chức năng cốt lõi và lộ trình cấu thành workqueue. Tiếp theo, tôi sẽ giải thích chi tiết phương pháp học workqueue hiệu quả.

Giải thích cấu trúc dữ liệu tạo nên workqueue theo bức tranh tổng thể. Mô tả chi tiết cấu trúc của global workqueue, worker pool và work item.

Giải thích cách sử dụng work (work item) từ góc độ device driver.

Giới thiệu cấu trúc dữ liệu liên quan đến work và thông qua thực hành debug, giải thích chi tiết một cách dễ hiểu về giá trị mà từng trường lưu trữ.

Giải thích chi tiết quá trình work item được đưa vào hàng đợi thông qua phân tích mã kernel.

Giải thích chi tiết cấu trúc dữ liệu (danh sách liên kết) khi work item được đưa vào hàng đợi thông qua việc debug memory dump bằng TRACE32.

Giới thiệu worker thread thực thi work item và giải thích các giai đoạn thực thi của worker thread. Tiếp theo phân tích mã nguồn kernel tạo ra worker thread và cùng giải thích call stack (back trace) của quá trình này.

Giải thích chi tiết cách thức hoạt động khi worker thread thực thi thông qua phân tích mã nguồn kernel.

Giải thích cách thức hoạt động của work item được thực thi thông qua worker thread bằng debugging TRACE32. (3 memory dump)

Giải thích chi tiết về ftrace để tracing workqueue và phân tích mã nguồn kernel liên quan cùng với các thông điệp ftrace. ## ftrace và Workqueue Tracing ### 1. Tổng quan về ftrace ftrace là một framework tracing được tích hợp sẵn trong Linux kernel, cho phép theo dõi và phân tích hoạt động của kernel một cách chi tiết. Đối với workqueue, ftrace cung cấp khả năng theo dõi: - Việc tạo và hủy work items - Quá trình thực thi work functions - Quản lý worker threads - Performance và latency của workqueue operations ### 2. Các Tracepoint chính của Workqueue #### 2.1 workqueue_queue_work ```c // kernel/workqueue.c TRACE_EVENT(workqueue_queue_work, TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq, struct work_struct *work), TP_ARGS(req_cpu, pwq, work), TP_STRUCT__entry( __field(void *, work)

Giải thích dễ hiểu về delayed workqueue được sử dụng nhiều trong device driver.

Phân tích chi tiết mã nguồn của Delayed Work và luồng thực thi của Delayed Work.

Sách không đề cập đến nhưng sẽ giải thích về watchdog của work queue được sử dụng nhiều trong các dự án thực tế. Sẽ giải thích cách bật CONFIG_WQ_WATCHDOG và phân tích mã nguồn kernel liên quan.

Giải thích chi tiết cách thức hoạt động của workqueue watchdog thông qua phân tích thông điệp ftrace.


Dựa trên kinh nghiệm viết sách/giảng dạy
Sâu sắc và chi tiết hơn ai hết!


Tác giả toàn cầu & Nhà phát triển phần mềm hệ thống Linux (Kiến trúc Arm, RISC-V)

Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, đây là tác giả duy nhất! đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả 2 cuốn sách đều được chọn là sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc), và là người đầu tiên tại Hàn Quốc xuất bản sách "Reverse Engineering Armv8-A Systems" (tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt), là một tác giả toàn cầu. Quan trọng nhất, đây là một nhà phát triển đang làm việc hiểu rõ nhất về các xu hướng phần mềm hệ thống mới nhất (xe điện, chất bán dẫn hệ thống - phần mềm hệ thống). Đồng thời cũng là một nhà giáo dục tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' tác giả cuốn sách (tiếng Anh), (nhà xuất bản Packt)

  • 'Học cấu trúc và nguyên lý của Linux kernel thông qua debugging' (2021, Giải thưởng sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc) tác giả

  • Tác giả của 'Cấu trúc và nguyên lý kiến trúc Arm cho phát triển phần mềm hệ thống' (năm 2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc)

  • 'Programmers Dev Course: Chuyên gia hệ thống Linux và kernel' Giảng viên chính (khóa 1~2)

  • Tháng 6 năm 2022, Hội nghị Khoa học Máy tính Tổng hợp Hàn Quốc (KCC2022) - Bài thuyết trình hướng dẫn [Chinh phục kernel Linux bằng ftrace]

  • LG Electronics giảng viên nội bộ về 'Linux Kernel' và 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong nước và nước ngoài) - (2020~2024)


Tôi có thể tự tin nói rằng tôi là một giáo육자 có thể giải thích các chức năng chính cấu thành nhân Linux tốt hơn bất kỳ ai khác trong nước.

Những lưu ý trước khi học

Kiến thức tiên quyết và lưu ý

  • Tốt nhất là bạn nên hiểu đại khái về cách thức hoạt động của Linux.

  • Bạn nên nghe trước khóa học 'Cấu trúc và Nguyên lý của Linux Kernel: Debugging - Basic [Tác giả trực tiếp giảng dạy Phần 1-2]' nếu có thể.

  • Nếu bạn có kiến thức về hệ điều hành hoặc kiến trúc máy tính thì sẽ có thể học bài một cách thoải mái hơn.

  • Không cần có kiến thức sâu về kernel Linux làm điều kiện tiên quyết.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển junior muốn nâng cao năng lực trong lĩnh vực phần mềm hệ thống bao gồm chíp bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment)

  • Sinh viên chuẩn bị việc làm muốn phát triển phần mềm hệ thống trong các lĩnh vực như bán dẫn hệ thống, xe điện

  • Sinh viên đại học có mục tiêu theo học cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tập tin, hệ điều hành)

  • Các nhà phát triển từ lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống

Cần biết trước khi bắt đầu?

  • Ngôn ngữ C

  • Kiến trúc máy tính

  • Hệ điều hành

Xin chào
Đây là

6,034

Học viên

204

Đánh giá

89

Trả lời

4.9

Xếp hạng

22

Các khóa học

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (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

Chương trình giảng dạy

Tất cả

68 bài giảng ∙ (8giờ 0phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

2 đánh giá

5.0

2 đánh giá

  • ioniakim2638님의 프로필 이미지
    ioniakim2638

    Đánh giá 9

    Đánh giá trung bình 4.9

    5

    100% đã tham gia

    • dlrbcnvk님의 프로필 이미지
      dlrbcnvk

      Đánh giá 19

      Đánh giá trung bình 4.9

      5

      60% đã tham gia

      925.842 ₫

      Khóa học khác của austinkim

      Hãy khám phá các khóa học khác của giảng viên!

      Khóa học tương tự

      Khám phá các khóa học khác trong cùng lĩnh vực!