Chúng tôi không thể tìm thấy kết nối internet
Đang cố gắng kết nối lại
Có lỗi xảy ra!
Hãy kiên nhẫn trong khi chúng tôi khắc phục sự cố
Tín hiệu Linux. Tôi đã mất 2 năm để hiểu phần này.
Tóm tắt nội dung
Mô tả
A quick introduction to one of the interprocess communication mechanisms in linux.
Demonstration purpose only, don't use in the real code:
- signal handler in Linux has a bit different semantics
- while executing signal handler code, another signal might come. don't use printf and other reentrant-unsafe functions inside signal handlers
- implement global variables concurrency more careful
00:00 Main idea. We want to execute a function when external signal arrives
00:50 While loop. We can't simply jump to the signal handler!
01:24 Interrupts. Breaking a natural instruction flow
02:30 Saving registers. Kernel preserves user register values
03:09 How pc is saved
04:03 The most important idea! Replacing the pc
04:40 Big Picture overview.
05:55 To the Source code!
07:16 Kernel entry. Disassembling my kernel binary
12:04 Replacing the program counter
12:35 Return to user.
13:28 Signal handler is finished. How to resume the main code?
14:14 How the stack works when enter the kernel
16:26 We need to keep main code's original registers!
16:49 Kernel stack has to be empty. Overflow. Nested signals
17:30 Saving original regs to user stack
18:48 Kernel trampoline. Sigreturn
20:45 Bonus! (about the compiler bug video)
Dịch Vào Lúc: 2025-07-11T14:28:01Z