# A-level Computing/AQA/Paper 2/Fundamentals of computer systems/System software

We should know by now that system software is software that helps a computer to run. We will now look at the different types of system software out there and why each is needed:

## Operating system software

An operating system (OS) is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system. Without an operating system, a user cannot run an application program on their computer (unless the application program is self booting).
Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting for cost allocation of processor time, mass storage, printing, and other resources.
For hardware functions such as input/output and main memory management, the operating system acts as a middleman between application programs and the computer hardware, although the application code is usually executed directly by the hardware it will frequently call the OS or be interrupted by it. Operating systems can be found on almost any device that contains a computer, from mobile phones and video game consoles to supercomputers and web servers.
Examples of popular modern operating systems include Android, iOS, Linux, Mac OS X and Microsoft Windows, but don't use these names in the exam!
* Extension: Open vs Closed Source operating systems
* You might hear the words Open Source when you read about operating systems. Linux is the most well known Open Source OS and Windows is the most well known Closed Source OS. So what does this mean?
* Open Source programs are programs where you can see the code (the source), you can edit it, copy it and use as you wish within the confines of an open source license. You can even sell it, but the person would be welcome to acquire the code for free if they wanted. As a result of this Linux is not developed by one person or one company but uses code developed by thousands of people, working for different organisations all over the world. And as a result there are many different versions (known as distributions) of Linux out there including Ubuntu, Slackware and Fedora. Android is built using Linux code.
* Closed Source software doesn't allow people to look at the code or adapt it. Companies normally sell closed source products and you'll have to pay for a copy of Windows. Currently about 83% of desktops run the Windows OS.

## Utility programs

Utility software is a type of system software which has a very specific task to perform related to the working of the computer, for example anti virus software, disk defragment etc.
Utility software should not be confused with application software, which allows users to do things like creating text documents, playing games, listening to music or surfing the web. Rather than providing these kinds of user-oriented or output-oriented functionality, utility software usually focuses on how the computer infrastructure (including the computer hardware, operating system, application software and data storage) operates. Due to this focus, utilities are often rather technical and targeted at people with an advanced level of computer knowledge.
Examples of utility software include:
* Virus scanner - to protect your system from trojans and viruses
* Disk defragmenter - to speed up your hard disk
* System monitor - to look at your current system resources
* File managers - to add, delete, rename and move files and folders

## Library programs

Library programs are collections of compiled routines which are shared by multiple programs, such as the printing function.
Library programs contain code and data that provide services to other programs such as interface (look and feel), printing, network code and even the graphic engines of computer games. If you have ever wondered why all Microsoft Office programs have the same look and feel, that is because they are using the same graphical user interface libraries. For computer games a developer might not have the time and budget to write a new graphics engine so they often buy graphical libraries to speed up development, this will allow them to quickly develop a good looking game that runs on the desired hardware. For example Battlefield 3 and Need for Speed both use the same Frostbite engine.
Most programming languages have a standard set of libraries that can be used, offering code to handle input/output, graphics and specialist maths functions. You can also create your own custom libraries and when you start to write lots of programs with similar functionality you'll find them very useful. Below is an example of how you might import libraries into VB.NET:

## Translator software

The final type of system software that you need to know is translator software. This is software that allows new programs to be written and run on computers, by converting source code into machine code. There are three types that we'll cover in a lot more detail shortly
* Assembler - converts assembly code into machine code
* Interpreter - converts 3rd generation languages such as javascript into machine code one line at a time
* Compiler - converts 3rd generation languages such as C++ into machine code all at once
* Exercise: System software
* Give the 4 system software types
* Answer:
* Operating system
* Utility programs
* Library programs
* Translator software
* Explain two functions of an operating system:
* Answer:
* Memory management
* Provides interface between applications and hardware
* Printing
* Processor time allocation
* Give a benefit of using library programs:
* Answer:
* You can use code made by other people without having to write it yourself
* You can use the same code again and again without having to re-write it
* Give two examples of utility programs:
* Answer:
* Virus scanner
* Disk defragmenter
* File manager
* What is system software for?
* Answer:
* System software performs tasks to analyse and help with the smooth running of a computer system
* What is utility software for?
* Answer:
* Utility software is a kind of system software designed to help analyze, configure, optimize and maintain the computer
* What is the purpose of translator software, give two examples
* Answer:
* to convert program source code into machine code that can be executed on the processor
* Assembler
* Compiler
* Interpreter