Operating Systems

B232 - Summer 23/24
This course is not present in Moodle. You can visit its homepage by clicking the "Course page (outside Moodle)" button on the right (if available).

Operating Systems - B4B35OSY

Credits 4
Semesters Winter
Completion Assessment + Examination
Language of teaching Czech
Extent of teaching 2P+2C
Annotation
Lecture introduces operation system's basic concepts and principles as processes, threads, communication and synchronization, virtual memory, drivers, file systems, basic security aspects. These topics are theoretically described and demonstrated on Linux and Windows OS with multi-core systems. Practical exercises from OS in C programming language will be solved on labs. Students will work with Linux OS and micro-kernel NOVA.
Course outlines
1. Computer architecture, OS history and types, OS components.
2. Interrupt and exception handling. System calls.
3. Processes, threads, context switch, scheduling, local vs. global scheduling, processor affinity.
4. Process synchronization, synchronization errors, shared resources (non-preemptive sections, semaphore, mutex, spin-lock, Java synchronize), deadlock.
5. Interprocess synchronization (signal, pipe, message passing)
6. Virtual memory, page fault, swapping, copy-on-write, process start, relocation, dynamic libraries.
7. Memory management, memory allocation (in OS kernel, in user space, heap).
8. Security, trusted computing base, buffer overflow, ASLR, antiviry, encryption.
9. Input/output, data storage, network interfaces, USB, HID, drivers (Linux, Win).
10. File systems, journalling, data integrity, disc cache.
11. Graphic subsystem, frame buffer, HW acceleration, parallel computationy.
12.Virtualization.
13. OS trends, mobile OS (Android)
14.
Exercises outlines
1. Introduction, shell, programming in C, makefile - programming test
2. shell, scripts.
3. System calls, Linux (assembler, C)
4. System calls, micro-kernel NOVA
5. Synchronization in C - exercise threads synchronization (Linux)
6. IPC exercise (pipe synchronization, signal handling, Linux)
7. ELF loading and starting (NOVA)
8. Thread switch (NOVA)
9. Semaphore, pre-emptive multitasking (NOVA)
10. Security, buffer overflow exploit (Linux)
11. Memory allocation (heap, Linux)
12. File system implementation (NOVA)
13. File system submission.
Literature
1. TANENBAUM, Andrew S a Albert S WOODHULL. Operating systems design and implementation. 3rd ed. Upper Saddle River: Prentice-Hall, c2006, xvii, 1054 s. ISBN 0131429388.
2. http://wiki.osdev.org/
3. http://hypervisor.org/
Requirements
C programming
computer architecture