Operating systems
General data
Course ID: | 1000-213bSOP |
Erasmus code / ISCED: |
11.302
|
Course title: | Operating systems |
Name in Polish: | Systemy operacyjne |
Organizational unit: | Faculty of Mathematics, Informatics, and Mechanics |
Course groups: |
Obligatory courses for 2nd grade JSIM (3I+4M) |
ECTS credit allocation (and other scores): |
(not available)
|
Language: | Polish |
Type of course: | obligatory courses |
Requirements: | Computer and network architecture 1000-212bAKS |
Short description: |
The goal of these classes is to present construction and principles of operation of modern computers as well as to demonstrate the role and goals of operating system in programming of a computer, in realization of algorithms, data structures and their implementations. The techniques that make it possible to manage basic hardware resources of a computer (processor, operating and virtual memory, input-output devices) are described and their impact on system performance as a whole is discussed. |
Full description: |
*** Lecture: * Computer architecture: + computer architecture and computer organization; + von Neumann model (SISD - single instruction single data); + Harvard and Princeton architectures; + parallelization: the superscalar architecture, the vector architecture (SIMD-single instruction multiple data), the very long instruction word architecture, explicit parallel instruction computing; + parallelization and memory access, multiprocessor and multi-core architectures (MIMD-multiple instruction multiple data): SMP, NUMA, COMA. * The microprocessor from the inside: + registers, instruction set, addressing modes; + CISC and RISC; + application binary interface (ABI) demonstrated by the 64-bit ABI used in Linux for Intel64 and AMD64 architectures and by ARM EABI; + instruction cycle, processor cycle, clock cycle; + instruction pipelining. * The microprocessor and the outside world: + interrupt handling, exceptions; + hardware support for operating systems; + protection levels, system calls, memory segmentation and paging; + input-output handling; + DMA. * Memory hierarchy: + non-volatile memory: ROM, EEPROM, Flash; + random-access volatile memory (RAM): static (SRAM), asynchronous dynamic (DRAM), synchronous dynamic (SDRAM, DDR-RAM); + cache memory; + mass storage: magnetic discs, optical discs, opto-magnetic discs; + disk arrays. * Introduction to operating systems: operating system tasks, schematic view, system functions. * Processes: the notion of a process, operation modes, states and transitions, context switch, kernel level synchronization. * Process scheduling. * Memory management: an address space of a process, addressing, memory allocation strategies, virtual memory. * The file system: the notion of a file, the logical and the physical file system, example implementations of file systems. * The input/output subsystem: block and character devices, dashboards, special files, disc structure and request scheduling. * Virtualization. *** Laboratory: The main assignment involves writing a program that consists of a module written in C and a module written in the assembly language. The assignment illustrates the way a function in the assembly language should be written so that it can be called from the C programming language as well as the way a system functions can be called from the assembly language (illustration of ABI that described during the lectures). The assembly language functions should compute and use memory extensively so that, by different values of parameters, it is possible to observe the existence of memory hierarchy. The laboratory also covers the following topics: * Administration basics: system installation and configuration, software installation, system logs, system booting process, access control mechanisms, shell and shell scripts, virtual platforms. * Process management: process control, signals, overview of process synchronization and communications mechanisms. * System functions: the mechanism of system function calls, adding of new system functions to an operating system. * Process scheduling: analysis and modification of the process scheduling algorithm. * Memory management. * Input/output subsystem: creation of device drivers. * File systems. * Security of the operating system. * Shell. * Preparation of software packages. |
Bibliography: |
A. Silberschatz, P. Galvin, G. Gagne, Podstawy systemów operacyjnych D.P. Bovet, M. Ceasti, Linux Kernel R. Love, Linux Kernel Development W. Richard Stevens, Programowanie w środowisku systemu UNIX A. S. Tanenbaum, A. S. Woodhull, Operating Systems Design and Implementation, 3rd Edition W. Stallings, Organizacja i architektura systemu komputerowego D. A. Patterson, J. L. Hennessy, Computer Organization and Design , 5th Edition: The Hardware/Software Interface D. A. Patterson, J. L. Hennessy, Computer Organization and Design , 5th Edition: A Quantitative Approach |
Learning outcomes: |
(in Polish) Wiedza: ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie programowania, algorytmów i złożoności, architektury systemów komputerowych, systemów operacyjnych, technologii sieciowych, języków i paradygmatów programowania, baz danych, inżynierii oprogramowania (K_W02); ma podstawową wiedzę na temat architektury współczesnych systemów (logika układów cyfrowych i reprezentacja danych, architektura procesora, wejście - wyjście, pamięć, architektury wieloprocesorowe) (K_W06); zna zasady działania systemów operacyjnych ze szczególnym uwzględnieniem procesów, współbieżności, szeregowania zadań i zarządzania pamięcią (K_W07). Umiejętności: potrafi pisać, uruchamiać i testować programy w wybranym środowisku programistycznym (K_U05); rozumie niskopoziomowe zasady wykonywania programów (K_U08); posługuje się przyjętymi formatami reprezentacji różnego rodzaju danych (liczby, tablice, struktury, tekst), pamiętają c o ich ograniczeniach, np. związanych z arytmetyką komputera (K_09); potrafi skonfigurować wybrany system operacyjny oraz nim administrować, w tym instalować potrzebne oprogramowanie (K_U10); potrafi wyjaśnić na czym polega zarządzanie pamięcią w systemach operacyjnych, co to jest hierarchia pamięci, co to jest pamięć wirtualna (K_U12); potrafi ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych oraz wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych (K_U22) |
Copyright by University of Warsaw.