AS Level 9618 · Paper 1 · Chapter 5

System Software

Between the raw hardware you met in Chapters 3 and 4 and the applications a user actually opens sits a whole layer of software whose entire job is to make everything else possible: the operating system managing memory, processes and files behind the scenes, and the language translators and development tools that turn the code you write into something a processor can run. This chapter covers Cambridge 9618 syllabus sections 5.1 and 5.2.

12 sections Syllabus 5.1, 5.2 6 interactive tools

A processor with nothing but hardware cannot run more than one program, share itself between users, or even load a file, it needs software managing it from underneath. This chapter covers Cambridge 9618 syllabus section 5.1, the operating system's core management tasks, the utility software bundled with it, and program libraries; and section 5.2, the assemblers, compilers and interpreters that translate the code you write, and the Integrated Development Environments built around them.

5.1

Why a Computer System Needs an OS

Operating Systems

An operating system (OS) is system software that manages a computer's hardware and software resources, and provides common services that every application program relies on. Without one, a user could not interact with the hardware at all, and every application would need to include its own low-level code for handling memory, storage and devices, duplicated across every single program.

Hardware abstraction
  • Hides the messy, device-specific details of the underlying hardware from both programmers and users
  • An application asks the OS to "save this file" or "print this page" without needing to know the exact electronics of the disk or printer involved
Resource management
  • Fairly allocates CPU time, memory and devices between every running program
  • Prevents one greedy or faulty program from starving every other program of the resources it needs
User interface
  • Provides a Command Line Interface (CLI) or Graphical User Interface (GUI) so a human can actually interact with the machine
Security
  • Controls which users and programs are allowed to access which data and hardware
Without an OS
Imagine every application had to talk directly to the hard disk's read/write head, or directly manage which exact bytes of RAM it was allowed to use. Every developer would need to rewrite the same low-level device code, programs would be free to overwrite each other's memory, and there would be no consistent way for a user to even launch a program in the first place. The OS exists precisely so none of that has to happen.
5.1

Memory Management

Operating Systems

Every running program needs somewhere in RAM to live, but RAM is a shared, finite resource with several programs wanting a slice of it at once. Memory management is the OS task of allocating RAM to processes, keeping them safely separated from each other, and stretching that limited physical memory further using virtual memory.

Interactive tool
Load processes into memory and watch paging in action
Physical RAM is divided into equal-sized frames. Load a few processes and see how the OS splits each one into pages and slots them into whichever frames happen to be free, even if those frames are not next to each other.
Click a button to load a process into memory, page by page.
What memory management does
  • Allocates a chunk of RAM to each process that needs to run
  • Keeps every process's memory strictly separated, so one program cannot read or overwrite another's data
  • Reclaims memory the moment a process terminates, making it available again
Virtual memory and paging
  • Splits a program into fixed-size pages, and physical RAM into matching frames
  • Pages do not need to sit in consecutive frames, the OS keeps a table tracking where each page actually landed
  • When RAM is full, rarely-used pages can be temporarily swapped out to disk, letting the system run programs whose combined size exceeds physical RAM
Exam technique
Paging solves a real problem: without it, a process would need one single unbroken block of free memory big enough to hold it entirely, and free memory tends to end up scattered in small gaps between other processes (external fragmentation). Paging lets a process's pages be scattered across whichever frames are free, using memory far more efficiently.
5.1

Process Management

Operating Systems

A single-core processor can only ever execute one instruction at a time, yet a computer can appear to run a browser, a music player and a word processor all at once. Process management is the OS task that creates this illusion, alongside creating and terminating processes as programs are opened and closed.

Interactive tool
Watch the CPU time-slice between three processes
Press Play to see a single CPU rapidly switch between three processes, giving each one a short time slice in turn, the illusion of multitasking.
Multitasking is an illusion, and that is the point
On a single core, only one process is ever truly executing at any given instant. The OS's scheduler switches the CPU between processes so quickly, giving each one a tiny time slice before moving to the next, that to a human it looks as though everything is running simultaneously. This is exactly the same rapid switching that lets a timer interrupt (met in Chapter 4) hand control back to the OS between time slices.
5.1

File, Security and Hardware Management

Operating Systems

The remaining three OS management tasks round out the full picture the syllabus expects, organising stored data, controlling who can access it, and mediating every physical device.

TaskWhat it does
File managementOrganises files into a directory (folder) structure, tracks exactly where each file's data physically lives on the storage device, and manages read/write permissions on individual files.
Security managementAuthenticates users at login, enforces access control over who can open or edit which files, and keeps audit logs recording who did what and when. Chapter 6 covers security threats and defences in full depth.
Hardware managementManages every input/output device through device drivers, small pieces of software that translate between the OS's generic instructions and a specific device's actual electronics, and handles interrupts (met in Chapter 4) raised by that hardware.
Exam technique
When a question asks you to "state the key management tasks of an OS", the five expected are memory, process, file, security and hardware management. Naming just "manages hardware" is too vague for full marks, name the specific mechanism, device drivers translating generic OS instructions into device-specific signals.
5.1

Utility Software

