SO ściąga


1. Co to jest system operacyjny (S.O.)

Jest to proces uruchamiany przed wszystkimi innymi, sterujący przydziałem zasobów, ułatwiający obsługę komputera i zwiększający jego wykorzystanie, nadzorujący pracę procesów inicjowanych po nim. Zapewnia też komunikację między sprzętem a użytkownikiem.

2. Do czego jest potrzebny S.O.

System operacyjny musi rozdzielać zasoby komputera między wielu równoczesnych jego użytkowników. Jego celem jest spowodowanie, by łatwiej im było posługiwać się komputerem, a jednocześnie zwiększenie wykorzystania takich zasobów, jak procesory, pamięć i urządzenia wejścia-wyjścia. Drugim głównym zadaniem systemu operacyjnego jest przckształcenie surowego sprzętu w maszynę, która jest łatwiejsza w użyciu. Można na to spojrzeć tak, jak na stworzenie dla użytkownika maszyny wirtualnej, której właściwości użytkowe są wprawdzie inne niż danej maszyny fizycznej, ale znacznie dla niego przydatniejsze. System operacyjny jest więc potrzebny po to aby programista nie musiał sam zapewniać dostępu do danych w pamięci, urządzeń, plików i operacji na nich.

3. Struktury S.O.

a) Struktura jednolita Najdawniejsze systemy operacyjne (a także niektóre późniejsze) właściwie nie mają żadnej struktury. Taki system operacyjny jest jedynie ogromnym programem zawierającym wiele procedur. Procedury mogą bez żadnych ograniczeń wywoływać i być wywoływane przez inne procecdury. W niewielkim stopniu ogranicza się rozmiar danych systemu.

b) Struktura warstwowa Polega na podzieleniu systemu na moduły, które są połączone w warstwy. Każda warstwa spełnia funkcje, które zależą tylko od warstwy znajdującej pod spodem. Przeważnie najniższe warstwy są najważniaesze pod względem niezawodności, mocy i wydajności. Zaletą takiej struktury jest fakt, że podział na moduły zmniejsza stopień wzajemnych zależności między różnymi składowymi systemu oraz pozwala unikać niepożądanych powiązań.

c) Struktura klient-serwer Polega na podziale systemu operacyjnego na moduły, które spełniają pewne wyodrębnione zadania. Jednakże moduły te nie są rozmieszczone w warstwach, ale traktowane mniej lub bardziej równorzędnie. Nie komunikują się one ze sobą poprzez wywoływanie procedur, ale wysyłają komunikaty za pośrednictwem centralnego programu obsługi komunikatów. Komunikaty mogą być wysyłane w obie strony, dzięki czemu można taką samą drogą przekazywać wyniki. Moduł wysyłający początkowy komunikat nazywa się klientem, moduł odbierający ten komunikat (i wykonujący żądaną usługę) nazywa się serwerem. Moduł nie musi mieć zawsze tego samego statusu- serwer może otrzymać zamówienie na taką usługę, której wykonanie wymaga wysłania nowego zamówienia do jeszcze jednego modułu wtedy serwer staje się chwilowo klientem. Taka struktura ma takie same zalety, jak struktura warstwowa, ale zwiększa izolację i zmniejsza zależność między modułami (do tego stopnia, że klient i serwer mogą z powodzeniem pracować na odrębnych procesorach a nawet w różnych systemach). Zmniejsza się również rozmiar niezbędnego oprogramowania systemowego. Najważniejszą częścią takiego systemu jest oczywiście program centralny, który obsługuje przekazywanie komunikatów oraz unmożliwia korzystanie z innych podstawowych udogodnień; zwykło nazywać się go mikrojądrem. Przykładem systemu o takiej strukturze jest system Windows NT.

4. Zadania S.O.

Głównymi zadaniami są:

a) Podział zasobów System operacyjny musi rozdzielać zasoby komputera między wielu równoczesnych jego użytkowników. Jego celem jest spowodowanie, by łatwiej im było posługiwać się komputerem, a jednocześnie zwiększenie wykorzystania takich zasobów, jak procesory, pamięć i urządzenia wejścia-wyjścia. Znaczenie dobrego wykorzystania zasobów jest związane z ich kosztami ciągła obniżka cen sprzętu doprowadziła do tego, że mniejszy nacisk kładzie się na wykorzystanie zasobów; obecnie wiele mikrokomputerów wyspecjalizowano do wykonywania wyłącznie pojedynczych zadań. Jednakże duże komputery wciąż jeszcze są tak drogie, że dzielenie ich zasobów jest opłacalne. Wzrasta też tendencja do stosowania również mikrokomputerów do wielu zadań, nawet wtedy, gdy korzystają z nich indywidualni użytkownicy; w takich sytuacjach podział zasobów jest wciąż ważną kwestią.

b) Tworzenie maszyny wirtualnej Drugim głównym zadaniem systemu operacyjnego jest przckształcenie surowego sprzętu w maszynę, która jest łatwiejsza w użyciu. Można na to spojrzeć tak, jak na stworzenie dla użytkownika maszyny wirtualnej, której właściwości użytkowe są wprawdzie inne niż danej maszyny fizycznej, ale znacznie dla niego przydatniejsze.

Zadania:

1. szeregowanie prac,

2. sterowanie pracami lub interpretowanie języka poleceń,

3. obsługa błędów,

4. obsługa wejścia-wyjścia,

5. obsługa przerwań,

6. planowanie prac,

7. sterowanie zasobami,

8. ochrona zasobów,

9. umożliwienie wielodostępności.

Ponadto system operacyjny powinien być łatwy w użyciu z punktu widzenia operatora oraz łatwo poddający się nadzorowaniu z punktu widzenia jego administratora: Musimy zatem dodać mu jeszcze dwa zadania:

10. udostępnianie dobrego sposobu komunikowania się z operatorem,

11. ewidencjonowanie zasobów komputerowych.

5. Jakie własności i cechy powinien posiadać S.O. ?

a) Współbieżność Współbieżność jest to istnienie kilku czynności wykonywanych jednocześnie albo działań przebiegających równolegle.

b) Wspólne korzystanie z zasobów Problemy związane ze wspólnym korzystaniem z zasobów to: przydział zasobów, równoczesny dostęp do danych, równoczesne wykonywanie programów i ochrona przed uszkodzeniami.

c) Pamięć długookresowa (Dyski magnetyczne itp.)

d) Niedeterminizm System operacyjny musi być deterministyczny w tym znaczeniu, że ten sam program wykonywany dzisiaj lub jutro dla tych samych danych musi dawać takie same wyniki. Z drugiej strony, jest on niedeterministyczny, ponieważ musi reagować na zdarzenia występujące w nieprzewidywal-nym porządku.

Właściwości, które powinny charakteryzować systemy operacyjne ogólnego przeznaczenia.

a) Wydajność

Kryteria:

l. czas średni między pracami wsadowymi (dla systemów wsadowych);

2. niewykorzystany czas procesora centralnego (niezależnie od czasu, w którym system nie ma nic do roboty);

3. długość cyklu przetwarzania prac wsadowych (w systemach wsadowych);

4. czas reagowania (w systemach interakcyjnych);

5. wykorzystanie zasobów;

6. przepustowość informacyjna (liczba prac wsadowych na godzinę, częstość wykonywania prac interakcyjnych).

