Systemy operacyjne 1000-213bSOP
*** Wykład:
* Architektura komputera:
+ architektura a organizacja komputera;
+ model von Neumanna (SISD-single instruction single data);
+ architektury Harward i Princeton;
+ zrównoleglanie: architektura superskalarna, architektura wektorowa (SIMD-single instruction multiple data), architektura z bardzo długim słowem instrukcji (VLIW
-very long instruction word), architektura z jawnie równoczesnymi instrukcjami (EPIC-explicit parallel instruction computing);
+ zrównoleglanie a dostęp do pamięci, architektury wieloprocesorowe i wielordzeniowe (MIMD-multiple instruction multiple data):
SMP, NUMA, COMA;
* Mikroprocesor od wewnątrz:
+ rejestry, lista instrukcji, tryby adresowania argumentów;
+ CISC a RISC;
+ interfejs binarny aplikacji (ABI) na przykładzie 64-bitowego ABI wykorzystywanego w Linuksie na architekturach Intel64 i AMD64 oraz ARM EABI;
+ cykl rozkazowy, cykl procesora, cykl zegara;
+ przetwarzanie potokowe.
* Mikroprocesor w interakcji ze światem zewnętrznym:
+ system przerwań, wyjątki;
+ sprzętowe wsparcie dla systemów operacyjnych;
+ poziomy ochrony,
+ wywoływanie usług systemowych,
+ segmentacja i stronicowanie;
+ obsługa wejścia-wyjścia;
+ DMA.
* Hierarchia pamięci:
+ pamięci nieulotne: ROM, EEPROM, Flash;
+ pamięci ulotne o dostępie swobodnym (RAM): statyczne (SRAM), dynamiczne asynchroniczne (DRAM), dynamiczne synchroniczne (SDRAM, DDR-RAM);
+ pamięci podręczne;
+ pamięci masowe: dyski magnetyczne, dyski optyczne, dyski magnetycznooptyczne;
+ macierze dyskowe.
* Wprowadzenie do systemów operacyjnych: zadania systemu operacyjnego, budowa systemu operacyjnego, funkcje systemowe.
* Struktura procesów: pojęcie procesu, tryby pracy, stany procesów i przejścia między nimi, zmiana kontekstu, synchronizacja na poziomie jądra.
* Szeregowanie procesów.
* Zarządzanie pamięcią: przestrzeń adresowa procesu, adresowanie, strategie przydziału pamięci, pamięć wirtualna.
* Systemy plików: koncepcja pliku, realizacja systemu plików warstwy logicznej i fizycznej, przykłady konkretnych implementacji.
* Podsystem wejścia-wyjścia: urządzenia blokowe i znakowe, tablice rozdzielcze, pliki specjalne, struktura dysku i szereg owanie żądań.
* Wirtualizacja
*** Laboratorium:
Zadanie zaliczeniowe polegające na napisaniu programu, który składałby się z modułu napisanego w języku C i modułu napisanego w asemblerze.
Zadanie ma ilustrować, jak napisać w asemblerze funkcję, którą można wywołać z języka C, jak z poziomu asemblera wywoływać funkcje napisane w języku C, jak z poziomu asemblera wywoływać funkcje systemowe (ilustracja ABI, które powinno być omówione na wykładzie). Procedury asemblerowe powinny wykonywać jakieś zaawansowane obliczenia i korzystać intensywnie z pamięci, dzięki czemu pomiary czasu ich wykonywania dla różnych wartości parametrów powinny ujawnić istnienie hierarchii pamięci.
Dodatkowo laboratorium przedstawia materiał z następujących tematów:
* Podstawy administracji: instalowanie i konfigurowanie systemu, instalowanie oprogramowania, dzienniki systemowe, proces uruchamiania systemu, mechanizmy kontroli dostępu, powłoka i skrypty powłoki, platformy wirtualne.
* Zarządzanie procesami: kontrolowanie procesów, sygnały, przegląd mechanizmów synchronizacji i komunikacji międzyprocesowej.
* Funkcje systemowe: mechanizm wywoływania funkcji systemowych, dodawanie nowych funkcji do systemu operacyjnego.
* Szeregowanie procesów: analiza i zmiana algorytmu szeregowania procesów.
* Zarządzanie pamięcią.
* Podsystem wejścia-wyjścia: tworzenie podprogramów obsługi urządzeń.
* Systemy plików.
* Bezpieczeństwo systemu operacyjnego
* Interpreter poleceń
* Tworzenie pakietów z oprogramowaniem
Rodzaj przedmiotu
Wymagania (lista przedmiotów)
Efekty kształcenia
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)
Literatura
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
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: