Cấu trúc và nguyên lý của nhân Linux: Phần sau của ngắt (Interrupt Bottom Half) [Tác giả trực tiếp giảng dạy phần 1-6]

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 chính xác các khái niệm cốt lõi về 'phần sau của ngắt' (interrupt bottom half) 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) 4 đánh giá

210 học viên

Độ khó Cơ bản

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

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

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

  • Khái niệm cơ bản và cơ chế hoạt động của nửa sau (bottom half) ngắt

  • Cách xử lý phần sau của ngắt (interrupt bottom half) dưới góc độ trình điều khiển thiết bị (device driver)

  • Cách xử lý phần sau của ngắt (interrupt bottom half) bằng tính năng threaded IRQ

  • Phương thức xử lý Softirq và Tasklet

<Thông báo>

1. Phát hành mã giảm giá 30% kỷ niệm cộ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á 30%. 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: Ngắt [Tác giả trực tiếp giảng dạy Phần 1-5]> là bài giảng nằm trong lộ trình'Linux kernel 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, ô tô, v.v.

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).

Cốt lõi 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ể xem nhân 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 nay.

Các nhà phát triển phần mềm hệ thống Linux, lập trình viên hệ thống nhúng Linux (BSP) hãy chú ý!

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ự lái, giải trí đa phương tiện)

Người đang chuẩn bị xin 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.

✅ Sinh viên 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 hướng 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 bán dẫn hệ thống và xe điện, đều biết rằng việc hiểu rõ nhân Linux là điều cần thiết để nâng cao năng lực phát triển. Tuy nhiên, họ đang rơi vào tình trạng khó có thể nắm bắt được cách học nhân Linux như thế nào và quan trọng hơn hết là cần phải hiểu 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ị (device driver) Linux: Phần sau của ngắt (Interrupt Bottom Half)

Khi bắt đầu với vai trò là 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ị (device driver) Linux, và một trong những yếu tố nhất định phải triển khai và tối ưu hóa trong quá trình này chính là ngắt (interrupt). Phần sau của ngắt (interrupt bottom half)nội dung nhất định phải biết cùng với ngắt. Có một vài lý do cho việc này;. To name a few reasons:

  • Hầu hết các trình xử lý ngắt (interrupt handler) đều được sử dụng cùng với các kỹ thuật hậu xử lý ngắt (interrupt bottom half).

  • Các vấn đề chính của thiết bị ngoại vi được điều khiển thông qua ngắt được xác nhận trong các routine liên quan đến phần sau của ngắt - cùng với trình xử lý ngắt.

Vì vậy, trong chương 6 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ề 'Kỹ thuật xử lý nửa sau của ngắt' như sau.

  • threaded IRQ (IRQ luồng)

  • Softirq

  • Tasklet

Nội dung được cấu trúc để độc giả có thể học về các kỹ thuật xử lý hậu kỳ ngắt (interrupt bottom half) thông qua các bài thực hành gỡ lỗi ftrace bằng nhiều phương pháp khác nhau.

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

Bài giảng 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 khác! Chúng ta sẽ cùng tìm hiểu về các cấu trúc dữ liệu liên quan đến kỹ thuật xử lý phần sau ngắt (interrupt bottom half) của Linux kernel, cũng như các cấu trúc dữ liệu đa dạng cấu thành nên Linux kernel (cấu trúc task_struct, thread_info) thông qua việc gỡ lỗi 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 chương trình dành cho giáo dục (TRACE32) để trực tiếp thực hành.

1. Cung cấp chương trình mô phỏng TRACE32 (dùng cho giáo dục) và bản dump nhân Linux

Trình gỡ lỗi TRACE32 và các chương trình liên quan được sử dụng rộng rãi trong toàn bộ quá trình phát triển phần mềm hệ thống Linux. Chương trình TRACE32 chỉ có thể chạy khi có bản quyền. Nếu tham gia khóa học này, bạn có thể tải xuống chương trình mô phỏng TRACE32 dành cho giáo dục từ 'Tài liệu bài giảng Inflearn' để trực tiếp sử dụng chương trình mô phỏng TRACE32 và gỡ lỗi bản sao lưu bộ nhớ (memory dump). Ngoài ra, bạn cũng có thể tải xuống và thực hành với 6 bản sao lưu bộ nhớ nhân (kernel memory dump) để gỡ lỗi các hoạt động khác nhau của kỹ thuật xử lý hậu kỳ ngắt (threaded IRQ, Softirq).

2. Giải thích các khái niệm cơ bản về kỹ thuật xử lý hậu kỳ ngắt (Interrupt Bottom Half) một cách dễ hiểu và chi tiết

Khi học nhân Linux, 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 kernel, bạn sẽ gặp phải rất nhiều trở ngại. Thậ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. Khóa học này sẽ tháo gỡ tất cả những trở ngại đó.

Phân tích mã nguồn Linux Kernel liên quan đến kỹ thuật Interrupt Bottom Half 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 Interrupt Bottom Half hiệu quả hơn nhiều so với việc tự học Linux Kernel 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ừ Memory Dump, bạn có thể nắm bắt chi tiết nguyên lý hoạt động của kỹ thuật Interrupt Bottom Half một cách đa chiều.

3. Giới thiệu các phương pháp gỡ lỗi mà 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 đang thực hiện

Gần đây, ngành công nghiệp bán dẫn hệ thống đang trỗi dậy mạnh mẽ. 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 thường gỡ lỗi (debug) trình điều khiển nhân Linux bằng phương pháp nào?

Nội dung này sẽ được đề cập trong bài giảng lần này. Chúng ta sẽ sử dụng trình mô phỏng TRACE32 để phân tích 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.

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

