Course Description
In this unit, learners will explore the role and principles of operating systems. Operating systems are introduced as software to manage resources in a computer and the need for operating systems is explained. The principal functions of operating systems are introduced, including memory management and process management, and learners will gain an appreciation for the trade-offs that exist in allocating hardware resources to processes. Learners will conclude by leveraging the understanding acquired through the unit to write their own operating system code at the kernel level.
Course Objectives
In this unit, learners will explore the role and principles of operating systems. Operating systems are introduced as software to manage resources in a computer and the need for operating systems is explained. The principal functions of operating systems are introduced, including memory management and process management, and learners will gain an appreciation for the trade-offs that exist in allocating hardware resources to processes. Learners will conclude by leveraging the understanding acquired through the unit to write their own operating system code at the kernel level.
Key Topics
- LO1: Understand the essential function and architecture of modern operating systems.
- LO2: Understand memory and I/O management techniques used by modern operating systems.
- LO3: Understand process management techniques used by modern operating systems.
- LO4: Understand the principles of and potential problems with concurrency in operating systems.
- LO5: Be able to write programs at the kernel level.
Course Outline
| Week | Topics |
|---|
| 1 | Why we need operating systems: from mainframes to today's desktop and mobile systems |
| 2 | What an operating system does: managing the CPU, memory, files, devices and the user interface |
| 3 | OS architectures: monolithic, layered, microkernel and hybrid |
| 4 | Memory management: logical vs. physical address spaces, allocation and fragmentation, paging and page tables, swapping and virtual memory, static and dynamic loading and linking |
| 5 | Device drivers and file systems: files, folders and permissions |
| 6 | Processes and threads; process states and attributes; the process control block |
| 7 | Process management: creation, scheduling algorithms (FCFS, round robin, SJF, priority, multilevel queues), context switching and interrupt handling |
| Midterm | Midterm evaluation |
| 9 | Concurrency: independent vs. cooperating processes, shared memory and message passing IPC, low-level vs. high-level IPC |
| 10 | Pitfalls of concurrency: deadlock and race conditions, detection, semaphores and the Banker's algorithm |
| 11 | Kernel programming lab: loadable kernel modules, system calls, a 'Hello World' module, device driver examples, testing and debugging kernel code |
| 12 | Applying Operating Systems in practice: case studies |
| 13 | Assignment workshop: research, planning and referencing |
| 14 | Assignment workshop: drafting, feedback and improvement |
| 15 | Review and coursework completion |
| Final | Final assessment and submission |
Learning Outcomes
- LO1 Understand the essential function and architecture of modern operating systems.
- 1.1 Outline a range of common operating systems for computers and mobile devices.
- 1.2 Describe the historical development and need for operating systems.
- 1.3 Explain the key components of an operating system.
- 1.4 Explain how operating systems manage hardware and software resources.
- 1.5 Analyse the different kinds of operating system that exist.
- 1.6 Evaluate common trade-offs in resource management for operating systems.
- LO2 Understand memory and I/O management techniques used by modern operating systems.
- 2.1 Compare different file system types.
- 2.2 Describe different approaches to memory management.
- 2.3 Describe the role of device drivers in facilitating communication with hardware devices.
- 2.4 Explain the role of virtual (swap) memory.
- 2.5 Explain the role of paging in allowing for non-contiguous memory allocation.
- 2.6 Analyse the difference between fixed and dynamic loading and linking strategies.
- LO3 Understand process management techniques used by modern operating systems.
- 3.1 Describe what is meant by a process.
- 3.2 Explain the contents of the process control block and its importance.
- 3.3 Explain the way that processes are represented for management by operating systems.
- 3.4 Analyse the range of responsibilities an operating system has for managing the execution of processes.
- LO4 Understand the principles of and potential problems with concurrency in operating systems.
- 4.1 Outline the difference between independent and cooperating processes.
- 4.2 Describe what is meant by concurrency.
- 4.3 Explain the memory sharing and message passing approaches to inter process communication.
- 4.4 Analyse deadlock and race conditions as potential problems in concurrent processing settings and propose strategies to mitigate them.
- 4.5 Evaluate the importance of low-level and high-level inter process communication.
- LO5 Be able to write programs at the kernel level.
- 5.1 Develop kernel modules that interact with hardware devices and system resources.
- 5.2 Implement system calls to extend kernel functionality and interact with user-level applications.
- 5.3 Implement kernel-level programs to perform different tasks.
- 5.4 Use debugging to test kernel-level code to ensure stability and performance.