diff --git a/operating_system.md b/operating_system.md new file mode 100644 index 0000000..15c5efd --- /dev/null +++ b/operating_system.md @@ -0,0 +1,36 @@ +# Operating System + +Operating System (OS) is normally a hugely complex program that's typically installed before any other program and serves as a platform for running other programs as well as managing resources (CPU usage, [RAM](ram.md), [files](file.md), [network](network.md), ...) and offering services and interfaces for humans and programs. + +There is a nice [CC0](cc0.md) wiki for OS development at https://wiki.osdev.org/. + +From programmer's point of view a serious OS is one of the most difficult pieces of software one can pursue to develop. The task involves an enormous amount of [low-level](low_level.md) programming, development of own tools from scratch and requires deep and detailed knowledge of all components of a computer, of established standards as well as many theoretical subjects such as [compiler](compiler.md) design. + +An OS, as a software, consists of two main parts: + +- **[kernel](kernel.md)**: The base/core of the system, running in the most privileged mode, offering an environment for user applications. +- **[userland](userland.md) (applications)**: The set of programs running on top of the kernel. These run in lower-privileged mode and use the services offered by the kernel via so called [system calls](syscall.md). + +For example in GNU/Linux, [Linux](linux.md) is the kernel and [GNU](gnu.md) is the userland. + +## Attributes/Features + +TODO + +## Notable Operating Systems + +Below are some of the most notable OSes. + +- [Android](android.md) +- [BSD](bsd.md) systems such as [OpenBSD](openbsd.md) and [freeBSD](freebsd.md) +- [Collapse OS](collapseos.md) +- [DOS](dos.md), [FreeDOS](freedos.md) +- [GNU](gnu.md)/[Linux](linux.md) systems encompassing many [distributions](distro.md) +- [MacOS](macos.md) +- [Plan 9](plan9.md) +- [ReactOS](reactos.md) +- [Replicant](replicant.md) +- [Solaris](solaris.md) +- [TempleOS](templeos.md) +- [Unix](unix.md) +- [Windows](windows.md) \ No newline at end of file