Cele systemu operacyjnego:
- zasoby: procesory, pamięć, urządz. zewn., podział zasobów w kontekście kosztów,
- tworzenie maszyny wirtualnej: taka zmiana maszyny fizycznej by była przydatna dla użytkownika.
- wejście-wyjście (dostęp do urządzeń peryferyjnych),
- magistrala: adresowa, danych, sterująca,
PODCEL:
- obsługa urządzeń wej/wyj,
- pamięć operacyjna (tworząc pamięć wirtualną możemy stworzyć na bazie 16 MB (fizycznej) np. 64 MB (wirtualnej))
- system pliku - ma za zadanie koordynować zapis/odczyt za pomocą symboliki a nie zbioru parametrów, co jest niewygodne dla użytkownika. Musi dbać o to, aby zapis/odczyt odbywał się w sposób bezpieczny
Tworzenie maszyny wirtualnej:
To taka zmiana maszyny fizycznej by była przydatna dla użytkownika. Różni się ona od niej następującymi możliwościami:
- wejście-wyjście (so uwalnia użytkownika od trudu rozumienia złożoności we-wy i tworzy m.wirtualną, której możliwości są równie silne, ale znacznie prostsze w użyciu.)
- pamięć operacyjna (wiele systemów operacyjnych umożliwia korzystanie z maszyny wirtualnej, której pamięć ma inne pojemności niż właściwa, rzeczywista maszyna, w której pracuje so)
- system plików (w większości m.wirtualnych istnieje system plików przeznaczony do przechowywania programów i danych przez dłuższy czas; pozwala również nadać pewną strukturę informacją gromadzonym w pamięci.)
- ochrona zasobów i obsługa błędów (ponieważ w większości dużych systemów z zasobów maszyny korzysta wielu użytkowników, bardzo ważna jest ochrona zasobów każdego z nich przed skutkami błędów lub złośliwości pozostałych współużytkowników.)
- współdziałanie programów (m.wirtualna umożliwia współdziałanie programów podczas ich wykonywania, tak aby np. wyniki jednego programu mogły posłużyć jako dane wejściowe dla drugiego programu.)
- sterowanie programami (m.wirtualna daje użytkownikowi środki manipulowania programami i danymi w systemie komputerowym - poprzez interfejs)
Rodzaje systemów operacyjnych:
- dla indywidualnego użytkownika MS-DOS, WINDOWS NT
- syst. przeznaczone do sterowania procesami (czasu rzeczywistego)
ich cechy:
- sprzężenie zwrotne
- niezawodność
- bezpieczne wyłączenie po awarii
Stosow. w produkcji, kontroli, bądź monitorowaniu.
Rejestruje np. pomiary i na tej podstawie stosuje odpowiednie działania.
System powinien zgłosić do obsługi fakt wystąpienia uszkodzenia i wyłączyć się.
- systemy przepytywania plików - służą do przeglądania i modyfikacji dużych baz danych, czas nie jest kryterium krytycznym.
Wykorzystywane np. w lecznictwie. Systemy policyjne.
- systemy przetwarzania transakcji (np. system rezerwacji miejsc). Szybka wymiana informacji.
- systemy ogólnego przeznaczenia - spotykane najczęściej - są przeznaczone dla szerokiego kręgu odbiorców - otwieranie jednoczesne wielu aplikacji obsłużenia jak najwięcej urządzeń zewnętrznych.
PODZIAŁ SYSTEMÓW
- systemy wsadowe
- systemy wielozadaniowe (interaktywne)
Systemy wsadowe - użytkownik zleca wykonanie pewnego zadania do systemu, system je wykonuje, wyniki przekazywane są bądź w formie wydruku, bądź pliku. Użytkownik nie ma możliwości ingerencji w wykonywaniu zadania.
Systemy interaktywne - posiadają możliwość współpracy z użytkownikiem podczas wykonywania zadania, tzn. pytanie się co robić dalej i przy jakich parametrach.
Systemy: jednostanowiskowe, rozproszone:
- systemy jednostanowiskowe (tworzy m.wirtualną, z której w danym czasie korzysta tylko jeden użytkownik.)
- systemy rozproszone (wówczas gdy na wszystkich syst. komputerowych uruchomimy jeden system operacyjny)
Struktury systemów operacyjnych:
- struktura jednolita (poszczególne procedury i funkcje mogą się wzajemnie wywoływać)
po usunięciu n-błędów pojawia się nowych
n-błędów (ilość błędów jest stała)
- struktura warstwowa (system zbudowany w postaci warstw ułożonych jedna na drugiej. Jądro, poszczególne warstwy, aplikacje dostępne dla użytkownika)
Określamy definicje poszczególnych warstw. Do poszczególnych podprogramów można się odwoływać (część może pozostać wewnętrzna - niedostępna). Warstwy leżące jedynie powyżej mogą odwoływać się do poszczególnych warstw:
do jądra - wszystkie
do pierwszej - wszystkie oprócz pierwszej itd.
Niekiedy określa się tylko pewien przedział warstw (pierścień), które mogą się odwoływać.
Łatwiej taki system tworzyć, a tym samym uniknąć błędów. Poszczególne warstwy można wymieniać i modyfikować.
- struktura typu klient-serwer
Mikrojądro zachowuje się jak „listonosz”.
Separujemy od siebie poszczególne moduły, komunikacja między nimi odbywa się poprzez mikrojądro.
Rozbijamy system na pewne moduły, które są mniej lub bardziej równorzędne. Oprócz modułów znajduje się tu mikrojądro służące do sterowania modułami. Pośredniczy w przekazywaniu informacji.
Moduł, który potrzebuje usługi jest klientem. Moduł, który usługę udostępnia jest serwerem.
Takim systemem jest np. Windows NT.
Bardzo łatwo jest zaimplementować strukturę klient-serwer w syst. rozproszonych nadając jednemu z komputerów funkcję mikrojądra.
System wsadowy:
Systemy wsadowe - użytkownik zleca wykonanie pewnego zadania do systemu, system je wykonuje, wyniki przekazywane są bądź w formie wydruku, bądź pliku. Użytkownik nie ma możliwości ingerencji w wykonywaniu zadania.
Język sterowania pracami:
Jest jedno z ulepszeń so polegające na:
Można do czytnika włożyć wiele zadań, ale trzeba je rozdzielić czyli wprowadzić dodatkowe karty
rozdzielające. Uzyskujemy w ten sposób język sterowania, dzięki któremu system działa w następujący sposób: Na początku do pamięci należ wprowadzić program, który będzie interpretował język sterowania a następnie wprowadzane są poszczególne zawartości kart będących konkretnymi programami do wykonania przez maszynę. Następuje tu zwiększenie wydajności, za cenę pewnego obszaru pamięci zajmowanego przez program interpretujący język sterowania.
Praca pośrednia:
Jedna z zastosowanych metod zwiększających wydajność systemu (odnosząca się do operacji we i wy). Polegała ona na przeniesieniu danych wejściowych z kart na taśmę magnetyczną oraz przekodowania danych wyjściowych, zapisanych na taśmie magnetycznej, na postać drukowaną zlecano dodatkowemu komputerowi, tańszemu i o mniejszej mocy.
Kanał, przerwanie, stos:
- przerwanie
To pewnego rodzaju wstrzymanie programu głównego w celu wykonania innego programu.
NTC - Kontroler przerwań (przyjmuje żądania poszczególnych urządzeń i kieruje je do procesora, max 8).
Gdy następuje przerwanie musi zostać zapamiętany stan rejestru przy głównym programie.
Stosując przerwania, można w tle jednego zadania wykonywać inne, wykorzystując w pełni czas naszego systemu.
Czyli podczas wykonania zadania 1 można odczytać zadanie 2 a w trakcie wykonywania zadania 2 można odczytać kolejne zadanie.
Podział przerwań :
przerwania maskowalne
przerwania niemaskowalne
zazwyczaj występuje jedno przerwanie niemaskowalne i wiele przerwań maskowalnych.
Przerwanie niemaskowalne - Przejęte i wykonywane przez procesor, używane do prawidłowego działania sprzętu. Jeśli nastąpi uszkodzenie sprzętu pojawi się przerwanie niemaskowalne. Może być wykorzystywane do testowania elementów systemu podczas obsługi.
Przerwanie maskowalne - nie musi być wykonywane przez procesor, system przerwań maskowalnych może być wyłączony. W niektórych systemach można zamaskować wszystkie przerwania lub każde z kolei.
Priorytety przerwań
mogą być przydzielone na stałe
można przypisać priorytety do poszczególnych przerwań
układ kontrolera przerwań będzie zmieniał priorytety przerwań
przerwanie o wyższym priorytecie może przerwań wykonywanie zadania o niższym priorytecie
- kanał
Bezpośredni dostęp do pamięci.
By procesor wykonywał swoje zadania należy połączyć urządzenie peryferyjne z INTC. Do tego celu służy kanał. Dane przepływają między urządzeniem a pamięcią bez udziału procesora. Jest wbudowany w układ kontrolera DMA sterującego bezpośrednim dostępem do pamięci.
Po sygnale żąda przerwania DMA żąda zwolnienia magistrali. Magistrala dzieli się na pewne cykle, normalnie procesor ma kontrolę nad wszystkimi cyklami. Gdy procesor dostaje żądanie zwolnienia magistrali przechodzi on w stan wysokiej impedancji. Układ DMA przesyła dane a potem zwalnia magistralę. Procesor pobiera dane i umieszcza je w kolejce po czym wykonuje je po kolei.
- stos
Stos informacji na którym układane są informację jedna nad drugą, a następnie w miarę potrzeb są zdejmowane z tego stos, ale tylko z góry do dołu (od najmłodszej informacji do najstarszej). Mechanizm ten wykorzystywany jest przy wywoływaniu funkcji i procedur.
Monitor wsadowy jednostrumieniowy i wielostrumieniowy:
- monitor wsadowy jednostrumieniowy
Jest to so, w którym stało się możliwe planowanie wykonywania prac znajdujących się w pamięci (dysk magnetyczny), które zostały uprzednio tam wgrane przy udziale kanałów i przerwań. Planowanie, która praca zostanie wykonana po zakończeniu bieżącej umożliwiły dyski twarde o dostępie swobodnym.
- monitor wsadowy wielostrumieniowy
Jest to so, w którym możliwe było równoczesne wykonywanie kilku programów przez jedną maszynę. Procesor dzielił swój czas między te programy w zależności od tego , których zasobów potrzebowały w danej chwili. Ten so zajmował się również ochroną jednych prac przed skutkiem działania innych.
Wieloprogramowanie:
Metoda używana w monitorach wsadowych wielostrumieniowych. Polegała ona na tym, że równocześnie kilka programów znajdowało się w pamięci operacyjnej, a procesor dzielił odpowiednio między nie swój czas - w zależności od tego, których zasobów potrzebowały one w danej chwili.
VMS:
So, w którym jednocześnie można było pracować pod kontrolą więcej niż jednego so. W VMS można było wykonywać programy napisane dla wcześniejszych wersji sprzętu odpowiednich firm.
Praca interakcyjna:
Jest to komunikacja użytkownika z komputerem za pomocą np. terminala. Użytkownik może od razu testować program z dokonanymi zmianami, oglądać wyniki dokonywać zmian.
Zadania systemu operacyjnego :
Segregowanie prac
Sterowanie pracami lub interpretowanie języka poleceń
Obsługa urządzeń wejścia wyjścia
Obsługa błędów
Obsługa przerwań
Kontrolowanie prac
Sterowanie zasobami - urządzeniami zewnętrznymi, procesami, pamięcią
Ochrona zasobów ( pamięć, urządzenia peryferyjne, pliki)
Umożliwienie wielodostępności
Umożliwienie dobrego sposobu komunikacji z operatorem
Interfejs graficzny
Ewidencjonowanie zasobów komputera
Właściwości systemu operacyjnego:
Współbieżność - wykonywanie wielu czynności jednocześnie (należy zadbać o to by jedno zadanie miało wpływu na inne zadanie)
Wspólne korzystanie z zasobów systemu
Pamięć długookresowa
Niedeterminizm (kolejność przełączeń między procesami jest inna za każdym razem gdy te procesy przełączamy)
Wielosystemowość:
Zamiast użytkownikowi, dostęp do sytemu możemy dać kilku innym systemom.
Powstanie wówczas system wielosystemowy.
Pożądane cechy systemu operacyjnego:
Wydajność (Procent wykorzystania zasobów) (przepustowość informacyjna)
Niezawodność
Pielęgnowalność
Dobra dokumentacja sytemu :
dokumentacja dla użytkownika
---------------- dla administratorów systemu
---------------- dla programistów którzy będą tworzyć oprogramowanie
---------------- wewnętrzna firmy prowadzącej system, w której powinien się znaleźć dokładny opis podprogramów systemu.
By system miał mały rozmiar, by nie zawierał dużo pamięci.
Proces:
Dynamiczny ciąg działań wykonywany na podstawie programu. Jest czynnością, która powstaje w wyniku wykonywania programu. W celu wykonania jakiegoś procesu wywołujemy program.
Program:
Statyczny zestaw instrukcji wykonywany przez jednostkę centralną i realizujący określone zadanie.
Procesor:
Urządzenie sprzętowe lub sprzętowo programowe (połączenie procesora i programu)
Wątek:
(proces) proces specjalny, który ma dostęp do kodu i do danych innego procesu.
Współbieżność:
Jest to wykonanie wielu procesów jednocześnie
WSPÓŁBIEŻNOŚĆ POZORNA
Występuje wówczas, gdy liczba procesów przewyższa liczbę procesorów, czyli liczba czynności jest większa od liczby wykonawców.
We wsp. pozor. system będzie dokonywał przełączeń pomiędzy procesami.
Wielozadaniowość koleżeńska:
to samo co bez wywłaszczania. Proces, który otrzyma procesor zachowuje go dopóty, dopóki nie odda go z powodu swojego zakończenia lub przejścia do stanu czekania.
Wielozadaniowość z wywłaszczaniem:
użytkownik i system operacyjny decyduje o tym jaki czas procesora otrzyma każda aplikacja.
Synchronizacja:
Jedno z zadań so polegające na wytyczeniu specjalnych punktów, w których procesy muszą synchronizować swoje działanie. Poza te punkty jeden proces nie może przejść dopóty, dopóki drugi proces nie zakończy swojego działania.
Blokada:
Jedno z zadań so polegające na niedopuszczeniu do powstania blokady tzn. sytuacji, w której kilka procesów współzawodniczy o te same zasoby niepodzielne.
Semafory:
Nieujemna liczba całkowita, na której - z wyjątkiem nadawania wartości początkowych - mogą działać jedynie operacje czekaj i sygnalizuj.
Operacje sygnalizuj i czekaj:
Operacja CZEKAJ wykonuje operację S:= S - 1 (zmniejszenie o 1 - o ile jest to możliwe)
Operacja SYGNALIZUJ wykonuje operację S:= S + 1 (zwiększenie o 1)
Semafor nie może być ujemny czyli nie może mieć wartości mniejszej niż S>=0
Wzajemne wyłączanie:
Polega na zapewnieniu, by tylko jeden proces korzystał z zasobów niepodzielnych.
MONITOR:
Struktura zawierająca dane, procedura umożliwiająca dostęp do tych danych oraz program inicjalizujący.
REGIONY KRYTYCZNE:
mechanizm automatycznego posługiwania się semaforami.
Przekazywanie komunikatów:
Sposób komunikacji między procesami za pomocą operacji pierwotnych dostarczonych przez so. Umożliwiają nadawanie i odbieranie komunikatów.
Postacie procedur wyślij/odbierz:
Obie te operacje mogą przyjmować różne postacie :
Postać blokująca - gdy obie te operacje będą oczekiwać na wysłanie lub odebranie komunikatu (informacji)
Postać nie blokująca - wysyłany komunikat może być gdzieś przeczytany, jeśli dotrze do miejsca docelowego to ok., jeżeli nie dotrze do celu to nic się nie stanie.
Operacje te mogą być wykonane w sposób pośredni lub bezpośredni
Bezpośrednio - Jeśli podamy identyfikację procesu gdzie będzie wysyłany komunikat, odbiorca musi
wiedzieć z jakiego procesu otrzyma komunikat
nadaj (pid, komunikat)
odbierz (A , komunikat)
Pośredni komunikaty sa przesyłane do pewnych skrzynek
Bufor ( pula komunikatów):
Występuje w nieblokującej obsłudze komunikatów, so operacyjny musi stworzyć pewnego rodzaju obszar buforowy albo pulę komunikatów, do której oczekujące komunikaty można kopiować i przechowywać do chwili przyjęcia.
Podstawowe udogodnienia/wymagania sprzętowe do budowy nowoczesnego systemu operacyjnego:
- mechanizm przerwań (program obsługi przerwań- określa źródło przerwania i wykonuje odpowiednie czynności)
- ochrona pamięci operacyjnej (kiedy kilka procesów jest wykonywanych współbieżnie, wtedy trzeba chronić pamięć, z której korzysta proces, przed nieupoważnionym dostępem do niej drugiego procesu)
- zbiór rozkazów uprzywilejowanych
Występowanie zbiorów rozkazów uprzywilejowanych - ( można je wykorzystać w trybie nadzorcy systemu operacyjnego) Muszą istnieć dwa tryby ale może być ich więcej 4,9,16 ( w procesorach INTEL występują 4 takie tryby)
Poziom systemu operacyjnego
Tryb użytkownika
Każdy z nich ma inny poziom. Wyróżnia się kilka grup[ rozkazów uprzywilejowanych.
włączanie i wyłączanie przerwań - (zależy tu na tym aby przerwania były włączane i wyłączane w trybie systemu operacyjnego)
rozkazy przełączania między procesami
rozkazy obsługi rejestrów pamięci wirtualnej - (pamięć jest chroniona przez pewne rozkazy, rejestry obsługujące pamięć wirtualną ; rozkazy muszą być wykonywane przez procesy systemowe)
operacje wejścia/ wyjścia - rozkazy odnoszące się do urządzeń peryferyjnych (rozkazy odczytu i zapisu) Ochrona zasobów niewspółdzielnych 0to tylko część operacji we / wy. Użytkownicy mają pliki które są dostępne to nie są już chronione.
Rozkazy sterujące - czyli rozkazy które mają wpływ na funkcjonowanie procesora.
Przełączenie z trybu użytkownika do trybu nadzorcy:
Przejście z trybu użytkownika na tryb odbiorcy - kiedy?
Odwołanie się do systemu operacyjnego w celu wykonania funkcji systemowej lub rozkazu uprzywilejowanego
Wywołanie API - przy Windows - przełączamy się na tryb nadzorcy. System wykonuje operacje wydane mu przez procesy użytkownika. Proces użytkownika może zwrócić się do systemu aby on wykonał jakiś proces, ale system może odmówić.
Wystąpienie przerwania - jeśli zostanie przyjęte to system wykonuje program obsługi przerwań
Wystąpienie błędu w procesie użytkownika. Mogą być różne błędy:
błąd adresowania
Próba wykonania rozkazu uprzywilejowanego - jeśli proces użytkownika wykonać taki rozkaz to powstaje wyjątek, przy takim wystąpieniu wyjątku system przechodzi do trybu nadzorcy.
Jądro systemu:
Składa się z 3 elementów
programu wstępnej obsługi przerwań
dyspozytora procesów
Implementacji operacji czekaj sygnalizuj
Reprezentacja procesów:
wykonawczy ( bieżący ) dany proces jest wykonywany przez jakiś inny proces. Tylko jeden może być wykonywany w jednym momencie przez jeden procesor.
Procesów może być wykonywane tyle ile jest procesorów
wykonywalny proces w danym momencie nie jest wykonywany, ale może być w każdej chwili wznowiony
Niewykonywalny ( w oczekiwanie, wstrzymany ) nie może zostać wznowiony, został wstrzymany ;tak długo aż nie zmieni się ich stan procesów niewykonalnych nie możemy ich wznowić
Załadowany - wczytany do pamięci, ale nie pobrany
Zakończony - zakończony ale jeszcze nie usunięty z pamięci.
Tablica główna:
TG - tablica główna zawierająca informacje o naszym systemie
Deskryptor procesu:
Zawiera wszystkie ważne informacje o danym procesie. Zbudowany jest z identyfikatora procesu (nazwy procesu) oraz identyfikatora stanu procesu (wykonywany, wykonywalny, niewykonywalny).
Wstępna obsługa przerwań:
Zadania :
określić źródło przerwania
ma zainicjować obsługę przerwania dla wybranego urządzenia .
Mogą wystąpić priorytety, czyli niektóre przerwania będą wcześniej obsługiwane niż inne. W trakcie przerwania może nastąpić zmiana stanu procesu
Dyspozytor:
(drugi element który występuje w jądrze ) wykonuje przełączenia między procesami. Przydziela on, określa że po wstrzymaniu procesu A będzie wykonywał się proces B
Deskryptor:
Sprawdza czy proces jest bieżący, czy może być kontynuowany i czy ma najwyższy priorytet. Jeśli tak to jest kontynuowany. Jeśli nie to należy zapamiętać środowisko ulotne wstrzymanego procesu, aby móc go wznowić. Następnie szukamy najodpowiedniejszego procesu do wznowienia. Po znalezieniu tego procesu odtwarzamy SV wcześniejszego procesu po czym przekazujemy mu sterowanie / działanie. Aby ułatwić dyspozytorowi zadanie , zamiast odwoływać się do struktury systemu będzie odwoływać się do kolejki która zawiera wszystkie procesy, które są w danym momencie bieżące i wykonywalne procesy niewykonywalne nie będą w tej kolejce umieszczane. KP - kolejka procesu
Kolejka procesora:
Dodatkowe pole w tablicy głównej. Wskazuje na te deskryptory, które są wykonywalne. Kolejka może być priorytetowa - pierwotny deskryptor ma najwyższy priorytet.
Gdy któryś z procesów stanie się wykonywalny, (zostanie dołączony do kolejki na koniec lub w inne miejsce kolejki), proces niewykonywalny zostaje odłączony od kolejki.
Kolejka wielopoziomowa ze sprzężeniem zwrotnym:
mamy wówczas pewien zestaw kolejek, z których każda posiada inny priorytet (pierwsza - najwyższy).
Procesy które wykonują się szybko mają podwyższony priorytet, które natomiast wykonują się długo - mają obniżony priorytet.
Podwyższanie priorytetów:
Przyznawany procesowi priorytet (p. podstawowy) jest traktowany jedynie jako punkt startowy; każdy proces, który podejmie jakieś określone działanie otrzymuje tymczasowo wyższy priorytet. Za każdym razem, gdy dyspozytor będzie wybierać dany proces, wówczas priorytet tego procesu będzie zmniejszany, aż do uzyskania z powrotem priorytetu podstawowego.
Implementacja operacji czekaj i sygnalizuj:
Powody umieszczenia w jądrze:
- dostępność dla wszystkich
- operacja czekaj może zablokować adres
- operacja sygnalizuj może uczynić proces niewykonywalny procesem wykonywalnym.
KOLEJKA SEMAFORA:
Lista procesów oczekujących na wej. semafora.
Operacja czekaj będzie odejmowała wartość semafora.
Operacja sygnalizuj będzie zwiększała wartość semafora, chyba że w kolejce semafora znajdują się procesy.
Kolejka semafora może być priorytetową np. pierwszy przyszedł pierwszy wyjdzie lub ostatni wyszedł ostatni wyjdzie.
Operacje niepodzielne:
To takie które rozpoznajemy, nie możemy ich przerwać i musimy je skończyć. Nie można w ich trakcie wybrać innych operacji, żaden inny proces nie może się wykonać. Czekaj i sygnalizuj są więc operacjami sekcji krytycznej. Trzeba więc w jakiś sposób chronić dostęp do nich. Do tego celu wykorzystuje się rozkazy procesora:
wymień zawartość dwóch komórek - mamy dwie komórki pamięci i wymieniamy ich zawartość
sprawdź i ustaw - odczytuje zawartość danej komórki i jednocześnie zapisuje nową wartość
Aktywne czekanie:
Polega ono na tym, że proces, który nie może „przebrnąć” przez operacje zajmij, więzi swój procesor w pętli ponawiania prób wykonania operacji aż do chwili zmiany wartości sygnalizatora.
Cele zarządzania pamięcią operacyjną:
- przemieszczanie procesów, np. potrzebowanie dużego ciągłego obszaru wymusza przemieszczenie.
- ochrona pamięci - wymagamy aby adres generowany przez proces nie wykraczał poza przydzielony blok. Odwołanie się poza ten blok jest niedozwolone.
- dostęp do obszarów dzielonych - czyli obszarów, do których mogą się odwoływać różne procesy
- organizacja logiczna pamięci - dzięki temu można podzielić zadania pomiędzy różnych programistów. Bloki te mogą mieć różny rozmiar ochrony.
- organizacja fizyczna pamięci - podział na pamięć główną podstawową i pamięć pomocniczą.
Pamięć główna to RAM, pamięć pomocnicza to dyski twarde itp. Chcielibyśmy aby pamięć pomocnicza była przedłużeniem pamięci głównej.
Tworzenie adresów:
1. można tworzyć adres w czasie kompilacji po warunkiem, że znamy już miejsce gdzie będą znajdować się w pamięci poszczególne funkcje i procedury.
2. można go tworzyć w momencie ładowania. Kompilator tworzy kod wynikowy, który jest przygotowany do umieszczenia pod adresem 0.
3. możemy generować adres na etapie wykonywania.
Pamięć wirtualna:
Zapewnia, że procesy widzą swoją pamięć w taki sposób, w jaki chcą.
System w oparciu o pamięć rzeczywistą musi zapewnić przydział odpowiednich bloków pamięci do procesów.
PW może być większa od przestrzeni pamięci.
Rejestr bazowy i graniczny:
Najmniejszy i największy adres komórki jaki zajmuje proces załadowany do pamięci jest przechowywany w tychże rejestrach. Wszystkie adresy w programie są traktowane względem bazowego. Gdy przesunie się proces ulegają zmianie adresy komórek zapisanych w tych rejestrach.
Stronicowanie pamięci:
Przestrzeń adresów wirtualnych jest podzielona na jednakowej wielkości strony, pamięć główna zaś jest podobnie podzielona na tej samej wielkości ramki stron.
Segmentacja pamięci:
Adres dzielony jest na nr segmentu i przesunięcie w tym segmencie.
Segmenty mogą mieć różny rozmiar (strony miały rozmiar narzucony z góry)
Tablica deskryptorów segmentów:
przechowujemy w niej długości segmentów.
Pełny adres dzielimy na dwie części cała przestrzeń adresowa jest 48-bitowa.
STRATEGIE PRZYDZIAŁU PAMIĘCI
1. wymiany
2. pobierania
3. rozmieszczenia
Różnice w działaniu urządzeń peryferyjnych:
- prędkość działania (10-2 - 1010)
- jednostki przesyłania (bity, bajty, podwójne słowa - 16-bitowe, poczwórne słowa - 32-bitowe)
- reprezentacja danych w danym urządzeniu (w przypadku klawiatury, po naciśnięciu klawisza do systemu doprowadzany jest jego numer, a nie numer kodu znaku na nim się znajdujący)
- operacje uprzywilejowane - np. drukarka: przesuw do nowej strony, dysk: ustaw głowicę o nr na określonym sektorze.
- różne błędy występujące dla urządzenia: drukarka: brak papieru, dysk: błąd sumy kontrolnej.
WYMAGANIA STAWIANE SYSTEMOWI:
- niezależność od kodu znaku - kod potrzebny drukarce na wydrukowanie znaku „a” może być różny od „a”
- niezależność od urządzeń we/wy - realizując dostęp do urządzenia chcemy, aby dostęp ten zrealizowany był w podobny sposób
- wydajność - chcemy, aby obsługa urządzeń była tak zrealizowana, aby procesy nie musiały zbyt długo czekać na komunikację z urz. peryferyjnym.
- jednolite traktowanie urządzeń - bez względu na rodzaj urządzenia ma być taki sam interfejs.
PODPROGRAMY UMOŻLIWIAJĄCE KOMUNIKACJĘ Z URZĄDZ. WE/WY:
Podprogramy te muszą być podprogramami wielowejściowymi, tzn. wiele procesów może się do nich odwołać.
ZADANIA:
- tworzenie bloków zamówień wejścia-wyjścia
- informowanie procesu obsługi, że został dla niego przygotowany blok zamówień
MECHANIZMY PRZYSPIESZAJĄCE DZIAŁANIE OPERACJI WE/WY:
- BUFOROWANIE
przy dwóch buforach w jednym umieszczane są informacje, a w tym czasie jest odczyt i na odwrót.
Ilość buforów może być zwiększona.
W przypadku zbyt częstego wysyłania informacji zacznie nam brakować czasu. Wówczas wykorzystywane są bufory.
Im większa ilość buforów, tym większą ilość informacji możemy wysłać.
Max szybkość uzależniona jest od szybkości komunikowania się systemu z urządzeniem.
- MECHANIZM SPOOLERA
POD - proc. obsługi dysku.
W takim mechanizmie wiele procesów może zapisywać dane i wydrukować.
Z punktu widzenia procesu zapis na dysk (dla procesu = wydruk) odbywa się natychmiast.
Spooler pobiera kolejne pliki zapisane na dysku i wysyła na drukarkę.
Nie będzie miała miejsca sytuacja, że dwa procesy wydrukują dane jednocześnie.
Drukarka jest urządzeniem niepodzielnym, ale przy udziale systemu, korzystając z dysku, z punktu widzenia procesu użytkownika staje się urządzeniem podzielnym.
Wydruki są zapamiętywane na dysku, dlatego możemy „drukować” nawet jeżeli urządzenie jest zepsute (drukarka). Rzeczywisty wydruk nastąpi gdy drukarka będzie gotowa do pracy.
SPOOLER zapewnia podzielność drukarki.
Zadania systemu plików:
- tworzenie i usuwanie plików
- dostęp do odczytu i zapisu
- zarządzanie obszarem pamięci pomocniczej
- odwoływanie się do plików poprzez nazwy symboliczne
Katalogi plików:
Tabele zawierające opisy poszczególnych plików.
Jedną z podstawowych informacji jest adres pliku na dysku twardym. Atrybuty. Informacje administracyjne: data, czas (utworzenia, modyfikacji, ostatniego otwarcia).
Zadania planisty (planista wysokiego poziomu):
- wprowadzanie nowych procesów
- wyznaczanie priorytetów procesów
- implementacja polityki przydziału zasobów
Algorytmy planowania:
- najpierw najkrótsza praca (najpierw najkrótsza praca z zawłaszczeniem) - proces może zawłaszczyć procesor, jeżeli ma czas wykonywania mniejszy niż czas wymagany do ukończenia procesu bieżącego; używany w sys. wsadowych
- algorytm rotacyjny - każdemu procesowi w systemie przydziela się ustalony, jednakowy przedział czasu na wykonanie zamawianej przez niego usługi; jeśli nie starczy mu czasu zostanie przeniesiony na koniec kolejki i musi poczekać aż przyjdzie znowu jego kolej; sys. Z podziałem czasu CTSS
- kolejka dwupoziomowa (procesy, które nie zakończyły się w ustalonej liczbie przedziałów czas, są przenoszone do kolejki drugoplanowej; tam może być kolejka rotacyjna z większym przedziałem czasu albo zarządzanie zgodnie z zasadą „pierwszy przyszedł, pierwszy obsłużony”.
Ochrona systemu operacyjnego:
- ochrona przed wadami
- ochrona przed złymi zamiarami
Dziedzina (ochrona, w której wykonuje się proces) = sfera ,kontekst, reżim
Makroinstrukcja (procedura):
Jest to pewien określony ciąg czynności, który można wykonać za pomocą jednej instrukcji.
Struktury sterujące:
Pewnego rodzaju instrukcje warunkowe, którymi posługują się niektóre języki. Umożliwiają one wykonywanie pracy tylko wtedy gdy zostaną spełnione określone warunki.
Rozkazy uprzywilejowane:
Rozkazy przeznaczone wyłącznie do użytku systemu operacyjnego. Ich wykonywanie jest możliwe tylko w trybie nadzorcy (należy się przełączyć do niego z trybu użytkownika)
- włączanie i wyłączanie przerwań
- przełączanie CPU od procesu do procesu
- obsługiwanie rejestrów używanych przez sprzętową ochronę pamięci operacyjnej
Deskryptor procesu:
- identyfikator procesu (nazwa procesu)
- identyfikator stanu procesu (wykonywany, wykonywalny, niewykonywalny)
- środowisko ulotne procesu - kontekst procesu (wszystkie informacje pomocne przy pamiętaniu i odtwarzaniu procesu)
Proces wstępnej obsługi przerwań:
- określić źródło przerwania
- zainicjować obsługę przerwania
Cele zarządzania pamięcią operacyjna:
- przemieszczanie procesów
- ochrona zawartości pamięci
- dostęp do obszarów dzielonych
- organizacja logiczna pamięci (segmentacja)
- organizacja fizyczna pamięci (stronicowanie)
Odwzorowanie adresów:
Tłumaczenie adresów programu na adresy komórek pamięci fizycznej.
Przestrzeń adresów (przestrzeń nazw):
Zakres adresów programu.
Przestrzeń pamięci:
Zakres komórek pamięci dostępnej w komputerze.
Pamięć wirtualna = pamięć główna + pamięć pomocnicza.
Stronicowanie:
Fizyczny podział pamięci. Pamięć główna składa się z tej samej wielkości ramek stron, natomiast pamięć podręczna składa się z jednakowych co do wielkości stron. Aby określić adres programu przyjęło się że jego bardziej znaczące bity będą mówić o numerze strony a mniej znaczące bity o numerze bajtu na stronie. Przekroczenie numeru bajtu powoduje zwiększenie numeru strony. Odwzorowania tego adresu na adres w pamięci fizycznej dokonuje się przy użyciu tablicy stron.
Segmentacja:
Logiczny podział pamięci. Przestrzeń adresów dzieli się na segmenty, które mogą być różnej wielkości. Podział adresu programu na numery segmentu i bajtu jest logiczny, a przekroczenie zakresu dla numeru bajtu nie ma żadnego wpływu na numer segmentu.
Strategie rozmieszczania dla systemów bez stronicowania:
- najlepsze dopasowanie
- najgorsze dopasowanie
- pierwsze dopasowanie
- algorytm bliźniaków
Strategie rozmieszczania dla systemów ze stronicowaniem:
- fragmentacja wewnętrzna (proces nie potrzebuje przestrzeni adresowej będącej wielokrotnością 2, więc traci się część przestrzeni)
Strategie wymiany dla systemów ze stronicowaniem:
- najdawniej używana strona
- najmniej używana strona
- najdawniej załadowana strona
Plik:
Jest to jednostka logiczna, która zarządza system plików. Nośnik na, którym przechowywane są pliki podzielony jest zazwyczaj na bloki.
Katalog plików:
Służy do katalogowania plików. Odwzorowuje symbolicznej nazwy pliku na jego adres fizyczny w pamięci pomocniczej.
Katalog główny zawiera wskaźniki do katalogu użytkownika a ten wskaźniki do plików. Ta zależność może być bardziej rozbudowana.
Organizacja pamięci pomocniczej:
- system plików zwartych
- łańcuch powiązanych bloków
- mapa plików
- bloki indeksów
Otwieranie pliku:
- wyszukanie pozycji pliku w katalogu
- sprawdzenie czy użytkownik ma prawo do otwarcia pliku w tym trybie
- sprawdzenie czy inny czy inny proces w tej chwili np. czyta ten plik gdy my chcemy zapisywać
- ustalenie urządzenia i lokalizacji pliku
- otworzenie deskryptora pliku, który zawiera wszystkie informacje o pliku potrzebne do przesyłania danych
Deskryptor pliku:
Dzieli się go na centralny deskryptor pliku dla każdego otwartego pliku oraz lokalny deskryptor pliku dla każdego procesu używającego dany plik.