Cílem předmětu je seznámit studenty se základními principy fungování počítačových systémů z pohledu
programátora. Za tímto účelem předmět pokrývá témata zabývající se numerickou reprezentací dat, architekturou
počítače a instrukčními sadami, komunikací s vnějšími zařízeními a různým technologiím ukládání dat. Na to
navazuje část věnovaná operačním systémům, jejímž cílem je seznámit studenty se základními koncepty jako
jsou procesy, vlákna, systémová volání, správa paměti a souborů, se zaměřením na rozhraní poskytovaná
operačním systémem.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)
The goal of the course is to introduce the basic principles of computer systems fro the developer point of view. The
course covers topics in numeric data representation, computer architecture, intructions sets,
communication with external devices and data storage technologies. Further, basic concepts of operatong systems
are introduced, such as processes, threads, syscalls, memory and file management. The course also focuses on
API provided by operating systems.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)
Literatura -
Patterson, D. A., Henessy, J. L. Computer Organization and Design: The Hardware/Software Interface. 4th edition, Morgan Kaufmann, 2008. ISBN 978-0123744937
Tannenbaum, A. Modern Operating Systems. 2nd edition, Prentice Hall, 2001. ISBN 978-0130313584
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)
Patterson, D. A., Henessy, J. L. Computer Organization and Design: The Hardware/Software Interface. 4th edition, Morgan Kaufmann, 2008. ISBN 978-0123744937
Tannenbaum, A. Modern Operating Systems. 2nd edition, Prentice Hall, 2001. ISBN 978-0130313584
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)
Sylabus -
Reprezentace numerických dat, aritmetické operace s přirozenými a celými čísly, reprezentace čísel a aritmetické operace v plovoucí řádové čárce, rozrah, přesnost a chyby reprezentace v plovoucí řádové čárce.
Vztah architektury počítače, procesoru a mikroarchitektury. Typy instrukcí a operandů, adresace paměti, load/store a memory-to-register architektury, zpracování instrukcí a řízení běhu programu, mechanizmy volání a návratu z podprogramů, předávání parametrů a lokální proměnné.
Rozhraní pro komunikaci s vnějšími zařízeními, podpora pro přerušení a jejich obsluhu, přenos dat, sběrnicové propojovací systémy, protokoly, arbitrace, moderní sběrnice.
Technologie pamětí, dočasné a permanentní paměti, paměťová hierarchie, latence, propustnost, kapacita.
Role operačního systému, typické funkce poskytované OS, koncept víceuživatelských a víceprogramových OS.
Logické vrstvy a abstrakce, správa zařízení a výpočetních prostředků, obsluha přerušení. Uživatelský a chráněný režim a přechod mezi nimi, systémová volání, aplikační rozhraní pro uživatelské programy.
Procesy, vlákna, přepínání kontextu, multitasking, plánování. Časově závislé chyby, kritické sekce, vzájemné vyloučení. Základní synchronizační úlohy a primitiva. Zablokování, přičiny a podmínky vzniku, prevence.
Správa a přidělování paměti, virtualizace paměti stránkováním, stránkovací tabulky, výpadky stránky a jejich obsluha, algoritmy pro výměnu stránek.
Soubory, data a metadata, operace a rozhraní pro přístup k souborům, adresářů a jejich obsah a struktura, základní techniky uspořádání dat na disku.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)
Data representation, integer arithmetic operations, floating point representation and arithmetics, range, accuracy and errors in floating point representation.
Instruction set architecture, CPU and its micro-architecture. Instructions and operands, memory addressing, load/store and memory-to-register architectures, instruction execution and control flow, implementation of subroutines, parameter passing, and local variables.
The hardware/software interface, interrupt handling, data transfers, bus interconnects, protocols, arbitration, contemporary bus technologies.
Memory technologies, volatile and persistent memory, memory hierarchy, fundamental metrics (latency, throughtput, capacity).
The role of the operating system, typical services provided by an OS, multi-user and multi-programming OS.
Software stack layers and abstractions, device and resource management, interrupt handling. User mode, kernel mode, mode transitions, system calls, API for user mode applications.
Processes, threads, context switching, multitasking, scheduling. Race conditions, critical sections, mutual exclusion. Fundamental synchronization tasks and primitives. Deadlock, conditions leading to deadlock, detection and prevention.
Memory management, virtualization by paging, page tables, page faults and page fault handling, page replacement policies and algorithsm.
Filesystems, file data and metadata, interface for accessing files and directories, fundamental on-disk data layouts.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (27.05.2019)