# Linux Basics/Types of Operating Systems
## What is an operating system?

An Operating System (OS) is software that manages computer hardware and other software.
It's commonly portrayed as the bridge between hardware and software. For a more detailed definition see Operating system

## What operating systems can be

Different operating systems look, function, and are used differently. For example:
* The interface can be graphical (GUI) or command-line (CLI)
* It could be used as a server, desktop, internet route, appliance, etc.
* It could support just a single-user, or multiple-users (Also known as multi-user)
* It could support running just a single task at a time, or multiple tasks (multi-tasking).
Let's look at these different options in more detail:
* Command-Line (CLI): Text based user interface
** Present in almost every OS
** Allows for flexible command input and automation (executing scripts)
** Fast
*** Fast Computationally - Excels on computationally constrained hardware or when every bit of performance is needed.
*** Many tasks are faster when performed through a CLI compared to a GUI.
* Graphical User Interface (GUI): Icon, Widget, and Audio-based user interface
** More Intuitive for many
*** Generally more approachable for new users, less instruction is required to train a user to use a well designed GUI.
*** Literacy is not necessarily required to use a GUI, an important consideration in some educational environments.
** Some operations are faster than in a CLI without a prior script being made.
*** Automation is still possible, though often requires a third party program.
*** Almost always more computationally expensive than a CLI in terms of computer resources.
* Single task: 1 task/ program can be run at a time
* Multi task: Multiple programs can be run at a time
** Preemptive: the OS can take resources
** Cooperative: it only works if every resource is available
* Single-user: Only one user can be handled at a time.
** Some single user operating systems allow for different user profiles, but lack the ability to run programs from multiple accounts at once.
* Multi-user: Multiple user accounts can be created and used simultaneously.
** Multiple users can use the system simultaneously. This can be through a user locking their session to allow another user to log in on a traditional desktop while their applications continue to run in the background, or have two users literally logged in and operating at the same time in the case of a multiheaded system.
** Filesystem must support the convention of user separation (so FAT16 and FAT32 are excluded, but EXT2,3,4; NTFS and modern FS's support it).
** A long time ago this was not the case, so users could exploit others on the computer. Nowadays it's near impossible to get access to other users' directories.

## Types of OSes by Capabilities
### DOS

MS-DOS, and Windows based on it (from 1.01 to ME):
* CLI , with GUI as a bolt on add on with Windows
** Vanilla MS-DOS is a pure CLI.
** Early versions of Windows were simply graphical environments added on to MS-DOS, or later integrated with it. These versions included a program called MS-DOS Prompt to create CLI shells.
* Single-user. Some versions allowed multiple user accounts, but were unable to allow them to be logged in simultaneously.
* MS-DOS cost money back in the day, and is typically no longer sold in stores.
** MS-DOS software is sometimes compatible with other DOS operating systems, some of which are still developed to this day.
* Security issues, general obsolescence, and a lack of network focus make MS-DOS a terrible server or even networked operating system. MS-DOS can still work fine on offline machines.

### Windows NT

Windows NT (Windows NT 3.x – 11):
* GUI with de-emphasized CLI.
** Most tasks in Windows are performed using the GUI.
** CLI environments such as the basic Run and Command Prompt applications are typically included.
** More recent versions of Windows offer the more advanced and capable Power Shell application.
* Multi-user (here the user folders are encrypted, so you can't get access to others' folders without proper permission)
* You typically have to pay for it, or be eligible for special promotions or offers.
* There are server and desktop versions. There are further sub versions which target different market segments.

### Unix and Compatibles

Linux:
* CLI with optional GUI.
** Some Distros are CLI only, especially those intended to be used on servers or embedded devices.
** Most desktop distributions use a GUI by default with a de-emphasized CLI. Others try to strike a balance between the two.
* Multi-user, so multiple user can be on the network, the folders can be encrypted, permissions can be set, widely customizable (both program- and interface-wise).
* It's free as in freedom, and often free as in beer so you don't typically have to pay for it.
** Most distributions are free.
** For some enterprise distributions, such as Red Hat Enterprise Linux, you pay to get it directly from the company that makes it, and to get support.
* There are server and desktop oriented distributions.
UNIX:
* The BSD family includes a number of open source operating systems, as well as closed source operating systems.
* There are a number of proprietary UNIX operating systems, such as Solaris (A direct UNIX descendent) and MacOS (Related to BSD).
Other: There are a few other UNIX-like operating systems you may read about while studying Linux
* GNU Operating System - Many coreutils for Linux originated here.
* MINIX - Important influence in the history of Linux, and still used in some applications.