System operacyjny - program działający jako pośrednik między użytkownikiem komputera a sprzętem komputerowym.
Zadaniem systemu op. jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób: wygodny i wydajny.
System komputerowy:
- sprzęt (procesor, pamięć, urządzenia we/wy) - podstawowe zasoby systemu komputerowego
- system operacyjny - nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe pracujące na zlecenie różnych użytkowników
- programy użytkowe (kompilatory, systemy baz danych, gry itd.) - określają sposoby użycia zasobów systemu komputerowego do rozwiązywania zadań stawianych przez użytkowników
- użytkownicy (ludzie, maszyny, inne komputery)
System operacyjny - dostarcza środków do właściwego użycia zasobów (tj. sprzętu, oprogramowania, danych) działających w danym systemie komputerowym, sam nic użytecznego nie robi, tworzy środowisko (tak jak rząd)
System operacyjny - dystrybutor zasobów, przydziela, co trzeba, rozwiązuje konflikty zamówień.
System operacyjny - program sterujący: nadzoruje działanie programów użytkownika, przeciwdziała błędom, zapobiega niewłaściwemu użyciu komputera, zwłaszcza obsługuje i kontroluje pracę urządzeń we/wy.
Co jest częścią systemu operacyjnego?
1. to co sprzedaje dostawca jako system operacyjny
2. to co działa w komputerze nieustannie (jądro), reszta to programy usługowe
Historia.
0. Na początku był tylko sprzęt - programista = operator, harmonogramy pracy
1. Rozwój i upowszechnienie sprzętu i programów (asemblery, loadery, linkery), podprogramy we/wy, biblioteki
2. Kompilatory (łatwiejsze pisanie programów, więcej z uruchamianiem) - czas instalowania taśmy z programami --> przestoje.
3. Zawodowi operatorzy / programiści, gromadzenie zadań na wsad. Operator sortował zadania. System operacyjny bardzo prosty - automatycznie przekazywał sterowanie od jednego do drugiego zadania, stale rezydował w pamięci. Ale nie wiadomo, czy program skończył się z błędem czy dobrze.
4. Automatyczne porządkowanie zadań --> monitor rezydujący, karty sterujące (dyrektywy dla monitora), interpreter kart sterujących
5. Praca pośrednia - wolne czytniki kart, drukarki - procesor 90% czasu czeka --> zastąpić taśmą magnetyczną (specjalny sprzęt, przetwarzanie satelickie) > szybciej wszystko działa, nie trzeba zmian w programach (tylko w procedurach obsługi urządzeń) --> niezależność od urządzeń fizycznych, urządzenia logiczne.
6. Buforowanie i spooling - dyski, we/wy jednego zadania, obliczenia innego, stale procesor ma coś do roboty, bo przygotowane zadania już czekają pula zadań planowanie zadań tak, aby jak najefektywniej.
8. Wieloprogramowość - system operacyjny wybiera i zaczyna robić 1 zadanie z puli, konieczna przerwa (założyć taśmę, znak z klawiatury itd.) --> system operacyjny zamiast bezczynnie czekać, robi 2 zadanie itd.; przechowywanie jednoczesne wielu zadań w pamięci, planowanie przydziału procesora system decyduje o kolejności wykonywania, pilnowanie żeby zadania sobie wzajemnie nie przeszkadzały
9. Podział czasu - wielozadaniowość: procesor wykonuje na przemian wiele różnych zadań, przy czym przełączenia następują tak często, że użytkownicy mogą współdziałać z każdym programem jednocześnie (początki już rok 1960); system plików dostępny bezpośrednio, katalogi; współbieżność, czas odpowiedzi, pamięć wirtualna
10. Systemy operacyjne jednostanowiskowe - PC: niepotrzebna ochrona plików, jednozadaniowe, efektywne wykorzystanie procesora nieistotne ale takie podejście to przeszłość, dzisiaj tak jak w dużych maszynach.
11. Systemy równoległe - ileś procesorów ściśle współpracuje (wspólna szyna, pamięć, zegar). Po co? Aby większa przepustowość (ale nie proporcjonalnie!), oszczędzanie na peryferiach, większa niezawodność (łagodna degradacja systemy tolerujące awarie fault-tolerant, np. po 2); model wieloprzetwarzania symetrycznego / asymetrycznego wynikający ze sprzętu lub oprogramowania; przerzucanie wielu funkcji systemowych na podporządkowany systemowi operacyjnemu sprzęt mikroprocesorowy (np. sterownik macierzy dyskowej, klawiatury).
12. Systemy rozproszone: luźno powiązane --> rozproszone (distributed systems): własna pamięć, komunikacja między węzłami / stanowiskami / komputerami.
Po co systemy rozproszone?
- podział zasobów (drukarka przy jednym komp., pliki na dysku drugiego)
- przyspieszenie obliczeń (dzielenie obciążeń) (load sharing)
- niezawodność - komunikacja
13. Systemy czasu rzeczywistego (real time)- komputer jako sterownik (elektroniczny wtrysk paliwa, broń):
- rygorystyczny system czasu rzeczywistego (dane z ROMu, nie mają cech współczesnych systemów operacyjnych: np. bez pamięci wirtualnej)
- łagodny system czasu rzeczywistego - krytyczne zadanie do obsługi w czasie rzeczywistym otrzymuje pierwszeństwo
Po włączeniu: wykonanie wstępnego programu (bootstrap program) określenie stanu początkowego wszelkich elementów systemu, załadowanie jądra systemu operacyjnego, init, czeka na zdarzenia, które są sygnalizowane przez przerwania (interrupt). Po przerwaniu procesor wstrzymuje aktualnie wykonywaną operację i przechodzi do obsługi przerwania, po czym wraca.
Wektor przerwań (interrupt vector) - tablica adresów obsługi przerwań od różnych urządzeń indeksowana numerem urządzenia - numerem przerwania, bo trzeba je szybko obsługiwać. Adres powrotny dawniej był przechowywany w ustalonej komórce, dzisiaj na stosie systemowym. Zwykle podczas obsługi przerwania inne są wyłączone, nowsze pozwalają na ustalenie priorytetów i obsługę ważniejszego (przerwanie obsługi mniej ważnego przerwania)
Gdy nie ma żadnych zadań, żadne urządzenia we/wy nie czekają na obsługę, nie ma żądań użytkowników, to system operacyjny czeka na jakieś zdarzenie (sygnalizowane przez przerwanie lub pułapkę (wyjątek - rodzaj przerwania generowany przez oprogramowanie , spowodowane przez błąd (dzielenie przez 0, próba niewłaściwego dostępu do pamięci) lub specjalne zamówienie z programu użytkownika do systemu operacyjnego system operacyjny jest sterowany zdarzeniami. Po wykryciu przerwania (pułapki) sprzęt przekazuje sterowanie do systemu operacyjnego. Ten najpierw przechowuje bieżący stan procesora (rejestry, licznik rozkazów), ustala rodzaj przerwania (np. przez odpytywanie).
Dualny tryb pracy:
Wieloprogramowość lepsze wykorzystanie / problemy:
Bo gdy działał 1 program, posypał się, to szkodził tylko sobie; teraz może szkodzić innym programom konieczna ochrona! Jest ona realizowana przez sprzęt: gdy jest próba niedozwolonej operacji, to program wpada w pułapkę przejście do systemu operacyjnego (usunięcie tego programu). Ale trzeba wykrywać wszystkie błędy ochrona musi obejmować wszystkie zasoby dzielone rozróżnianie różnych trybów pracy: co najmniej: tryb użytkownika/tryb monitora. (rozróżnianie przez tzw. bit trybu). Przy wystąpieniu przerwania (pułapki) sprzęt zmienia tryb pracy z trybu użytkownika na monitora gdy system operacyjny pracuje, jest w trybie monitora (przed powrotem zmienia na tryb użytkownika). Uzupełnienie: oznaczenie potencjalnie niebezpiecznych rozkazów jako uprzywilejowanych (wykonywanych tylko w trybie monitora).
Ochrona we/wy wszystkie operacje we/wy są uprzywilejowane.
Ochrona sprzętowa:
pamięć wektora przerwań
systemowe procedury obsługi przerwań
pamięć kodu i danych systemu operacyjnego
pamięć innych procesów
zabezpieczenie przed nieskończoną pętlą
rozkazy uprzywilejowane
Ad. 1-4. rozstrzyganie o zakresie dopuszczalnych adresów programu rejestry: bazowy i graniczny
Realizacja przez porównanie każdego adresu wygenerowanego w trybie użytkownika z zawartością tych rejestrów. Gdy poza nimi pułapka. Zawartości tych rejestrów mogą być określane przez system operacyjny przy użyciu uprzywilejowanych rozkazów ( w trybie monitora).
System operacyjny ma nieograniczony dostęp do pamięci (swojej i innych procesów może ładować programy itd.).
Ad.5. Zastosowanie czasomierza zabezpiecza okresowe przekazanie sterowania (przez przerwanie zegarowe) do systemu operacyjnego, który decyduje, co dalej?
Jak program użytkownika może wykonać operację we/wy?
Proces zwraca się do systemu, aby monitor wykonał tę operację za niego (odwołanie do systemu)traktowane przez sprzęt jak przerwanie programowe. System sprawdza poprawność odwołania (parametry za pomocą rejestrów lub pamięci), jeśli OK., to robi i przekazuje sterowanie w powrotem do programu użytkownika.
System operacyjny tworzy środowisko do wykonywania programów; aby je skonstruować, dzieli się go logicznie na małe moduły i tworzy dobrze określony interfejs (we, wy, funkcje) z wykonywanymi programami.
Składowe systemu:
zarządzanie procesami (proces = program, który jest wykonywany: zadanie systemowe, program użytkownika...) - proces musi korzystać z zasobów (czas procesora, pamięć, pliki, we/wy), otrzymuje je w chwili jego utworzenia lub dynamicznie, może też dostać dane początkowe; programpasywny, proces aktywny, licznik rozkazów określa następną instrukcję, wykonanie sekwencyjne (co najwyżej jedna instrukcja na raz), z jednym programem może być związanych kilka procesów; proces - jednostka pracy w systemie system = zbiór procesów systemu operacyjnego + procesy użytkownika; zadania:
- tworzenie i usuwanie procesów (użytkowych, systemowych)
- wstrzymywanie i wznawianie procesów
- dostarczanie mechanizmów synchronizacji procesów
- dostarczanie mechanizmów komunikacji procesów
- dostarczanie mechanizmów obsługi blokad
Zarządzanie pamięcią operacyjną (pamięć - wielka tablica słów / bajtów, której każdy element ma przypisany adres): magazyn danych szybko dostępnych przez procesor i urządzenia we/wy; procesor tylko do pamięci operacyjnej ma dostęp bezpośredni - aby wykonać program, trzeba go zaadresować adresami bezwzględnymi (rozkazy i dane muszą tak być adresowane) i załadować do pamięci, po wykonaniu oznaczenie tego miejsca jako wolne; gdy chcemy szybciej, efektywniej działać z kilkoma programami "na raz" - kilka programów powinno być w pamięci (są różne sposoby zarządzania pamięcią); zadania:
- utrzymywanie ewidencji aktualnie zajętych części pamięci (czyje one są)
- decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów pamięci
- przydzielanie i zwalnianie obszarów pamięci stosownie do potrzeb
Zarządzanie pamięcią pomocniczą (dyski, taśmy, dyskietki, CD itd): pamięć operacyjna jest za mała, żeby wszystko, co potrzebne w niej trzymać; zadania:
- zarządzanie obszarami wolnymi
- przydzielanie pamięci
- planowanie przydziałów obszarów pamięci dyskowej
Zarządzanie systemem we/wy (celem systemu operacyjnego jest też ukrywanie przed użytkownikami szczegółów dot. specyfiki urządzeń we/wy); system we/wy (ukrywa osobliwości przed większością systemu operacyjnego) składa się z:
- systemu buforowo -notatnikowego
- ogólnego interfejsu do programów obsługi urządzeń sprzętowych
- programów obsługi poszczególnych urządzeń sprzętowych
Zarządzanie plikami - najbardziej widoczne (dla wygody tworzy się logicznie jednolity obraz magazynowanej informacji - definiowanie plików jako jednostek informacji niezależnie od fizycznych właściwości urządzeń - zatem obsługa wzajemnych odwzorowań; różne typy i zawartości plików, organizacja w katalogi, prawa i historia dostępu; zadania:
- tworzenie i usuwanie plików
- tworzenie i usuwanie katalogów
- dostarczanie elementarnych operacji do manipulacji plikami i katalogami
- odwzorowywanie plików na obszary pamięci pomocniczej
składowanie plików na trwałych nośnikach informacji
System ochrony: procesy muszą być chronione przed wzajemnym oddziaływaniem - muszą być odpowiednie mechanizmy i uprawnienia; ochrona - mechanizm nadzorowania dostępu programów, procesów, użytkowników do zasobów systemu komputerowego: co i jakiej ma podlegać ochronie, środki przymusu
Praca sieciowa: system rozproszony, komunikują się ze sobą: marszruty, strategie połączeń, współzawodnictwo, bezpieczeństwo;
System interpretacji poleceń: wiele żądań do systemu jest przekazywanych przez instrukcje sterujące, które są interpretowane przez odp. program (np. shell) - jego zadanie: pobrać następną instrukcję i wykonać ją
Funkcje systemowe - tworzą interfejs między wykonywanym programem a systemem operacyjnym (są dostępne w asemblerze, w C, bibliotekach itd.)
Struktura systemu:
1. prostota, ale najczęściej nie ma dobrze określonej struktury, bo powstawały jako małe, proste, ograniczone, ale potem rozrastały się (MS DOS - max funkcjonalność, oszczędność miejsca, korzystanie z podstawowych procedur we/wy, pisanie bezpośrednio do pamięci ekranu;
Warstwowa struktura MS DOS
UNIX - ograniczona strukturalizacja: jądro (ciąg interfejsów i programy obsługi urządzeń) i programy systemowe, warstwy
użytkownicy
--- interfejs z użytkownikiem
programy shell i polecenia, programy użytkowe
kompilatory, biblioteki systemowe
---interfejs między funkcjami systemowymi a jądrem
sygnały system plików planowanie przydziału procesora
obsługa terminali wymiana zastępowanie stron
znakowe we/wy blokowe we/wy stronicowanie na żądanie
prog. ob. term. prog. ob. dysków pamięć wirtualna
---interfejs między jądrem a sprzętem
sterowniki terminali sterowniki urządzeń sterowniki pamięci
terminale dyski pamięć operacyjna
Struktura systemu UNIX
Za pośrednictwem funkcji systemowych jądro zarządza systemem plików, pamięcią, przydziela czas procesora itd.
Programy systemowe korzystają z zawartych w jądrze funkcji systemowych w celu wykonania użytecznych działań. Funkcje systemowe definiują interfejs programisty. Zbiór dostępnych programów systemowych określa interfejs użytkownika.
Podejście warstwowe
Odpowiedni sprzęt podział systemu operacyjnego na mniejsze, lepiej dobrane fragmenty lepsza kontrola nad komputerem korzystają programy użytkowe.
Metodą zstępującą można zdefiniować ogólne cechy i funkcje oraz wyodrębnić składowe systemu, zasada ukrywania informacji
Modularyzacja poprzez podejście warstwowe: dzielenie systemu operacyjnego na warstwy (poziomy), przy czym każda następna warstwa jest zbudowana na szczycie niższych warstw: najniższa (0) = sprzęt, najwyższa (N) = interfejs z użytkownikiem.
Warstwa M zawiera struktury danych i programy, które mogą być wywołane z wyższych warstw, sama natomiast może wywoływać operacje dotyczące niższych warstw.
Główna zaleta modularność, łatwiejsze wyszukiwanie błędów i weryfikacja. Implementacja każdej warstwy bazuje wyłącznie na operacjach dostarczanych przez warstwę niższą, żeby używać, nie trzeba nic wiedzieć o jej implementacjach, tylko trzeba wiedzieć, co one robią i jak je wywołać ukrywanie pewnych struktur danych, operacji sprzętu.
Maszyny wirtualne
W programach systemowych powyżej jądra można używać funkcji systemowych na równi z instrukcjami sprzętowymi sprzęt i funkcje traktowane tak, jakby należały do tego samego poziomu. Może być umożliwione łatwe wywoływanie programów systemowych przez programy użytkowe traktując je jak część sprzętu zatem koncepcja maszyny wirtualnej. Stosując planowanie przydziału procesora i mechanizm pamięci wirtualnej system operacyjny może tworzyć złudzenie, że wiele procesów pracuje na własnych procesorach z własną pamięcią + dodatkowe możliwości: funkcje systemowe, system plików (tego nie daje sprzęt).
Nie daje to żadnych dodatkowych funkcji, ale tworzy interfejs identyczny z podstawowym sprzętem. Każdy proces dostaje wirtualną kopię komputera. Łatwiejsza izolacja procesów i zasobów, unifikacja i standaryzacja oprogramowania (np. można uruchamiać programy pisane na inne systemy operacyjne), można „bawić się” innym systemem operacyjnym niż zainstalowany (WWW.VMware.com).
Java Virtual Machine: kompilator Javy wytwarza kod pośredni wykonywany przez JVM (musi być na danej maszynie, aby to mogło działać, w przeglądarkach internetowych).
7