Silviu Posted September 15, 2014 Report Posted September 15, 2014 What is MINIX 3?MINIX 3 is a free open-source operating system that can be used for studying operating systems, as a base for research projects, or for commercial (embedded) systems where microkernel systems dominate the market. Much of the focus on the project is on achieving high reliability through fault tolerance and self-healing techniques.MINIX is based on a small (about 12K lines of code) microkernel that runs in kernel mode. The rest of the operating system runs as a collection of server processes, each one protected by the hardware MMU. These processes include the virtual file system, one or more actual file systems, the memory manager, the process manager, the reincarnation server, and the device drivers, each one running as a separate user-mode process.One consequence of this design is that failures of the system due to bugs or attacks are isolated. For example, a failure or takeover of the audio driver due to a bug or exploit can lead to strange sounds but cannot lead to a full takeover of the operating system. Similarly, crashes of a system component can in many cases be automatically and transparently recovered without human intervention. Few, if any, other operating systems are as self-healing as MINIX 3.Here are some of the more interesting features of MINIX 3.General CharacteristicsPOSIX-compliant operating system with a NetBSD userlandOpen source, with a BSD licenseRuns on x86 PCs and well as x86 virtual machines (VMware, etc.)Runs on ARM Cortex A8 (e.g., BeagleBoard XM, Beaglebones)Networking with TCP/IPVirtual memoryVirtual file systemUnified block cache shared by virtual memory and file systemsDynamic linkingSmall footprint (kernel is 600 kB; full OS is 25 MB)MINIX-specific FeaturesTiny microkernel that runs in kernel modeMost of the operating system runs in user-mode protected processesEach device driver is a separate user-mode processReincarnation server can reload failed driversReliability FeaturesReduced kernel sizeBugs are cagedDrivers' memory access is limitedBad pointer references are not always fatalInfinite loops are not always fatalBuffer overruns are not always fatalAccess to kernel function calls is restrictedAccess to I/O ports is restrictedCommunication with OS components is restrictedDead or sick drivers can be reincarnatedInterrupts and messages are integratedClick here for more detailsLanguages and CompilersLanguages: C, C++, clisp, mawk, Perl, Python, tcl, etc.Compilers: gcc and clang/LLVMNative compilation (self hosting) on x86Cross compilation for x86 and ARMPackagesShells (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 packagesSursa: Minix3 Quote