Nie wszystkie te kryteria mogą być spełnione równocześnie.

b) Niezawodność

c) Pielęgnowalność Powinna istnieć możliwość rozszerzania S.O. i usuwania z niego błędów . Wynika stąd, że system powinien mieć budowę modułową i jasno zdefiniowane sposoby komunikacji między modułami, a także powinien być dobrze udokumentowany.

d) Mały rozmiar Przestrzeń zajętą przez system operacyjny, niezależnie od tego, czy w pamięci operacyjnej czy też gdzie indziej bądź, trzeba uznać za straconą, jeśli bierze się pod uwagę produktywne zastosowanie komputera. Co więcej, duży system jest bardziej narażony na błędy i prawdopodobnie dłużej go się tworzy niż mały system.

6. Zadania jądra S.O.

Jądro systemu składa się z trzech programów:

-programu wstępnej obsługi przerwań, który inicjuje obsługę wszystkich przerwań;

-programu zwanego dyspozytorem, który przełącza procesor centralny od jednego do drugiego procesu;

-dwóch procedur, które realizują operacje podstawowe, służące do komunikacji między procesami (np. operacji czekaj i sygnalizuj).

Te procedury wywołuje się w procesach za pośrednictwem odwołań do systemu. Ponieważ jądro systemu buduje się bezpośrednio na podstawie sprzętu, więc możemy się spodziewać, że jest ono najbardziej zależną od maszyny częścią systemu operacyjnego. Główny interfejs między podstawowym sprzętem maszyny a systemem operacyjnym stanowi właśnie jądro systemu, które jest najbardziej wewnętrzną warstwą S.O. Zadaniem jądra systemu jest stworzenie pewnego środowiska, w którym mogą występować procesy; mieści ono w sobie obsługę przerwań, przełącznie procesorów od procesu do procesu, realizację mechanizmów służących do komunikacji między procesami.

7. Wymagania stawiane sprzętowi komputerowemu przed tworzeniem S.O.

a) Mechanizm przerwań Aby można było nakładać operacje wejścia-wyjścia na działanie jednostki centralnej, trzeba móc przerywać bieg procesu wtedy, kiedy jest zakończone przesyłanie danych z urządzeń zewnętrznych. Dlatego wymagamy, aby w naszym komputerze był mechanizm przerwań, który przynajmiej przechowa wartość licznika rozkazów przerywanego procesu i przekaże sterowanie do ustalonego miejsca w pamięci operacyjnej. To miejsce posłuży jako początek programu nazywanego procedurą przerwania lub procedurą czy też programem obsługi przerwania; zadaniem tego programu jest określenie źródła przerwania i wykonanie odpowiednich czynności.

b) Ochrona pamięci operacyjnej Kiedy kilka procesów jest wykonywanych współbieżnie, wtedy trzeba chronić pamięć, z której korzysta jeden proces, przed nieupoważnionym dostępem do niej drugiego procesu.

c) Zbiór rozkazów uprzywilejowanych Po to aby procesy współbieżne nie mogły się wzajemnie zakłócać, część listy rozkazów maszynowych powinna być zarezerwowana wyłącznie do użytku systemu operacyjnego. Te zastrzeżone dla systemu operacyjnego rozkazy uprzywilejowane powinny spełniać następujące zadania:

-włączanie i wyłączanie przerwań;

-przełączanie procesora od procesu do procesu;

-obsługiwanie rejestrów używanych przez sprzętową ochronę pamięci operacyjnej ;

-wykonywanie operacji wejścia i wyjścia;

-zatrzymywanie procesora centralnego i sterowanie jego operacjami (np. włączanie i wyłączanie wewnętrznych mechanizmów, takich jak jednostki przyspieszające operacje zmiennopozycyjne lub pamięci podręczne).

d) Zegar czasu rzeczywistego Zegar sprzętowy, który wysyła przerwania w ustalonych odstępach czasu rzeczywistego (tzn. czasu odmierzanego w rzeczywistym świecie zewnętrznym, nie zaś czasu zużywanego przez jakikolwiek konkretny proces wykonywany w komputerze), jest podstawą realizacji polityki planowania przydziału i rozliczania zasobów, wykorzystanych przez różnych użytkowników.

8. Reprezentacja procesów w systemie.

Programy wewnątrz jądra systemu odpowiadają za utrzymywanie środowiska, w którym występują procesy. Wynika stąd, że muszą one operować na pewnych strukturach danych, które są fizyczną reprezentacją wszystkich procesów w systemie. Każdy proces można reprezentować przez deskryptor procesu, nazywany też czasem blokiem kontrolnym procesu lub wektorem stanu, który jest obszarem pamięci operacyjnej zawierającym wszystkie ważne informacje o danym procesie. W skład deskryptora procesu wchodzą między innymi identyfikator procesu (nazwa procesu) oraz identyfikator stanu procesu. Pozostałe części deskryptora procesu mogą być przeznaczone do przechowywania wszystkich informacji o procesie, które powinny być zapamiętane wtedy, gdy procesor wstrzymuje jego wykonywanie. Układ tej części deskryptora procesu często zależy od sprzętu, ponieważ rozkaz uprzywilejowany, który przełącza procesor do trybu użytkownika, musi „wiedzieć”, gdzie może znaleźć nowe wartości różnych rejestrów, a przy każdym przejściu do trybu nadzorcy musi zapamiętać wartości tych rejestrów z powrotem na tych samych miejscach. Czasem tę część nazywa się sprzętowym deskryptorem procesu. Każdy deskryptor procesu jest powiązany ze strukturą procesów, która odgrywa rolę opisu wszystkich procesów wewnątrz systemu.

9. Stany procesów w systemie.

Stan procesu może przyjmować jedną z trzech głównych wartości, które określamy w ten sposób, że proces może być: (1) wykonywany bieżąco przez jakiś procesor; (2) wykonywalny, czyli mógłby być wykonywany, gdyby przydzielono do niego jakiś procesor; (3) niewykonywalny, czyli nie mógłby użyć procesora nawet wówczas, gdyby mu go przydzielono. Najczęstszą przyczyną niewykonywalności procesu jest fakt, że oczekuje on na zakończenie przesyłania danych z urządzenia zewnętrznego. Stan procesu jest zasadniczą informacją dla dyspozytora podczas przydzielania procesora centralnego. Proces wykonywany przez procesor centralny nazywamy procesem bieżącym dla tego procesora. Liczba procesów bieżących wewnątrz systemu jest zawsze mniejsza lub równa liczbie dostępnych procesorów.

10. Co to jest kontekst procesu ?

Są to wszystkie informacje o procesie, które powinny być zapamiętane wtedy, gdy procesor wstrzymuje jego wykonywanie. Do tych informacji, potrzebnych z chwilą kolejnego wznowienia procesu, należą wartości wszystkich rejestrów maszynowych, takich jak licznik rozkazów, rejestry ogólnego przeznaczenia i rejestry indeksowe, ponieważ drugi proces może zmienić te wartości. Należą do nich także wartości wszystkich rejestrów używanych do adresowania pamięci operacyjnej, z której korzysta dany proces . Informacje te zwane są środowiskiem ulotnym procesu lub kontekstem procesu . Mówiąc bardziej formalnie, środowisko ulotne procesu możemy zdefiniować jako podzbiór takich podlegających zmianom właściwości systemu, do których proces może mieć dostęp.

