Składowe systemu.
•Usługi systemu operacyjnego.
•Wywołania systemowe.
•Programy systemowe.
•Struktura systemu
.•Maszyny wirtualne
.•Projektowanie i implementacja systemu.
•Generowanie systemu.
Składowe systemu operacyjnego
??Zarządzanie procesami.
??Zarządzanie pamięcią operacyjną.
??Zarządzanie plikami.
??Zarządzanie systemem wejścia-wyjścia.
??Zarządzanie pamięcią pomocniczą.
??Praca sieciowa.
??System ochrony.
??System interpretacji poleceń.
Zarządzanie procesami
•Proces–program, który jest wykonywany.
??Aby wypełnić swoje zadanie, proces potrzebuje pewnych zasobów: czas procesora, pamięć, pliki, urządzenie WE/WYitd.
•System operacyjnyjest odpowiedzialny za następujące czynnościzwiązane z zarządzaniem procesami:
??Tworzenie i usuwanie procesów (użytkowych, systemowych);
??Wstrzymywanie i wznawianie procesów;
??Dostarczanie mechanizmów do:
??Synchronizacji procesów;
??Komunikacji procesów;
??Obsługi zakleszczeń.
Zarządzanie pamięcią operacyjną
•Pamięć operacyjna–duża tablica słów lub bajtów, z których każde(y) ma swój adres.
jest magazynem szybko dostępnych danych dzielonych przez CPU i urządzenia WE/WY.
Jest to pamięć ulotna –traci swoją zawartość w przypadku odcięcia zasilania.
•W odniesieniu do zarządzania pamięcią
SOjest odpowiedzialny za następujące czynności:
Utrzymywanie informacji o tym, które obszary pamięci są aktualnie zajęte i przez kogo;
Decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów pamięci;
Przydzielanie (alokacja) i zwalnianie (dealokacja) obszarów pamięci zależnie od potrzeb.
Zarządzanie systemem WE/WY
•Jednym z celów systemu operacyjnego jest ukrywanie przed użytkownikiem (czasem też przed większością samego systemu operacyjnego) szczegółów dotyczących sprzętu, m.in. WE/WY.
??Wiele systemów ma specjalnepodsystemy WE/WY..
•System WE/WYskłada się z:
??Systemu zarządzania pamięcią: buforowanie, przechowywanie podręczne, spooling;
??Ogólnego interfejsu do modułów sterujących urządzeń;
??Modułów sterujących (programów obsługi) dla poszczególnych urządzeń sprzętowych.
??Właściwości danego urządzenia zna tylko odpowiadający mu moduł sterujący.
Zarządzanie pamięcią pomocniczą Zarządzanie pamięcią pomocniczą
•Ponieważ pamięć operacyjna jest ulotna i za mała by pomieścić wszystkie dane i programy, system komputerowy musi dostarczać pamięć pomocnicząjako zaplecze dla pamięci operacyjnej.
•Większość współczesnych systemów komputerowych używa dyskówjako podstawowego medium do magazynowania zarówno danych, jak i programów.
•System operacyjnyodpowiada za następujące czynnościzwiązane z zarządzaniem dyskami:
.
Wydajność pamięci pomocniczej może mieć znaczny wpływ na wydajność całego systemu komputerowego (na ogół pamięć ta jest często używana podczas pracy komputera).
Praca sieciowa Praca sieciowa (systemy rozproszone) (systemy rozproszone)
System rozproszonyjest zbiorem procesorów, które nie dzielą pamięci, urządzeń zewnętrznych ani zegara –każdy procesor ma swoją lokalną pamięć itd.
•Procesory w systemie połączone są za pomocą sieci komunikacyjnej(szybkie szyny danych, linie telefoniczne, łącza bezprzewodowe).
•Komunikacja odbywa się przy użyciu protokołu(zbiór reguł używanych przez węzły komunikacyjne przy wymianie informacji).
•System rozproszony umożliwia użytkownikowi dostęp do różnych zasobów.
•Dostęp do dzielonych zasobów pozwala na:
??przyspieszanie obliczeń,
??większą funkcjonalność,
??zwiększanie dostępności danych;
??podniesienie niezawodności.
System ochrony
•Ochrona–mechanizm nadzorowania dostępu programów, procesów lub użytkowników do zasobów zarówno systemu, jak i użytkowników.
??Każdy wielozadaniowy, wielodostępny i współbieżny system operacyjny musi dostarczać sposoby ochrony procesów przed ich wzajemnym (niepożądanym) oddziaływaniem.
•Mechanizm ochrony musi:
??Rozróżniać między dostępem autoryzowanym a nieautoryzowanym;
??Określać co i jakiej ma podlegać ochronie;
??Zawierać środki do wymuszania zaprowadzonych ustaleń.
System interpretacji poleceń System interpretacji poleceń
•Wiele poleceń jest przekazywanych do systemu operacyjnego za pomocą instrukcji sterujących(control statements),które dotyczą:
•Program, który czyta i interpretuje instrukcje sterujące nosi różne nazwy:
Interpreter wiersza poleceń(command-line interpreter);
Powłoka(shell)–np.w systemie UNIX.
Jego zadanie:pobrać następną instrukcję i wykonać ją.
W niektórych systemach jest częścią jądra, w innych (np. MS-DOS, UNIX) jest specjalnym programem, wykonywanym przy rozpoczynaniu zadania lub przy logowaniu się w systemie.
Usługi systemu operacyjnego Usługi systemu operacyjnego
•Wykonywanie programów–zdolność systemu operacyjnego do ładowania programów do pamięci i ich wykonywania.
•Operacje WE/WY–ponieważ program użytkownika nie może bezpośrednio wykonywać operacji WE/WY, system operacyjny musi dostarczać środki do ich wykonywania.
•Manipulowanie systemem plików–programy muszą mieć możliwość czytania i pisania w plikach, a także tworzenia i usuwania plików przy użyciu ich nazw.
•Komunikacja–wymiana informacji między procesami wykonywanymi albo w tym samym komputerze albo w różnych systemach komputerowych.
??Zaimplementowana za pomocą pamięci dzielonej(sharedmemory) lub techniki przekazywania komunikatów (messagepassing).
•Wykrywanie błędów–zapewnienie poprawnego przebiegu obliczeń poprzez wykrywanie i obsługę błędów w działaniu CPU i pamięci, w urządzeniach WE/WY lub programach użytkownika.
Dodatkowe funkcje systemu operacyjnego
??Istnieje dodatkowy zbiór funkcji systemu operacyjnego przeznaczonych nie do pomagania użytkownikowi, ale do optymalizacji działania samego systemu.
•Przydzielanie zasobów–alokacja zasobów do wielu użytkowników i wielu wykonywanych zadań.
•Rozliczanie–przechowywanie i śledzenie informacji o tym, którzy użytkownicy i w jakim stopniu korzystają z poszczególnych zasobów.
•Ochrona–zapewnienie nadzoru nad wszystkimi dostępami do zasobów systemu. Ważne jest również bezpieczeństwo (security) systemu wobec niepożądanych czynników zewnętrznych.
Wywołania systemowe Wywołania systemowe
•Funkcje systemowe, inaczej: wywołania systemowe(system calls) –tworzą interfejs między wykonywanym programem a systemem operacyjnym.
??Na ogół dostępne jako rozkazy w języku asemblera.
??Języki, które utworzono aby zastąpić asemblery przy programowaniu systemów operacyjnych dają możliwość bezpośredniego wywołania funkcji systemowych (np. C, C++, Perl).
??Np. wywołania systemu UNIX można wykonywać bezpośrednio z programu w języku C/C++, natomiast w MS Windows XP są one częścią interfejsu programisty aplikacji(application programmer interface –API), dostępnego w kompilatorach dla MS Windows.
•Istnieją zasadniczo trzy metody przekazywania parametrów między wykonywanym programem a systemem operacyjnym
:??Przekazanie parametrów bezpośrednio dorejestrówprocesora.
??Umieszczenie parametrów wtablicy w pamięcii przekazanie jejadresuza pośrednictwem rejestru (np. w systemie Linux).
??Składanieparametrów nastosie za pomocą programu i zdejmowanieich stamtąd przez system operacyjny.
Kategorie wywołań systemowych Kategorie wywołań systemowych
•Nadzorowanie procesów:
??Utworzenie, załadowanie, wykonanie, zakończenie, zaniechanie, określenie atrybutów, … procesu; przydział i zwolnienie pamięciitd.
•Operacje na plikach:
??Utworzenie, usunięcie, otwarcie, zamknięcie, czytanie, pisanie, określenie/pobranie atrybutów pliku itp.
•Zarządzanie urządzeniami:
??Zamówienie, zwolnienie, logiczne przyłączenie i odłączenie, czytanie, pisanie, określenie/pobranie atrybutów urządzenia itp.•Utrzymywanie informacji:
??Pobranie/ustawienie: czasu, daty, danych systemowych, atrybutówprocesu/pliku/urządzenia itp.•Komunikacja:
??Utworzenie/usunięcie połączenia komunikacyjnego, nadawanie/odbieranie komunikatów, przekazanie informacji o stanie, przyłączanie/odłączanie urządzeń zdalnych.
Programy systemowe
•Programy systemowetworzą wygodne środowisko do rozwoju i wykonywania innych programów; można je podzielić na następujące kategorie:
??Manipulowanie plikami(tworzenie, usuwanie, kopiowanie itd.);
??Informowanie o stanie systemu(data i czas, wielkość pamięci itp.);
??Tworzenie i modyfikowanie plików(edytory);
??Zaplecze języków programowania(kompilatory, asemblery, interpretery popularnych języków, jak C/C++, Java, Perl, …);
??Ładowanie i wykonywanie programów(konsolidatory/linkery, programy ładujące i uruchomieniowe, …)
;??Komunikacja(realizacja mechanizmów połączeń między procesami, użytkownikami, różnymi systemami komputerowymi)
;??Programy aplikacyjne(przeglądarki WWW, arkusze kalkulacyjne, programy przetwarzania tekstu, pakiety graficzne, …).
•Sposób, w jaki większość użytkowników postrzega system operacyjny, jest określany w większym stopniu przez programy systemoweniż przez wywołania systemowe.
Struktura systemu
•MS-DOS–napisany pod kątem osiągnięcia maksymalnej funkcjonalności przy oszczędności miejsca:??Brak podziału na moduły;??Interfejsy i poziomy funkcjonalne nie są wyraźnie wydzielone.•UNIX–początkowo ograniczany przez cechy sprzętowe miał ograniczoną strukturalizację; składał się z dwu odrębnych części:??Jądro(kernel):??Składa się z wszystkiego poniżej interfejsu funkcji systemowych a powyżej sprzętu;??Udostępnia system plików, planowanie przydziału procesora, zarządzanie pamięcią i inne czynności systemu operacyjnego (bardzo wiele możliwości zebranych na jednym poziomie).??Programy systemowe–korzystają z udostępnianych przez jądro funkcji systemowych dla wykonywania użytecznych działań (np. kompilacja programów, operacje na plikach).
Mikro jadra
•Jądro systemu zredukowane do małego zbioru funkcji rdzeniowych, realizujących jedynie mały zbiór niezbędnych operacji elementarnych –tzw. mikrojądro(microkernel).
•Wszystkie mniej ważne operacje przeniesione do programów systemowych lub programów z poziomu użytkownika.
•Komunikacja odbywa się między modułami użytkownika przy użyciu metody przekazywania komunikatów.
System operacyjny łatwiejszy do rozszerzania;
SO łatwiejszy do przenoszenia na nowe architektury sprzętowe;
SO bardziej niezawodny (mniej kodu wykonywanego w trybie jądra);
Przykłady:system Mach(wersja UNIX’aopracowana przez Carnegie-Mellon University), Tru64 UNIX, MS Windows
Struktura systemu z modułami jądra
??Stosowanie technik obiektowychprzy projektowaniu nowoczesnych systemów operacyjnych prowadzi do tworzenia modularnych jąder
.??Jądro takie posiada zbiór rdzeniowych komponent i dynamicznie dołącza dodatkowe usługi albo w trakcie uruchamiania systemu, albo w trakcie jego działania.
??Strategia taka oparta jest o dynamicznie ładowalne moduły jądrai jest powszechna w nowoczesnych implementacjach systemu UNIX, takich jak Solaris, Linux, Mac OS X.
??Np. struktura systemu Solarisjest zorganizowana wokół rdzeniowego jądra z siedmioma typami ładowalnych modułów jądra:
??Klasy planowania;
??Systemy plików;
??Ładowalne wywołania systemowe;
??Formaty wykonawcze;
??Moduły STREAMS;
??Sterowniki urządzeń i szyn;
??Różnorodne usługi.
?Struktura tego typu jest bardziej elastycznaod struktury warstwowej; przypomina strukturę z mikrojądrem, ale jest od niej bardziej wydajna.
Maszyny wirtualne
•Maszyna wirtualna(virtual machine) jest logiczną konkluzją podejścia warstwowego; traktuje sprzęt i funkcje systemowe jakby należały do tego samego poziomu –maszyny.
•Maszyna wirtualna tworzy interfejs identycznyz podstawowym sprzętem (wirtualna kopia komputera).
•SO tworzy złudzenie wielu procesów pracujących na swych własnych procesorach z własną (wirtualną) pamięcią.
•Zasoby fizycznego komputera są dzielone w celu utworzenia maszyn wirtualnych.
??Odpowiednie planowanie przydziału CPU sprawia wrażenie, że każdyużytkownik ma swój własny procesor.
??Spooling i system plików pozwalają tworzyć wirtualne urządzenia wejścia-wyjścia.
??Zwykły terminal do pracy z podziałem czasu służy jako wirtualna konsola operatorska.
Zalety/Wady maszyn wirtualnych
Koncepcja maszyn wirtualnych dostarcza pełną ochronę zasobów systemowych, gdyż każda maszyna wirtualna jest całkowicie odizolowana od innych maszyn wirtualnych.
˘System maszyn wirtualnych stanowi znakomitą platformę do badań i rozwoju systemów operacyjnych (rozwój systemu operacyjnego dokonuje się na maszynie wirtualnej zamiast na fizycznej maszynie, a zatem nie zaburza normalnego działania systemu).
??Koncepcja maszyny wirtualnej jest trudna do implementacji –zrealizowanie dokładnejkopii maszyny bazowej wymaga sporego wysiłku.
??Wzajemna izolacja maszyn wirtualnych uniemożliwia bezpośrednie dzielenie zasobów (można wprowadzić komunikację poprzez wirtualną sieć, czy system dzielonych dysków wirtualnych, tzw.minidysków).
??Mniejsza wydajność (procesor musi obsługiwać wiele maszyn wirtualnych –przełączanie kontekstu).
Zalety/Wady maszyn wirtualnych Zalety/Wady maszyn wirtualnych
Koncepcja maszyn wirtualnych dostarcza pełną ochronę zasobów systemowych, gdyż każda maszyna wirtualna
całkowicie odizolowana od innych maszyn wirtualnych.
System maszyn wirtualnych stanowi znakomitą platformę
badań i rozwoju systemów operacyjnych (rozwój
operacyjnego dokonuje się na maszynie wirtualnej
fizycznej maszynie, a zatem nie zaburza normalnego działania systemu).
Koncepcja maszyny wirtualnej jest trudna do implementacji
zrealizowanie dokładnejkopii maszyny bazowej
sporego wysiłku.
Wzajemna izolacja maszyn wirtualnych uniemożliwia bezpośrednie dzielenie zasobów (można wprowadzić komunikację poprzez wirtualną sieć, czy system dzielonych dysków wirtualnych, tzw.minidysków).
Mniejsza wydajność (procesor musi obsługiwać wiele maszyn wirtualnych –przełączanie kontekstu).
Projektowanie systemu
??Cele systemu:
1.Cele użytkownika–system operacyjny powinien być wygodny i łatwy w użyciu, łatwy do nauki, niezawodny, bezpieczny i szybki.
2.Cele systemu–system operacyjny powinien być łatwy do zaprojektowania, realizacji i pielęgnowania, a także elastyczny niezawodny, wolny od błędów i wydajny.
??Mechanizmy a polityka:
??Mechanizmy określają jakcoś zrobić (np. mechanizmem ochrony procesora jest czasomierz), natomiast politykadecyduje o tym cobędzie realizowane w praktyce (np. na jak długo będzie ustawiany czasomierz dla poszczególnych użytkowników).
??Oddzieleniepolityki od mechanizmówjest bardzo ważną zasadą–daje maksimum elastyczności, jeżeli decyzje polityczne mają być później zmieniane (np. systemy z mikrojądrem urzeczywistniają tę zasadę w sposób skrajny, realizując jedynie podstawowy zbiór elementarnych działań składowych; na przeciwnym krańcu są systemy takie jak Macintosh, gdzie zarówno mechanizmy, jak i polityka sązakodowane w systemie, żeby wymusić jego ogólny wygląd i odbiór).
Implementacja systemu Implementacja systemu
Tradycyjnie systemy operacyjne były pisane w językach asemblerowych, obecnie natomiast pisze się je często w językachwyższego poziomu, takich jak C lub C++ (np. UNIX, OS/2, czy Windows NT napisano niemal w całości w języku C; w asemblerze zakodowano tylko małe fragmenty).
˘Zalety używania języka wyższego poziomu:
??Programuje się szybciej;
??Kod jest bardziej zwarty;
??Kod jest łatwiejszy do zrozumienia i sprawdzenia;
??System operacyjny jest znacznie łatwiejszy do przenoszenia(instalowania na innym sprzęcie).
??Wady:
??Spowolnienie działania;
??Większe zapotrzebowanie na pamięć.
?Najbardziej newralgiczne części systemu (tzw. wąskie gardła) mogą być (prze)pisane w asemblerze.
Implementacja systemu
Generowanie systemuGenerowanie systemu
•Systemy operacyjne zwykle projektowane są by działały na pewnej klasie maszyn w rozmaitych instalacjach ze zmienną konfiguracją urządzeń.
•SO musi być skonfigurowany (wygenerowany) dla każdej specyficznej instalacji komputerowej –proces ten nazywa się generowaniem systemu(system generation–SYSGEN).
•Program SYSGENzbiera informacje dotyczące specyfiki konfiguracji danego sprzętu (czyta z pliku, pyta operatora bądź sam sonduje sprzęt),a następnie generuje system.
•Rozruchsystemu (booting)–procedura rozpoczęcia pracy komputera przez załadowanie jądra.
•Program rozruchowy(bootstrap program) –mały fragment kodu przechowywany w pamięci ROM będący w stanie zlokalizować jądro, załadować je do pamięci i rozpocząć jego wykonywanie (czasami dwuetapowo: mniejszy program rozruchowy sprowadza z dysku większy program rozruchowy, a ten dopiero ładuje jądro, np. w komputerach PC).
Rozruch systemu
•W momencie rozruchu systemu rejestr rozkazów jest ładowany z predefiniowanego miejsca pamięci, w którym znajduje się początkowy program rozruchowy (initial bootstrap program).
•Program rozruchowymoże wykonywać różnorodne zadania, jak np. diagnostyka komputera, inicjalizacja wszystkich składowych systemu –od rejestrów CPU po sterowniki urządzeń i zawartość pamięci operacyjnej; wcześniej czy później uruchamia on system operacyjny.•Małe systemy operacyjne, np. urządzeń typu PDA, czy telefony komórkowe, mogą w całościznajdować się w pamięci ROM.
•Aby umożliwić zmianę kodu rozruchowego bez konieczności wymiany kości pamięci ROM, niektóre systemy korzystają z pamięci EPROM (erasable programmable read-only memory), która normalnie jest tylko do odczytu, ale przy pomocy specjalnej komendy można uczynić ją zdolną do zapisu.
•W przypadku dużych systemów operacyjnych(np. Windows, Mac OS X, UNIX)sam system operacyjny znajduje się na dysku–program rozruchowy czyta i uruchamia kod z bloku rozruchowego(boot block)znajdującego się w ustalonym miejscu na dysku (np. blok zerowy), ten kod z kolei najczęściej znajduje na dysku resztę programu rozruchowego, który uruchamia system.
•Dysk z partycją rozruchową nazywa się dyskiem rozruchowym(bootdisk)lub dyskiem systemowym(system disk).
pieknyromek6