The role and objective of operating systems. Basic principles. Abstractions, processes, resources. Concurrency. Dispatching and context switching. Interrupt processing in a concurrent environment. Mutual exclusion. Detection and prevention of deadlocks. Semaphores, monitors, conditional variables, rendezvous. The synchronization and multiprocessor solutions. Scheduling. Memory management. Overlay, replacement and partitioning. Paging and segmentation. Caching. Device management. Characteristics of serial and parallel devices. Direct memory access. Security and system protection. Models of protection. Memory protection. File systems. The content and structure of the directory. Naming, searching, access control and backup strategies. The virtual and memory file system. Mounting a file system. Embedded systems and real time operation. Fault tolerance. Examples.