An operating system is an essential part of almost all computer systems. The
operating system is the software system that provides the interface between
users, their applications, and the underlying hardware.
The core of any operating system is the kernel. The purpose of this course
is to study the design and implementation of operating system kernels.
The following topics will be covered:
Introduction to the organization and structure of operating systems.
System calls (with hands-on experience using fork, exec, etc.).
Introduction to processes and threads.
Race conditions and critical sections.
Principles of I/O Hardware: I/O devices, device controllers, DMA.
Principles of I/O Software: interrupt handlers, device drivers,
device-independent I/O software, and user-space I/O software.
Study of drivers for block devices that use DMA (e.g., drivers for ram disks
and hard disks).
Clock hardware and software including clock (timer) management.
Terminals: hardware and software including keyboard and display drivers.