Systemy operacyjne
Informacje ogólne
Kod przedmiotu: | 1000-214bSOB |
Kod Erasmus / ISCED: |
11.3
|
Nazwa przedmiotu: | Systemy operacyjne |
Jednostka: | Wydział Matematyki, Informatyki i Mechaniki |
Grupy: |
Przedmioty obowiązkowe dla II roku informatyki Przedmioty obowiązkowe dla II roku JSIM - wariant 3I+4M Przedmioty obowiązkowe dla III roku JSIM - wariant 3M+4I |
Punkty ECTS i inne: |
5.50
|
Język prowadzenia: | polski |
Rodzaj przedmiotu: | obowiązkowe |
Skrócony opis: |
Celem zajęć jest przedstawienie budowy i zasady działania współczesnych komputerów, roli i zadań systemu operacyjnego w oprogramowaniu komputera oraz omówienie zagadnień realizacji algorytmów, struktur danych i ich implementacji. Prezentowane są techniki zarządzania podstawowymi zasobami sprzętowymi komputera: procesorem, pamięcią operacyjną oraz wirtualną i urządzeniami wejścia - wyjścia oraz ich wpływ na efektywność funkcjonowania systemu jako całości. |
Pełny opis: |
*** 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 magn etyczne, dyski optyczne, dyski magnetyczno-optyczne; + 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 szeregowanie żą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. * 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 po dprogramów obsługi urządzeń. * Systemy plików. * Bezpieczeństwo systemu operacyjnego * Interpreter poleceń * Tworzenie pakietów z oprogramowaniem |
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 |
Efekty uczenia się: |
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); - w stopniu zaawansowanym 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; - potrafi skonfigurować wybrany system operacyjny oraz nim administrować, w tym instalować potrzebne oprogramowanie; - 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_U11); - 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_U18). |
Metody i kryteria oceniania: |
Zaliczenie laboratorium polega na rozwiązaniu pięciu małych zadań programistycznych, obejmujących kolejne porcje przerabianego materiału. Każde zadanie oceniane jest w skali od 0 do 5 punktów. Aby uzyskać zaliczenie, należy zebrać minimum 12,5 punktu. Zaliczenie laboratorium w sesji poprawkowej polega na rozwiązaniu dodatkowego zadania programistycznego, ocenianego w skali od 0 do 10 punktów. Ocena za to zadanie zastępuje dwa najgorzej ocenione małe zadania, a do uzyskania zaliczenia trzeba, jak w pierwszym terminie, uzyskać w sumie minimum 12,5 punktu. Egzamin pisemny składa się z części testowej i części z zadaniami. Jest oceniany w skali od 0 do 25 punktów. Warunkiem dopuszczenia do egzaminu jest zaliczenie laboratorium. Ocena końcowa jest wystawiana na podstawie sumy punktów uzyskanych z zadań laboratoryjnych i egzaminu. |
Zajęcia w cyklu "Semestr letni 2022/23" (w trakcie)
Okres: | 2023-02-20 - 2023-06-18 |
![]() |
Typ zajęć: |
Laboratorium, 30 godzin
Wykład, 30 godzin
|
|
Koordynatorzy: | Marcin Peczarski | |
Prowadzący grup: | Marcin Engel, Bartłomiej Kozaryna, Marcin Peczarski, Wojciech Przybyszewski, Michał Smolarek, Adam Wiktor, Artur Zaroda | |
Lista studentów: | (nie masz dostępu) | |
Zaliczenie: | Egzamin |
Właścicielem praw autorskich jest Uniwersytet Warszawski.