Operating Systems

Utility software performs maintenance and management tasks on the computer system itself, rather than doing productive work for the user the way an application like a word processor does. Every OS ships with a standard set of these.

🦠
Virus checker
Scans files against known malware signatures and monitors for suspicious behaviour, quarantining or removing threats it finds.
💾
Disk formatter
Prepares a storage device for use by writing a fresh file system structure onto it, erasing whatever was there before.
🔧
Defragmentation software
Rearranges fragmented files on a hard disk so that each file's blocks sit physically contiguous, reducing how far the read/write head has to move.
🔍
Disk repair / analysis
Scans the file system for errors, bad sectors and lost clusters, and repairs what it can to prevent data loss.
📦
File compression
Reduces file sizes (formats like ZIP or 7z) to save storage space or make files faster to transfer over a network.
💿
Backup software
Creates copies of data to protect against loss, whether a full backup, an incremental backup (changes since the last backup), or a differential backup (changes since the last full backup).
Why defragmentation only matters on a hard disk
Defragmentation improves performance specifically because a magnetic hard disk has a physical read/write head that must move to each block's location, so scattering a file across the disk means more time spent moving the head. A solid state drive has no moving parts and roughly equal access time everywhere, so fragmentation barely affects its speed, and running a defragmenter on one is generally unnecessary and can even shorten its lifespan through needless extra writes.
5.1

Program Libraries

Operating Systems

A program library is a collection of pre-written, reusable code modules that a programmer can call from their own program instead of writing that functionality from scratch. Software under development is very often built substantially out of existing library code, saving time, reducing bugs, and letting developers focus on what is actually new about their program.

Interactive tool
Compare how static and dynamic linking use memory
Three separate programs all use the same library. See what happens to the library code on disk and in memory under each linking approach.
Static library
  • The library's code is copied directly into the executable at compile time
  • The resulting program is self-contained, with no dependency on the library existing at runtime
  • Produces a larger executable file, since a full copy of the library code is baked into every program that uses it
DLL, Dynamic Link Library
  • The library is loaded at runtime, not copied in at compile time
  • Multiple running programs can share a single copy of the library sitting in memory
  • Produces smaller executables, and the shared library can be updated independently without recompiling every program that depends on it
Exam technique
The core trade-off to state is: static linking trades a larger file size and no runtime dependency for simplicity, while dynamic linking trades a small runtime dependency (the DLL must be present) for smaller executables, shared memory usage across programs, and the ability to patch the library without touching the programs that use it.
5.2

Assemblers, Compilers and Interpreters

Language Translators

A processor can only ever execute machine code, raw binary instructions, yet almost nobody writes machine code by hand. A language translator is software that converts human-readable source code into a form the processor can actually run, and which translator is needed depends entirely on what language the source code is written in.

TranslatorInputOutputHow it works
AssemblerAssembly languageMachine codeOne-to-one translation of each mnemonic instruction into its binary opcode, using the two-pass process covered in Chapter 4
CompilerHigh-level languageA standalone machine code executableTranslates the entire program in one go, before any of it runs, producing a complete .exe file
InterpreterHigh-level languageExecuted directly, no file producedTranslates and executes one statement at a time, with no separate executable ever created
Why assembly needs its own separate translator
Assembly language already has a direct one-to-one relationship with machine code (as covered in Chapter 4), so it needs a comparatively simple translator, the assembler, rather than a full compiler. A high-level language instruction, by contrast, can expand into many machine code instructions, which is why compiling and interpreting are meaningfully more complex processes.
5.2

Compiler vs Interpreter

Language Translators

Both a compiler and an interpreter turn high-level source code into something that runs, but they take fundamentally different approaches, and that difference has real consequences for speed, debugging and how software gets distributed.

Interactive tool
Run the same buggy program through each translator
This program has an error on line 3. Choose a translator and press Run to see exactly when, and how much, executes before the error is reported.
Compiler, advantages
  • Compiled code runs faster, since it is already fully translated to machine code before execution begins
  • Source code can be kept private, only the compiled executable needs to be distributed
  • Every error in the program is found during compilation, before any of it ever runs
  • Distributed as a standalone .exe, the end user needs no translator installed
  • Generally preferred for production or release software
Interpreter, advantages
  • Easier to debug, execution stops at the very first error, exactly where it occurred
  • Source code is portable across any platform with a matching interpreter installed
  • Can execute code interactively, one line at a time (a REPL)
  • A changed line can be tested immediately, with no separate compile step
  • Generally preferred during development
Exam technique: justifying a choice
Justify a compiler when the scenario emphasises final release, execution speed, or protecting source code, a games studio shipping a finished title. Justify an interpreter when the scenario emphasises active development, rapid testing of small changes, or an educational context where students need to see errors immediately as they write code.
5.2

Partial Compilation: Java and the JVM

Language Translators

Compiler and interpreter are not always an either-or choice. Some languages, most notably Java, use both, compiling partially and interpreting partially, to get benefits from each approach at once.

SOURCE CODEHuman-written .java file
→
COMPILED ONCEJava compiler produces bytecode (.class)
→
INTERPRETEDJVM runs the bytecode on any platform

