To educate students on the basic concepts and components of operating systems, the relevant characteristics of hardware, and the tradeoffs between conflicting objectives faced by the OS.
As much as operating systems are an essential part of computer systems, a course on operating systems is an essential part of any computer science or computer engineering program. This course is oriented towards exposing students to the essential concepts and issues that underly operating systems and their design.
Make students understand the key concepts and mechanisms of modern operating systems:
- processes and process management,
- memory management techniques aimed at optimising system utilisation and responsiveness,
- on-line storage methods (file systems),
- security and protection,
- concurrency issues,
- some of the issues arising from distribution.
Make students understand the reasons why operating systems are built the way they are, and what the implications and lessons are for other software systems. Specific learning objectives are:
- appreciation of design trade-offs and design decisions and their dependence on the target environment;
- appreciation of the distinction between mechanisms and policies, and why this is important;
- exposure to low-level code;
- exposure to current trends in operating systems research and development.
The tutorial formats will give students practice in the presentation of solutions to an audience of peers, and will challenge them to critique peer technical presentations. Furthermore, the whole course encourages critical examination and analysis of "standard" solutions.
It is assumed that the student is familiar with the general organisation of a general-purpose computer (in particular, CPU, memory, bus, registers, machine instructions, interrupts/exceptions).
Students are also assumed to be competent in the C programming language.