Software and Operating Systems
The core software that manages computer hardware and runs the applications we use daily.
Software is a collection of instructions, data, or programs used to operate computers and execute specific tasks. It is the intangible part of a computer system that tells the hardware what to do. Software is broadly categorised into two main types: System Software and Application Software.
### Types of Software
System software is designed to run and manage the computer's hardware and application programs. It acts as an intermediary layer between the hardware and the user applications. The user does not typically interact directly with system software. It includes:
* Operating System (OS): The most crucial piece of system software. It manages all other software and hardware on the computer. Examples include Microsoft Windows, macOS, Linux, Android, and iOS.
* Utility Programs: These are small programs designed to perform a specific maintenance task to help manage, maintain, and control computer resources. Examples include antivirus software (e.g., Norton), disk defragmenters, file compression tools (e.g., WinZip), and backup software.
* Device Drivers: A specific type of software that allows the operating system to communicate with a hardware device, such as a printer, graphics card, or mouse. Without the correct driver, the hardware will not function properly.
Application software, also known as an 'app' or 'program', is designed for the end-user to perform specific tasks. These are the programs you interact with daily.
* General-Purpose Software: Applications used for a wide variety of tasks, such as word processors (Microsoft Word), spreadsheets (Microsoft Excel), and web browsers (Google Chrome).
* Specialist Software: Software designed for a specific purpose or profession, like graphic design software (Adobe Photoshop) or video editing software (Adobe Premiere Pro).
* Bespoke Software: Custom-made software developed for a specific organisation's unique needs, such as a custom inventory management system for a supermarket.
### The Operating System (OS)
The Operating System (OS) is the core software that manages computer hardware and software resources and provides common services for computer programs. It is the first program loaded when a computer is turned on.
Key Functions of an OS:
* Processor Management (Scheduling): The OS manages the Central Processing Unit (CPU). In a multi-tasking system, it determines which process gets to use the CPU and for how long, using scheduling algorithms.
* Memory Management: The OS is responsible for allocating and de-allocating memory space to programs that need it. It ensures that one program's memory does not interfere with another's. It also manages virtual memory, a technique that uses secondary storage to act as extra RAM.
* File Management: The OS organises and keeps track of files and directories on storage devices (like hard drives). It handles file creation, deletion, renaming, and access permissions.
* Input/Output (I/O) Management: The OS manages communication with all peripheral devices, such as keyboards, mice, monitors, and printers, through their respective device drivers.
* Security Management: The OS provides security by managing user accounts, passwords, and access rights, preventing unauthorised access to the system.
* User Interface (UI) Management: The OS provides a user interface, which is the way a user interacts with the computer. The two main types are:
* Command-Line Interface (CLI): The user types text commands to instruct the computer. It is powerful but less intuitive.
* Graphical User Interface (GUI): The user interacts with the computer using visual elements like windows, icons, menus, and pointers (WIMP). It is user-friendly and the standard for most modern operating systems.
### Programming Language Translators
Computers only understand machine code, which is in binary format (1s and 0s). However, humans write programs in high-level languages (like Python, Java, C++) which are easier to read and write. A translator is a program that converts source code written in a high-level language into machine code.
There are three types of translators:
* Process: A compiler translates the entire source code into object code (machine code) in one go.
* Output: It creates a separate executable file (e.g., `.exe` on Windows). This file can be run independently without the need for the original source code or the compiler.
* Error Handling: It reports a list of all errors at the end of the compilation process. The program will not run until all errors are fixed.
* Speed: Once compiled, the executable file runs very quickly.
* Process: An interpreter translates and executes the source code one statement at a time, line by line.
* Output: It does not produce a separate executable file. The interpreter is needed every time the program is run.
* Error Handling: It stops execution as soon as it encounters the first error, making it easier to debug.
* Speed: It is generally slower than a compiled program because the translation happens during runtime.
An assembler is a specific type of translator that converts assembly language (a low-level language that is very close to machine code) into machine code.
Key Points to Remember
- 1Software is divided into two main types: **System Software** (manages the computer) and **Application Software** (for user tasks).
- 2The **Operating System (OS)** is the core system software that manages all hardware and software resources, acting as an interface between the user and the hardware.
- 3Key OS functions include **memory management**, **processor scheduling**, **file management**, security, and providing a **User Interface (UI)**.
- 4A **GUI** (Graphical User Interface) is visual and user-friendly, while a **CLI** (Command-Line Interface) is text-based and powerful for technical users.
- 5Programming language **translators** are needed to convert human-readable high-level languages into machine code that the CPU can execute.
- 6A **compiler** translates the entire source code into a standalone executable file before running, resulting in fast execution.
- 7An **interpreter** translates and executes source code line-by-line, which is slower but simplifies debugging.
Pakistan Example
NADRA's Citizen Verification System
The system used by the National Database and Registration Authority (NADRA) in Pakistan is a prime example of software layers working together. The **application software** is the bespoke program NADRA officers use to capture fingerprints, photos, and citizen data. This application runs on top of a secure **Operating System** (system software), likely a version of Windows or Linux, which manages the computer's memory, processor, and files. Crucially, specific **device drivers** (system software) are required for the fingerprint scanners, cameras, and signature pads to communicate with the OS. This integration shows how application, OS, and drivers collaborate to perform a critical national function.
Quick Revision Infographic
Computer Science — Quick Revision
Software and Operating Systems
Key Concepts
NADRA's Citizen Verification System
The system used by the National Database and Registration Authority (NADRA) in Pakistan is a prime example of software layers working together. The **application software** is the bespoke program NADRA officers use to capture fingerprints, photos, and citizen data. This application runs on top of a secure **Operating System** (system software), likely a version of Windows or Linux, which manages the computer's memory, processor, and files. Crucially, specific **device drivers** (system software) are required for the fingerprint scanners, cameras, and signature pads to communicate with the OS. This integration shows how application, OS, and drivers collaborate to perform a critical national function.