11. Cele zarządzania pamięcią operacyjną.

Jeżeli procesowi nie przydzieli się pamięci, to niewiele będzie mógł zdziałać. Z pewnością nie można wykonywać programu, dla którego nie ma miejsca w pamięci, nie można też wykonywać operacji wejścia ani wyjścia, jeśli brakuje miejsca dla ich buforów. Wynikają z tego następujące cele:

a) Przemieszczanie procesów

b) Ochrona zawartości pamięci

c) Dostęp do obszarów dzielonych

d) Organizacja logiczna pamięci

e) Organizacja fizyczna pamięci

12. Przemieszczanie procesów.

W komputerze wieloprogramowym, czyli wykonującym równocześnie wiele programów, cała dostępna pamięć operacyjna jest z zasady w każdej chwili rozdzielona między pewną liczbę procesów i żaden programista nie może wiedzieć z góry, jakie inne programy będą się znajdować w pamięci podczas wykonywania jego programu. Znaczy to, że programista pisząc swój program nie wie dokładnie, gdzie będzie on umieszczony w pamięci, a więc nie może w nim używać adresów bezwzględnych pamięci operacyjnej. Oczywiście można byłoby adresy symboliczne lub względne przekształcać na adresy bezwzględne podczas wprowadzania programu do pamięci, gdyby obszar pamięci przydzielony dla danego programu był ustalony na cały czas wykonania programu, ale w rzeczywistości zdarza się tak bardzo rzadko. Z chwilą zakończenia procesów zajrnowaną przez nie pamięć można przeznaczać dla innych procesów, a wtedy pewne procesy trzeba przemieszczać w pamięci w celu lepszego jej wvkorzystania. Może zwłaszcza okazać się pożądane takie przemieszczenie procesaw, aby małe, rozłączne obszary nie zajętej pamięci udało się połączyć i utworzyć z nich jeden duży i użyteczniejszy obszar. Tak więc obszar pamięci przydzielony procesowi może ulegać zmianom podczas przebiegu procesu, system zaś musi być odpowiedzialny za przekształcanie adresów użytych przez programistę na adresy rzeczywiste, w których proces jest osadzony fizycznie w pamięci.

13. Ochrona zawartości pamięci.

Gdy kilka procesów dzieli pamięć operacyjną, wówczas duże znaczenie dla zapewnienia ich nienaruszalności ma przestrzeganie zasady, ze żaden z nich nie może zmienić zawartości komórek pamięci, które są bieżąco przydzielone drugiemu procesowi. Sprawdzanie adresów programu przez kompilator nie jest dostateczną ochroną, ponieważ w wielu językach programowania istnieje możliwość dynamicznego określania adresów podczas wykonywania programu, na przykład obliczania wartości indeksów tablic lub wskaźników do struktur danych. Dlatego wszystkie odniesienia do pamięci generowane przez proces muszą być sprawdzane podczas wykonania, aby było pewne, że dotyczą tylko tego obszaru pamięci, który jest przydzielony dla danego procesu. (Mówiąc ściśle, trzeba sprawdzać adresy tylko pczy pisaniu do pamięci, ale ze względu na zachowanie tajemnicy informacji wymaga się także sprawdzania adresów podczas czytania z pamięci).

14. Organizacja logiczna i fizyczna pamięci

a. logiczna - podział pamięci na segment;

Jeżeli logiczny podział na program i dane znajduje odbicie w odpowiedniej segmentacji przestrzeni adresów, to fakt ten przynosi kilka korzyści:

-segmenty można kodować niezależnie;

-można dla różnych segmentów tanim kosztem określić różne poziomy ochrony (np. tylko do czytania, tylko do wykonywania);

-można stworzyć mechanizmy dzielenia segmentów między procesy;

b. fizyczna - system dwupoziomowy

-pamięć półprzewodnikowa (szybka, ale droga)

-pamięć pomocnicza (dyskowa)

W typowych systemach operacyjnych można było uzyskać dostęp bezpośredni tylko do informacji w pamięci głównej więc powstaje problem przesyłu informacji między dwoma poziomami pamięci. Powinien zajmować się tym system operacyjny.

15. Pamięć wirtualna i jej implementacje

Pamięć wirtualna powstaje przez odwzorowanie przestrzeni adresów używanych przez programistę na przestrzeń pamięci (fizycznej). Przestrzeń pamięci jest liniowa. Przestrzeń adresów może być:

> od przestrzeni pamięci

< od przestrzeni pamięci

= przestrzeni pamięci

Mechanizm pamięci wirtualnej umożliwia programiście korzystanie z zupełnie innych zakresów adresów w programie niż zakres dostępnej pamięci fizycznej. Implementacje:

-rejestr bazowy i rejestr graniczny

-stronicowanie pamięci

-segmentacja i segmentacja ze stronicowaniem

16. Odwzorowywanie adresów przy użyciu rejestrów bazowego i granicznego

Kiedy proces jest ładowany do pamięci, wtedy jej najmniejszy adres zajęty przez proces jest umieszczany w rejestrze bazowym i wszystkie adresy traktowane są jako względne w odniesieniu do adresu bazowego. Przestrzeń adresów w tym odwzorowaniu jest liniowa a jej rozmiar nie może przekraczać rozmiaru przestrzeni pamięci. Rejestr bazowy i graniczny są realizowane sprzętowo po jednym dla każdego procesora. W rejestrze granicznym przechowywany jest największy adres komórki pamięci, jakiej może używać dany proces. Służy do ochrony pamięci przydzielonej danemu procesowi.

17. Stronicowanie, segmentacja i segmentacja ze stronicowaniem

a. stronicowanie Jest to technika pozwalająca na traktowanie pamięci głównej i pomocniczej (dyskowej) jako ciągłego obszaru pamięci (programista ma dostęp do większego obszaru pamięci, niż fizycznie istnieje). Metoda stronicowania polega na tym, że przestrzeń adresów wirtualnych jest podzielona na jednakowej wielkości strony, zaś pamięć główna jest podobnie podzielona na tej samej wielkości ramki stron. Dany proces ma w każdej chwili kilka stron umieszczonych w pamięci głównej (są to strony aktywne) i resztę w pamięci pomocniczej (strony nieaktywne). Mechanizm stronicowania ma dwa zadania:

- wykonywanie operacji odwzorowywania adrsów, czyli określanie, do której strony odnosi się adres w programie oraz znajdowanie (o ile taka istnieje) ramki strony, którą bieżąco zajmuje dana strona;

- przesyłanie (w zależności od potrzeby) stron z pamięci pomocniczej do pamięci głównej oraz odsyłanie nie używanych już stron z powrotem do pamięci pomocniczej;

b. segmentacja -polega na tym, że przestrzeń adresów dzieli się na segmenty, które odpowiadają poszczególnym procedurom, modułom programowym lub zbiorom danych; umożliwia to dzielenie danych i wspólnych części kodu przez różne procesy;

c. segmentacja ze stronicowaniem Przy dużych programach, gdy segmenty są bardzo duże, to używa się do nich stronicowania (do każdego segmentu oddzielnie).

18. Strategie przydziału pamięci

Strategie przydziału pamięci można podzielić na trzy zasadnicze kategorie:

a. wymiany - co można usunąć z pamięci głównej;

