These are some of the great textbooks to teach #UNIX #OS to #CS undies:
• V6, Lions
• SVR2, Bach
• MINIX3, Tanenbaum
• Xinu, Comer
• xv6 (V6 clone), Cox
But there is a space to create an even smaller, sleeker, simpler, study OS:
• Barebones 32-bit OS that runs on a cheap Cortex-M3 board (STM32 Blue Pill) or RISC-V board (ESP32-C6)
• Keep the code under 10k lines of C (or Ada, Rust, Zig, ...)
• Support only UNIX-like soft-realtime scheduling (no RTOS)
• Support user and kernel modes
• Multiplex the single-core CPU to multiple processes
• Map a handful of interrupts to signals
• Provide a subset of the POSIX API, just enough to run a simple I/O executable (button pushy/LED blinky) in multiple processes, simultaneously
• Single-user (root only) operation
• No security, accounting, etc.
• Shell on a terminal emulator, via a USB-TTL adapter
The goal is to create a smallest, simplest, bona fide OS for the cheapest ($0.99) hardware, so as to steer kids away from Scratch, MicroPython, Processing, and similar other harmful influences, during the early phase of their system #programming education.
To make explicit the implicit premise above, the marvellous Arduino teaches the kids to do the easy thing repeatedly, but a comparative-joke C64 forces the kids to do the right thing persistently.
It is infeasible to teach, in detail, the essentials of an OS (scheduling algorithms, process management, memory management, memory protection, authentication, authorisation, encryption, disc I/O, network I/O, graphics I/O, ...) in just one semester.
In contrast, the kids could master the above mentioned focused curriculum in just one semester, thereby gaining much confidence in system #programming.