Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Interrupts and Bottom Halves in Linux Kernel

Ngắt và Bottom Halves trong Linux Kernel

Ngắt và Bottom Halves trong Linux Kernel

Lập trình Linux Kernel - Ngắt và Bottom Halves

4.5
(129 đánh giá)
1,484 học viên
Giảng viên
Linux Trainer
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
5.0 giờ video
144 bài giảng
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 30/05/2026

Bạn sẽ học được gì

Ngắt và Bottom Halves

Yêu cầu

Có thể viết/biên dịch/nạp/gỡ Hello World Linux Kernel Modules

Đối tượng phù hợp

Dành cho nhà phát triển kernel muốn tìm hiểu về Ngắt và Bottom Halves

Nội dung khóa học

10 phần • 144 bài giảng
1 Giới thiệu
2 Ngoại lệ (Exceptions)
3 Bẫy (Traps) và Lỗi (Faults)
4 Cách debugger hoạt động
5 Phương pháp kích hoạt ngắt
6 Che ngắt (Masking)
7 Chân ngắt X86
8 Bộ điều khiển ngắt lập trình được (PIC)
9 Ánh xạ ngắt thiết bị
10 Yêu cầu ngắt lập trình được (IRQ)
11 APIC
12 CPUID
13 Điều gì xảy ra khi có ngắt
14 Phần cứng tìm trình xử lý ngắt như thế nào
1 Xử lý ngắt trong Linux kernel
2 Thống kê ngắt trong Linux Kernel
3 Giám sát ngắt bằng lệnh watch
4 Ngắt PCI
5 Yêu cầu trình xử lý ngắt
6 Driver Linux cho ngắt bàn phím
7 Driver Linux ghi log từng ký tự được gõ
8 Driver Linux cho ngắt ethernet
9 Driver Linux cho ngắt chuột
10 Driver keylogger
11 Thêm hỗ trợ sysfs cho driver keylogger
1 Giá trị trả về của trình xử lý ngắt
2 Cờ ngắt (Interrupt Flags)
3 Driver Linux đăng ký tất cả IRQ
4 Các cờ ngắt khác
5 IRQF_NOBALANCING
6 SMP IRQ Affinity
7 Điều gì xảy ra khi truyền NULL làm đối số cuối trong trường hợp ngắt chia sẻ
8 In IRQ và định danh thiết bị trong trình xử lý ngắt
1 Bật & Tắt ngắt
2 Tại sao cần tắt ngắt
3 Ví dụ module kernel Linux tắt và bật ngắt trên tiến trình hiện tại
4 Lưu trạng thái ngắt trước khi tắt
5 Tắt một dòng ngắt cụ thể
6 disable_irq_nosync
7 Điều gì xảy ra khi gọi disable_irq hai lần và enable_irq một lần
8 Điều gì xảy ra khi tắt dòng ngắt chia sẻ
9 Kiểm tra xem ngắt trên bộ xử lý cục bộ có bị tắt không
10 Ngữ cảnh ngắt (Interrupt Context)
11 Macro kiểm tra xem có đang trong ngữ cảnh ngắt không
12 Sử dụng in_interrupt để cấp phát bộ nhớ
13 Thêm độ trễ trong trình xử lý ngắt
14 In call trace trong trình xử lý ngắt
15 Có thể sử dụng macro current trong trình xử lý ngắt không
16 Điều gì xảy ra khi gọi sleep trong trình xử lý ngắt
1 Giới thiệu
2 Ví dụ về Top và bottom halves
3 Threaded IRQs
4 Ví dụ về Threaded IRQs
5 Ví dụ module kernel in ngữ cảnh trong threaded IRQs
6 IRQF_ONESHOT
7 In call trace trong threaded IRQs
8 In PID và tên tiến trình trong threaded IRQs
9 Ngắt có được bật trong threaded IRQs không
1 Giới thiệu
2 Thống kê softirqs
3 Phương thức Softirqs
4 Tạo một softirq mới
5 Ví dụ driver kernel Linux sử dụng softirq
6 Kiểm tra ngữ cảnh của trình xử lý softirq
7 Kiểm tra xem ngắt có được bật hay tắt trong trình xử lý softirq
8 Giá trị của current trong trình xử lý softirq
9 In call trace trong trình xử lý softirq
10 Kiểm tra ID bộ xử lý trong trình xử lý ngắt và softirq
11 Thêm độ trễ trong trình xử lý softirq
12 Kiểm tra xem softirq đang chạy trong ngữ cảnh hard hay soft irq
13 Điểm quan trọng liên quan đến softirq
14 ksoftirqd
15 Ví dụ về ksoftirqd
16 Kiểm tra các softirq đang chờ
17 Khi nào các softirq chờ được thực thi
18 Macro kiểm tra xem có đang chạy trong softirq không
19 Tắt và bật softirqs
20 Ngắt có được bật khi gọi spinlock không
21 Khóa giữa ngữ cảnh người dùng và softirqs
1 Giới thiệu
2 Trường state và count của tasklet
3 Tasklet API
4 Ví dụ sử dụng tasklet
5 Lập lịch tasklets
6 Ví dụ lập lịch tasklets - khởi tạo tĩnh
7 Ví dụ lập lịch tasklets - khởi tạo động
8 Các bước thực hiện bởi tasklet_schedule
9 Các bước thực hiện bởi trình xử lý softirq của tasklet
10 Kernel tránh chạy cùng tasklet trên nhiều bộ xử lý như thế nào
11 Có thể sleep trong trình xử lý tasklet không
12 Ngắt có được bật khi tasklet chạy không
13 Kiểm tra ngữ cảnh của trình xử lý tasklet
14 In PID và tên tiến trình trong trình xử lý tasklet
15 In call trace trong trình xử lý tasklet
16 Kiểm tra xem tasklet đang chạy trong ngữ cảnh hard hay soft irq
17 In bitmask của các softirq đang chờ
18 Điều gì xảy ra khi gọi tasklet_schedule hai lần
19 Kiểm tra ID bộ xử lý trong trình xử lý tasklet và IRQ
20 Softirq vs tasklet - cái nào thực thi trước
21 Bật và tắt tasklets
22 tasklet_kill
23 tasklet_hi_schedule
24 Tắt tasklets bằng local_bh_disable
25 Tasklets vs softirqs
1 Giới thiệu
2 Cách xác định worker pool đích
3 Workqueues APIs
4 API để xếp hàng công việc
5 API tạo workqueue
6 Điều gì xảy ra khi xếp cùng công việc hai lần
7 Ví dụ về queue_work_on
8 Lập lịch công việc
9 Truyền dữ liệu riêng tư vào hàm công việc
10 In PID và tên tiến trình trong hàm công việc
11 Kiểm tra ngữ cảnh của hàm công việc
12 Ngắt có được bật khi hàm công việc thực thi không
13 Hủy công việc
14 Thêm độ trễ trong hàm công việc
15 Lập lịch hai công việc
16 Flush công việc
17 Công việc trễ (Delayed work)
18 Ví dụ về công việc trễ
19 Flush công việc trễ
20 Hủy công việc trễ
21 Softirqs vs Tasklets vs Workqueues
1 kworker
2 API workqueues chuyên dụng
3 Cờ Workqueue WQ_UNBOUND
4 Xếp hai workitems trong workqueue với max active flags = 1
5 Xếp hai workitems trong workqueue với max active flags = 2
6 Cờ Workqueue WQ_HIGHPRI
7 Xếp hai công việc trong workqueue WQ_HIGHPRI
8 Ví dụ về hai workqueues
9 Ví dụ về queue_delayed_work
10 to_delayed_work
11 Thực hiện tác vụ định kỳ bằng workqueue
12 Cờ WQ_SYSFS
13 cpumask
14 Các cờ Workqueue khác
15 Flush workqueue
16 Tìm số lượng workqueues unbound
17 alloc_ordered_workqueue
18 Điều gì xảy ra khi gọi queue_work
1 Tải xuống