b. pobierania - co umieścić w pamięci;

c. rozmieszczania - gdzie to umieścić w pamięci;

Kategoria b. Jest prawie taka sama w systemach ze stronicowaniem jak i bez natomiast a. i c. różnią się zależnie od tego, czy jest stronicowanie.

a) strategie rozmieszczania dla systemów bez stronicowania

-najlepsze dopasowanie (dziury są uporządkowane rosnąco pod względem ich rozmiaru, znajdowana jest najmniejsza dziura, która może zmieścić potrzebny segment)

-najgorsze dopasowanie (dziury są uporządkowane malejąco pod względem ich rozmiaru, umieszcza się segment w pierwszej dziurze, a pozostały wolny obszar dołącza się do listy dziur)

-pierwsze dopasowanie (dziury są uporządkowane rosnąco pod względem ich adresów bazowych)

-algorytm bliźniaków (rozmiar segmentu musi być potęgą liczby 2, tworzy się osobne listy dla dziur o rozmiarach 21, 22, ...)

b) strategie rozmieszczania dla systemów ze stronicowaniem (dużo prostsze niż poprzednio ponieważ strony mają jednakowy rozmiar)

c) strategie wymiany dla systemów ze stronicowaniem

-usuwanie najdawniej używanej strony

-usuwanie strony najrzadziej używanej podczas pewnego ostatniego przedziału czasu

-usuwanie strony, która była najdłużej w pamięci

d) strategie wymiany dla systemów bez stronicowania (segmenty mają różną wielkość (komplikacja), można tutaj także stosować jeden z w/w algorytmów)

e) strategie pobierania z pamięci pomocniczej

-pobieranie na żądanie (proste !)

-pobieranie przewidujące

Przewidywanie można opierać na dwóch przesłankach:

-znajomości właściwości konstrukcji programu;

-wnioskowaniu z dotychczasowego przebiegu procesu

19. Procedury obsługi we/wy

Czynności przy obsłudze we/wy

a. znalezienie urządzenia w deskryptorze procesu

b. sprawdzenie parametrów przekazywanych do urządzenia

c. stworzenie bloku zamówień we/wy

d. umieszczenie go w kolejce do danego urządzenia (kolejkę taką obsługuje proces obsługi urządzenia)

e. wysłanie do procesu przy pomocy semafora informacji, że zamówienie zostało umieszczone w kolejce

f. podobnie po zakończeniu operacji we/wy.

20. Procedury obsługi urządzeń

repeat (bez końca)

wybierz blok zamówień z kolejki

wydobądź szczegóły zamówienia

inicjuj operację we/wy

czekaj (operacja wykonana)

if błąd then umieść informację o błędzie

tłumacz znaki (jeśli trzeba)

prześlij dane do miejsca przeznaczenia

sygnalizuj (zamówienie załatwione)

usuń blok zamówień z kolejki

21. Buforowanie we/wy

Buforowanie polega na wykonywaniu operacji we/wy z wyprzedzeniem co pozwala uniknąć czekania systemu na zakończenie potrzebnej operacji za każdym razem, kiedy jest ona potrzenba. System operacyjny przesyła dane wejściowe do bufora wejściowego a dane wyjściowe z procesu są umieszczane w buforze wyjściowym. Można udoskonalić technikę buforowania stosując większą liczbę buforów (buforowanie wielokrotne).

22. Do czego służy proces zwany spoolerem?

W wielu systemach zastosowano technikę wykonywania w sposób pośredni operacji we/wy odnoszących się do przeciążanych urządzeń zewnętrznych. Technika ta polega na tym, że zamiast bezpośredniego przesyłania danych do urządzenia związanego ze strumieniem, procedury we/wy przesyłają dane do pewnego nośnika pośrednika, którym jest zazwyczaj dysk. Przesyłaniem danych między dyskiem a żądanym urządzeniem zajmuje się proces zwany spoolerem, który jest przyporządkowany do danego urządzenia.

23. Do czego służy system plików?

System plików służy do tworzenia środków przeznaczonych do organizowania danych i korzystania z nich w sposób wygodny dla użytkownika.

24. Warunki, jakie musi spełniać system plików, aby był użyteczny

System plików powinien:

a. pozwalać tworzyć i usuwać pliki;

b. umożliwiać dostęp do plików w celu czytania i pisania;

c. zarządzać automatycznie przestrzenią pamięci pomocniczej; użytkownika nie powinno obchodzić dokładne miejsce przechowywania pliku w pamięci pomocniczej;

d. umożliwiać odwoływania się do plików za pomocą nazw symbolicznych; skoro użytkownik nie zna ani nie chce znać fizycznej lokalizacji plików, powinno zatem wystarczać, aby w odniesieniach do nich były podawane ich nazwy;

e. chronić pliki przed uszkodzeniem systemu;

f. pozwalać by współpracujący ze sobą użytkownicy mogli korzystać z tych samych plików, ale też chronić pliki przed dostępem do nich nieuprawnionych użytkowników.

25. Metody ochrony informacji zawartych w systemie plików

a. stosowanie atrybutów dla różnych klas użytkowników (właściciel, grupa, inni)

b. lista kontroli dostępu (może być dołączona do pliku lub katalogu i zawierać nazwy użytkowników lub grup, prawa im przysługujące i opcje);

c. tworzenie dowiązań - właściciel pliku lub katalogu pozwala innym użytkownikom tworzyć w ich katalogach użytkownika dowiązania do pozycji wewnątrz jego katalogu. Katalog tego użytkownika musi zawierać listę wszystkich użytkowników, którym zezwolono na tworzenie powiązania.

d. Sprawdzenie tożsamości właściciela pliku (dostęp do pliku ma tylko właściciel).

e. Hierarcha grupowa. UNIX.

