ENCT254

Operating System

Syllabus

  1. Introduction (6 hours)
    1. Introduction to operating systems
    2. OS as an extended machine and resource manager
    3. History of operating system
    4. Types of operating system: mainframe, server, personal, smartphone and handheld, IoT and embedded, real-time, smart-card
    5. Operating system components: kernel, shell, utilities, applications
    6. Types of OS kernel: monolithic, micro, nano, layered, hybrid, exo-kernel
    7. System calls, shell commands, shell programming
    8. POSIX standard
    9. Bootloader, MBR/GPT, UEFI and legacy boot
  2. Process Management (7 hours)
    1. Process description, states and control
    2. Scheduling algorithms: FCFS, SJF, SRT, Round Robin, HRRN, Completely Fair Scheduler (CFS) used in Linux
    3. Threads and thread scheduling
  3. Process Communication and Synchronization (10 hours)
    1. Principles of concurrency, race condition, critical region
    2. Mutual exclusion, semaphores, and mutex
    3. Message passing and monitors
    4. Classical problems of synchronization: readers-writers, producer-consumer, dining philosopher
    5. Deadlock: prevention, ignorance, avoidance, detection and recovery
  4. I/O and Memory Management (9 hours)
    1. 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
    2. 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
  5. File Systems (3 hours)
    1. File concepts: name, structure, types, access, attributes, operations
    2. Directory structures: paths and hierarchies (Linux/Windows)
    3. File system implementation: inodes, allocation methods (contiguous, linked, indexed)
    4. File system performance: factors affecting efficiency
    5. Example file systems: NTFS, EXT4, FAT32, NFS
  6. Security and System Administration (3 hours)
    1. OS security: cryptography, multi-factor authentication (MFA), secure boot and sandboxing
    2. Access control: policies, lists, and OS support
    3. System administration: user management, environment setup and tools (AWK, shell scripts, make)
  7. Hypervisors and Virtual Systems (4 hours)
    1. Hypervisors: type 1 and type 2
    2. Virtual machines: creating virtual machine in Qemu/VirtualBox/VMWare
    3. Container virtualization: Docker and Kubernetes
    4. PowerShell and Windows Subsystem for Linux (WSL)
    5. Performance optimization and security in virtualized environments
  8. Overview of Contemporary OS (3 hours)
    1. Windows and Linux-based OS
    2. Embedded and mobile OS
    3. IoT and RT operating system
    4. Robot and smart card operating system

Practicals

  1. Basic Unix commands
  2. Shell programming
  3. Implementation of the ls and grep commands
  4. Programs using the I/O system calls of the UNIX operating system
  5. Implementation of scheduling algorithms and the producer-consumer problem using semaphores
  6. Implementation of memory management schemes such as paging and segmentation
  7. Term project