--> The box said that I needed to have Windows 98 or better... [[TakeThat so I installed Linux]].
--> -- Anonymous about Linux

Before a computer can do much, it'll need some software to provide basic system services. This is basically what an operating system (or OS for short) does; it manages devices and memory, keeps applications from stepping on each other's toes, and provides an UsefulNotes/ApplicationProgrammingInterface (sometimes many [=APIs=]) for applications to use.

In the early days of computing (and even now, on special applications like microcontrollers), computers didn't have [=OSes=]; you programmed them directly in BinaryBitsAndBytes, and on some ''really'' old machines (including ENIAC, the first practical electronic computer, and IBM's old card-counting machines), you didn't have program memory at all -- you ''had to rewire them'' on a device not unlike an old-time telephone switchboard. Starting in the early 1960s (but not immediately showing up everywhere), the advent of ''time sharing'' (what we'd now just call ''multitasking'') led to huge advances in what computers were capable of, and the first modern [=OSes=] date from this era. Later, when microcomputers became common, they had much smaller operating systems of their own, such as CP/M, Apple DOS, [=ProDOS=] and MS-DOS; since microcomputers didn't have special hardware to manage and protect memory, most of the time a microcomputer OS simply wrapped the machine's [[ReadOnlyMemory ROM]] libraries with disk I/O functions, something that was especially true on the UsefulNotes/AppleII and the IBMPersonalComputer.

As [=PCs=] got cheaper and more powerful, full operating systems started being written for them, with richer [=APIs=], actual memory protection and "demand paging" (which allowed applications to use "virtual" memory that actually lived in a file on disk). Pretty much all PC [=OSes=] now include this as a matter of course.


Most operating systems [[https://en.wikipedia.org/wiki/Kernel_%28computing%29 kernels]] (the core of the operating system) are done in one of three ways:
* Monolithic: All device drivers and services are run in kernel mode. The Linux kernel is an example. In this, a bad driver could crash the system.
* Microkernel: Only the kernel and the very basic of drivers run in kernel mode. MINIX is an example. In this, a bad device driver can't crash the system. [[note]]In fact, MINIX claims this as a reliability feature. If a driver goes bad, it just restarts it without the user knowing[[/note]]
* Hybrid: Parts of the system are either run in kernel mode, or user mode. Windows and Mac OS X are hybrid kernel examples.

!! Some Important Concepts and Features
* Access to resources - The OS grants programs access to use hardware on the system.
* Multitasking and Scheduling - All programs need to run on the CPU. It's up to the operating system to decide who gets to use it and for how long.
* Memory protection - Programs should not be allowed to access another program's memory/data sets unless they really need to. Usually operating systems implement a signal that programs to can send and receive to do an action.
* Security - Programs should behave and only access hardware resources if they truly need them. The OS maintains safeguards to ensure programs don't access something they don't need. In addition, operating systems with user accounts also restrict who has access to files and folders and who doesn't.

%%
%% To keep this list concise, keep it to operating systems that had a relatively large impact in the computer industry - Xenol
%%
!!Notable operating systems

* [=OSes=] with their own pages
** UsefulNotes/{{UNIX}} (includes Linux and its variants)
** UsefulNotes/MacOS
** MicrosoftWindows
* Disk Operating System (DOS): A DOS based system provides basic memory and hardware management services. They can only launch one program at a time and lack multitasking features. Microsoft used their MS-DOS as a foundation for Windows until Me Note that while a characteristic of a DOS based system is the command line interface, not all command line interface based systems are DOS based. UNIX for example is primarily command line driven, but it supports multiple programs and users.
* [=AmigaOS=]: The OS that shipped with the Commodore Amiga and later. It offered graphical, windowed, pre-emptive mutltiasking before its competitors and had such a powerful media-based API that it was the go-to OS for multimedia computers from the late 80s to early 90s.
* [=NeXTSTEP=]: Developed by the [=NeXT=] Corporation in 1989, which was founded by Steve Jobs after he resigned from Apple. Based off UNIX and BSD, its goals was to be as programmer friendly as possible, offering an array of powerful interfaces. Systems using [=NeXTSTEP=] created the first world wide web server, among other things. It was later released as the open source [=OpenSTEP=] and became the basis of [=Mac OSX=].
* [=BeOS=]: An OS that started development in the early 90s by Be Inc. for use on the [=BeBox=]. Noted for being developed from the ground up with multimedia in mind and received praise for being very responsive, even when the system was completely taxed. It never really took off, since it was facing against the deeply entrenched Windows and UsefulNotes/MacOS.

!!See also

* UsefulNotes/ApplicationProgrammingInterface
* [[https://en.wikipedia.org/wiki/List_of_operating_systems A list of OSes on the other wiki]]
----