System Software
Operating systems, utility software, language translators and development environments — the software that runs everything else.
5.1 Operating Systems
Why Do We Need an OS?
An Operating System (OS) is system software that manages computer hardware and software resources, and provides common services for application programs. Without it, users and programs could not interact with hardware.
Key reasons the OS is essential:
- Hardware abstraction: Hides complex hardware details from programmers and users
- Resource management: Allocates CPU time, memory, and devices fairly between programs
- User interface: Provides CLI or GUI for user interaction
- Security: Controls access to data and hardware
Key OS Management Tasks
| Task | What It Does |
|---|---|
| Memory Management | Allocates RAM to processes; ensures processes don't interfere with each other; manages virtual memory/paging |
| Process Management | Creates/terminates processes; schedules CPU time; manages multitasking |
| File Management | Organises files in directory structure; manages read/write permissions; tracks file locations |
| Security Management | User authentication (logins); access control; audit logging |
| Hardware Management | Manages I/O devices via device drivers; handles interrupts; controls peripherals |
Utility Software
Utility programs perform maintenance and management tasks on the computer system.
🦠 Virus Checker
Scans files for known malware signatures; monitors for suspicious behaviour
💾 Disk Formatter
Prepares a storage device for use by creating a file system structure
🔧 Defragmentation
Rearranges fragmented files on HDD so related blocks are contiguous; improves speed
🔍 Disk Repair
Scans for and repairs file system errors, bad sectors, lost clusters
📦 File Compression
Reduces file sizes (ZIP, 7z) for storage efficiency or transfer
💿 Backup Software
Creates copies of data to protect against loss; full, incremental or differential backups
Program Libraries
A program library is a collection of pre-written, reusable code modules that programmers can call from their own programs. Libraries save time, reduce errors, and allow code reuse.
Static Library
- Library code copied into executable at compile time
- Executable is self-contained
- Larger file size
- No dependency issues at runtime
DLL — Dynamic Link Library
- Library loaded at runtime (not compile time)
- Multiple programs share one copy in memory
- Smaller executables
- Update library without recompiling programs
5.2 Language Translators
Types of Translator
| Translator | Input | Output | How It Works |
|---|---|---|---|
| Assembler | Assembly language | Machine code | One-to-one translation; two-pass process |
| Compiler | High-level language | Machine code executable | Translates entire program at once; creates standalone .exe |
| Interpreter | High-level language | Executed directly | Translates and executes one statement at a time; no .exe created |
Compiler vs Interpreter
Compiler — Advantages
- Compiled code runs faster (already translated)
- Source code can be kept private
- All errors found before execution
- Distribution as .exe — no translator needed
- Better for production/release software
Interpreter — Advantages
- Easier to debug (stops at first error)
- Portable across platforms
- Can execute code interactively (REPL)
- Changes tested immediately
- Better during development
IDE Features
An IDE combines a code editor, compiler/interpreter, debugger, and other tools in one application to streamline software development.
✍️ Context-sensitive prompts
Auto-complete suggests valid code as you type based on context
⚠️ Dynamic syntax check
Highlights syntax errors in real-time as you write, before running
🎨 Prettyprint
Automatic code formatting/indentation for readability
📂 Expand/Collapse
Fold code blocks (functions, loops) to reduce visual clutter
🔍 Single stepping
Execute one line at a time to trace program flow and find bugs
🔴 Breakpoints
Pause execution at a specific line; inspect variable values mid-run
📊 Variable watch
Monitor specific variables/expressions while program runs
📋 Report window
Displays error messages, warnings, and runtime output
