The role of the operating system
The operating system underpins the entire operation of the
modern computer.
The fundamental operation of the operating system (OS) is
to abstract the hardware to the programmer and user. The
operating system provides generic interfaces to services
provided by the underlying hardware.
In a world without operating systems, every programmer
would need to know the most intimate details of the underlying
hardware to get anything to run. Worse still, their programs
would not run on other hardware, even if that hardware has only
slight differences.
We expect modern computers to do many different things at
once, and we need some way to arbitrate between all the
different programs running on the system. It is the operating
systems job to allow this to happen seamlessly.
The operating system is responsible for resource
management within the system. Many tasks will be
competing for the resources of the system as it runs, including
processor time, memory, disk and user input. The job of the
operating system is to arbitrate these resources to the multiple
tasks and allow them access in an orderly fashion. You have
probably experienced when this fails as it
usually ends up with your computer crashing (the famous "blue
screen of death" for example).
Programmers want to write programs that will run on as
many different hardware platforms as possible. By having
operating system support for standardised interfaces,
programmers can get this functionality.
For example, if the function to open a file on one system
is open()
, on another is
open_file()
and on yet another
openf()
programmers will have
the dual problem of having to remember what each system does and
their programs will not work on multiple systems.
The Portable Operating System Interface (POSIX) is
a very important standard implemented by UNIX type operating systems.
Microsoft Windows has similar proprietary standards.
On multi-user systems, security is very important. As the
arbitrator of access to the system the operating system is
responsible for ensuring that only those with the correct
permissions can access resources.
For example if a file is owned by one user, another user
should not be allowed to open and read it. However there also
need to be mechanisms to share that file safely between the
users should they want it.
Operating systems are large and complex programs, and
often security issues will be found. Often a virus or worm will
take advantage of these bugs to access resources it should not
be allowed to, such as your files or network connection; to
fight them you must install patches or
updates provided by your operating system vendor.
As the operating system provides so many services to the
computer, its performance is critical. Many parts of the
operating system run extremely frequently, so even an overhead
of just a few processor cycles can add up to a big decrease in
overall system performance.
The operating system needs to exploit the features of the
underlying hardware to make sure it is getting the best possible
performance for the operations, and consequently systems
programmers need to understand the intimate details of the
architecture they are building for.
In many cases the systems programmers job is about
deciding on policies for the system. Often the case that the
side effects of making one part of the operating system run
faster will make another part run slower or less efficiently.
Systems programmers need to understand all these trade offs when
they are building their operating system.