CSC 308 Operating System

Learning Outcomes
At the end of this course, students should be able to:

  1. recognise operating system types and structures;
  2. describe OS support for processes and threads;
  3. recognise CPU scheduling, synchronisation, and deadlock;
  4. resolve OS issues related to synchronisation and failure for distributed systems;
  5. explain OS support for virtual memory, disk scheduling, I/O, and file systems;
  6. identify security and protection issues in computer systems; and
  7. use C and Unix commands, examine behaviour and performance of Linux, and develop
    various system programmes under Linux to make use of OS concepts related to process
    synchronisation, shared memory, mailboxes, file systems, etc.

    Course Contents
    Fundamentals of operating systems design and implementation. History and evolution of
    operating systems. Types of operating systems. Operating system structures. Process
    management: processes, threads, CPU scheduling, process synchronisation. Memory
    management and virtual memory. File systems; I/O systems; Security and protection;
    Distributed systems; Case studies.

    Lab work: Practical hands-on engagement to facilitate understanding of the material taught
    in the course. All the process, memory, file and directory management issues will be
    demonstrated under the LINUX operating system. Also UNIX commands will be briefly
    discussed. Alternatively, hands-on exposure may be through the use of operating systems
    developed for teaching, like TempOS, Nachos, Xinu or MiniOS. Another possibility is through
    programming exercises that implement and simulate algorithms taught. Simulation of CPU
    scheduling algorithms, producer-consumer problem, memory allocation algorithms, file
    organisation techniques, deadlock algorithms and disk scheduling algorithms.