System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy. System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe, które pracują na zlecenie różnych użytkowników.
System operacyjny jest odpowiedzialny za:
*Zarządzanie zasobami komputera
*tworzenie wirtualnej maszyny (dla programisty)
Cechy systemu operacyjnego:
funkcjonalność
wydajność
skalowalność
niezawodność (dostępność)
łatwość korzystania i zarządzania
Funkcje systemu operacyjnego polegają na rozwiązywaniu konfliktów podczas współubiegania się różnych zadań użytkowników o zasoby systemu komputerowego i na optymalizacji wykorzystywania zasobów przez zadania. Zadaniem systemu operacyjnego jest tworzenie środowiska operacyjnego, w którym użytkownik może wygodnie i bezpiecznie uruchamiać i eksploatować programy.
W szczególności system operacyjny umożliwia:
*przechowywanie informacji przez dłuższy czas w pamięciach zewnętrznych,
*jednoczesne wykonywanie różnych czynności przez system komputerowy,
*korzystanie z różnych pakietów programistycznych i języków programowania,
*wspólne wykorzystywanie niektórych urządzeń komputerowych przez grupy osób.
Funkcje systemowe:
*Kontroli procesów
*Operacje na systemie plików(otwarcie, skasowanie, czytanie, zamknięcie pliku; ustawianie wskaźnika w danym miejscu; funkcje informacyjne o plikach; itp.)
*Zarządzanie pamięcią operacyjną RAM
*Funkcje informacyjne(o stanie systemu operacyjnego - czas pracy, zajętość pamięci, itp. ; funkcje czasu i daty)
*Funkcje komunikacyjne(obsługa sieci - 90%)
*Operacje wejścia/wyjścia I/O
Programy systemowe
*manipulowanie plikami
*tworzenie systemów zmiana zawartości plików
*informowanie systemów stanie systemu
*kompilatory i interpretery jezyków programowania
*programy komunikacyjne
* programy użytkowe, interpreter poleceń
Struktury systemów operacyjnych:
1. Struktura monolityczna - system operacyjny traktowany jako zbiór procedur, przy czym
każda z nich może wywoływać drugą; poszczególne procedury muszą mieć bardzo dobre złącza. W celu stworzenia konkretnej wersji systemu operacyjnego należy skompilować odpowiedni zbiór procedur.
2. Struktura warstwowa - system zbudowany jest z kilku poziomów, co zapewnia jego
modularność. Każdy poziom składa się ze zbioru procedur i danych, które mogą być
wywoływane z poziomu wyższego. Poziom najniższy - sprzęt, najwyższy - interface z
użytkownikiem. W każdym systemie operacyjnym poziomy mogą być różne.
Model warstwowy systemu operacyjnego:
Programy systemowe - buforowanie I/O - obsługa konsoli - zarządzanie RAM - proces przydziału czasu CPU - sprzęt
Maszyna wirtualna.
System operacyjny udostępnia aplikacji tzw. maszynę wirtualną, czyli uproszczony obraz maszyny, na której pracuje aplikacja. System udostępnia aplikacji szczegóły dotyczące komputera oraz dodatkowe rozszerzenia, które ułatwiają pracę, (np. katalog udostępniony przez sieć aplikacja widzi tak samo, jak znajdujący się na lokalnym dysku. Aplikacja korzystająca z takiego katalogu nie zajmuje się obsługą sieci. Aby mogła się tam dostać, system operacyjny udaje, że jest to katalog lokalny i udostępnia go aplikacji).
Przerwania w systemie komputerowym
Przerwanie jest reakcją na asynchroniczne zdarzenie, polegającą na automatycznym zapamiętaniu bieżącego stanu procesora w celu późniejszego odtworzenia oraz przekazaniu sterowania do ustalonej procedury obsługi przerwania.
Podział przerwań ze względu na źródło:
*przerwania zewnętrzne — od urządzeń zewnętrznych
*przerwania programowe -wykonanie specjalnej instrukcji
*przerwania diagnostyczne -pułapki, błędy programowe i sprzętowe
Zarządzanie procesami
Koncepcja procesu
Proces jest elementarną jednostką pracy (aktywności) zarządzaną przez system operacyjny, która może ubiegać się o zasoby systemu komputerowego. System wykonuje programy użytkowników pod postacią procesów. Proces = wykonujący się program. W większości systemów operacyjnych wszystkie informacje o każdym procesie są przechowywane w tablicy procesów. Ogólnie: proces składa się z przestrzeni adresowej i z zapisów w tablicy procesów (przede wszystkim są to zawartości rejestrów procesora).
Zasoby potrzebne do wykonania procesu:
*czas procesora
*pamięć operacyjna
-pliki
*urządzenia wejścia-wyjścia
Proces wykonuje kod programu użytkownika (proces użytkownika) lub kod systemowy (proces systemowy)
Elementy składowe procesu:
*program-definiuje zachowanie procesu,
*dane -zbiór wartości przetwarzanych oraz wyniki,
*zbiór zasobów tworzących środowisko wykonawcze,
*blok kontrolny procesu (PCB, deskryptor)
Każdy proces reprezentowany jest w systemie operacyjnym przez specjalną strukturę danych, określaną zwykle jako blok kontrolny procesu. Struktura ta przechowuje atrybuty procesu takie, jak:
Blok kontrolny procesu:
*Stan procesu (nowy, gotowy, aktywny, oczekujący, itd.)
*Licznik rozkazów — adres następnego rozkazu
*Rejestry procesora (akumulatory, rejestry indeksowe, wskaźniki stosu, rejestry ogólnego przeznaczenia, rejestry flagowe, rejestry warunków)
*Informacje na potrzeby planowaniu przydziału procesora (priorytet, wskaźniki do kolejek porządkujących itp.)
*Informacje o zarządzaniu pamięcią (elementy tablic stron i segmentów, zawartości rejestrów granicznych)
*Informacje o stanie wejścia-wyjścia
*Informacje do rozliczeń
Stany procesu
*Nowy — proces został utworzony
*Wykonywany — wykonywane są instrukcje programu
*Zawieszony (oczekujący) -proces oczekuje na jakieś zdarzenie, np. na zakończenie operacji wejścia-wyjścia, na przydział dodatkowego zasobu, synchronizuje się z innymi procesami
*Gotowy — proces czeka na przydział procesora
*Zakończony — proces zakończył działanie i zwalnia zasoby
Wątek to sekwencyjny przepływ sterowania w programie. Jeden program może być wykonywany jednocześnie przez jeden lub więcej wątków przy czym rzeczywista współbieżność jest ograniczona przez liczbę procesorów. Grupa współpracujących wątków korzysta z tej samej przestrzeni adresowej i zasobów systemu operacyjnego. Wątki dzielą dostęp do wszystkich danych z wyjątkiem licznika rozkazów, rejestrów procesora i stosu. Dzięki temu tworzenie i przełączanie wątków odbywa się znacznie szybciej niż tworzenie i przełączanie kontekstu procesów tradycyjnych.
Istnieją trzy modele implementacji wątków:
1)wątki poziomu użytkownika,
2)wątki poziomu jądra, 3)wątki mieszane, tworzące dwupoziomowy system wątków.
Wątki użytkownika realizowane są przez funkcje biblioteczne w ramach procesu i nie są widoczne dla jądra. Jądro systemu obsługuje tylko tradycyjne procesy. Przełączanie kontekstu między wątkami powinno być zrealizowane w procesie.
Wątki jądra, zwane również procesami lekkimi, realizowane są przez jądro systemu. Jądro zajmuje się planowaniem wątków i przełączaniem kontekstu podobnie jak dla procesów tradycyjnych.
Wątki mieszane łączą cechy obydwu realizacji. Jądro zarządza wątkami jądra, które zawierają w sobie wątki użytkownika.
Planowanie przydziału procesora nazywane jest również planowaniem krótkoterminowym lub szeregowaniem procesów. Istotą planowania krótkoterminowego jest sterowanie dostępem do procesora procesów gotowych do wykonania.
Kryteria planowania czasu użycia procesora:
*wykorzystanie procesora, *przepustowość systemu, *średni czas cyklu przetwarzania procesów, *średni czas oczekiwania procesów,
*średni czas odpowiedzi procesów,
*wariancja czasu odpowiedzi procesów.
Algorytmy planowania przydziału procesora:
*metoda FCFS (FIFO) - wybierany jest proces, który przyszedł jako pierwszy - duży rozrzut czasu oczekiwania
*metoda SJF (SJN) - najkrótszy proces wskakuje na początek kolejki - daje minimalny średni czas oczekiwania.
*priorytetowe - wykonywany jest proces o najwyższym priorytecie
*rotacyjne - procesy są wykonywane "po kawałku" na zmianę. Po upływie ustalonego kwant czasu proces jest wywłaszczany i trafia na koniec kolejki procesów gotowych (chyba że wcześniej zażąda operacji wejścia-wyjścia). Preferencja dla zadań krótkich (wydłuża się czas oczekiwania i czas cyklu przetwarzania dla zadań długich). Przełączanie kontekstu pochłania pewien czas!!!
*wielopoziomowe planowanie kolejek - istnieje kilka kolejek (np.: dla procesów o różnych priorytetach) Istnieje możliwość przydziału różnych priorytetów oraz różnych algorytmów szeregowania do poszczególnych kolejek
*wielopoziomowe planowanie kolejek ze sprzężeniem zwrotnym. W metodzie tej proces który nie wykona się w kwancie czasu danej kolejki jest przenoszony do kolejki o niższym priorytecie (lub odwrotnie z niższego do wyższego poziomu kolejki priorttetów).
Większość z opisanych powyżej algorytmów może być zrealizowana w wersji wywłaszczającej lub nie wywłaszczającej. Wywłaszczanie procesów polega na przerywaniu wykonywania bieżącego procesu w celu dokonania ponownego wyboru procesu do wykonania. Jedynie algorytm FCFS nie może być wywłaszczający. Z kolei algorytm rotacyjny zakłada przymusowe wywłaszczenie procesu po upłynięciu przydzielonego kwantu czasu procesora.
Synchronizacja procesów:
Celem synchronizacji jest ograniczenie swobody przeplotu tak, żeby dopuszczalne stały się tylko przeploty zgodne z intencją programisty. Synchronizacja na najniższym poziomie polega na wykonaniu określonych (często specjalnych) instrukcji, które powodują blokowanie wykonywania odpowiednich instrukcji synchronizujących w innych strumieniach (wątkach). Synchronizacja na wyższym poziomie polega na przygotowaniu specjalnych konstrukcji programotwórczych, które gwarantują zachowanie określonych własności w przeplocie instrukcji, zgodnie z intencją programisty.
Zarządzanie zasobami pamięci
Celem zarządzania pamięcią operacyjną jest:
przydział pamięci fizycznej poszczególnym procesom,
odwzorowanie logicznej przestrzeni adresowej procesu na fizyczną przestrzeń adresową pamięci,ochrona zawartości pamięci,
współdzielenie obszarów pamięci przez różne procesy.
Strategie zarządzania pamięcią
Przydział ciągły pojedynczego obszaru,
przydział ciągły wielu obszarów,
stronicowanie,
segmentacja, segmentacja stronicowana.
Adresowanie fizyczne i logiczne:
Adres wytworzony przez procesor w wyniku wykonania rozkazu programu nosi nazwę adresu logicznego. Zbiór wszystkich adresów logicznych generowanych przez program tworzy logiczną przestrzeń adresową procesu. Adres fizyczny wskazuje konkretną komórkę pamięci operacyjnej. Zbiór wszystkich adresów fizycznych tworzy fizyczną przestrzeń adresową.
Wymiana procesów polega na okresowym przesłaniu procesu z pamięci operacyjnej do pamięci pomocniczej, aby umożliwić sprowadzenie innego procesu z pamięci pomocniczej do zwolnionego obszaru pamięci operacyjnej. W systemach z podziałem pamięci wymiana umożliwia wykonywanie większej liczby procesów niż może pomieścić pamięć operacyjna. Powoduje to zwiększenie stopnia wieloprogramowości, co zwykle poprawia efektywność systemu. W systemach bez podziału pamięci wymiana procesów stwarza jedyną możliwość uzyskania wieloprogramowości.
Przydział ciągły pojedynczego obszaru:
W pamięci fizycznej wyodrębniony jest obszar dla systemu operacyjnego i obszar dla procesów użytkownika. Rozmiar obszaru systemu może ulagać zmianom, więc proces przechowuje adres bazowy obszaruużytkownika. Adres logiczny jest przekształcany na fizyczny przez dodanie adresu bazowego obszaru użytkownika.
Przydział ciągły wielu obszarów:
Pamięć fizyczna dzielona jest dynamicznie na obszary o zmiennym rozmiarze, przydzielane kolejnym procesom. Jeden obszar zajmowany jest przez system operacyjny.
Pomiędzy przydzielonymi obszarami pozostają obszary wolne, zwane dziurami. Każdy nowy proces dostaje tylko jeden ciągły obszar pamięci o odpowiednim rozmiarze, wybrany przez system spośród dostępnych dziur. Proces przechowuje adres bazowy i granicę przydzielonego obszaru. Adres logiczny określa położenie wewnątrz przydzielonego obszaru. Jest porównywany z granicą obszaru w celu sprawdzenia poprawności, a następnie dodawany do adresu bazowego obszaru. Stronicowanie
Pamięć fizyczna podzielona jest na obszary o stałym rozmiarze, zwane ramkami. Pamięć logiczna podzielona jest na obszary o stałym rozmiarze, zwane stronami. Przed wykonaniem wszystkie strony procesu muszą być umieszczone w dowolnych ramkach, które mogą tworzyć nieciągły obszar pamięci. Proces przechowuje tablicę stron zawierającą adresy przydzielonych ramek. Adres logiczny składa się z numeru strony i odległości na stronie. Numer strony jest indeksem pozycji w tablicy stron, która zawiera adres bazowy ramki przechowującej daną stronę procesu.
Segmentacja:
Pamięć fizyczna podzielona jest na obszary o zmiennym rozmiarze, odpowiadające segmentom logicznym procesów. Pamięć logiczna podzielona jest na obszary o zmiennym rozmiarze i określonej nazwie lub numerze. Przed wykonaniem wszystkie segmenty procesu muszą być sprowadzone i rozmieszczone w pamięci operacyjnej, przy czym mogą tworzyć nieciągły obszar pamięci. Proces przechowuje tablicę segmentów zawierającą adresy bazowe i granice przydzielonych segmentów. Adres logiczny składa się z numeru segmentu i odległości w segmencie. Numer segmentu jest indeksem pozycji w tablicy segmentów.
Segmentacja stronicowana:
Pamięć fizyczna podzielona jest na ramki. Pamięć logiczna podzielona jest na segmenty. Segmenty logiczne podlegają stronicowaniu. Tablica segmentów procesu zawiera adresy bazowe tablic stron poszczególnych segmentów. Pamięć wirtualna umożliwia wykonywanie programów, które nie znajdują się w całości w pamięci operacyjnej. Udostępnia procesom dużą ciągłą przestrzeń adresową nieograniczoną rozmiarem fizycznej pamięci operacyjnej. Separuje w ten sposób pamięć logiczną procesu od pamięci fizycznej. System operacyjny zajmuje się odwzorowaniem pamięci wirtualnej używanej przez procesy, częściowo na pamięć operacyjną a częściowo na pamięć pomocniczą. Ponieważ procesy nie muszą znajdować się w całości w pamięci operacyjnej, każdy z nich zajmuje mniejszy obszar tej pamięci. Dzięki temu w pamięci można umieścić więcej procesów, zwiększając stopień wieloprogramowości. Zmniejsza się liczba operacji wejścia-wyjścia związanych z ładowaniem lub wymianą procesów. W efekcie wzrasta przepustowość systemu.
Zalety pamięci wirtualnej:
jednocześnie może być wykonywanych wiele programów
możliwe jest wykonywanie programów większych niż dostępna pamięć fizyczna
procesy mogą wykonywać programy, których kod jest ładowany do pamięci tylko częściowo
każdy proces może uzyskać dostęp do części dostępnej pamięci fizycznej
procesy mogą współdzielić w pamięci pojedynczy obraz biblioteki, programu
programy są relokowalne
można tworzyć kod niezależny od urządzenia
Pojęcie pliku
Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Jest podstawową jednostką logiczną magazynowania informacji w systemie komputerowym, widoczną dla użytkownika. Plik jest nazwanym zbiorem powiązanych ze sobą informacji, zapisanym w pamięci pomocniczej (najczęściej nieulotnej, czyli trwałej). Zadaniem systemu operacyjnego w odniesieniu do plików jest zapewnienie odwzorowania pomiędzy abstrakcyjnym obrazem pliku a urządzeniami fizycznymi.
Atrybuty pliku
Nazwa — ciąg znaków służących użytkownikowi do identyfikacji pliku
Typ — informacja służąca do rozróżnienie typów plików
Lokalizacja — informacja służąca do odnalezienia pliku w systemie komputerowym (urządzenie i położenie pliku w tym urządzeniu)
Rozmiar — bieżący rozmiar pliku w ustalonych jednostkach (bajtach, słowach, blokach itp.)
Ochrona — informacje umożliwiające kontrolę dostępu
Czasy dostępów — daty i czasy wykonywania pewnych operacji na pliku, typu odczyt, modyfikacja, utworzenie.
Typy plików
Typ pliku określa rodzaj informacji przechowywanej w pliku i tym samym sposób interpretacji jego zawartości,
np. program binarny, wynik kompilacji, kod źródłowy, makrodefinicja (plik wsadowy, skrypt powłoki itp.), tekst, biblioteka programisty, grafika, dane aplikacji. Informacja o typie pliku może być przechowywana w strukturach wewnętrznych systemu plików, w zawartości samego pliku, w katalogach lub w nazwie pliku. Typ pliku może być rozpoznawany przez system operacyjny, ale może to być również tylko informacja interpretowana przez użytkownika lub aplikację.
Metody dostępu do plików:
Metody dostępu do plików określają sposób wykonywania operacji na plikach w celu udostępnienia znajdującej się w nich informacji. Wyróżnia się następujące metody dostępu:
dostęp sekwencyjny — informacje w pliku przetwarzane są rekord po rekordzie, tzn. po wykonaniu operacji na określonym rekordzie system przygotowuje się do wykonania operacji na kolejnym rekordzie w pliku,
dostęp bezpośredni — lokalizacja rekordu do przetwarzania podawana jest jako parametr odpowiedniej operacji,
dostęp indeksowy — rekord, na którym ma być wykonana operacja identyfikowany jest przez klucz, odwzorowywany na konkretny rekord w pliku stowarzyszonym poprzez plik indeksowy.
Struktura logiczna katalogów:
Struktura jednopoziomowa — wpisy katalogowe poszczególnych plików znajdują się w tym samym katalogu (na tym samym poziomie).
Struktura dwupoziomowa — wpisy katalogowe plików znajdują się w różnych katalogach, ale katalogi nie mogą
zawierać innych katalogów.
Struktura drzewiasta — w katalogach można tworzyć podkatalogi (z dowolnym poziomem zagnieżdżenia) oraz pliki
Graf acykliczny — podkatalog (lub plik) może być umieszczony w wielu katalogach.
Graf ogólny — dopuszcza się cykl w powiązaniach pomiędzy katalogami
Strategie dopasowania bloków pamięci:
Pierwsze dopasowanie — przydziela się pierwszy wolny obszar (tzw. dziurę) o wystarczającej wielkości. Poszukiwanie kończy się po znalezieniu takiego obszaru.
Najlepsze dopasowanie — przydziela się najmniejszy dostatecznie duży wolny obszar pamięci. Konieczne jest przeszukanie wszystkich dziur.
Następne dopasowanie — podobnie jak pierwsze dopasowanie, ale poszukiwania rozpoczyna się do miejsca ostatniego przydziału.
Najgorsze dopasowanie — przydziela się największy wolny obszar pamięci. Konieczne jest przeszukanie wszystkich dziur.
Średni rozmiar procesu
Działanie układu DMA
Układ DMA ma „kompetencje” procesora w zakresie dostępu do pamięci, w związku z czym może rywalizować z procesorem o dostęp do magistrali systemowej w celu przejęcia sterowania systemem komputerowym. Procesor zleca układowi DMA transmisję danych przekazując następujące dane:
rodzaj operacji (zapis lub odczyt bloku w pamięci),
adres urządzenia wejścia-wyjścia
początkowy adres bloku w pamięci do zapisu/odczytu
rozmiar zapisywanego lub odczytywanego bloku w bajtach lub słowach
W celu realizacji zlecenia układ DMA przejmuje kontrolę nad magistralą, gdy nie jest ona potrzebna procesorowi lub „wykrada” cykl magistrali procesorowi, realizuje przesłanie słowa. Fakt zakończenia transmisji układ DMA sygnalizuje procesorowi zgłaszając przerwanie.
Fragmentacja pamięci
Fragmentacja zewnętrzna — podział obszaru pamięci na rozłączne fragmenty, które nie stanowią ciągłości w przestrzeni adresowej (może to dotyczyć zarówno obszaru wolnego, jak i zajętego)
Fragmentacja wewnętrzna — pozostawienie niewykorzystywanego fragmentu przestrzeni adresowej wewnątrz przydzielonego obszaru (formalnie fragment jest zajęty, w rzeczywistości nie jest wykorzystany) Przydział dokładnie tylu bajtów, ile wynosi zapotrzebowanie, powoduje, że koszt utrzymania bardzo małego obszaru wolnego jest niewspółmiernie duży, np. dane o obszarze zajmują więcej bajtów, niż rozmiar tego obszaru. Dlatego wolny obszar przydzielany jest w całości, ale nie jest w pełni wykorzystany.
Ochrona systemu plików
Cele ochrony -zapobieganie (złośliwym lub przypadkowym) naruszeniom ograniczeń dostępu
wymuszenie przestrzegania polityki ochrony przez procesy wczesne wykrycie błędów w dostępie do
zasobów Polityka ochrony jest zbiorem reguł dostępu do zasobów. Mechanizm ochrony jest zbiorem
dostępnych środków do wymuszania polityki ochrony Polityka może wynikać z: projektu systemu (ustalona jest na etapie projektowania systemu), wytycznych kierownictwa (ustalana jest na
etapie instalacji lub eksploatacji systemu), decyzji indywidualnych użytkowników (podjętych w trakcie eksploatacji systemu). Mechanizm ochrony powinien być na tyle uniwersalny, żeby dało się go dostosować do zmian w polityce ochrony. W skrajnym przypadku każda zmiany polityki mogłaby wymagać zmiany mechanizmu.
Podstawowe pojęcia modelu systemu ochrony
Proces — jednostka aktywna, ubiegająca się o dostęp do zasobu w celu wykonania operacji
Obiekt — jednostka zasobu dostępna poprzez ściśle zdefiniowany zbiór operacji
Prawo dostępu — możliwość wykonania określonej operacji na obiekcie
Domena ochrony — zbiór obiektów wraz ze zbiorem praw dostępu (zbiorem operacji, które
można na tych obiektach wykonać, dla których jest prawo wykonania)
3