Powiązanie pliku ze zbiorem praw dostępu do pliku (z maską ochrony pliku) odnoszącym się do trzech klas użytkowników: właściciel, grupa, inni, oraz nadaniem typowych praw: (RWED). Właściciel definiuje maskę, w tym dla siebie. Metoda wykorzystuje kod identyfikacji użytkownika (zawiera grupę ID user'a). Metoda zawodzi gdy użytkownik ma różne prawa do różnych plików.

f. Lista kontroli dostępu (ACL). VMS, NT.

Dołączenie do pliku lub katalogu pełnej informacji o określonym dostępie określonego użytkownika do określonego pliku (dysponent, prawa). W celu nie stosowania maski ochrony należy uzupełnić o "inni" i nadać prawa. Wada: powolny dostęp, pamięciożerna.

g. Technika dowiązań. Multics.

Zezwolenie komuś na wykonanie dowiązania (w czyimś katalogu) do pozycji we własnym katalogu. Dzięki temu ktoś ma dostęp do pozycji! w moim katalogu. W czyimś katalogu będzie lista wszystkich dowiązań. Wada: po usunięciu pliku należy też usunąć dowiązania - system musi mieć możliwość odnajdowania wszystkich dowiązań.

h. Technika dowiązań trwałych. UNIX.

Z tą różnicą, że dowiązanie nie prowadzi do pozycji w katalogu, ale wprost do pliku. Nieodróżnialne od zwykłej pozycji w katalogu. System prowadzi licznik dowiązań do pliku; plik można skasować tylko wtedy gdy stan licznika wynosi 0. Metoda użyteczna, wymaga dodatkowego dostępu w celu pisania do katalogu.

26. Organizacja pamięci pomocniczej.

1. System plików zwartych. Wszystkie bloki w pliku zwartym przylegają do siebie. Wskazanie na plik zawiera wskazanie na pierwszy blok i długość pliku. Najoszczędniejsze wykorzystanie przestrzeni danych - całość na dane. Wady: fragmentacja, problemowe usunięcie lub wstawienie bloku (trzeba przemieścić sąsiednie dane). Zalety: elastyczna organizacja danych, zniszczenie bloku powoduje lokalną utratę danych, dostęp bezpośredni do bloku (początek:offset); dodatkowy mechanizm innych systemów. Bazy danych.

2. Łańcuch powiązanych bloków (analogia listy jednokierunkowej). Każdy blok zawiera wskaźnik do następnego bloku. Ostatni blok zawiera adres pusty. Część przestrzeni danych jest przeznaczona na wskaźniki do następnych bloków. Wada: odczytanie pliku - duża liczba dostępów do dysku, skasowanie pliku duża liczba modyfikacji wskaźników - by odzyskać obszar trzeba przejść cały łańcuch (znaleźć koniec), mała elastyczność, uszkodzenie jednego bloku może wpłynąć i posadzić cały FS (zmniejszenie ryzyka - kosztem miejsca danych pamiętane są dowiązanie odwrotne). Zastosowanie: w sekwencyjnym przetwarzaniu plików (dostęp sprowadza się do czytania kolejnych bloków).

3. Mapa plików. Stan dysku jest pamiętany w mapie plików: każdy blok dysku reprezentuje jedną pozycję w mapie. Pozycja w katalogu wskazuje na element mapy reprezentujący pierwszy blok. Ten element wskazuje na następny itd. Ostatni blok pliku jest reprezentowany przez wskaźnik pusty. W przypadku uszkodzenia FS pomocna jest nadmiarowa informacja - nr ID pliku. Dostęp do pliku sekwencyjny, N - bloków pliku wymaga 2N dostępów do dysku (FAT+dane) - warto trzymać dane w kupie. Uszkodzenie mapy - poważne straty danych; zapobieganie - kilka kopii FAT w różnych rejonach dysku (a nie jak w DOS w kupie).

4. Bloki indeksów. Wskaźniki dowiązań do plików są pamiętane w odrębnych blokach indeksów na dysku. Duży plik potrzebuje kilka bloków indeksów powiązanych w łańcuch - każdy blok musi mieć wskaźnik do następnego bloku. Pozycja w katalogu wskazuje na pierwszy na pierwszy blok w łańcuchu indeksów. Ostatni blok indeksów nie jest zazwyczaj zapełniony - traci się miejsce. Zaleta: Swobodny (niesekwencyjny) dostęp do pliku (na podstawie nazwy i odległości w bloku indeksów). Operacje wycinania i wstawiania w pliku są czasochłonne - metoda nie nadaje się do systemów z częstą modyfikacją plików. Uszkodzenie bloku indeksów - poważna strata danych, przeciwdziałanie - kilka kopii.

Zarządzanie wolnymi obszarami.

1. Traktować wolne miejsce jak pliki.

a) system zwarty: każdy ciąg kolejnych bloków stanowi wolny plik

b) bloki indeksów: operacje na łańcuchu wolnych bloków muszą zaczynać się od jego końca, kiedy przydziela się lub zwalnia N bloków trzeba wykonać N operacji w ostatnim bloku indeksów.

c, d) wiązanie bloków, mapa plików: operacje można zaczynać z dowolnego końca;

2. Korzystanie z mapy bitowej. Wydzielenie obszaru pamięci, w którym każdy bit reprezentuje jeden blok dysku. Blok wolny - 0, zajęty - 1. W celu znalezienia N bloków wolnego miejsca wyszukujemy N bitów zerowych w mapie, następnie obliczamy adresy bloków.

27. Metody sporządzania kopii zapasowych plików.

1. Składowanie okresowe (globalne) - W ustalonych przedziałach czasu zawartość całej pamięci zajętej przez pliki przesyła się do pewnego nośnika pamięci (zazwyczaj taśma magnetyczna), by w razie uszkodzenia systemu plików można było odtworzyć stan wszystkich plików przed ich składowaniem. Można również odtworzyć przypadkowo skasowane pliki. Wady:

a. Może się okazać, że system plików nie może normalnie pracować w czasie składowania lub nieskładowanie plików otwartych do pisania.

b. Składowanie trwa długo - nie można go robić za często - odzyskane pliki mogą być nieaktualne.

2. Składowanie przyrostowe - Wykorzystuje się ją w połączeniu z globalnym składowaniem. Składuje się tylko te pliki, które powstały lub uległy zmianie po ostatnim składowaniu. Zazwyczaj nie ma tego dużo więc można składować często. System wykorzystuje znacznik modyfikacji pliku i znacznik modyfikacji katalogu (jeśli plik był zmieniony w katalogu to znacznik ma 1). Ponieważ system omija zerowe wskaźniki, może pracować wśród plików aktualnie zmienianych - równolegle z normalną pracą. Może być procesem o niskim priorytecie i pracować cały czas wyłapując ostatnie modyfikacje. Wady:

a. Konieczność generowania dużej liczby danych.

b. Złożoność procedury odtwarzania danych (od tyłu).

Zaleta: system nie odtwarza żadnych informacji nadmiarowych.

3. System z dziennikiem (!!! - nie jestem pewny czy to metoda czy mutacja).

W niektórych systemach tworzy się dziennik (skorowidz) tych plików, które były zarchiwizowane. Przechowywany jest niezależnie (na innym dysku lub taśmie). Zawiera szczegółowe informacje o tym gdzie znajduje się ostatnia kopia każdego pliku i informacje potrzebne do bardziej automatycznego odtwarzania plików (eliminuje pomyłkę operatora).

Niezależnie od metody, odtwarzanie jest dobrą okazją do defragmentaryzacji systemu plików (przyspieszenia operacji dyskowych) kosztem śladowego wydłużenia czasu odtwarzania.

28. Operacje otwierania i zamykania plików.

Otwieranie pliku - system znajduje urządzenie i miejsce w którym znajduje.

Zamykanie pliku - operacja odwrotna do otwierania; może być wykonana jawnie po zakończeniu wszystkich operacji odnoszących się do danego pliku, albo niejawnie, gdy zakończy się proces korzystający z tego pliku.

W tym celu muszą istnieć w systemie procedury:

otwórz (nazwapliku, tryb)

zamknij (nazwapliku)

Procedura otwórz wykonuje operacje:

1. Wyszukaj pozycję tego pliku w katalogu.

2. Sprawdź, czy zgłaszający się proces był wywołany przez użytkownika mającego przywilej dostępu w określonym trybie.

3. Sprawdź współdzielenie pliku.

4. Ustal urządzenie i zlokalizuj plik; jeśli jest to plik nowo utworzony, to jego lokalizację określa procedura przydziału pamięci.

5. Utwórz deskryptor pliku (zawiera wszystkie informacje o pliku potrzebne do najbliższego przesyłania danych: nazwa pliku, adres deskryptora urządzenia, na którym znajduje się plik, lokalizacja pierwszego bloku w pliku, lokalizacja następnego bloku, który ma być przeczytany (przy założeniu dostępu sekwencyjnego), tryb dostępu). Procedury I/O pobierają informacje z deskryptora pliku, by nie otwierać każdorazowo pliku przy przesyłaniu danych tego pliku.

