4.6.1.1–4.6.1.3 - Hardware, software and system tools
A useful computer needs physical components and instructions that make them work together. Learn how applications depend on system software, and why an operating system, utilities, libraries and translators have different jobs.
Hardware and software work together
A processor can carry out instructions, but the physical processor does not decide by itself whether the user wants a calculation, a video or a game.
Hardware and software
Hardware is the physical components of a computer system. Software is the programs or instructions that a computer executes to perform tasks.
A keyboard, processor, RAM chip and solid-state drive are hardware. A spreadsheet, operating system and printer driver are software. A photograph stored on the drive is data; it is not a program merely because it is represented by bits. Programs are also stored as bits, but their role is to specify operations.
When a spreadsheet calculates a total, software specifies the calculation, the processor executes instructions, RAM holds working values and the display presents the result. Software therefore uses hardware to perform useful work; hardware provides the resources needed to store and execute software. Instructions cannot execute without suitable hardware, and general-purpose hardware needs instructions to perform a chosen task.
Software can be stored permanently in a device's memory, such as firmware that starts a machine. Permanent storage does not turn those instructions into hardware: the chip is hardware; its program is software.
Application and system software
Classify software by the work it does, rather than whether it has a visible window or comes installed on a new machine.
Application software carries out tasks for the user, such as editing an image, preparing accounts or composing a document. A general-purpose application, such as a spreadsheet, supports many users and tasks. Special-purpose software has a narrower role, such as a payroll system. Bespoke software is built for a particular customer's requirements; these descriptions can overlap, so a bespoke payroll application is both bespoke and special-purpose.
System software manages or supports the operation of the computer and provides services needed by other software. An operating system manages resources; a translator enables source instructions to be executed; a utility maintains or protects the system. An application normally asks system software for services instead of controlling each hardware device itself.
Consider a clinic choosing appointment software. A ready-made application may cost less initially and already be tested for common tasks, but might not support the clinic's unusual booking rules. A bespoke application can match those rules and integrate existing records, but requires development, testing and continuing maintenance. The need is not simply for “more software”: the software must fit the users' functions, hardware, compatibility and support requirements.
System software has different attributes because it serves a different need. An operating system must share resources reliably between programs and provide suitable interfaces; a backup utility must preserve and restore data correctly. Application software must provide the relevant user functions and usable interaction. Both categories need reliability, but a word processor's paragraph formatting and an OS's allocation of memory solve different problems.
An application performs the user's task. System software supplies or manages the environment and services that make that task possible.
Operating systems, utilities, libraries and translators
System software contains several kinds of tool because managing a running computer, maintaining it and preparing programs for execution are different demands.
| Tool | Need and function | Example of its contribution |
|---|---|---|
| Operating system (OS) | Manages processors, memory and input/output resources; provides services and interfaces that hide hardware complexity | Lets a document editor save a named file without directly controlling drive sectors |
| Utility program | Performs a maintenance, protection or management task | A backup utility copies selected files so they can be restored after data loss |
| Library | Supplies reusable routines that other programs can call | An application calls an established image-decoding routine instead of implementing the format itself |
| Translator | Translates or executes source instructions so a processor can carry out the program | An assembler translates assembly source; a compiler translates source into another representation; an interpreter executes source instructions through translation/execution at run time |
A library is a collection of already-written routines and associated code used by programs. Reuse saves development time and reduces the need to recreate well-tested functions. The application still must call the appropriate routine with valid inputs, and choose a compatible library version. A library does not manage the whole computer just because many programs use it.
Utilities include file compression, encryption, malware scanning and backup/restore tools. Each has a specific system-support function. Compression reduces storage or transfer requirements; encryption protects confidentiality; a scanner detects or handles suspected malicious software. They do not all do the same job, and a backup is useful only if the required data can actually be restored. Some utilities come with an OS and others are installed separately; packaging does not change their function.
Translators bridge a representation gap. A processor executes its own machine instructions, not arbitrary human-readable source. An assembler translates assembly language to machine code. A compiler translates a source program before the resulting code is run, possibly producing intermediate code. An interpreter carries out source instructions through a run-time translation/execution process. Their detailed trade-offs are developed in the translators lesson.