inflearn logo

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

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

(5.0) 2 đánh giá

79 học viên

Độ khó Nhập môn

Thời gian Không giới hạn

Linux
Linux
Operating System
Operating System
ARM Architecture
ARM Architecture
linux-kernel
linux-kernel
armv8
armv8
Linux
Linux
Operating System
Operating System
ARM Architecture
ARM Architecture
linux-kernel
linux-kernel
armv8
armv8

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

  • Các khái niệm cơ bản và cơ chế hoạt động cấu thành nên Work Queue

  • Cách xử lý của Workqueue từ góc độ trình điều khiển thiết bị (device driver)

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

  • Gỡ lỗi workqueue bằng cách dump bộ nhớ TRACE32

<Thông báo>

1. Phát hành mã giảm giá 40% nhân dịp đạt mốc 500 học viên🙏

Để kỷ niệm cột mốc hơn 500 học viên tham gia khóa học nhân Linux, chúng tôi xin phát hành mã giảm giá 40%. Xin cảm ơn các bạn. Số lượng có hạn cho 100 người đầu tiên.

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

Bài giảng lần này <Cấu trúc và nguyên lý của Linux Kernel: Workqueue [Tác giả trực giảng phần 1-7]> là bài giảng nằm trong lộ trình'Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'.

Nếu bạn là nhà 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 hay ô tô,

Nhân Linux nhất định phải biết

Hệ điều hành nào được sử dụng phổ biến nhất trên tất cả các thiết bị IT? Đó chính là hệ điều hành Linux. Nó đang đượ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 (trình điều khiển thiết bị Linux) để điều khiển phần cứng do chính họ thiết kế. Ngoài ra, Linux cũng đang được ứng dụng rộng rãi trong các linh kiện khác nhau (hệ thống thông tin giải trí, lái xe tự động, viễn thông) cấu thành nên xe điện (Automotive).

Trọng tâm của hệ điều hành Linux chính là nhân Linux (Linux kernel). Cùng với kiến trúc Armv8-A, có thể coi nhân Linux là nội dung đòi hỏi những 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 nay.

Nhà phát triển trẻ (Junior Developer) trong lĩnh vực phần mềm hệ thống Linux, bao gồm các lĩnh vực bán dẫn hệ thống và xe điện (tự hành, giải trí đa phương tiện)

Sinh viên mới tốt nghiệp hoặc người đang tìm việc 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 và xe điện.

✅ Những người có nguyện vọng 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, hệ điều hành) in the field of Linux system software (memory, file systems, operating systems)

✅ Các nhà phát triển từ các lĩnh vực khác đang muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux to the Linux system software field

Tuy nhiên, nhân Linux giống như một bức tường 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 chắc hẳn đã từng có trải nghiệm bỏ cuộc nhiều lần khi đang học về nhân Linux. Phiên bản nhân Linux vốn đã khó nay lại càng trở nên phức tạp hơn khi được nâng cấp. Sau năm 2024, phiên bản nhân Linux đang được nâng cấp lên v6.6 trở lên, khiến rào cản gia nhập ngày càng cao hơn.

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

Cốt lõi của các cốt lõi trong phát triển trình điều khiển thiết bị Linux: Workqueue

Khi mới bắt đầu trở thành nhà phát triển phần mềm hệ thống Linux, hầu hết mọi người đều phát triển trình điều khiển thiết bị (device driver) Linux. Trong quá trình này, tính năng nhất định phải biết chính là Workqueue. Có một vài lý do cho việc này;

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

  • Nhiều tính năng của trình điều khiển thiết bị (device driver) được triển khai bằng cách sử dụng các API do workqueue cung cấp.

Ngoài ra, nhiều tính năng cấu thành nên nhân Linux cũng hoạt động bằng cách sử dụng các 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' do tôi viết, tôi sẽ giải thích về 'Workqueue' như sau.

Bài giảng lần này được thiết kế để độc giả có thể học về workqueue thông qua nhiều phương pháp thực hành gỡ lỗi khác nhau (phân tích memory dump TRACE32, phân tích ftrace).

Điểm khác biệt của bài giảng

