Introduction to Operating Systems

From COMP15212 Wiki
Depends on About

First refer to the description of this site.

What is an Operating System?

We all think we know, but in practice it is quite difficult to define. In a single sentence one could say an operating system is the abstraction layer between user software and the physical computer hardware.

Overview

The objectives here are to provide a simplified, regular interface to resources such as data files (regardless of where or how they are stored) and to isolate the application from anything else which the computer might be doing … except when you want to interact with others, in which case the operating system facilitates this in a safe and secure manner.

Underneath all of this, the operating system manages the available resources in an attempt to give the best user service. Resources include such things as:

  • Processing time
  • Memory
  • Files
  • Input and Output (IO) devices

Doing this involves a number of techniques. Many of these are not unique to operating systems, having uses in many branches of computing; however they are often introduced under the general ‘operating systems’ heading as this can provide some good examples. For example, managing the sharing of resources – in a secure manner – is generally important but it is an operating system which ensures your print-out is not muddled with someone else’s sent at the same time to the same printer.

As well as organising the sharing of the resources, the operating system provides security by keeping them apart – except where they specifically need to cooperate when it helps them communicate. This means, for example, multiple users can share one computer but any silly or malicious behaviour by one cannot damage the others.

What is in an operating system?

It is remarkably difficult to define where the boundary of an operating system is! Some features should obviously be included: in other cases there are valid arguments that something should or should not be included.

Example: a printer driver. ‘Obviously’ a printer is a shared I/O device and therefore the interface software ought to be part of the operating system. It’s very handy that this interprets PDF files correctly. Recognising graphics formats is nice too. Yet these useful (and ever increasing) later demands are not really fundamental to the system operation and interact very little with the computer hardware. Operating system?

In this course unit we have tended to take a broad view and include topics which a user might perceive as being an operating system function although we exclude details such as what a PDF interpreter is doing internally. Thus, for example, when reading a file we sometimes include the library which the language is using to ‘wrap’ the operating system kernel interface.

Example: in Java System.out is a route to the operating system although the Java environment needs to translate this interface into the form for the specific operating system underneath.

General subject areas

This course unit will cover four broad areas which are core operating systems topics:

Affecting various of these headings will be issues such as:

There is a rapid-fire, historical-perspective, overview of operating systems’ features on this video (14 mins).

What are different kinds of operating system structure?

  • Monolithic: By far the most common organization, in the monolithic approach the entire operating system runs as a single program in kernel mode.
  • Layered Systems: Layers selected so each only uses functions, operations & services of lower layers. Lower layers (“kernel”) contain most fundamental functions to manage resources.
  • Microkernels: Keep only minimal functionality in the OS


Articles on User
"Everything is a File" • Application Binary Interface (ABI) • Arrays • Boot • Buffer Overflow • Containers • Daemons • Disk Partition • Dynamic Memory Allocation • Emulator traps • Environment Variables • Errors • Exceptions • File Attributes • File Locking • File Permissions • Introduction to Operating Systems • Journalling File System • Links • Locks • Man(ual pages in Unix) • Memory Mapped Files • Monitoring • Network File System (NFS) • PATH • Pipes • Pointers • Relocatable Code • Reset • SETUID • Shell • Sockets • Spooling and Buffering • Streams • Structures • Superuser • System Calls • Unix Signals • User • Using Peripherals