Giải thích toàn bộ luồng xử lý ngắt và lý do tại sao kỹ thuật xử lý phần sau ngắt (interrupt bottom half) lại cần thiết.

Giới thiệu phương thức threaded IRQ vốn được sử dụng rộng rãi như một kỹ thuật xử lý phần sau của ngắt (interrupt) và giải thích các chức năng cốt lõi của nó.

Giải thích bức tranh tổng thể về luồng thực thi của kỹ thuật threaded IRQ và giải thích chi tiết mã nguồn.

Giới thiệu các bản vá liên quan đến threaded IRQ và cách thiết lập ftrace. Giải thích chi tiết thông báo Ftrace cùng với luồng thực thi của kỹ thuật threaded IRQ.

Sử dụng chương trình TRACE32 và Crash Utility để phân tích chi tiết các cấu trúc dữ liệu liên quan đến phương thức threaded IRQ.

Giới thiệu về Softirq và giải thích lý do tại sao cần phải hiểu rõ về Softirq.

Giải thích chi tiết về các loại dịch vụ Softirq - cốt lõi của Softirq - và luồng thực thi theo từng bước.

Giải thích chi tiết về hoạt động yêu cầu và thực thi dịch vụ Softirq - thông qua phân tích luồng thực thi tổng thể và mã nguồn.

Giải thích về kernel thread ksoftirqd/[n], một daemon thực thi dịch vụ Softirq, và phân tích chi tiết về tasklet.

Giải thích về ftrace tracepoint liên quan đến Softirq và phân tích chi tiết các thông điệp ftrace.

Cung cấp chương trình TRACE32 (giả lập) dùng cho giáo dục và 6 bản dump bộ nhớ nhân Linux (Linux kernel memory dump)

Trong bài giảng lần này, chúng tôi sẽ giải thích về cấu trúc dữ liệu và call stack cấu thành nên kỹ thuật xử lý phần sau của ngắt (interrupt) trong khi gỡ lỗi bản sao bộ nhớ nhân Linux (Linux kernel memory dump), phương pháp gỡ lỗi tiên tiến (Advanced) nhất trong ngành phần mềm hệ thống Linux.

Cung cấp phương pháp gỡ lỗi nâng cao có thể gỡ lỗi 'bộ nhớ nhân Linux' bằng cách sử dụng các chương trình gỡ lỗi như TRACE32 và Crash utility.

✅ Bạn có thể tải chương trình TRACE32 dành cho giáo dục (phiên bản giả lập) từ chương trình giảng dạy. Học viên có thể sử dụng chương trình TRACE32 để tải bản kết xuất bộ nhớ hạt nhân (kernel memory dump) được cung cấp trong bài giảng này và thực hành gỡ lỗi cùng lúc.

✅ Bạn có thể trực tiếp tải xuống Crash Utility, một dự án mã nguồn mở, để tải bản sao lưu bộ nhớ nhân (kernel memory dump) và tiến hành gỡ lỗi. Bằng cách tận dụng các tính năng đa dạng mà Crash Utility hỗ trợ, bạn có thể trực tiếp gỡ lỗi cấu trúc dữ liệu của nhân hoặc call stack.

Dựa trên kinh nghiệm viết sách và giảng dạy,
tôi sẽ hướng dẫn 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ả 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 xuất sắ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, tôi 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, tôi cũng 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 Linux Kernel học qua Debugging' (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)

  • 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' (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)

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

  • 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 nước ngoài) - (2020~2024)


Tôi có thể tự tin nói rằng mình là một nhà giáo dục có khả năng giải thích các chức 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 khóa học bắt đầu

Lưu ý khi sử dụng chương trình TRACE32

  • Chương trình đào tạo TRACE32 chỉ có thể thực hành trong môi trường Windows.

  • Chương trình đào tạo TRACE32 chỉ có thể được sử dụng cho mục đích 'giáo dục' và không được sửa đổi hoặc phân phối cho mục đích thương mại.

  • Nếu có bất kỳ thắc mắc nào trong quá trình sử dụng chương trình đào tạo TRACE32 của bài giảng lần này, nhất định hãy đặt câu hỏi cho người hướng dẫn.

Môi trường thực hành và tài liệu bài giảng được cung cấp

  • Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1

  • Tài liệu hướng dẫn cài đặt và chương trình đào tạo TRACE32 (Bài giảng)

  • 6 bản sao lưu bộ nhớ nhân Linux (vmcore)

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

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

  • Tốt nhất 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 giảng phần 1-2]' trước khi bắt đầu.

  • 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.

  • Không cần kiến thức chuyên sâu về nhân Linux (Linux kernel).

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à lĩnh vực xe điện (tự hành, thông tin giải trí)

  • Người đang 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

  • Cấu trúc máy tính

  • Hệ điều hành

Xin chào
Đây là austinkim

6,319

Học viên

242

Đá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ả

85 bài giảng ∙ (10giờ 12phú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ả

4 đánh giá

5.0

4 đánh giá

  • dlrbcnvk님의 프로필 이미지
    dlrbcnvk

    Đánh giá 19

    Đánh giá trung bình 4.9

    5

    61% đã tham gia

    • heecheolsong님의 프로필 이미지
      heecheolsong

      Đánh giá 21

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • aceoftop1975님의 프로필 이미지
        aceoftop1975

        Đánh giá 121

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        2024/07/20/Thứ bảy 10:53 Tôi rất thích bài giảng. Trong khi nghe bài giảng, tôi đã học được rất nhiều điều về Linux. Nếu bạn giảng bài khác, tôi sẽ cố gắng lắng nghe cẩn thận. Cảm ơn

        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!

        1.161.676 ₫