I needed to add a custom System Request (Sys Req or SysRq) to a linux kernel some time ago. While doing so, I dug deep into how it works and I thought I’d make a quick post about it. Here is a good SuperUser answer about what a SysRq is. You may also know about SysRq via REISUB. This post has three parts: how to raise a SysRq, how SysRq works (looking into kernel code), and how to add your own SysRq.
https://lwn.net/Articles/296738/
Unix internals is a great book! If you haven’t had an occasion to read it, I can’t recommend it highly enough. Similar to design of the BSD operating system, it goes into the internal data structures, but most importantly the rationale
I actually don’t know nearly enough about OS design, and I’ve been toying with the idea of learning more for like 20 years now but never manage to get around to it. How’s that book hold up, considering it was (apparently?) published in '96? I’d assume a lot of the basics are still the same, and since it’s a book about the “evolution” of UNIX the historical parts will still be interesting in any case
The design of the BSD operating system is more narrative friendly, easier to read just for fun
Unix internals keeps getting updates, but is far more technically applied. And probably easier to become outdated.
From a philosophy perspective both books are great but if you could only read one I would recommend the BSD book. I know the Linux kernel and the BSD kernel have divergent development, but as far as posix structures are concerned they’re pretty similar