Operating Systems Implementation
COMP3300/COMP6330 Operating Systems Implementation will not be running in Semester 2, 2021. Please contact CECS Student Services for enrolment and degree program enquiries.
Without operating systems, today’s computers would be nothing more than ugly expensive paperweights. Operating systems are programs that act as intermediaries between user programs and the physical hardware of the computer. First, they provide a layer which simplifies and standardizes the operation of the computer system. Second, they act as resource managers controlling the resources of the computer system. These resources include the following: CPU, memory, keyboards, screens, printers, storage devices, etc, or even more abstract resources such as: file systems, windows, processes, etc. The purpose of a good operating system is to provide these services in a reliable, convenient and efficient manner. The Operating System is a non-trivial program and quickly descends into the tar-pit of complexity.
This unit takes a detailed look at the services provided by, and the internals of, an existing operating system to see how each part is constructed and integrated into the whole.
The lectures will also address recent literature describing advances in operating systems.
The following topics are addressed: system programming and its facilities (including I/O, signals, job control, interprocess communication, sockets, transport layers, remote operations), system calls and their relation to the system libraries, process management and coordination, implementation of message passing, memory management, interrupt handling, real-time clocks, device-independent input/output, serial-line drivers, network communication, disk drivers, deadlock avoidance, scheduling paradigms, file systems, security.
The text book for this course is Operating Systems: Three Easy Pieces, Arpaci-Dusseau 2014.
Entering students should have:
- a basic understanding of computer system structures, operating systems, networks and concurrency (as covered in COMP2300, COMP2310);
- some experience with imperative programming in a language such as Java, C, C++, Python, etc. (We will use C in the course however I will spend some time teaching this as most people no longer have a background in it.);
- some experience using UNIX systems; and
- basic maths skills.