Types of software

This computer science section provides an overview of the types of software relevant to A-Level Computer Science. Covering the types of software, operating systems, utilities and application generation.

Software and Software Development

Systems Software

The Need for, Function, and Purpose of Operating Systems (OS)

Operating Systems manage hardware and software resources, providing an interface between users and the computer hardware. They are essential for:

Resource management (CPU, memory, and I/O devices).

File management (handling data storage).

Task scheduling (managing multiple processes).

Providing a user interface, such as graphical (GUI) or command-line (CLI).

Memory Management

Paging: Divides memory into fixed-size blocks called pages. Processes are split into pages and can be loaded into any available memory slots, not necessarily contiguous.

Segmentation: Divides memory into variable-sized segments based on logical divisions, such as functions or data structures.

Virtual Memory: Uses secondary storage (like a hard drive) to simulate additional RAM when physical memory is full. This allows for the running of larger programs than available memory.

Interrupts and Interrupt Service Routines (ISR)

Interrupts: Signals sent to the CPU that require immediate attention, temporarily halting the current process to deal with the event (e.g., input/output completion, hardware failure).

Interrupt Service Routine (ISR): A special function called when an interrupt occurs, handling the event and restoring control to the previous task.

Role in the Fetch-Decode-Execute Cycle: Interrupts can occur during any stage of the cycle, and the CPU checks for them after each instruction execution. If an interrupt is detected, the ISR is executed.

Scheduling Algorithms

Operating systems use scheduling algorithms to manage how processes share CPU time. Key algorithms include:

Round Robin: Each process is given a fixed time slice in a rotating order. Simple but inefficient for longer processes.

First Come First Served (FCFS): Processes are handled in the order they arrive, but longer tasks can delay others.

Multi-level Feedback Queues: Multiple queues with different priorities. Processes can move between queues based on their behaviour.

Shortest Job First (SJF): Executes the process with the shortest runtime next.

Shortest Remaining Time (SRT): Executes the process with the least remaining time to completion.

Types of Operating Systems

Distributed OS: Manages a group of computers as a single system, distributing tasks across multiple machines.

Embedded OS: Designed for embedded systems, often with limited resources, to perform specific tasks (e.g., in appliances or cars).

Multi-tasking OS: Allows multiple applications or processes to run concurrently on a single CPU.

Multi-user OS: Supports multiple users accessing the system simultaneously, typically in mainframes or servers.

Real-Time OS: Designed for systems requiring immediate response to events, such as in industrial control systems or medical equipment.

BIOS (Basic Input/Output System)

BIOS is firmware that initialises and tests hardware during startup and provides a runtime environment for the operating system to load. It is stored in non-volatile memory (like ROM).

Device Drivers

Device Drivers are programs that allow the operating system to communicate with hardware devices, providing the necessary instructions to operate peripheral devices like printers, keyboards, or graphics cards.

Virtual Machines (VMs)

Virtual Machines simulate a physical computer using software. They can:

Execute intermediate code (e.g., Java Virtual Machine).

Run an operating system within another OS (e.g., virtualisation software like VMware or VirtualBox).

Applications Generation

Nature of Applications

Applications are software programs designed for specific tasks, ranging from word processing to web browsing. When choosing an application, consider:

Purpose (e.g., databases for data management, graphic design tools for creative work).

User needs and hardware compatibility.

Utilities

Utilities are system tools that help manage, maintain, or optimise a computer, such as disk defragmenters, antivirus software, and backup utilities.

Open Source vs Closed Source Software

Open Source Software: The source code is freely available for modification and distribution (e.g., Linux). Benefits include community support and transparency.

Closed Source Software: The source code is proprietary and not shared. It is maintained by the software developer, offering dedicated support but limiting user customisation.

Translators: Interpreters, Compilers, and Assemblers

Interpreter: Translates and executes code line-by-line. Easier for debugging but slower than compiled languages.

Compiler: Translates the entire code into machine code before execution. This creates faster-running programs.

Assembler: Translates assembly language into machine code, converting low-level human-readable instructions into binary.

Stages of Compilation

Lexical Analysis: Converts source code into tokens, removes whitespace and comments.

Syntax Analysis: Ensures the code follows the grammar of the programming language, often using a syntax tree.

Code Generation: Converts the code into machine code.

Optimisation: Improves the code's efficiency, reducing memory usage or execution time.

Linkers and Loaders, Use of Libraries

Linker: Combines different modules of code (or external libraries) into a single executable program.

Loader: Loads the program into memory for execution.

Libraries: Pre-written sets of code that can be reused, saving development time and ensuring consistency (e.g., standard libraries for math functions).

sign up to revision world banner
Slot