| Introduction and basic concepts. OS’s definition, role, evolution, components, main concepts (file,
process, system calls). Basic hardware aspects: CPU, user and kernel mode, memory layers, I/O
devices. Basic OS structure.
| The Shell (Command Interpreter). Definition, role, functionality, simple and complex commands.
Standard input and output redirection.
| File systems (1). User Perspective. File and directory concept from the user point of view
(definition, role, characteristics, operations).
| File systems (2). Windows and Linux File Systems. Permission rights and system calls.
| File systems (3). Implementation aspects. Implementation strategies overview, space management
and related problems, hard and symbolic links.
| Process management. Process model: definition, role, characteristics. Linux and
Windows process management system calls.
| Thread management. Thread model: user vs. kernel threads, implementation problems, usage,
performance aspects. Basic scheduling algorithms (FIFO, SJF, Priority-based). Linux and Windows
process thread system calls.
| Process synchronization (1). Theoretical aspects. Context, definition, synchronization mechanisms,
techniques and problems (locks, semaphores, monitors, mutual exclusion, starvation, deadlock).
| Process synchronization (2). Classical synchronization patterns: producer/consumer,
readers/writers, rendez-vous, barrier, dining philosopher, sleeping barber. Similarities between
different synchronization mechanisms.
| Inter-process communication. Pipe files, shared memory, message queues, signals.
| Memory management (1). Context, definition, binding, basic techniques, space management,
addresses translation, swapping.
| Memory management (2). Paging and segmentation.
| I/O Devices Management. Principles, disks, clocks, character- oriented terminals.
| Security aspects. Security policies and mechanisms. Basic program's vulnerabilities (buffer
overflow).