This course covers the general principles of Operating Systems. Evolution of Operating Systems, Input/Output, concurrent processes, critical section, process synchronization and communication. CPU scheduling. Memory management (static and dynamic allocation, virtual memory, paging, segmentation). File management, disk scheduling, deadlocks.