Procedura otwórz sprawdza zasady dostępu czytaj i pisz danego pliku. W pozycji katalogowej pliku są dwa dodatkowe elementy: bit pisania i licznik użycia. Proces może otworzyć plik do czytania gdy bit pisania 0, do pisania gdy oba 0. Wada: kilka procesów może chcieć równocześnie otworzyć lub zamknąć ten sam plik, zmieniając równocześnie zawartość jego pozycji katalogowej. Rozwiązanie: procedury zamknij i otwórz napisze się jako sekcje krytyczne uzależnione od tego samego semafora wzajemnego wykluczania. Wada: jeśli proces będzie przerwany podczas otwierania lub zamykania pliku, to te operacje staną się niedostępne dla innych procesów.

Inna technika polega na tworzeniu wykazu deskryptorów plików, które są otwarte na którymkolwiek urządzeniu. Każdy deskryptor urządzenia może wskazywać na ten wykaz. Procedura otwierania w wykazie czy są już deskryptory dla tego pliku i z jakimi zastrzeżeniami. Procedura rezygnuje z otwierania pliku dopóki jest on dla niej zastrzeżony. W celu ochrony wykazu przed równoczesnym dostępem procesów stosuje się semafor wzajemnego wykluczania. Wada: strata czasu na przeszukiwanie całego wykazu, dostęp dla wykazu ma tylko jeden proces - gdy zostanie przerwany, to żaden inny proces nie ma dostępu do wykazu. Częściowe rozwiązanie tych problemów polega na podzieleniu każdego deskryptora na dwie odrębne struktury dla każdego procesu używającego tego pliku:

centralny deskryptor pliku: dowiązany do deskryptora urządzenia, zawiera takie same informacje dla każdego procesu, który używa pliku:

-nazwa pliku

-adres deskryptora urządzenia zewnętrznego, na którym znajduje się plik

-lokalizacja pierwszego bloku w pliku

-licznik użycia pliku

-bit pisania do pliku

lokalny deskryptor pliku: tworzy się za każdym razem gdy proces otwiera plik; wszystkie lokalne deskryptory wskazują na jego jeden centralny deskryptor, zawiera informacje dotyczące procesu używającego pliku:

-adres następnego bloku, który ma być przeczytany lub zapisany

-tryb dostępu

-wskaźnik do centralnego deskryptora tego pliku

Dzięki deskryptorom centralnym unika się dublowania informacji w poszczególnych deskryptorach i skraca się długość wykazu dla urządzenia (mniej do przeszukiwania), co ważniejsze wykluczanie można sprowadzić do deskryptora a nie do wykazu - unikanie wąskiego gardła systemu.

29. Co to jest blokada i kiedy może powstać.

Blokada - sytuacja, w której każdy z procesów współzawodniczących o zasoby, aby móc dalej działać musi skorzystać z tych zasobów, których używa inny proces - żaden z procesów nie może kontynuować swojej pracy.

Blokada powstaje wówczas, gdy zasoby są przydzielane na podstawie ich dostępności, w najprostszy sposób w okolicznościach: proces A używa niepodzielnych zasobów X i zamawia zasoby Y; proces B używa niepodzielnych zasobów Y i zamawia zasoby X, przy czym żaden z procesów oczekujących nie zwalnia zajmowanych zasobów dopóki nie otrzyma nowych

30. Warunki konieczne i wystarczające powstania blokady.

Ogólne warunki konieczne i dostateczne powstania blokady są następujące:

1. Zasoby są niepodzielne.

2. Procesy przetrzymują przydzielone im zasoby podczas oczekiwania na nowe zasoby.

3. Zasobów dopóty nie można zawłaszczać, dopóki są użytkowane.

4. Istnieje łańcuch cykliczny procesów, taki że każdy proces użytkuje zasoby, które bieżąco zamawia następny proces w łańcuchu.

31. W jaki sposób można rozwiązać problem blokad.

Problem blokad można rozwiązać stosując jedną z następujących strategii:

zapobieganie blokadom w ten sposób, że przez cały czas co najmniej jeden z czterech w/w warunków nie może być spełniony

wykrywanie powstałych blokad i ich usuwanie

unikanie blokad dzięki wykonywaniu odpowiednich uprzedzających czynności

1. Zapobieganie blokadom. Aby zapobiec blokadzie trzeba wykluczyć spełnienie co najmniej jednego z czterech w/w warunków koniecznych.

Wykluczenie warunku 1 jest trudne ponieważ pewne zasoby jak drukarka, czy pisanie do pliku są z pewnych względów niepodzielne.

Można wykluczyć warunek 2, przy zastrzeżeniu, że procesy od razu zamawiają wszystkie potrzebne zasoby i dopóty ni mogą rozpocząć pracy, dopóki nie będą spełnione wszystkie ich żądania Wada: zasoby krótko używane są blokowane przez cały czas procesu.

Łatwo wykluczyć warunek 3 przyjmując zasadę, że jeśli proces nie otrzyma zamówionych zasobów, to musi zrezygnować również z tych wszystkich zasobów, z których korzystał do tej pory i następnie musi je zamawiać razem z dodatkowymi procesami (?). Wada: koszt odtwarzania stanu zasobu zawłaszczanego może być (za) wysoki. Można wykluczyć warunek 4 narzucając pewien porządek na typy zasobów w ten sposób, że proces któremu przydzielono zasoby typu k, może zamawiać tylko zasoby typu określonego jako następny po k. To zapewnia, że nigdy nie będzie spełniony warunek cyklicznego czekania. Wada: ograniczenie nałożone na naturalny porządek zamówień zasobów.

2. Wykrywanie i usuwanie blokady. Algorytmy wykrywania blokady pracują na zasadzie wyszukiwania cyklicznych okresów czekania wyrażonego w sformułowaniu warunku 4. Stan systemu w dowolnej chwili można reprezentować za pomocą grafu stanu, w którym węzły odpowiadają zasobom: jeżeli w grafie istnieje łuk prowadzący od węzła A do węzła B, to znaczy, że istnieje proces, który ma zasoby A i zamawia zasoby B. Algorytm wykrywania utrzymuje reprezentację grafu stanu w pewnej postaci i co jakiś czas sprawdza, czy w grafie nie powstała zamknięta pętla. Sprawdzanie może być wykonywane co jakiś czas - przy okazji przydziału zasobu lub w ustalonych odstępach czasu. Wykrywanie blokady ma sens, gdy można w jakiś sposób z niej wyjść:

-można usunąć wszystkie procesy uczestniczące w blokadzie;

-można wznowić wykonywanie zablokowanych procesów od pewnego punktu kontrolnego, jeżeli taki istnieje. Metoda może doprowadzić do tej samej blokady - rzadko, bo system jest niedeterministyczny;

-można usuwać kolejne procesy z blokady dopóki blokada istnieje, zaczynając od "najtańszych" (najmniej zaawansowanych). Po usunięciu trzeba uruchomić algorytm wykrywania blokad;

-można zawłaszczać zasoby procesów dopóki istnieje blokada zaczynając od najtańszych. Po usunięciu trzeba uruchomić algorytm wykrywania blokad. Proces, któremu zawłaszczono zasoby musi zamówić je ponownie

