OSD Home

Blank Phantom's Questions For an OS Designer http://phantom.urbis.net.il/bphantom/OS_Design_Qs.html

### Why write an OS

- Research: high reliability, high performance, real-time, distributed computing, object-oriented, highly portable OS, replacement/competitor for commercial OS, new architecture (e.g. exokernel, SASOS), other.
- Learn about: multitasking, memory protection, writing a standard C library (libc), device drivers, filesystems, applications, other.
- Available operating systems are unsatisfactory.
- Create an OS that tries to teach OS design.
- Fame and glory; world domination :)

### Design decisions

- Portable OS or use x86-only features: 4 privilege rings (versus 2 on most machines), segment-based address translation and memory protection (versus paging), task-switching using TSSes (versus stack-swapping).
- Kernel architecture: monolithic kernel, microkernel, exokernel, SASOS, other.
- Multitasking: none, cooperative, preemptive.
- Threads: none, scheduled preemptively by kernel or cooperatively by application, same address space as parent task, separate address space with shared memory, or entirely separate address space.
- Multiprocessing: uniprocessor, tightly-coupled multiprocessing (e.g. Symmetric MultiProcessing, SMP), loosely-coupled multiprocessing (distributed computing, like Beowulf clusters or Amoeba)
- Multiuser (multitasking + security)
- Host OS for development: DOS, MS-Windows, Linux, Be, other.
- Language used to implement OS: C, C++, assembly language, Ada, homebrew, other.
- Executable file format. A related decision: support dynamic linking or not? (The ELF and PE formats simplify dynamic linking.)
- Libraries for high-level languages: GNU glibc, Cygnus Newlib, homebrew, other.
- Backward compatability: same syscalls as other OSes? Same library functions? Compatability layer? Microkernel 'personalities'?
- Code 'em or modem? Write your own code or use source from other projects? Is the other code easy to understand? Does it do what you want? Can you stomach the licensing?

## REPORT BUGS OR ERRORS IN THIS DOCUMENT