WSPIERANIE WYSTEMU OPERACYJNEGO
System operacyjny (OS) – to oprogramowanie, które steruje wykonywaniem programów przez procesor i zarządza jego zasobami, działa jako interfejs między użytkownikiem a komputerem.
Przegląd systemów operacyjnych
Cele systemu operacyjnego:
- wygoda – zapewnia wygodę w obsłudze komputera
- sprawność – zapewnia należyte eksploatowanie zasobów komputera
Warstwy systemu komputerowego:
- sprzęt komputerowy
- system operacyjny
- programy narzędziowe
- programy użytkowe
- użytkownik końcowy
System operacyjny:
- warstwa pośrednia pomiędzy kodem maszynowym a użytkownikiem
- zajmuje się przenoszeniem, przetwarzaniem i przenoszeniem danych
- jak inne programy dostarcza rozkazy do procesora
- jednocześnie kieruje procesorem w zakresie wykorzystania innych zasobów, żeby procesor mógł
wykonać te zadania, musi zaprzestać realizowania zadania „system operacyjny” i zacząć wykonywać
inne programy
- przydziela zasoby pamięci głównej wraz z mechanizmem sprzętowym
Pamięć główna zawiera:
- jądro systemu operacyjnego
- najczęściej używane funkcje systemu operacyjnego
- używane na bieżąco funkcje systemu operacyjnego
- inne programy i dane
Zadania systemu operacyjnego:
- tworzenie programów (wspomaga programistów przez programy narzędziowe)
- wykonywanie programów (ładowania rozkazów do pamięci głównej, inicjalizacja urządzeń we/wy)
- dostęp do urządzeń we/wy (obsługiwanie rozkazów dla urządzeń we/wy)
- dostęp do plików (kontrola formatów plików, kontrola typu urządzeń we/wy)
- kontrola dostępu do plików w przypadku wielu użytkowników
- ogólny dostęp do systemu i jego funkcji dla użytkowników
- gromadzenie ewidencji danych statystycznych o wykorzystaniu zasobów itd
RODZAJE SYSTEMÓW OPERACYJNYCH:
Podział systemów operacyjnych:
a) system konwersacyjny:
- konwersacja między użytkownikiem/programistą a komputerem przez terminal, klawiaturę
- możliwość komunikacji z komputerem podczas wykonywania zadania
b) system wsadowy:
- przeciwieństwo konwersacyjnego:
- programy wielu użytkowników są grupowane, łączone i powstaje ‘wsad’, który jest uruchamiany
- po zakończeniu wykonywania programów wyniki są drukowane i przekazywane użytkownikom
- są dzisiaj rzadkością
A) system wieloprogramowy:
- procesor wykonuje kilka programów jednocześnie i przeskakuje pomiędzy nimi
B) system jednoprogramowy:
- procesor wykonuje tylko jeden program w danym momencie
Rodzaje systemów operacyjnych”
a) [aA] – system wyspecjalizowany konwersacyjny
b) [aB] – system konwersacyjny z podziałem czasu
c) [bA] – system z pojedynczym wsadem
d) [bB] – system ze złożonymi wsadami
Historia systemów operacyjnych:
(I) pierwsze systemy:
- urządzenia wejściowe – czytniki kart
- sygnalizacja błędów – lampki
- problemy – planowanie czasu i czas na przygotowania
- podawało się maszynie kartki z kodem źródłowym a ona wykonywała program
(II) proste systemy wsadowe
- programy nazywane ‘monitorami’
- program zarządzający (rezydentny program zarządzający, który znajduje się w pamięci głównej,
wczytuje następne zadanie do wykonania, zadanie to jest lokowane w pamięci użytkowej, a
sterowanie przekazane temu zadaniu (czyli procesor teraz wykonuje rozkazy przychodzące z
programu użytkownika, czyli od użytkownika danego programu), gdy zadanie jest zakończone
następuje przerwanie i przekazanie sterowania programowi zarządzającemu, który pobiera kolejne
zadanie, a wyniki są drukowane dla użytkowników
- program zarządzający ustawia w kolejce i podaje procesorowi zadania stanowiące wsad,
przyspiesza to działanie systemu
Cechy takich systemów:
a) ochrona pamięci:
- wykonanie programu użytkownika nie może zmieniać pamięci programu zarządzającego, gdy tak
się dzieje zwraca się błąd
b) czasomierz:
- każdy program ma ustaloną granicę czasu na swoje wykonanie, jak ją przekroczy to zwraca się
błąd i przekazuje sterowanie programowi zarządzającemu
c) rozkazy uprzywilejowane:
- są wykonywane tylko przez program zarządzający (np. we/wy)
- jeżeli procesor napotka rozkaz uprzywilejowany, to zwraca błąd i przekazuje sterowanie do PZ
- jeżeli program użytkowy chce wykonać rozkaz we/wy, to musi poprosić o zrobienie tego PZ
(III) wyrafinowane systemy wsadowe:
- urządzenia we/wy są wolniejsze w stosunku do procesora, dlatego procesor musi czekać na
zakończenie wykonywania rozkazów we/wy, aby kontynuować swoją pracę
- aby nie marnować czasu pamięć poszerzamy do wielkości wystarczającej dla systemu
operacyjnego (rezydentnego programu zarządzającego i 1,2,3 programów użytkowych), wtedy jak
jeden z tych programów wykonuje zadania we/wy, procesor przeskakuje do drugiego i wykonuje
jego rozkazy, itd. (jest to tzw. wieloprogramowanie)
- takie systemy wymagają większej ilości pamięci, aby przechować kilka programów użytkowych
jednocześnie, oraz algorytmu szeregowania zadań, żeby wiedzieć na które zadanie „przeskoczyć”
Wykorzystanie wieloprogramowania:
a) wieloprogramowanie wsadowe:
- celem jest maksymalne wykorzystanie procesora
- źródłem rozkazów dla systemu są rozkazy sterujące wykonywaniem zadania wraz z zadaniem
b) system z podziałem czasu (nastawiony na konwersację z użytkownikiem):
- celem jest minimalny czas odpowiedzi komputera na rozkaz użytkownika
- źródłem rozkazów dla systemu są rozkazy wprowadzane do konsoli, terminala, klawiatury
JCL – język sterowania zadaniami
Zmiany koncepcji systemów operacyjnych w czasie:
1) brak oprogramowania
2) kompilatory i przetwarzanie wsadowe
3) systemy podziału czasu
4) systemy wielodostępne
5) systemy rozproszone
SZEREGOWANIE CZASOWE:
Wieloprogramowanie:
- zadania pojedyncze znajdują się w pamięci, a procesor przełącza się między nimi
- zadanie albo korzysta z procesora albo przechodzi na korzystanie z we/wy, wtedy procesor
przechodzi do innego zadania
- zadanie może mieć trzy stany: korzysta z procesora, korzysta z rozkazów we/wy, oczekuje
Proces – realizowany program, zadanie (termin wprowadzony przez Multics)
Rodzaje szeregowania procesów:
a) szeregowanie średniookresowe – w przypadku pamięci wirtualnej
b) szeregowanie wysokiego poziomu (długookresowe) – decyzja dotycząca dodania do puli programu do wykonania
c) szeregowanie krótkookresowe – wybór tego programu z oczekujących, który się wykona
d) szeregowanie operacji we/wy – wybór tego rozkazu we/wy który ma być wykonany
Szeregowanie wysokiego poziomu:
- program szeregujący wysokiego poziomu decyduje, które rozkazy zostaną dopuszczone do listy
oczekującej na wykonanie przez procesor, te dopuszczone stają się procesami
- procesy są dołączane do kolejki i zarządzane już przez krótkookresowy program szeregujący
- im więcej stworzy się procesów, tym mniej czasu procesor poświęci każdemu z nich
- w przypadku systemu wsadowego zadania są zapisywane na dysku a program szeregujący
wysokiego poziomu decyduje które i ile pobrać stamtąd i przerobić na procesy
- program szeregujący wysokiego poziomu może się kierować: priorytetem, czasem oczekiwania,
ilością używanych operacji we/wy
- w przypadku systemu z podziałem czasu, zapotrzebowanie na obsługę użytkownicy zgłaszają na
bieżąco, a program szeregujący akceptuje wszystkich użytkowników, do momentu przesycenia
możliwości procesora
Szeregowanie krótkookresowe:
- krótkookresowy program sortujący zwany jest ‘dypozytorem’
- działa dużo częściej niż poprzedni i decyduje, które procesy mają być realizowane jako następne
Stany procesu:
NOWY – program przyjęty przez program szeregujący wysokiego poziomu, ale nie jest gotowy do realizacji, system operacyjny inicjuje proces, przesuwając go do stanu gotowości
GOTOWY – proces gotowy do wykonania i czeka na dostępność procesora
BIEŻĄCY – proces aktualnie realizowany przez procesor
OCZEKUJĄCY – realizacja procesu zawieszona, podczas oczekiwania na pewne zasoby systemu
ZATRZYMANY – proces zakończony i będzie zniszczony przez system operacyjny
Blok kontrolny procesu – zawiera najważniejsze informacje o procesie dla systemu operacyjnego:
a) identyfikator procesu
b) stan procesu
c) priorytet
d) licznik programu, czyli adres następnego w kolejce procesu
e) znaczniki pamięci, czyli początkowa i końcowa komórka pamięci zajmowanej przez proces
f) dane dotyczące kontekstu procesu
g) informacja o stanie we/wy, obejmuje zadania we/wy, urządzenia we/wy, listę plików potrzebne
h) informacja ewidencyjna, czyli może obejmować szacowany czas, ograniczenia czasowe itd.
Proces przyjęty jako ‘nowy’ dostaje czysty blok kontrolny procesu, dopiero jak system operacyjny wypełni ten blok odpowiednimi danymi, to proces przechodzi do stanu ‘gotowy’.
METODY SZEREGOWANIA:
Procesor może zakończyć działanie procesu i przejść do programu rezydentnego zarządzającego (systemu operacyjnego) z podanych powodów:
proces przekazuje kierowanie systemowi operacyjnemu, np. wywołanie operacji we/wy, wtedy proces jest zawieszany na ten czas
proces powoduje przerwanie, wtedy sterowanie przekazywane jest systemowi obsługi przerwań w systemie operacyjnym
inne zdarzenie, np. zakończenie operacji we/wy
W każdym z takich przypadków, procesor zapisuje dane kontekstowe i licznik programu w bloku kontrolnym procesu, po czym przystępuje do działania w systemie operacyjnym. System operacyjny potem decyduje, jaki proces ma być wykonany następnie. W przypadku powrotu do innego procesu, procesor odczytuje dane kontekstowe z bloku kontrolnego procesu i go realizuje.
Co może spowodować przerwanie:
- błąd wykonania
- próba wywołania rozkazów uprzywilejowanych
- przekroczenie limitu czasu na proces
System operacyjny utrzymuje pewną listę kolejek, które kontroluje. Każda kolejka to lista procesów czekający na wykonanie, z zastrzeżeniem korzystania z jakiś zasobów.
kolejka długookresowa – to lista zadań czekających na przydzielenie do kolejki zadań do wykonania, czyli na zostanie procesem
kolejka krótkookresowa – to lista procesów czekających na wykonanie przez procesor
kolejka we/wy – to lista procesów czekających na użycie jakiegoś urządzenia we/wy
ZARZĄDZANIE PAMIĘCIĄ:
Jest to zadanie realizowane dynamicznie i polega na podziale pamięci na aktualnie realizowane programy użytkowe w programowaniu wieloprogramowym. Pamięć musi być sprawnie zarządzana, aby upakować w niej jak najwięcej procesów, żeby procesor jak najrzadziej był bezczynny.
W systemie jednoprogramowym – pamięć dzieli się na 2 części: jedna dla systemu operacyjnego, druga dla aktualnie obsługiwanego programu użytkowego
W systemie wieloprogramowym – pamięć dzieli się na więcej części: jedna dla systemu operacyjnego, pozostała podzielona na obszary dla kolejnych programów użytkowych
WYMIANA:
Jeżeli wszystkie procesy w pamięci głównej (kolejce krótkookresowej) nie są gotowe do realizacji, procesor przekazuje jeden z nich do kolejki pośredniej, a pobiera inny z kolejki pośredniej (jeśli jest gotowy) albo wykazuje zapotrzebowanie na nowy proces z kolejki długoterminowej (z dysku).
PARTYCJONOWANIE:
a) partycje o ustalonym rozmiarze (różnym):
Jest to dzielenie pamięci głównej na kilka procesów użytkowych. Najczęściej stosuje się partycje o równej wielkości. Jednak nie są one wszystkie równe. Gdy proces jest przyjmowany do pamięci, jest umieszczany w najmniejszej partycji, która może go pomieścić. Występują straty pamięci, bo proces nie wykorzystuje całego obszaru partycji, a w jednej partycji może być tylko jeden cały proces.
b) partycje o zmiennym rozmiarze:
Można wykorzystać dynamiczną alokację partycji. Jak proces jest przyjmowany to tworzy się partycję o jego rozmiarze, gdy następny tak samo. Jednak prowadzi to również z czasem do powstania wielu małych luk. Więc co jakiś czas system przesuwa procesy z pamięci w jedno miejsce, tworząc jeden blok wolny dla nowych procesów (upakowanie).
Każdy proces jak wraca do pamięci po wymianie nie wraca na to samo miejsce, co przedtem był. Każdy proces zawiera rozkazy i dane. Rozkazy zawierają adresy (danych i innych rozkazów w przypadku rozgałęziania). Adresy te nie są stałe, bo zmieniają się za każdym razem, gdy dochodzi do wymiany.
Adres logiczny – pozycja w pamięci względem początku programu
Adres fizyczny – aktualny adres w pamięci głównej
Gry procesor realizuje proces, zamienia adresy logiczne na fizyczne, przez dodanie adresu logicznego do adresu bazowego (początkowego) procesu.
STRONICOWANIE:
Ramki – małe fragmenty pamięci
Strony – małe fragmenty programu
Każdy proces jest dzielony na pojedyncze strony o rozmiarach ramek. Każda strona jest zapisywana w jednej ramce, w ten sposób tylko pojedyncze ramki mogą być wolne i nieużywane, co zmniejsza marnowanie pamięci. Strony do ramek NIE muszą być wpisywane w kolejności jedna po drugiej. Procesor wie, które ramki ma w danym czasie wolne. Procesor tworzy sobie tzn. tablicę stron, gdzie zapamiętuje, w których ramkach są, jakie strony którego procesu. Każdy adres w rozkazie składa się tutaj ze strony, w której się znajduje i adresu względnego na tej stronie. Procesor podczas tłumaczenia adresów logicznych na fizyczne, znajduje daną stronę w tablicy stron, a następnie dopiero dodaje adres względny i tak tworzy adres fizyczny.
PAMIĘĆ WIRTUALNA:
STRONICOWNAIE NA ŻĄDANIE:
- nie są ładowane od razu wszystkie strony procesu do dostępnych ramek
- procesor ładuje sobie tylko te strony procesu, których często używa
- jeżeli napotka na odwołanie do rozkazu ze strony, której nie załadował, szuka tej strony,
załadowuje ją jednocześnie wywalając inną
- aby zapobiec ‘szamotaniu się’ czyli zbyt częstemu wymienianiu stron w pamięci, procesor musi na
podstawie ostatniej historii używanych stron wywnioskować, jakie strony i kiedy mogą być
potrzebne w najbliższej przyszłości
- daje to możliwość ładowania procesów większych od całej pamięci głównej
- pamięcią rzeczywistą nazywamy rzeczywistą pamięć główną
- pamięcią wirtualną nazywamy całą pamięć dyskową, gdzie przechowywane są całe procesy
STRUKTURA TABLICY STRON:
Tablica stron znajduje się w pamięci głównej. Gdy jest realizowany proces, rejestr pamięta adres początkowy tablicy stron danego procesu. Numer strony adresu logicznego służy do indeksowania i znalezienia odpowiedniej ramki. Po połączeniu go z adresem ramki otrzymujemy adres fizyczny (rzeczywisty).
Bufor translacji adresów tablic stron (TLB) – pamięć podręczna dla tablic stron, zawiera te zapisy tablic stron, które były ostatnimi czasy używane często
SEGMENTACJA:
- jest to proces, w przeciwieństwie do partycjonowania, widzialny dla programisty
- pamięć jest podzielona na segmenty, niektóre wyspecjalizowane dla określonych danych lub
programów, niektóre dostępne tylko dla określonych użytkowników
- segmenty mają dynamiczny rozmiar
Zalety korzystania z segmentowania:
- wspólne wykorzystanie danych przez różne procesy
- możliwość ochrony segmentów przez prawa dostępu
- operowanie rosnącymi strukturami danych
Angielskie zwroty
TLB – translation lookaside buffer
JCL – job control language
OS – operating system
RISC (Reduced Instruction Set Computers) - nazwa architektury mikroprocesorów charakteryzująca się bardzo rozbudowaną listą rozkazów, ale jak wykazały badania tylko nieliczna ich część była wykorzystywane w statystycznym programie. Okazało się np. że ponad 50% rozkazów w kodzie to zwykłe przypisania (zapis zawartości rejestru do pamięci i odwrotnie)
CISC (ang. Complex Instruction Set Computers) – nazwa architektury mikroprocesorów o następujących cechach:
- duża liczba rozkazów (instrukcji)
- mała optymalizacja – niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania
- występowanie złożonych, specjalistycznych rozkazów
- duża liczba trybów adresowania