An Operating System is the layer between the hardware and software, as in
An Operating System is responsible for the following functions:
Device management using device drivers
Process management using processes and threads
Inter-process communication
Memory management
File systems
Networking
In addition, all operating systems come with a set of standard utilities. The utilities allow common tasks to be performed such as
being able to start and stop processes
being able to organise the set of available applications
organise files into sets such as directories
view files and sets of files
edit files
rename, copy, delete files
communicate between processes
The kernel of an operating system is the part responsible for all other operations
When a computer boots up, it goes through some initialisation functions, such as checking memory.
It then loads the kernel and switches control to it
The kernel then starts up all the processes needed to communicate with the user and the rest of the environment (e.g. the LAN)
The kernel is always loaded into memory, and kernel functions always run, handling processes, memory, files and devices.
The traditional structure of a kernel is a layered system,
In this, all layers are part of the kernel, and each layer can talk to only a few other layers.
Application programs and utilities live above the kernel.
Many Operating Systems use instead a micro kernel, which minimises the size of the kernel.
Many traditional services are made into user level services.
Communication between services is often by an explicit message passing mechanism.
Unix was first built in 1969 by Dennis Ritchie and Ken Thompson at Bell Labs...
...so they could play Moonlander on a PDP-7 (with 4k of space for user programs!)
They invented C in 1973 so they didn't have to do so much in Assembler
Unix expanded through the universities and John Lions of UNSW brought it to Australia in 1974
John also documented the source code in a book which went underground when Bell closed off source code licenses
The University of California at Berkeley formed the first major fork of BSD Unix, which was used by Sun for the first commercially successful graphics workstations
See http://upload.wikimedia.org/wikipedia/commons/1/11/Unix-history.svg for a "simple" chart
A detailed chart is at http://www.levenez.com/unix/
Xenix was Microsoft's version of Unix intended for use on microcomputers;
Microsoft purchased a license for Version 7 Unix from AT&T in 1979, and announced on August 25, 1980 that it would make it available for the 16-bit microcomputer market
In 1987 Microsoft transferred ownership of Xenix to SCO
After AT&T closed off access to Unix source code teachers of Operating Systems lost the (legal) right to access the code
Andrew Tanenbaum in 1987 created Minix with source code availability to run on 80286
His book was the standard O/S internals text book for many years
It had a small but non-zero licensing fee ($69)
Started in 1991 by Linus Torvalds, a student at the University of Helsinki
Initially conceived as a 386 version of Minix, borrowed heavily from Minix in early days (e.g. the first file system was from Minix)
Uses the GLP v2 license which ensures it stays open
While Minix used a micro-kernel approach, Linux is a monolithic system - Tanenbaum said this made Linux obsolete right from the start
I started using Linux in 1993, on kernel 0.96 - the Slackware distro with 30 floppy disks
The goal of the Free Software Foundation was to produce a free and open O/S as the GNU operating system
"free" to the FSF is very restrictive: it forces users of this license to open up copies of their source code to everyone to use (e.g. Sony TV sets)
The FSF only completed its kernel (Hurd), but they completed significant tools early on: gcc and almost all the Unix utilities
Since Linux is reliant on all these tools, and "just completes" the kernel gap, there is much pressure to call it GNU/Linux
Linus controls releases of the "kernel" (the heart of the O/S)
Current releases by Linux are in the 3.6 series (February, 2013)
There are other branches maintained by others (e.g. Andrew Morton) which may eventually find their way into the Linus kernel
Anyone can develop their own device drivers, file systems etc into experimental branches
Vendors make their own versions of the kernel plus additional software and package them
Fedora Core - popular spinoff from Redhat
Redhat - for enterprises
Centos - Redhat derivative
Debian - emphasises free/open software, so it doesn't include MP3 support, for example
Ubuntu - built on Debian for ease of use
Linux Mint - forked from Ubuntu after it adopted the Unity interface
Knoppix - first distro to feature live CD
Damn Small Linux - for embedded or old systems
Suse - now owned by Novell, bridges between Windows and Linux with special deals with M/S
SME - for small to medium enterprises
There are a bunch of Linux distros targetted at netbooks: Ubuntu remix, Moblin, gOS, Google Android, ...
There are special-purpose distros for use on small/embedded systems (Damn Small Linux), home entertainment (MythTV), phones and tablets (Android), networking, etc
See Linux Distro Watch for a list of distros
See http://www.livecdlist.com/ for a list of distros with live CDs
Major desktop managers are
Gnome - most popular in version 3 at present. after a controversial upgrade from version 2, default on Fedora and several other distros
KDE - now stable in v4
Unity - developed for Ubuntu, still controversial
BusyBox - for small distros
LXDE - gaining popularity over Gnome 3 and Unity
XFCE - a small, fast gui good for older computers
These can be used in conjunction with different desktop managers
Mutter - default window manager for Gnome 3
Kwin - default window manager for KDE
Compiz - fancy effects manager e.g. wobbly windows
Small managers - icewm, fvwm, twm, ...
By mid-80's Unix was a mess: too many incompatable versions
POSIX (Portable Operating System Interface) was designed to standardise Unix
It has 17 standards documents
The key document is POSIX.1 which standardises the major C API calls: Process Creation and Control, Signals, Floating Point Exceptions, Segmentation Violations, Illegal Instructions, Bus Errors, Timers, File and Directory Operations, Pipes
Compliant systems include BSD, Solaris, Minix and versions of Linux that conform to the Linux Standards Base
By 2001 Linux distros were a mess: too many versions doing things in different ways, with incompatable files in different places, etc
The LSB has been released since 2001 to cover different parts of a Linux system
The Core document is 526 pages covering file formats, boot process, libraries, utilities, execution environment, users and groups and packages
Other documents include C++, X Windows and the GTK and Qt libraries used for many GUIs
According to http://gocertify.com/faq/linuxfaq.shtml#FAQ1 "There are a growing number of well-established Linux certification programs. The majority of available Linux certifications focus on the system administration role, but there are also a few developer-focused options. Some require more advanced expertise while others certify basic skills. Given how important system security is these days, it should come as no surprise that there are also several Linux security-focused designations available. Currently there are no end-user certification programs for Linux."
"The top four programs (in alphabetical order) are run by CompTIA (Computing Technology Industry Association), LPI (Linux Professional Institute), Novell Corporation, and Red Hat, Inc."
Latest version published April 2009 - being revised for 2015
The objectives of LPIC-1 are
Work at the Linux command line
Perform easy maintenance tasks: help out users, add users to a larger system, backup & restore, shutdown & reboot
Install and configure a workstation (including X) and connect it to a LAN, or a stand-alone PC via modem to the Internet.
The objectives of LPIC-2 are
Administer a small to medium-sized site
Plan, implement, maintain, keep consistent, secure, and troubleshoot a small mixed (MS, Linux) network, including a: LAN server (samba) Internet Gateway (firewall, proxy, mail, news) Internet Server (webserver, FTP server)
Supervise assistants
Advise management on automation and purchases
The LPI site is http://lpi.org/eng
Has two exams, LX0-101 and LX0-102
Based on LPI LPIC-1
Use the LPI syllabus as the base
Add in useful pieces not in LPI
Ignore legacy parts of the LPI (e.g. floppy disk boot)
Lots of hands-on work
Melbourne Linux User group at http://luv.asn.au/ meets monthly
Linux SIG in Melbourne PC User group at http://groups.melbpc.org.au/#al meets monthly
The Linux Professional Institute which administers the LPI exams is at http://lpi.org/
The Linux Documentation Project at http://tldp.org/ has HOWTOs on many topics
There are many operating systems, but they all share common functions
Linux grew out of Minix which grew out of Unix which grew out of Multics...
There are many distros of Linux for different purposes
There are several Linux certification programs and this course will follow LPI