Khóa học lần này bao gồm những nội dung chưa từng được đề cập trên YouTube hay bất kỳ nền tảng bài giảng nào trước đây! Chúng ta sẽ thực hiện gỡ lỗi 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 bộ nhớ dump của Linux Kernel. Những người tham gia khóa học này có thể tải xuống 3 bản dump bộ nhớ để trực tiếp thực hành.

1. Cung cấp bản dump nhân Linux để gỡ lỗi Workqueue (3 bản)

Khi tham gia khóa học này, bạn có thể tải 3 bản memory dump từ 'Tài liệu bài giảng Inflearn' để trực tiếp thực hành debug bằng chương trình mô phỏng TRACE32. Trong đó, 2 bản memory dump được lấy từ Raspberry Pi dựa trên Armv8-A và 1 bản được lấy từ VisionFive2 dựa trên RISC-V. Bạn có thể trực tiếp debug và làm quen với các hoạt động đa dạng của kỹ thuật Workqueue (Work item queuing, Work item execution, Worker pool, Global workqueue).

*Tham khảo, bạn có thể tải chương trình mô phỏng TRACE32 từ các bài giảng về Linux Kernel hiện có sau đây:

  • Cấu trúc và nguyên lý của Linux Kernel: Debugging - Thực hành nâng cao [Tác giả trực giảng phần 1-3]

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

  • Cấu trúc và nguyên lý của Linux Kernel: Ngắt (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: Phần 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 về nhân Linux (Linux kernel), chúng ta thường phân tích mã nguồn của nó. Tuy nhiên, trong quá trình phân tích mã nguồn, bạn sẽ gặp phải rất nhiều trở ngại. Rất khó để xác định hàm đó được gọi theo luồng nào, hay cấu trúc dữ liệu của routine đang phân tích thực tế có giá trị ra sao. Bài giảng này sẽ tháo gỡ tất cả những trở ngại đó.

Phân tích mã nguồn nhân Linux liên quan đến workqueue cùng với ngăn xếp lệnh (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 nhân Linux một mình. Ngoài ra, bằng cách phân tích cả các thông điệp ftrace được trích xuất từ bản sao lưu bộ nhớ (memory dump), bạn có thể nắm bắt chi tiết nguyên lý hoạt động của workqueue một cách đa chiều.

3. Giải thích về Workqueue theo quan điểm của Driver thiết bị và quan điểm của Kernel Linux

Những người lần đầu học về Workqueue thường nói rằng nó rất khó. Đó là bởi vì hầu hết các cuốn sách hoặc blog giải thích về Workqueue không dành cho người mới bắt đầu, mà dành cho những nhà phát triển đã am hiểu nhất định về Linux Kernel. Bài giảng lần này sẽ giải thích về Workqueue theo 2 góc độ dưới đây để những người mới bắt đầu có thể hiểu rõ về nó:

  • Góc nhìn trình điều khiển thiết bị (Device Driver): Giải thích dựa trên đơn vị công việc (Work Item)

  • Góc độ nhân kernel 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 bài giảng này, bạn có thể bắt đầu phát triển trình điều khiển thiết bị (device driver) ngay lập tức, đồng thời có thể tìm hiểu sâu hơn về cách thức hoạt động của kỹ thuật workqueue.

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

Gần đây, ngành công nghiệp bán dẫn hệ thống đang trở nên nổi bật. Các nhà phát triển hệ thống nhân Linux tại các công ty bán dẫn hệ thống toàn cầu sẽ debug trình điều khiển nhân Linux theo cách nào?

Trong bài giảng lần này, chúng ta sẽ đề cập đến nội dung sau: Sử dụng trình mô phỏng TRACE32 để gỡ lỗi các cấu trúc dữ liệu của nhân (kernel) liên quan đến tiến trình từ bản sao lưu bộ nhớ (memory dump) của nhân Linux, đồng thời tải bản sao lưu bộ nhớ bằng crash-utility để phân tích các hoạt động chính của nhân.

5. Giải thích cả những nội dung không có trong sách

Giải thích về Workqueue Watchdog (CONFIG_WQ_WATCHDOG), một tính năng đượ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 trực tiếp kích hoạt Workqueue Watchdog (CONFIG_WQ_WATCHDOG) trên Raspberry Pi

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

Khóa học bao gồm cả những nội dung hữu ích có thể áp dụng ngay vào thực tế.

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

Đầu tiên, tôi sẽ giải thích các chức năng cốt lõi và lộ trình hình thành nên workqueue. Tiếp theo, tôi sẽ giải thích chi tiết cách để học tốt về workqueue.

Giải thích bức tranh toàn cảnh về các cấu trúc dữ liệu cấu thành nên workqueue. Giải thích chi tiết về cấu trúc của global workqueue, worker pool và work item.

Giải thích cách thức sử dụng work (work item) dưới góc độ của trình điều khiển thiết bị (device driver).

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

Giải thích chi tiết quá trình xếp hàng (queuing) của work item thông qua việc phân tích mã nguồn 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 (queuing) thông qua việc debug bản sao lưu bộ nhớ (memory dump) bằng TRACE32.

Giới thiệu về 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 nơi worker thread được tạo ra và giải thích cả call stack (backtrace) của quá trình này.

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

Giải thích cách thức hoạt động của các work item được thực thi thông qua worker thread bằng cách sử dụng gỡ lỗi TRACE32. (3 bản memory dump)

Giải thích chi tiết về ftrace dùng để truy vết (tracing) workqueue, đồng thời phân tích mã nguồn kernel liên quan cùng với các thông điệp ftrace.

Giải thích một cách dễ hiểu về delayed workqueue, một thành phần được sử dụng rộng rãi trong driver thiết bị.

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

Giải thích về Workqueue Watchdog, một nội dung không được đề cập trong sách nhưng được sử dụng nhiều trong các dự án thực tế. Hướng dẫn cách bật CONFIG_WQ_WATCHDOG và phân tích mã nguồn hạt nhân 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 báo ftrace.


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


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)

tác giả duy nhất và chưa từng có tiền lệ trong lĩnh vực phần mềm hệ thống tại Hàn Quốc đã 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 Quốc gia Hàn Quốc), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách "Reverse Engineering Armv8-A Systems" (tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Ngoài ra, ông còn là một nhà giáo dục hoạt động 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.

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

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của Linux Kernel học qua Debugging' (Năm 2021, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc)

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của kiến trúc Arm dành 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 Quốc gia Hàn Quốc)

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

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

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


