Microkernels: Picture on Wikipedia (under "Hybrid Kernel") Remove lots of stuff from the kernel, avoid memory crashes Filesystem can't be corrupted by networking stack, etc. Minix vs. Linux debate, Tanenbaum comment Performance An example: The TCP implementation What's it do? Quick overview (CS435 already knows) Could it be in userspace? Sliding windows and such are on a per-process basis Next layer down: IPv4 A lot of stuff here is once per computer A layer below that: 802.3 or 802.11 Either way, we're into device drivers here Hybrid kernel: More in userspace than Linux and FreeBSD Less than a true microkernel Windows NT, XNU Linux doesn't believe in this category Portability OS design goal: Performance Portability Reliability/Security These are sort of at odd sometimes! Example: FreeBSD, NetBSD, OpenBSD Did Linux steal from Minix? Tanembaum: No, but he should have! Kenneth Brown book, debate Bootloader: The bootloader handles loading the OS x86 CPU starts as an 8086, "real mode" memory Bootloader sets up protected mode, loads OS kernel into memory Bootloader has to retrieve the kernel off the hard drive - It'll be in the boot sector, or a way to reach it Currently we use GRUB on Linux - GRand Unified Bootloader We used to us LILO - LInux LOader - It could load Windows too A bootloader can start another bootloader - You can make a roundabout Linux 0.11 has a pretty simple one Note for Raymond: Looks like Linux used Intel syntax bootsect.s, then setup.s, then head.s