My list:
- What an operating system’s concerns are: Abstraction and extension of the physical machine and resource management.
- How the build process works ie, how architecture specific/machine code stuff is implanted
- How system calls work and how modules can link up
- Memory management / Virtual Memory / Paging and all the rest
- How processes are born, live and die in POSIX and other systems
- userspace vs kernel threads and what the difference is between process/threads
- Why the monolithic Kernel design is growing tiresome and what are the alternatives
- Scheduling (and some of the alternative / domain specific schedulers)
- I/O, Driver development and how they are dynamically loaded
- The early stages of booting and what the kernel does to setup the environment
- Problems with clocks, mmu-less systems etc
- … I could go on …
- I almost forgot IPC and Unix ‘eveything is a file’ design decisions
- POSIX, why it exists, why it shouldn’t
In the end just get them to go through tanenbaum’s modern operating systems and also do case studies on some other kernels like Mach/Hurd’s microkernel setup and maybe some distributed and exokernel stuff.
Give a broad view past Linux too, I recon
For those who are super geeky, the history of operating systems and why they are the way they are.