Java source code is first compiled, just once, into an intermediate form called bytecode, stored in .class files. That bytecode is not the final machine code for any specific processor, instead, a program called the Java Virtual Machine (JVM) interprets the bytecode, translating and executing it on whatever platform it happens to be running on.

"Write once, run anywhere"
Because the same compiled bytecode can run unchanged on any device with a JVM installed (Windows, macOS, Linux, and more), Java achieves genuine cross-platform portability, the same benefit an interpreted language offers, while the one-off compilation step to bytecode still gives noticeably better performance than interpreting raw source code from scratch every single time it runs.
5.2

Integrated Development Environments

Language Translators

An Integrated Development Environment (IDE) combines a code editor, a compiler or interpreter, a debugger and other developer tools into one single application, so a programmer never has to switch between separate standalone programs while writing software.

The syllabus groups IDE features into two purposes: helping you write code correctly in the first place, and helping you present it clearly.

✍️
Context-sensitive prompts
Auto-complete suggests valid completions as you type, based on what is actually valid at that point in the code.
⚠️
Dynamic syntax check
Highlights syntax errors in real time as you write, before you ever try to run the program.
🎨
Prettyprint
Automatically formats and indents code consistently, making it far easier to read.
📁
Expand and collapse
Folds entire code blocks, like a function or a loop, down to one line, reducing visual clutter in a large file.
Why "dynamic" matters
The word dynamic in "dynamic syntax check" is doing real work: the IDE checks for errors continuously, live, as each character is typed, rather than only when you explicitly try to compile or run the program. This catches simple mistakes, a missing bracket, a misspelt keyword, the instant they happen.
5.2

IDE Debugging Features

Language Translators

Even syntactically correct code can behave wrongly, a debugger's job is to let a programmer watch a program's execution closely enough to find out exactly where and why. Click each feature below to see what it actually does inside a running program.

Interactive tool
Try each debugging feature on a live mock editor
Click a feature card to see its effect on the code below.
🔍
Single stepping
Execute one line at a time to trace the program's flow.
🔴
Breakpoints
Pause execution at a chosen line and inspect the program's state.
📊
Variable watch
Monitor a specific variable's value continuously while the program runs.
Click a feature above to see it demonstrated.
Exam technique
A report window is the fourth debugging feature, it displays error messages, compiler/interpreter warnings, and any runtime output in one place, so a programmer does not have to guess what happened, they can read exactly what the translator or the running program reported.
5.1, 5.2

Practice Questions

System Software
3 marks
Q1. State three tasks carried out by the memory management function of an operating system.
Answer

Any three of: allocates RAM to processes that need to run; keeps each process's memory separated so programs cannot interfere with each other; reclaims memory once a process terminates; manages virtual memory and paging so a program's pages can be scattered across free frames, or swapped to disk when physical RAM is full.

2 marks
Q2. Explain why defragmentation software improves performance on a magnetic hard disk but not on a solid state drive.
Answer

A magnetic hard disk has a physical read/write head that must move to a file's location, so a fragmented file scattered across the disk costs extra time as the head moves between its pieces. A solid state drive has no moving parts and roughly equal access time to any location, so fragmentation has little to no effect on its speed.

3 marks
Q3. Explain one benefit to a developer of using a Dynamic Link Library rather than a static library.
Answer

A DLL is loaded at runtime rather than copied into the executable at compile time, so multiple programs can share a single copy of it in memory, producing smaller executable files. It can also be updated independently, a bug fix in the DLL benefits every program that uses it without needing to recompile them.

4 marks
Q4. A student is learning to program and regularly makes small mistakes. Justify whether a compiler or an interpreter would suit them better while they are learning.
Answer

An interpreter suits the student better. It executes and translates the program line by line, stopping immediately at the first error, so the student sees exactly where a mistake is the moment it occurs, rather than waiting for an entire program to be compiled first. Changes can also be tested immediately without a separate compile step, letting the student iterate quickly while they are still learning.

3 marks
Q5. Explain what happens when Java source code is translated and run, and why this approach is used.
Answer

The Java source code is first compiled, once, into an intermediate bytecode format stored in .class files. The Java Virtual Machine (JVM) then interprets that bytecode on whichever platform it is run on. This approach is used because it achieves cross-platform portability, the same bytecode runs unchanged wherever a JVM is installed, while still performing better than interpreting the original source code directly every time.

2 marks
Q6. State two features of an IDE that would help a programmer debug a program, other than breakpoints.
Answer

Any two of: single stepping, executing the program one line at a time to trace its flow; variable watch, monitoring a chosen variable's value continuously as the program runs; a report window, displaying error messages, warnings and runtime output in one place.

Stop wrestling with confusion.
Join thousands of students mastering Computer Science without the academic jargon.
Explore all AS Level notes

Stop wrestling with confusion.

Join thousands of students mastering Computer Science without the academic jargon.

From syntax to systems. We break down the hardest ideas in computer science so you can actually build things.

© 2026 Painless Programming. Built for students.
Scroll to Top
Enable Notifications OK No thanks