Tôi có thể tự tin khẳng định rằng mình là một nhà đào tạo có khả năng giải thích các tính năng chính cấu thành nên nhân Linux tốt hơn bất kỳ ai khác tại Hàn Quốc.

Lưu ý trước khi học

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

  • Sẽ rất tốt nếu bạn biết sơ qua về cách thức hoạt động của Linux.

  • Tốt nhất là bạn nên nghe bài giảng '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]' trước nếu có thể.

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

  • Bạn không cần phải có kiến thức chuyên sâu về nhân Linux (Linux kernel) từ trước.

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 trẻ mong muốn nâng cao năng lực trong lĩnh vực phần mềm hệ thống, bao gồm bán dẫn hệ thống và xe điện (tự lái, thông tin giải trí).

  • Người tìm việc 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 và xe điện.

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

  • Các nhà phát triển từ các lĩnh vực khác đang muốn chuyển hướng 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à austinkim

6,316

Học viên

241

Đánh giá

96

Trả lời

4.9

Xếp hạng

22

Các khóa học

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)

Là tác giả vô tiền khoáng hậu trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, người đã viết các cuốn sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả hai cuốn sách đều được Viện Hàn lâm Khoa học Quốc gia Hàn Quốc bình chọn là Sách ưu tú), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách tiếng Anh "Reverse Engineering Armv8-A Systems" thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Ngoài ra, ông còn là một nhà giáo dục hoạt động 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.

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

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

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2021))

  • Giảng viên chính của 'Programmers Dev Course: Chuyên gia Hệ thống Linux và Kernel'

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

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

Tôi có thể tự tin khẳng định rằng mình là một giảng viên có khả năng giải thích về Linux Kernel và kiến trúc Arm (Armv8-A, Armv7-A) tốt hơn bất kỳ ai khác tại Hàn Quốc.

Liên hệ giảng dạy: austindh.kim@gmail.com

Lộ trình chính 🎯

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'

Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản

Thêm

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

Tất cả

68 bài giảng ∙ (8giờ 2phú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

      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!

      922.857 ₫