Operating systems

Objectives and outcomes

Introduction to the usage and functions of operating systems, as well as to the basic principles of
operating system design and implementation. Introduction to modern operating systems. Understanding
the key differences between object-oriented, modular, layered and systems based on microkernel.
Introduction to the mechanism of concurrent execution and problems in its use. Introduction to
scheduling algorithms. Introduction to the concept of virtual memory, virtual devices and file systems.

Lectures

A role and purpose of operating systems. Basic principles. Abstractions, processes, resources. Kernel
and memory protection. Protected mode of processors. Privilege levels and interrupts in protected mode.
System calls. Multitasking context switch. Task states and preemption. Scheduling algorithms. Examples
of processes and kernels for Unix, Solaris, Linux and Windows. Microkernel architecture. Concept of
files. File systems. Content and structure of folders. Allocating free space. Examples of some file
systems. Memory management. Fixed and dynamic partitions. Paging and segmentation. Paging on
demand and virtual memory. Page swap algorithms. Concurrent execution. Mechanism of mutual
exclusion and synchronization of threads and processes.

Practical classes

Using console – cd, pwd, gcc, make, mount, grep, etc. Compiling Linux system, writing user applications,
disk mounting and testing. C and assembler, using #include and #define, keywords extern and static,
how to write code C assembler together, examples. TTY, fs part of Linux system – pipe, char, file, block.
Keyboard, keyboard interrupt routines, converting scan to ASCII, library functions. Processor’s protected
mode, GDT, LDT, IDT, system calls. Linux boot – reading a diskette, entering protected mode, setting
GDT, LDT and IDT tables. Working with processes and threads – TSS, fork, exec, sched. HDD,
partitions, Minix FS. MMU – paging, interrupts and library functions. Threads – state of race mutual
exclusion. Solving the problems of synchronisation, keys, mutexes and semaphores.