3. Unikanie blokady. Przez unikanie blokady rozumie się zastosowanie algorytmu przewidującego prawdopodobieństwo wystąpienia blokady i nie dopuszczającego do spełnienia zamówienia, które w przeciwnym przypadku byłoby załatwione. Przed przyznaniem zamówionych zasobów należy na próbę zmienić graf stanu na taki byłby w przypadku przydzielenia zasobów, a następnie zastosować algorytm wykrywania blokad. Jeżeli algorytm nie wykryje blokady, można przyznać zasoby, w przeciwnym przypadku zamówienie trzeba odrzucić i odtworzyć stan grafu. Wada: technika oparta na przesłance, że jeśli przydział ma doprowadzić do blokady to nastąpi ona natychmiast (a co w chwili później?)

3.1. Algorytm bankiera (to też unikanie). Algorytm wykorzystuje wiedzę uprzednią. Wiedza uprzednia, której dostarczenia wymaga algorytm, to maksymalna wielkość każdego zasobu zamawianego podczas trwania procesu - roszczenie. Algorytm pozwala przydzielić zasoby tylko wtedy, gdy:

-zamówienie plus bieżąco używane zasoby są razem mniejsze niż roszczenie; oraz

-po spełnieniu zamówienia istnieje ciąg, w którym procesy mogą być wykonane do końca, nawet wówczas, gdy zamówienia wszystkich procesów są równe pełnym ich roszczeniom

Tak więc przed dokonaniem przydziału algorytm sprawdza czy pozostało dość zasobów na to, aby utworzyć taki ciąg. W tym algorytmie bierze się pod uwagę zawsze najgorszy z możliwych przypadków (wszystkie procesy zgłoszą pełne roszczenia). Może on zatem odmówić spełnienia zamówienia, ponieważ mogłaby powstać blokada, podczas gdy w rzeczywistości wcale nie musiałoby do niej dojść w wyniku przyznania zamawianych zasobów. Wada: wysokie koszty stosowania algorytmu, tendencja nadmiernej ostrożności.

Podsumowanie: Jeżeli stosuje się strategię zapobiegania, to wszystkie części systemu, które przydzielają zasoby, działają przy założeniu co najmniej jednego z opisanych ograniczeń. Ograniczenia mogą być wbudowane do mechanizmów przydziału zasobów na odpowiednich poziomach systemu. Jeżeli stosuje się strategię wykrywania blokady, to nie trzeba wprowadzać żadnych zmian do mechanizmów przydziału zasobów. Algorytm wykrywania musi mieć dostęp do wszystkich struktur danych używanych podczas dokonywania przydziału zasobów.

W przypadku strategii unikania blokady wszystkie zamówienia na zasoby muszą być pod kontrolą algorytmu unikania blokady. Naturalnym miejscem zaimplementowania takiego algorytmu jest program planujący.

32. Co określamy mianem planowania.

Planowanie (scheduling) - ogólnie ustalenie, kiedy można nowe procesy wprowadzać do systemu i w jakiej kolejności powinny one działać.

Planowanie jest ściśle związane z przydziałem zasobów.

33. Co należy do zadań planisty.

Planista - proces łączący w sobie dwa zadania: planowania i decydowania o przydziale zasobów.

Zadania planisty:

Wprowadzanie nowych procesów. W systemach wsadowych prace czekające na wykonanie gromadzone są w puli prac znajdującej się w pamięci pomocniczej. Planista rozpoczyna wykonywanie jakiejś pracy od zainicjowania odpowiedniego procesu (np. kompilacja). Wybór następnej pracy do wykonania zależy od tego, jakich zasobów potrzebuje każda z prac (zgodnie z opisem prac) oraz od bieżącego rozkładu zasobów w systemie. W celu osiągnięcia dużej przepustowości systemu, planista powinien inicjować nowy proces wkrótce po tym, jak okaże się, że pojemność zasobów jest dostateczna.

Wyznaczanie priorytetów procesów. Kolejność wykonywania procesów jest wyznaczona albo przez uporządkowanie kolejki procesora, albo przez kolejność wybierania procesów z tej kolejki przez dyspozytora. W celu zminimalizowania kosztów koordynowania, dyspozytor powinien wybierać z kolejki pierwszy proces nadający się do wykonania - oznacza to, że uporządkowanie kolejki jest czynnikiem decydującym. Planista przyporządkowuje priorytety procesom w taki sposób, aby, kiedy staną się one wykonywalne, były dowiązane do właściwego miejsca w kolejce.

