3 ms·
Yeah, osdev is mostly useful for finding out about nitty gritty details (especially for x86). The Minix book explains details of Minix 3 (file system, memory m
by johndoe0815 2y ago
Yeah, osdev is mostly useful for finding out about nitty gritty details (especially for x86).
The Minix book explains details of Minix 3 (file system, memory management etc.) and gives a listing of the Minix kernel, but does not really explain how to write a system from scratch.
Comer's Xinu book is much better suited for this, it uses sort of a literate programming approach mixing code pieces and the related descriptions. However, Comer's books are rather old by now and the most modern architecture covered is MIPS.
If you want to start from the ground up, i.e. setting up a (cross-)compiler toolchain, building a kernel that boots with your bootloader of choice, starting with "Hello world" and then proceeding to syscalls, interrupt handling, cooperative and preemptive multitasking, virtual memory, etc., then Stephen Marz' blog is a better resource.
You could also check out the lecture slides for my operating systems engineering course if you're interested. In this (master level) course, we build a small preemptive multitasking OS with virtual memory for RISC-V from scratch in C: https://multicores.org/ose/ https://multicores.org/ose/
- stonethrowaway 2y agoI’ll check these out and I also appreciate you putting your slides online. I definitely don’t mind RISC stuff, my embedded knowledge is somewhere between ARM and z80 offshoots. I started looking at Minix 3 book (I bought it and forgot I bought it many years ago, it seems) and am reading the source nodding and noodling along. Got caught up reading the interrupt controller data sheet. I remember seeing university courses using Minix as a foundation for building more things on top of it or replacing the default implementation of a piece with something else. Not sure if I can find any of those curriculums and assignments! I’ll have to play around with it. Im not looking for cutting edge data structures, just the general ensemble of putting together a kernel, various management pieces, and some sort of shell.