Each Operating system has its own set of system services that made programs which used such system services to difficult to port another system, POSIX, the pos stands for portable Operating system. POSIX is not an Operating system but is a standard for Operating system designers.
The POSIX interface is available on almost all Operating system, such as UNIX, WINDOWS NT, OS/2 and open VMS.
The POSIX programming interface is simple system services are descried fully in the manuals supplied with each Operating system.
All of the system services are defined as C functions that mean that they return a value, this value is not just discarded.
System programming is different from application programming, where it can be seen if the program worked correctly, when system services is called, there is no visible indication of whether the operation was successful or not.
The C library does very little work to call applications and it puts the parameters on stack and executes the CPU to kernel mode. When the CPU is set to kernel mode, the C function transfers control to the appropriate place in the Operating System. This executes the chosen service running in kernel mode.
A GUI is good enough for anything you would want to do with the computer operating systems. Most computer users, even some computer professionals, will rarely need any more than the facilities provided by the user interface.
There is a minimum knowledge of how an operating system does what it does that is required by anyone who is going to be very involved in computer systems. This is how we distinguish a professional from someone who does not use a computer often.
Operating systems are tunable, they have a large number of parameters that can affect performance. The performance can be improved by adjusting values to suit the special circumstances of a particular site.
This requires some knowledge of what an operating system is doing.
Programmers will one day find themselves faced with a problem, which the particular language they are using cannot solve.
Operating systems is one of the largest pieces of software that have be written. It is an excellent exercise to analyse the structure of an operating system, it can identify the kind of problem designers are faced with and to see what options are available to solve these problems.
The historical development of operating systems began in the late 1940s, where in that time there was only hardware and no operating system. Programs and data had to be entered in binary using switches on the front of the machine. Each switch represented one bit. Programmers no longer interacted directly with computers as the 1950s saw the introduction of specialist operators who tended the machines and fed the programs to them, which then delivered back the output.
Programmers no longer interacted directly with the computers and instead used punch machines to encode their programs as a series of holes on hard cards, which the computer could read and interpret.
By the 1960s loading punched cards became a problem as they began to start and stop devices, which slowed things down.
So then instead of giving verbal commands to the human operator, programmers punched instructions on control cards, which were then inserted in the appropriate places before and after the program cards and the data cards.
The development of command interfaces was the created, this program read, interpreted and executed the command cards, these command interpreters we know today in the form of the Unix or DOS.
Eventually operating systems came to the rescue and made memory look much larger than it really was. This virtual memory allowed larger programs to run at no extra cost, the only problem was it slowed machines down. Operating systems had been developed specifically for particular hardware platforms like MS-DOS for PC or VMS for the VAX but now there are generic operating systems like Linux, which will run on any hardware.
The most important distinction that has risen historically is between batch and interactive systems.
Batch systems were the earliest systems developed, the program, the data and the commands to manipulate the program and data are submitted simultaneously with a running program, this system is adequate.
Interactive systems are the most common mode today, using keyboard mouse and screen. Some systems provide interactive computing on a single-user and multi-use basis.
Network operating systems are a common practice today to share resources like printers and databases across a network. It handles the underlying processes required for such sharing.
Distributed systems are the most recent development in operating systems, meeting the requirements of the multi-user system in a new way. This system consists of a group of machines acting together as one.
Specialist systems have been developed and each with its very own particular application area, like real-time operating system would be used in situations such as chemical plants or life support systems.
An operating system is a very large piece of software. To design, build and maintain large software system need a high level view of how it is structured and how different components work together.
It can be decomposed into modules that would provide the following functions:
- Process management
- Memory management
- I/O management
- File storage, which uses I/O and adds protection and security
- Network management