History and Goals, Evolution of operating systems. Operating System: Services, Structure, User Interface. Virtual Machines concept, System Boot, System Calls, Types of System Calls. Processes: Concept, Scheduling, Operations on Processes, Inter-process Communication. Threading: Multithreading Models, Thread Libraries, Threading Issues, processor scheduling; deadlock prevention, avoidance, and recovery; main-memory management; virtual memory management (swapping, paging, segmentation and page-replacement algorithms); Disks management and other input/output devices; file-system structure and implementation; protection and security. Case studies: Linux/Windows Operating Systems. Lab assignments involving different single and multithreaded OS algorithms.