Implementacja polityki przydziału zasobów. Chodzi o politykę związaną z unikaniem blokady i zapewnianiem zrównoważenia systemu (zarządzanie zasobami tak, aby żaden rodzaj zasobów nie był ani nadmiernie, ani też niedostatecznie użytkowany. Ponieważ zachowanie się systemu w znacznym stopniu zależy od planisty, ważne jest, aby planista miał wyższy priorytet niż inne procesy. Gdy będzie miał najwyższy wówczas dyspozytor zawsze będzie wybierać planistę, kosztem innych procesów (o ile będzie on wykonywalny). Dzięki temu system będzie sprawnie reagował na zmiany okoliczności i zamówień. Planista uaktywnia się gdy:

-nadeszło nowe zamówienie

-zwolniono użytkowane zasoby

-proces zakończył działanie

-nowa praca przybyła do puli prac (zgłosili się nowi użytkownicy)

34. Algorytmy planowania.

Głównym celem algorytmu planowania jest takie zorganizowanie pracy systemu, aby zwiększyć pewną miarę zadowolenia użytkownika. W zależności od systemu miara ta może być różnie określana: W środowisku wsadowym - ogólna przepustowość informacyjna; w systemie wielodostępnym - przeciętny czas reagowania oferowany użytkownikom lub czas różnego rodzaju zadań konwersacyjnych.

Poszczególne algorytmy planowania charakteryzują się uporządkowaniem procesów w kolejce oraz warunkami określającymi, który z procesów należy umieścić z powrotem w kolejce.

1. Najpierw najkrótsza praca. Kolejka jest uporządkowana według czasu potrzebnego na wykonanie każdego procesu. Algorytm dobry tylko dla systemów wsadowych, gdzie na podstawie opisu prac można oszacować czas wykonywania procesów. Celem algorytmu jest zminimalizowanie długości cyklu przetwarzania krótkich prac - nadaje się do środowiska, w którym takowe przeważają. Algorytm pozwala na wykonywanie wszystkich procesów do końca. Można go zmodyfikować: nowy proces może zawłaszczyć procesor, jeżeli ma czas wykonywania mniejszy niż czas wymagany do ukończenia procesu bieżącego - najpierw najkrótsza praca z zawłaszczaniem. Druga modyfikacja, która zapewnia, że procesy długie nie będą w kolejce w nieskończoność, polega na tym, że w miarę czekania zwiększa się procesowi priorytet.

2. Algorytm rotacyjny. Algorytm przeznaczony do sytuacji, w których należy szybko reagować na krótkie zamówienia, a nie wiadomo z góry jakie są czasy wykonywania procesów. Każdy proces w systemie ma ustalony jednakowy przedział czasu na wykonanie zamawianej przez niego usługi. Po tym czasie proces wędruje na koniec kolejki. Kolejka jest zorganizowana cyklicznie i uporządkowana zgodnie z upływem czasu ostatniej usługi. Wada: przy krótkim czasie wydajność maleje, rosną koszty przełączania procesów. Rozwiązanie: wydłużyć czas.

3. Kolejka dwupoziomowa. Odmiana algorytmu rotacyjnego, która próbuje pokonać nagły spadek załadowania systemu. Procesy, które nie zakończyły się w ustalonej liczbie przedziałów czasu, są przenoszone do kolejki drugoplanowej, która jest obsługiwana tylko wtedy, gdy nie ma innych procesów w systemie. Ta drugoplanowa kolejka może być kolejką rotacyjną z większym przedziałem czasu albo może być zarządzana zgodnie z FIFO. Taki system dwupoziomowy stosuje się często w środowiskach mieszanych (wsadowych i wielodostępnych), w których dłuższe procesy wsadowe przesuwa się do pracy drugoplanowej i obsługuje tylko wówczas gdy nie ma żadnego innego procesu zainicjowanego na terminalu. Algorytm można uogólnić na systemy wielopoziomowe.

Kryteria podejmowania decyzji i wyznaczania priorytetów:

1. Procesom, które otrzymały wiele zasobów, można nadać wysoki priorytet, aby przyspieszyć ich zakończenie i odzyskać ich zasoby dla innych procesów. Wada: niebezpieczeństwo, że duże prace mogą zmonopolizować wykorzystanie maszyny albo użytkownicy mogą generować fikcyjne duże zamówienia zasobów, aby osiągnąć korzystniejsze traktowanie swoich procesów. Tego drugiego można uniknąć w systemach wsadowych: prace o małych zamówieniach na zasoby są wybierane najpierw.

2. Procesom, które otrzymały wiele zasobów w miarę możności przyznaje się też zasoby na następne zamówienia. Uzasadnienie: j/w. Wada: j/w.

3. Przydział pamięci w maszynach z pamięcią stronicowaną może być dokonywany zgodnie z zasadami zbioru roboczego.

4. Procesom systemu operacyjnego powinno się przyznawać takie priorytety, aby odzwierciedlały pilność zadań wykonywanych przez te procesy. Skala priorytetów powinna rozciągać się od najwyższego dla planisty do najniższych - nadmiarowe składowanie plików. Większość procesów systemowym ma priorytety większe niż procesy użytkowników.

5. Procesy obsługi urządzeń zewnętrznych powinny mieć wysoki priorytet - im szybsze urządzenie tym wyższy priorytet. Zapewnia maksymalne wykorzystanie urządzeń - zmniejsza powstanie wąskiego gardła I/O. Spoolery również wysoki priorytet.

6. Jeżeli w systemie nie korzysta się z metod zapobiegania blokadom, to do wszystkich zamówień powinno się stosować algorytm unikania blokad.

Dodatkowy koszt decyzji planowania powinien być proporcjonalny do zysków.

35. Kontrola zasobów i ograniczenia.

Nietrudno jest uzyskać kontrolę zasobów w sensie elementarnym- całkowite wykluczanie nieupoważnionych użytkowników, stosując potrzebę okazania jakiegoś dowodu tożsamości (np. numer konta i hasło użytkownika) podczas pracy z systemem. Należy to powiązać z szyfrowaniem przechowywanych haseł użytkowników w sposób, którego wykonanie zabiera wiele czasu- tak, by sposób przełamania ochrony okazał się niepraktyczny. Nie można również wykluczyć ujawnienia hasła użytkownika przez nieuwagę czy nieodpowiedzialność. Można uzyskać elementarną ochronę zasobów przydzielając użytkownikowi odgraniczony obszar pamięci, dostępny tylko dla jego procesów, równocześnie uniemożliwiając działanie w obszarze dla niego niedozwolonym (czyli proces albo nie ma żadnych przywilejów albo ma wszystkie- tryb nadzorcy lub użytkownika). Jakiekolwiek jednak korzystanie ze wspólnych zasobów wiąże się z nakładaniem przestrzeni pamięci różnych procesów a co za tym idzie, pozbawieniem ich wzajemnej ochrony. Można to poprawić stosując segmentację pamięci oraz wprowadzając zmienne przywileje- tylko takie, które w danym momencie proces potrzebuje (ograniczając pozostawianie praw na segmenty procesu w trakcie jego działania).

36. Cele ochrony procesów.

1. Ochrona przed wadami. Nie jest pożadane aby procesy pracujące w jednej maszynie miały jakikolwiek wpływ na przebieg pozostałych procesów. Muszą zzatem istnieć mechanizmy ochrony procesów przed innymi procesami (a zwłaszcza ich wadami). Ochrona nie dotyczy tylko procesów użytkowników, ale również procesów systemu opreacyjnego. Ochrona jest pożądana nawet w przypadku systemu jedno użytkownikowego. W tym przypadku można skorzystać z ochrony podczas uruchamiania i testowania programów, aby nie dopuścić do propagacji błędów.

Ochrona zmniejsza skutki złego działania programów lub pomyłek operatora.

2. Ochrona przed złymi zamiarami. Skoro komputery są coraz częściej używane do gromadzenia i przetwarzania baz danych, których wiele zawiera poufne informacje, możliwość zagwarantowania ochrony danych nabiera coraz większego znaczenia. I to zarówno z powodów handlowych, jak w przypadku instalacji obsługującej użytkowników o rozbieżnych interesach, lub ze względu na zachowanie prywatności czy prawomocności danych. Zabezpieczenia przed dostępem do informacji obejmują również programy. Czasem może zachodzić potrzeba, by procesy korzystały ze wspólnych zasobów, miały dostęp do wspólnych danych lub wykonywały te same programy. Aby ochrona opłacała się, musi pozwalać na uzasadnione dzielenie zasobów i równocześnie powstrzymywać przed nieupoważnionymi działaniami.

37. Ogólny schemat ochrony - macierz dostępów.

W macierzy dostępów zaznaczone są wszystkie możliwości różnych podmiotów dla wszystkich obiektów systemu, które wymagają ochrony. Podmiot jest parą (proces, dziedzina), tak więc każdy wiersz macierzy reprezentuje wykaz możliwości konkretnego procesu wykonywanego w konkretnej dziedzinie. Kiedy proces zmienia dziedzinę, staje się innym podmiotem, a jego wykaz możliwości jest reprezentowany przez inny wiersz macierzy dostępów. Podmioty są traktowane jako obiekty, by zapewnić im ochronę przed innymi podmiotami. Każdemu obiektowi przyporządkowany jest sterownik (sprzętowy lub programowy), do którego trzeba się odwoływać przy każdym dostępie do obiektu i który zapewnia, by podmiot otrzymał odpowiednie możliwości dla żądanego typu dostępu.



Wyszukiwarka

Podobne podstrony:
SO ściąga
SO ściąga
SO ściąga v2
word97 2003 Sciaga SO Kajtek
SCIAGA SO
sciaga so 5
sciaga so 4
sciaga so 2
sciaga so 1
sciaga so 3
so c4
so c3
1 sciaga ppt
so w3
metro sciaga id 296943 Nieznany
ŚCIĄGA HYDROLOGIA
AM2(sciaga) kolos1 id 58845 Nieznany

więcej podobnych podstron