Giới thiệu khóa học

This course provides a comprehensive look at how the Linux kernel handles interrupts and exceptions. You will learn about the different types of interrupts, such as Level Triggered and Edge Triggered, as well as Traps and Faults. The curriculum covers the hardware components responsible for interrupt management, including the Programmable Interrupt Controller and the Advanced Programmable Interrupt Controller (APIC). You will also learn how to use the CPUID instruction to find information about your x86 CPU.

The course will guide you through the complete interrupt handling process, from the initial Interrupt Request to how the CPU uses the Interrupt Descriptor Table (IDT) to locate the correct handler. You will also explore practical topics like interrupt sharing and IRQ Affinity in the Linux kernel. The course includes hands-on experience, such as writing a Linux driver for devices and creating a simple keylogger to log typed characters. You will also learn about enabling and disabling interrupts and why you should avoid adding sleep or delays in an interrupt handler.

A significant portion of the course is dedicated to the concept of Top and Bottom Halves, which are used for deferred work. You will learn the distinctions between softirqs, tasklets, and workqueues and when to use each for optimal performance. The course also teaches you how to use various files in the /proc filesystem and commands like watch and dmesg to analyze interrupt behavior and debug issues, providing a practical foundation for working with kernel-level programming.

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Device Drivers
Hiển thị tất cả khoá học Linux Kernel
Hiển thị tất cả khoá học Operating Systems
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