operating-system
Currently the main interface for human users of computer. The definition can vary a lot, including a lot of different stuff.
A list of interesting OSes:
- Genode and any L4 based system. Especially seL4, because back in my university days I was a formal verification fanboy.
-
Singularity and Midori.
(Sadly, while Singularity had a publicly available distribution, Midori was never published in any form. There's a list of blog post about Midori by a previous project member though.) - Exokernel, whose spirit (at least part of the spirit) lives on as unikernel.
- The Oberon family.
- plan9: the next generation of UNIX. People say in UNIX everything is a file; they are wrong because UNIX socket exists. In Plan 9, everything do be a file, including sockets.
- Haiku: the heir of BeOS. Uses MIME types instead of extension names. POSIX-compliant.
Honorable mentions:
- RISC OS, originally done by the company which designed ARM (yes, that ARM).
- OpenIndiana: the heir of Solaris.
- OpenVMS, the OS that NT (i.e. modern Windows) has stolen a lot of design from. Originally run on VAX, Alpha and Itanium machines, recently been ported to x86-64. A perfect example of "you won't have a community if you don't open to the public".
- QNX: back in the 1990s they distributed a demo floppy (1.44 MBytes) which includes a full POSIX-compliant protected-mode microkernel OS with GUI, TCP/IP networking, web browser and web browser, which is very impressive. Alas, QNX never gained any large footholds within hobbyist communities, and pretty much nobody cared about QNX unless they work in the automobile industry. Another perfect example of "you won't have a community if you don't open to the public".
A few notes
- "You can't write OS in languages other than assembly or C." / "You can't write OS in [insert-language-here]."
- "You can't have multitasking in DOS."
-
A version of multitasking DOS is done by none other than the very Microsoft itself. Another line of multitasking DOS is done by Digital Research, the people who've created CP/M. One can insert a task scheduler as the handler for IBM PC's timer interrupt and achieve preemptive multitasking; this method is used in MINIX 1 and x86 version of xv6. An example of said insertion can be found here.