Computer Software and Operating Systems (9hrs) · Computer Fundamentals & Emerging Technologies

System Software

Watch lectures

System Software

1. Definition

System software is the set of programs that manage the hardware resources of a computer and provide the environment in which application programs run. It works close to the machine, is loaded at start-up, runs mostly in the background, and is written for a particular machine family (hence machine dependent). The operating system is the most important member of this family.

2. Functions of System Software

  • Resource management — allocate CPU time, memory, storage and devices among competing programs.
  • Process management — create, schedule, suspend and terminate processes; handle inter-process communication.
  • Memory management — allocate and reclaim memory, keep track of free space, support virtual memory.
  • File and storage management — create, read, write, delete files; organise them in directories; control access.
  • Device management — communicate with hardware through device drivers, handle interrupts and buffering.
  • Abstraction / service provision — present system calls and APIs so application programmers never touch registers or ports.
  • Program translation and loading — convert source code to machine code and bring it into memory for execution.
  • Error detection and security — detect hardware/software errors, prevent unauthorised access, enforce protection between programs.
  • Booting and initialisation — run POST and start the OS.
  • Performance monitoring and housekeeping — job accounting, logging, utilities for formatting, backup and recovery.

3. Main Components of System Software

Component Responsibility Examples
Operating system Overall control; process, memory, file and device management Windows, Linux, macOS, Android, RTOS
Device drivers Device-specific code that converts OS requests into hardware operations Printer, display, Wi-Fi, audio drivers
Firmware / BIOS / UEFI Hardware self-test and boot of the OS BIOS on the motherboard, router firmware
Assembler Assembly language → machine code (two-pass) MASM, NASM, GNU as
Compiler High-level language → object code GCC, javac, cl.exe
Interpreter Executes high-level source line by line Python, Node, BASIC
Preprocessor / macro processor Expands #include, #define, macros before compilation cpp
Linker Combines object modules and library code into one executable, resolves symbols ld, link.exe
Loader Places the executable into memory and transfers control to it OS loader, bootloader
Debugger Traces program execution, sets breakpoints, inspects variables gdb, WinDbg
Utilities Maintenance tasks Format, chkdsk, defragmenter, backup, antivirus
System libraries / shell Reusable services and command interface libc, bash, PowerShell

4. Booting: How System Software Comes to Life

  POWER ON ─► CPU reads the RESET VECTOR in BIOS/UEFI flash
            ─► POST (Power-On Self-Test) checks CPU, RAM, keyboard, disk
            ─► BIOS/UEFI locates the boot device (HDD/SSD/USB/network)
            ─► loads the BOOT LOADER (GRUB, Windows Boot Manager)
            ─► boot loader loads the OS KERNEL into RAM
            ─► kernel initialises drivers, starts system services and the shell/GUI
            ─► LOGIN PROMPT / DESKTOP appears

This chain explains why a corrupted BIOS or missing boot loader stops the machine before the OS can help.

5. Linker and Loader

  • Linker — takes the object modules produced by the compiler/assembler plus library code and joins them into a single executable, resolving external symbol references (a call in one module to a function defined in another). It supports static linking (library code copied into the executable — bigger file, no dependencies) and dynamic linking (library loaded at run time — smaller file, shared by many processes; DLLs and .so files).
  • Loader — brings the executable from disk into memory, performs relocation (adjusting addresses to where the program was actually loaded), sets up the stack and heap, and passes control to the entry point. Loading schemes: compile-time (absolute addresses, no relocation), load-time (relocatable at load), run-time (address translation while running, requires hardware support such as a base/limit register or MMU).

6. Translators and Related Processors

Tool Input → Output Notes
Preprocessor Source with directives → pure source #include, #define expansion
Assembler Assembly → machine code Two passes for forward references
Compiler High-level → object code Whole program; linked later
Interpreter High-level → direct execution No object file
Cross compiler / assembler Source → code for a different machine Used in embedded development (host PC → ARM target)
Decompiler / disassembler Binary → source/assembly (approximate) Reverse engineering
Linker / loader Object → executable → running process Section 5 above

7. Why System Software is Machine Dependent

It manipulates machine-specific structures — register sets, interrupt vectors, page tables, device registers and instruction formats. Portable parts (70-90% of an OS) are written in C/C++, with assembly confined to the hardware-dependent kernel pieces. Application software, by contrast, talks only to the OS API and so moves between machines with the same OS.

8. Exam Points

  • Define system software and explain its functions — 5 marks, very frequent.
  • List the components of system software with one example each — 5 marks.
  • Differentiate system software and application software — 5 marks, almost certain.
  • Explain the role of linker and loader with static vs dynamic linking — 5-7 marks, frequent.
  • Explain the boot process from power-on to login — 5 marks.
  • Why is system software machine dependent while application software is not? — 3 marks.
Budget AppAndroid App

Pocketly on Android

Log daily food, travel, and hostel expenses instantly. Set monthly spending limits and see where your money goes without complex spreadsheets.

← All Computer Fundamentals & Emerging Technologies modules