I took some time to review how they work and their purpose. I would say so far this is mostly useful to understand the performance issues and bottlenecks. For instance knowing about the topic gives the command htop a whole new dimension, it is finally possible to understand the options and most of the KPIs in the window.
The concept of system calls, of modes and context switching would also help again for either debugging or low level programming or reverse engineering. I remember doing quite a lot of C during my engineering degree but because we never took the time to go through operating systems functions like scanf and printf would remain a black box… but not anymore.
On the topic of C one of the most frustrating or complex topic was memory management, and the course I followed took a lot of time to explain RAM and the concept of byte addressable system, as well as paging, demand paging, schedulers, process control blocks, segregation and critical section concepts. If I had had the patience back then I would have scored so much better marks at C if I had studied Operating systems.
The multithreaded topic was something new for me, it finally answered my questions on why I did not see many Apache processes on my web server when I had a bunch of visitors, it is an elegant way of saving RAM.
Commands in Linux that now make a lot more sense are: nice, lsof, strace, cpulimit for instance. Overall, I see these OS concepts interesting and necessary for managing Kubernetes, SLURM or any type of distributed application, as well as low level programming and hacking of course.
The resource I used was Vignesh Sekar’s course on Udemy, Operating Systems part 1,2,3 and 4.