System software is a type of computer program that is designed to run a computer's hardware and application programs. If we think of the computer system as a layered model, the system software is the interface between the hardware and user applications. The operating system is the best-known example of system software. The OS manages all the other programs in a computer.
System software is used to manage the computer itself. It runs in the background, maintaining the computer's basic functions so users can run higher-level application software to perform certain tasks. Essentially, system software provides a platform for application software to be run on top of.
Important features of system software
Computer manufacturers usually develop the system software as an integral part of the computer. The primary responsibility of this software is to create an interface between the computer hardware they manufacture and the end user.
System software generally includes the following features:
- High speed. System software must be as efficient as possible to provide an effective platform for higher-level software in the computer system.
- Hard to manipulate. It often requires the use of a programming language, which is more difficult to use than a more intuitive user interface (UI).
- Written in a low-level computer language. System software must be written in a computer language the central processing unit (CPU) and other computer hardware can read.
- Close to the system. It connects directly to the hardware that enables the computer to run.
- Versatile. System software must communicate with both the specialized hardware it runs on and the higher-level application software that is usually hardware-agnostic and often has no direct connection to the hardware it runs on. System software also must support other programs that depend on it as they evolve and change.
Types of system software
System software manages the computer's basic functions, including the disk operating system, file management utility software and operating systems.
Other examples of system software include the following:
- The BIOS (basic input/output system) gets the computer system started after it's turned on and manages the data flow between the OS and attached devices, such as the hard drive, video adapter, keyboard, mouse and printer.
- The boot program loads the OS into the computer's main memory or random access memory (RAM).
- An assembler takes basic computer instructions and converts them into a pattern of bits that the computer's processor can use to perform its basic operations.
- A device driver controls a particular type of device that is attached to your computer, such as a keyboard or mouse. The driver program converts the more general I/O instructions of the OS to messages that the device type can understand.
Additionally, system software can also include system utilities, such as the disk defragmenter and System Restore, and development tools, such as compilers and debuggers.
The computer's OS is a well-known example of system software. Widely used operating systems include Microsoft Windows, macOS and Linux. Unlike other system software types, the average computer user regularly interacts with the computer OS through its graphical UI (GUI) and, with some operating systems, a less complex command-line interface (CLI).
Because a GUI is a program that sits on top of the OS, it may be referred to as application software, not system software. In other words, the GUI is application software that makes it possible for the user to manipulate parts of the OS.
Important tasks performed by the operating system
The main responsibility of the operating system is to manage a computer's software and hardware resources. It is the computer's main control program. The OS controls and maintains a record of all other programs on the computer, including both application and system software. The OS creates an environment that all other computer programs run within and provides service to those other applications.
Operating systems perform tasks. Five of the most important ones are the following:
- File management and process scheduling. The OS allocates resources and prioritizes which programs should receive the resources and in what order. For example, a digital audio workstation application may require a certain level of processing power when being used. The OS decides how much power the application gets from the CPU and manages the effects of that allocation on other applications. If a more critical process is happening elsewhere on the computer, the OS might sacrifice some of the power the digital audio workstation has requested, for example, to ensure the other process can be completed.
- Processor and memory management. The OS allocates the computer's memory to a process when needed and deallocates it when the process is finished.
- Error detection. The OS detects, tracks and debugs errors in the computer's other programs.
- Security. The OS uses passwords to protect the computer's programs and data from unauthorized access.
- Control and management. The OS uses compilers, assemblers and interpreters to control and manage other programs on the computer. These language processers are pieces of system software that translate the high-level languages -- Java, Python and C++ -- that many computer programs are written in into low-level machine code instructions, which is essentially a series of 1s and 0s that the computer's CPU can read.
Difference between system software and application software
System software and application programs are the two main types of computer software. Unlike system software, application software -- often just called an application or app -- performs a particular function for the end user. Some examples of application software include the following:
- web browsers
- email clients
- word processors
Application software and system software are coded differently. System software is written in system programming languages -- such as Executive Systems Problem Oriented Language (ESPOL) -- designed to provide easy access to the underlying computer hardware. Application programs are written in general-purpose languages, such as Pascal, that enable the program to use the same code on different platforms. Some languages, such as C, are used for both system and application software.
System software and application software are also triggered differently. System software is generally triggered when a computer or device is turned on, and it remains on until the device is powered down. Application software is triggered by an end user after the computer is turned on. Application software needs system software to function, whereas system software can run independently of application software.
In most cases, end users do not interact with system software because it runs in the background. By contrast, end users do interact with application software -- installing it, booting it up, using it to perform certain tasks, booting it down and uninstalling it.