Here are some of the more interesting features of MINIX 3. ===== General Characteristics ===== * POSIX-compliant operating system with a NetBSD userland * Open source, with a BSD license * Runs on x86 PCs and well as x86 virtual machines (VMware, etc.) * Runs on ARM Cortex A8 (e.g., BeagleBoard XM, Beaglebones) * Networking with TCP/IP * Virtual memory * Virtual file system * Unified block cache shared by virtual memory and file systems * Dynamic linking * Small memory footprint (kernel is 600 kB; full OS is 25 MB) ===== MINIX-specific Features ===== * Tiny microkernel that runs in kernel mode * Most of the operating system runs in user-mode protected processes * Each device driver is a separate user-mode process * Reincarnation server can reload failed drivers ===== Reliability Features ===== * Reduced kernel size * Bugs are caged * Drivers' memory access is limited * Bad pointer references are not always fatal * Infinite loops are not always fatal * Buffer overruns are not always fatal * Access to kernel function calls is restricted * Access to I/O ports is restricted * Communication with OS components is restricted * Dead or sick drivers can be reincarnated * Interrupts and messages are integrated * [[.:reliability|Click here]] for more details ===== Languages and Compilers ===== * Languages: C, C++, clisp, mawk, Perl, Python, tcl, etc. * Compilers: gcc and clang/LLVM * Native compilation (self hosting) on x86 * Cross compilation for x86 and ARM ===== Packages ===== * Shells (e.g., bash, mksh, mudsh, pdksh, zsh) * Editors (e.g., elvis, joe, jove, pico, uemacs, vim) * Games (e.g., crafty, exchess, ioquake) * Mail (e.g., fetchmail, getmail, mutt, thunderbird) * Over 4000 other NetBSD packages