This courses covers the function, design, and integration of the parts
of an operating system. The course begins with an introduction to all
the important concepts associated with an operating system including
process control, I/O, resource allocation, files, virtual memory,
memory, deadlock, access control and mutual exclusion. The second
phase of the course looks at all aspects of processes: state,
hierachies, threads, memory management, process scheduling,
synchronization, processor co-operation, and semaphores. The next
phase considers some problems that come up in OS design such as
deadlock, livelock, starvation and ways to prevent these problems or
deal with them. The fourth phase treats memory management and storage
allocation, including virtual memory. The fifth phase considers I/O
including device controllers, device drivers, memory mapped I/O, DMA,
and character I/O. The course ends with file organization, descriptors,
and structures.
Students will manipulate the linux kernel using C code and observe the
effects and consequences. Students will also do system level
programming in the bash shell.