Types of operating system: mainframe, server, personal, smartphone and handheld, IoT and embedded, real-time, smart-card
Operating system components: kernel, shell, utilities, applications
Types of OS kernel: monolithic, micro, nano, layered, hybrid, exo-kernel
System calls, shell commands, shell programming
POSIX standard
Bootloader, MBR/GPT, UEFI and legacy boot
Process Management (7 hours)
Process description, states and control
Scheduling algorithms: FCFS, SJF, SRT, Round Robin, HRRN, Completely Fair Scheduler (CFS) used in Linux
Threads and thread scheduling
Process Communication and Synchronization (10 hours)
Principles of concurrency, race condition, critical region
Mutual exclusion, semaphores, and mutex
Message passing and monitors
Classical problems of synchronization: readers-writers, producer-consumer, dining philosopher
Deadlock: prevention, ignorance, avoidance, detection and recovery
I/O and Memory Management (9 hours)
I/O management: principles of I/O hardware and software, I/O software layer, disk technologies (magnetic disk, SSD, NVMe storage), RAID, stable storage, cost per bit comparison
Memory management: memory address, swapping and managing free memory space; virtual memory management, paging, segmentation; page replacement algorithms (FIFO, LRU, LFU), page fault and hit ratio; allocation of frames; thrashing