— 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 Application Programming Interface
(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 Binary Bits and Bytes
, 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 ROM
libraries with disk I/O functions, something that was especially true on the Apple ][
and the IBM Personal Computer
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 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
- 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.
Notable operating systems
- OSes with their own pages
- 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 Mac OS.