Linux Signals. I Spent 2 Years to Understand This Part.

Author: kimylamp
Published At: 2024-04-11T00:00:00
Length: 21:24

Summary

Description

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)

Translated At: 2025-07-11T14:28:01Z

Request translate (One translation is about 5 minutes)

Version 3 (stable)

Optimized for a single speaker. Suitable for knowledge sharing or teaching videos.

Recommended Videos