Systemy operacyjne Król Tomasz
Struktura systemów komputerowych i operacyjnych
Elementy architektury systemu komputerowego W uproszczeniu, architektura współczesnego komputera uniwersalnego składa się z procesora, urządzeń zewnętrznych, sterowników urządzeń zewnętrznych, pamięci operacyjnej, pamięci podręcznej, sterownika pamięci magistrali systemowej. 3
Elementy architektury systemu komputerowego Dysk Dysk Dysk Klawiatura Mysz Drukarka Sterownik dysków Sterownik urządzeń znakowych Magistrala systemowa Procesor Sterownik pamięci Pamięć operacyjna 4
Elementy architektury systemu komputerowego Dysk Dysk Dysk Klawiatura Mysz Drukarka Sterownik dysków Procesor Sterownik urządzeń znakowych Magistrala systemowa Sterownik pamięci Pamięć operacyjna Każdy sterownik jest odpowiedzialny za określoną grupę urządzeń. Nadzoruje ich pracę i pośredniczy w przesyłaniu informacji z i do urządzeń. Sterownik ma własną pamięć, w której może buforować dane przesyłane do i z urządzeń. 5
Co nam to daje? Wszystkie urządzenia podłączone do magistrali mogą działać równolegle. Swoje działania muszą synchronizować jedynie wówczas, gdy chcą korzystać z magistrali, czyli głównie przy przesyłaniu informacji do i z urządzenia. Taka równoległość zwiększa wydajność systemu! 6
Przerwania Mechanizm przerwań służy informowaniu o zdarzeniach zachodzących w urządzeniach wejścia/wyjścia. Typowe takie zdarzenia to zakończenie zleconej operacji wejścia/wyjścia oraz zdarzenia zewnętrzne, takie jak naciśnięcie klawisza na klawiaturze, ruch myszki, czy otrzymanie przez sieć pakietu danych. W momencie zajścia zdarzenia urządzenie generuje sygnał przerwania. 7
Przerwanie co dalej... W odpowiedzi na sygnał przerwania procesor: przerywa wykonywanie aktualnie wykonywanego ciągu instrukcji zapamiętuje na stosie systemowym adres określający gdzie przerwano wykonywanie instrukcji wykonuje określoną procedurę obsługi przerwania. 8
...po przerwaniu i teraz... Po zakończeniu procedury przerwania następuje powrót do przerwanego ciągu instrukcji. Przypomina to trochę wywołanie procedury, tyle że bodziec do wywołania procedury pochodzi z urządzenia wejścia/wyjścia, a nie z programu. 9
Przerwania... Przerwania powodowane przez urządzenia wejścia/wyjścia są nazywane przerwaniami sprzętowymi. Możliwe jest również programowe wywoływanie przerwań. 10
Skąd to przerwanie? Kto woła? odpytywanie polega na tym, że procedura obsługi przerwania pyta się kolejno wszystkich urządzeń, czy to nie one spowodowały przerwanie; rozwiązanie to jest stosowane wówczas, gdy mamy tylko jeden rodzaj przerwań wektor przerwań w systemie może być wiele rodzajów przerwań, a każdemu rodzajowi odpowiada osobna procedura obsługi; adresy tych procedur są przechowywane w tablicy systemowej nazywanej wektorem przerwań; rozwiązanie to jest bardziej efektywne niż odpytywanie. 11
Jak powinna wyglądać obsługa przerwania? Zwykle procedura obsługi przerwania powinna mieć charakter atomowy, tzn. jej wykonanie nie powinno być przerywane, np. przez inne procedury obsługi przerwań. Nie można jednak zagwarantować, że w trakcie wykonywania procedury obsługi przerwania nie pojawi się żadne przerwanie sprzętowe. 12
Jak powinna wyglądać obsługa przerwania? Problem przerwania w przerwaniu i narastanie stosu. Jak wrócić z tak dużej ilości przerwań? Kiedy sprzęt się powiesi? 13
Przerwanie w przerwaniu TAK! - Istnieje możliwość blokowania przerwań. Jeżeli przerwania są zablokowane, to obsługa pojawiających się przerwań sprzętowych jest odłożona do momentu odblokowania przerwań. Urządzenia zgłaszają flagę o przerwaniu lecz przerwanie nie jest obsłużone do czasu włączenia przerwań. 14
Blokowanie przerwań czy zawsze? Istnieje jednak wyjątek od tej zasady: Niektóre przerwania, tzw. przerwania nieblokowalne (niemaskowalne), sygnalizujące błędy krytyczne dla działania systemu komputerowego nie podlegają blokowaniu. 15
Synchroniczne i asynchroniczne wejścia i wyjścia synchroniczne wykonywanie operacji wejścia/wyjścia asynchroniczne wykonywanie operacji wejścia/wyjścia 16
Co lepsze? Synchroniczne operacje wejścia/wyjścia są łatwiejsze do zaimplementowania, jednak operacje asynchroniczne pozwalają na zwiększenie wydajności systemu. W środowisku wieloprogramowym pozwalają one na równoczesne wykonywanie wielu operacji wejścia/wyjścia i obliczeń. Podobnie, jeżeli zadanie chce wykonać operację wejścia/wyjścia na urządzeniu, które aktualnie jest zajęte wykonywaniem innej operacji, to wykonanie takiego zadania jest wstrzymywane, aż do momentu, gdy dane urządzenie będzie dostępne i zlecona operacja zostanie wykonana. 17
Asynchroniczne wykonywanie operacji We/Wy System operacyjny, który wykonuje operacje wejścia/wyjścia asynchronicznie musi pamiętać informacje o wszystkich wykonywanych i oczekujących operacjach wejścia/wyjścia. Informacje te są przechowywane w tablicy stanów urządzeń. Tablica ta zawiera po jednej pozycji dla każdego urządzenia w systemie. Na pozycję w takiej tablicy składa się opis aktualnego stanu urządzenia oraz kolejka zleceń operacji wejścia/wyjścia. Jeżeli urządzenie nie wykonuje żadnej operacji wejścia/wyjścia, to odpowiadająca mu kolejka jest pusta. W przeciwnym przypadku, pierwsze zlecenie w kolejce odpowiada aktualnie wykonywanej operacji, a kolejne zlecenia odpowiadają operacjom oczekującym na wykonanie. Zlecenia w kolejce zawierają m.in. informacje o zadaniu, od którego pochodzi zlecenie, tak że w momencie wykonania zlecenia system operacyjny wie, które zadanie należy wznowić. 18
Co podczas asynchronicznej operacji zajmuje czas procesora? obsługa tablicy stanów urządzeń zlecenie wykonania operacji sterownikowi urządzenia przesłanie zapisywanych/odczytywanych danych obsługa przerwania kończącego wykonanie operacji 19
Czy zawsze musi robić to procesor? Jeżeli zapisywane/odczytywane są pojedyncze znaki, tak jak w przypadku odczytywania znaków z klawiatury, to takie rozwiązanie jest akceptowalne. Jeśli jednak przesyłane są duże ilości danych, jak to ma miejsce w przypadku zapisu/odczytu z dysku, to procesor musiałby sam kopiować dane z/do pamięci operacyjnej do/z sterownika urządzenia. 20
Czy zawsze musi robić to procesor? A może wspomóc procesor w tych operacjach? Może go w tym wyręczyć układ DMA (bezpośredniego dostępu do pamięci, ang. direct memory access) Procesor może w tym czasie wykonywać obliczenia. 21
Układ DMA Układ DMA do przesyłania informacji potrzebuje oczywiście dostępu do magistrali systemowej. Korzysta z niej jednak w tych chwilach, gdy procesor z niej nie korzysta. 22
Czym jest DMA Direct Memory Access, DMA Technika, w której sprzęt komputerowy podłączony do płyty głównej, np. karta graficzna, karta dźwiękowa, karta sieciowa czy kontroler dysku twardego, mogą korzystać z pamięci operacyjnej RAM lub portów we-wy, pomijając przy tym CPU. 23
Czym jest DMA Praca DMA wymaga niewielkiej współpracy ze strony procesora, który musi zaprogramować kontroler DMA do wykonania odpowiedniego transferu danych, a następnie na czas przesyłania danych zwolnić magistralę systemową. Sam transfer danych jest już zadaniem wyłącznie kontrolera DMA. Realizacja cykli DMA może być przejmowana przez dedykowany układ cyfrowy, tak jak np. w komputerach PC, lub być realizowana programowo przez dane urządzenie. 24
DMA DMA ma za zadanie odciążyć procesor główny od przesyłania danych (np. z urządzenia wejściowego do pamięci). Procesor może w tym czasie zająć się innymi działaniami, wykonując kod programu pobrany uprzednio z pamięci RAM do pamięci podręcznej. Specjalizowane układy wspomagające DMA (np. te spotykane w PC), potrafią kopiować obszary pamięci dużo szybciej niż uczyniłby to programowo procesor główny. 25
Pamięci 26
Pamięć operacyjna Jest ona zbyt mała, aby pomieścić wszystkie informacje, jakie muszą być pamiętane w systemie komputerowym. Jest to pamięć ulotna, tzn. w momencie wyłączenia zasilania jej zawartość znika. 27
Rejestry Procesor przetwarzając informacje zawarte w pamięci operacyjnej przechowuje niektóre dane w rejestrach. Rejestry możemy traktować jak bardzo małą pamięć, do której procesor ma bardzo szybki dostęp. 28
Pamięć podręczna procesora Pamięć podręczna jest szybsza od pamięci operacyjnej, ale jest też od niej mniejsza. Zawiera ona kopię tych obszarów pamięci operacyjnej, z których aktualnie (najczęściej) korzysta procesor. Ponieważ pamięć podręczna dubluje funkcjonalność pamięci operacyjnej, jest ona niewidoczna z programistycznego punktu widzenia. Zastosowanie pamięci podręcznej procesora istotnie polepsza wydajność systemu. 29
Pamięć masowa Większość systemów komputerowych jest wyposażona w masową pamięć trwałą, czyli taką, która nie traci swojej zawartości po odłączeniu zasilania. W pamięci tej przechowywane jest wykorzystywane oprogramowanie, najrozmaitsze dane, jak również programy tworzące system operacyjny. Najczęściej pamięć ta jest zrealizowana w postaci dysków magnetycznych lub dysków SSD, choć możliwe są też inne rozwiązania. 30
Wymienna pamięć masowa Zwykle istnieje też możliwość podłączenia do systemu komputerowego wymiennych nośników pamięci trwałej: dyskietek, taśm magnetycznych (kto jeszcze to pamięta?) dysków CD/DVD Zewnętrznych dysków z interfejsem USB Pamięci Flash USB 31
Wymienna pamięć masowa Wady: Nośniki te są wolniejsze od dysków magnetycznych Zalety: Wymienność Możliwość przenoszenia danych między systemami komputerowymi Niska cena. 32
Dyski magnetyczne 33
Dyski magnetyczne 34
Dyski SSD (Solid State Drive) 35
Historia dysków 4 września 1956 przedsiębiorstwo IBM skonstruowało pierwszy 24-calowy dysk twardy o nazwie RAMAC 350. Miał on pojemność 5 MB. W 1980 przedsiębiorstwo Seagate wprowadziło na rynek pierwszy dysk 5,25", ST-506 o pojemności 5 MB. W 1983 pojawiły się komputery IBM PC/XT z dyskami 5 i 10 MB. W 1986 został opracowany kontroler IDE (integrated drive electronics). W 1987 rozpoczęła się era dysków 3,5 cala. W 2003 dysk twardy w typowym stanowisku pracy mógł zgromadzić od 60 do 500 GB danych, obracać się z prędkością 5400 do 10 000 obrotów na minutę 36
Historia dysków W 2006 dzięki technologii zapisu prostopadłego możliwe jest przetrzymywanie na dysku ponad 1 TB danych. Standardem staje się złącze SATA i SAS oraz technologia optymalizacji odczytu NCQ. Stacje dyskietek zaczęły przegrywać z pamięciami USB do których złącza montuje się z przodu obudowy. W 2008 pojawiły się dyski półprzewodnikowe (SSD). Od marca 2012 na rynku pozostało jedynie trzech producentów dysków twardych: Western Digital, Seagate Technology i Toshiba. 37
Historia dysków W marcu 2017 Western Digital zapowiedział dyski o pojemności od 12 do 14 TB[4]. W grudniu 2018 Seagate zaprezentował dysk o pojemności 16 TB[5] 38
...a potem... Seagate do 2020 roku dostarczy HDD o pojemności 20 TB, 50 TB w ciągu dekady Viking UHC-Silo SSD - dyski SSD o pojemności 25 i 50 TB 39
Hierarchia pamięci w systemie komputerowym Porównując różne rodzaje pamięci w systemie komputerowym można zauważyć, że układają się one w hierarchię: od pamięci szybkich, drogich i niedużych, do pamięci wolniejszych, tanich i masowych. 40 rejestry procesora pamięć podręczna procesora pamięć operacyjna pamięci dyskowe Oczywiście w przypadku konkretnych systemów komputerowych hierarchia ta może być bogatsza.
W obrębie hierarchii pamięci system operacyjny realizuje dwa przeciwstawne mechanizmy: buforowanie pamięć wirtualna. 41
Mechanizm buforowania Zamiast przechowywać aktualnie wykorzystywane informacje w wolniejszej pamięci, przechowuje się je w wydzielonym obszarze szybszej pamięci. Za cenę zużycia części szybszej pamięci zyskujemy na wydajności. Przykłady: buforowanie operacji dyskowych pamięć podręczna procesora. 42
Mechanizm pamięci wirtualnej Część informacji, które powinny być przechowywane w szybszej pamięci, ale nie są w danej chwili używane, są przechowywane w wolniejszej pamięci. Dopiero, gdy są faktycznie potrzebne, są przenoszone do szybszej pamięci. Za cenę pewnego wydłużenia czasu dostępu do informacji zyskujemy złudzenie, że dysponujemy obszerniejszą pamięcią szybką. 43
CO nam to daje razem? Mimo, że mechanizmy te wydają się wzajemnie przeciwstawne, to współdziałają one w efektywniejszym wykorzystaniu systemu. Informacje, które są w danej chwili często wykorzystywane migrują do pamięci szybszych, a te, które w danej chwili nie są potrzebne są spychane do pamięci wolniejszych. 44
Sprzętowe mechanizmy ochrony System operacyjny pełni nie tylko rolę pomocniczą, ale i nadzorczą. Pilnuje, czy każde z zadań korzysta jedynie z tych zasobów, które zostały mu przydzielone i nie szkodzi innym zadaniom. 45
Dualny tryb pracy procesora Polega on na tym, że procesor może pracować w dwóch trybach: systemowym (uprzywilejowanym) i użytkownika (ograniczonym). System operacyjny pracuje w trybie systemowym, a zadania użytkowników w trybie użytkownika. Procesor będąc w trybie systemowym może wykonywać wszystkie instrukcje, natomiast w trybie użytkownika wykonanie pewnych instrukcji jest zabronione. Instrukcje takie nazywamy instrukcjami uprzywilejowanymi. 46
Dualny tryb pracy procesora Jednym ze współdzielonych przez zadania zasobów jest pamięć. Każde zadanie powinno mieć dostęp tylko do przydzielonej mu przez system operacyjny pamięci, a nie powinno mieć dostępu do obszarów pamięci innych zadań, ani do pamięci systemu operacyjnego. 47
Dualny tryb pracy procesora Urządzenia wejścia/wyjścia są również współdzielone przez zadania użytkowników. Nadzór nad ich wykorzystaniem należy do systemu operacyjnego. Instrukcje komunikacji z urządzeniami zewnętrznymi (ich sterownikami) są instrukcjami uprzywilejowanymi. 48
Kolejnym zasobem współdzielonym przez zadania jest sam procesor. Jeżeli zadanie zleci wykonanie operacji wejścia/wyjścia (lub ogólniej, wywoła jakąkolwiek funkcję systemową), to system może wstrzymać jego wykonywanie i przydzielić procesor innemu zadaniu. Jeżeli jednak zadanie jest zajęte wykonywaniem obliczeń, to w jaki sposób można zapobiec zawłaszczeniu przez nie dostępu do procesora? Jest to zrealizowane za pomocą mechanizmu przerwań zegarowych. 49
W systemie komputerowym działa programowalny zegar, który z określoną częstotliwością generuje przerwanie sprzętowe. Jeżeli zadanie powinno przekazać dostęp do procesora innemu zadaniu, to przy okazji najbliższego przerwania zegarowego procedura obsługi przerwania może wstrzymać wykonywanie zadania i uruchomić inne zadanie. Programowanie zegara stanowi instrukcję uprzywilejowaną. 50
Do instrukcji uprzywilejowanych należy też kilka instrukcji, o których nie było tu mowy, np. instrukcja zatrzymania systemu komputerowego halt. 51
Przerwania w systemie operacyjnym Sygnalizują one zakończenie operacji wejścia/wyjścia. Informują o zewnętrznych zdarzeniach i komunikacji docierającej do systemu komputerowego. Przerwania programowe, dzięki temu, że powodują przejście w tryb systemowy, są zwykle wykorzystywane jako forma wywoływania funkcji systemowych. 52
Struktura systemu operacyjnego System operacyjny to duży i bardzo złożony system informatyczny. Systemy takie muszą mieć modularną strukturę, inaczej trudno poradzić sobie z ich złożonością. 53
Struktura systemu operacyjnego W typowym systemie operacyjnym wyróżniamy następujące podsystemy: Podsystem zarządzania procesami Podsystem zarządzania pamięcią Podsystem systemu plików Podsystem wejścia/wyjścia Podsystem pamięci pomocniczej Podsystem usług sieciowych Podsystem ochrony 54
Interpreter poleceń i programy użytkowe W skład systemu operacyjnego wchodzi również interpreter poleceń systemowych, który stanowi dla użytkowników interfejs do wydawania poleceń systemowi operacyjnego. Interpreter poleceń staje się potężnym narzędziem dopiero, gdy korzysta się z niego w połączeniu z rozmaitymi programami użytkowymi dostarczanymi w ramach systemu operacyjnego. 55
Usługi systemu operacyjnego System operacyjny tworzy środowisko udostępniające pewne usługi użytkownikom oraz ich programom. Można powiedzieć, że system operacyjny udostępnia dwa interfejsy: 1. Przeznaczony dla programów użytkowników, tworzą funkcje systemowe. 2. Przeznaczony dla użytkowników, tworzą programy systemowe oraz systemowy interfejs użytkownika. 56
Usługi systemu operacyjnego Uruchamianie programów Operacje wejścia/wyjścia Operacje na systemie plików Przydzielanie zasobów Komunikacja Ochrona Wykrywanie błędów Rozliczenia 57
Funkcje systemowe Programy użytkowników mają dostęp do usług systemu operacyjnego poprzez tzw. funkcje systemowe. Funkcje te są widoczne w języku programowania podobnie jak funkcje z tego języka, a ich konkretny mechanizm wywoływania jest ukryty przed programistą. 58
Grupowanie funkcji systemowych Funkcje udostępniane przez system operacyjny możemy pogrupować w następujący sposób: operacje na procesach operacje na plikach operacje na urządzeniach informacje systemowe komunikacja 59
Programy systemowe Programy systemowe są to programy rozprowadzane razem z systemem, które umożliwiają użytkownikowi dostęp do pewnych usług systemowych. 60
Kategorie programów systemowych Operacje na plikach Tworzenie i modyfikacja plików Kompilatory i interpretery Uruchamianie programów Komunikacja Informacje systemowe 61
Struktura systemu System operacyjny, to bardzo złożony system informatyczny. Musi on mieć odpowiednią strukturę, tak aby jego zadania mogły być podzielone na mniejsze moduły o dobrze określonej funkcjonalności i interfejsach. Niestety nie zawsze tak jest. Czasami systemy operacyjne powstawały jako niewielkie systemy o ograniczonej funkcjonalności, pozbawione właściwej struktury, a z czasem rozrastały się do systemów operacyjnych, ciągnąc ze sobą bagaż złych decyzji projektowych. 62
Jak nie tworzyć systemu operacyjnego? Przykładem takiego systemu może być MS-DOS. Można w nim wyróżnić cztery moduły: BIOS (ang. basic input-output system) -- moduły obsługi urządzeń zapisane w pamięci stałej ROM (ściśle rzecz biorąc nie wchodzą one w skład MS-DOS, lecz są przezeń wykorzystywane). Moduł obsługi urządzeń. Rezydentna część systemu i programy rezydentne. Interpreter poleceń i programy użytkownika. 63
Jak można zrobić to inaczej? System Unix ma inną strukturę. Składa się on z jądra i programów systemowych. Programy systemowe znajdują się powyżej interfejsu funkcji systemowych, a jądro poniżej tego interfejsu. 64
Unix 1.Użytkownicy 2. Programy użytkowe 3. Interpreter poleceń, programy systemowe, biblioteki systemowe 4. Jądro 5. Interfejs funkcji systemowych 6. Podsystem plików, Komunikacja międzyprocesowa, Buforowanie, Szeregowanie procesów, Obsługa urządzeń, Zarządzanie pamięcią 7. Interfejs sterowania urządzeniami 8. Urządzenia 65
Podsumowanie asynchroniczne operacje wejścia/wyjścia blokowanie przerwań dualny tryb pracy procesora funkcje systemowe 66
Podsumowanie mikrojądro odpytywanie procedura obsługi przerwania pamięć operacyjna 67
Podsumowanie pamięć trwała pamięć ulotna przerwanie przerwanie programowe przerwanie sprzętowe 68
Podsumowanie przerwanie zegarowe synchroniczne operacje wejścia/wyjścia tablica stanów urządzeń układ DMA wektor przerwań 69
Podsumowanie 70