1. Podaj definicję systemu operacyjnego.
System komputerowy składa się z 4 części: sprzęt, system operacyjny, programy użytkowe, użytkownicy Rodzaje s. o.: jednostanowiskowe (MS DOS), sieciowe (MS Windows XX, Novell NetWare, UNIX), rozproszone (Ameba, Choruj, QNX), czasu rzeczywistego (QNX) |
2. Buforowanie i spooling. Buforowanie polega na jednoczesnym wykonywaniu obliczeń i operacji we/wy dla danego zadania. Po przeczytaniu danych, kiedy procesor może zacząć je przetwarzać, poleca się urządzeniu wejściowemu natychmiastowe rozpoczęcie czytania następnych danych. W ten sposób zarówno jednostka centralna, jak i urządzenie wejściowe nie pozostają bezczynne. Szybkość pracy procesora i urządzeń we/wy różni się o jeden lub kilka rzędów wielkości, podczas czytania z taśmy procesor pozostaje bezczynny. Buforowanie polega na ładowaniu kolejnych danych wejściowych lub wyprowadzaniu wyników równocześnie z obliczeniami, zysk zależy od stopnia uzależnienia programu od operacji we/wy. Buforowanie danych pozwala procesorowi nieco wyprzedzać urządzenia, lub pozostawać nieco w tyle, a jednocześnie przetwarzać wszystko z pełną prędkością. Spooling - jednoczesna, bezpośrednia praca urządzeń - wprowadzenie pamięci zewnętrznej o bezpośrednim dostępie do danych, zamiast rekurencyjnego, dysk jest wykorzystywany jako bufor. Buforowanie pozwala wykonywać w tym samym czasie operacje we/wy i obliczenia dla tego samego zadania Spooling umożliwia równoczesne wykonywanie operacji we/wy jednego zadania i obliczeń innego, co stanowi jego przewagę nad buforowaniem Wiele zadań przebywających na dysku wymaga wprowadzenia pewnej metody wyboru zadania do wykonania (koncepcja planowania zadań) Spooling wraz z planowaniem zadań wprowadza pojęcie wieloprogramowości. |
3. Wieloprogramowość:
Problemy pojawiające się wraz z wieloprogramowością
|
4. Wielozadaniowość:
|
5. Przerwanie, wektor przerwań, blokowanie przerwań (maskowanie). Procesor po otrzymaniu sygnału przerwania wstrzymuje swą bieżącą pracę i natychmiast pobiera zawartość ustalonego miejsca pamięci. Miejsce to zawiera na ogół adres startowy procedury obsługującej dane przerwanie. Procedura obsługi przerwania przesyła dane z lokalnego bufora sterownika urządzenia do pamięci głównej. Po zakończeniu przesyłania danych procesor jest gotowy do wznowienia przerwanych obliczeń. Przerwanie musi przekazywać sterowanie do procedury obsługi przerwania. W tym celu rezerwuje się ciąg komórek na początku pamięci głównej aby przechowywać tam adres procedur obsługi przerwań pochodzących od różnych urządzeń. Tablica ta zwana jest wektorem przerwań, jest indeksowana jednoznacznym numerem urządzenia, w który jest zaopatrzone żądanie przerwania Przerwanie o wyższym priorytecie będzie obsłużone nawet wtedy, gdy jest aktywne jakieś przerwanie o niższym priorytecie, natomiast przerwania tego samego poziomu ulegają maskowaniu, tj. selektywnemu wyłączaniu (uniknie się w ten sposób utraty przerwań lub występowania przerwań nieoczekiwanych) Tablica stanów urządzeń służy do:
|
6. Obsługa urządzeń w oparciu o DMA Szybkie urządzenia we/wy korzystają z bezpośredniego dostępu do pamięci operacyjnej. Po określeniu buforów, wskaźników i liczników sterownik danego urządzenia przesyła bezpośrednio (bez ingerencji procesora) cały blok danych między własnym buforem, a pamięcią. Zasadnicze działanie jednostki centralnej pozostaje niezmienione. Program użytkownika lub sam s. o. może zażądać przesłania danych. S. o. wybiera bufor z kolejki buforów do przesłania. Następnie odpowiednie obszary źródła i miejsca przeznaczenia umieszcza się w rejestrach sterownika DMA. Po tym zabiegu sterownik DMA dostaje informacje, że należy zainicjować operację we/wy. PO jej zakończeniu sterownik DMA wysyła przerwanie do procesora. W celu obsługi transmisji blokowych (np. z dysku) wprowadzono bezpośredni dostęp do pamięci, po zakończeniu transmisji danych jest generowane przerwanie mówiące o przesłaniu całego bloku danych. |
7. Prosty monitor. Potrzebna była procedura automatycznego przekazywania sterowania od jednego zadania do następnego. W tym celu ułożono mały program, zwany monitorem rezydującym. Monitor rezydujący stale przebywa w pamięci operacyjnej komputera. Na początku (po włączeniu komputera) wywoływano monitor rezydujący, który przekazywał sterowanie do programu. Gdy program kończył działanie wtedy zwracał sterowanie do monitora, a ten wyznaczał kolejny program. W ten sposób monitor rezydujący zapewniał automatyczne przechodzenie od jednego programu do drugiego i od jednego zadania do następnego. Wprowadzenie metody automatycznego porządkowania zadań stało się podstawą zbudowania pierwszych systemów operacyjnych. Wyeliminowano:
Rozmieszczenie monitora w pamięci: program ładujący monitor
porządkowanie zadań
interpretator kart sterujących
obszar programu użytkownika
|
8. Pułapka. Pułapka (wyjątek) jest rodzajem przerwania generowanego przez oprogramowanie, a powodowanym przez błąd, albo przez specjalne zamówienia pochodzące z programu użytkownika, które wymagają obsłużenia przez s. o. Po wystąpieniu pułapki sprzęt zmienia swój system pracy z 1 (użytkownika) na 0 (monitora) Mechanizm pułapek:
|
9. Dualny tryb pracy Za każdym razem po wystąpieniu pułapki lub przerwania, sprzęt zmienia swój tryb pracy z trybu użytkownika na tryb monitora. Dualny tryb pracy pozwala na:
Bit trybu (jego stan) wskazuje na bieżący tryb pracy: monitor (0) lub użytkownik (1). Za pomocą bitu trybu można odróżnić działania wykonywane na zamówienie s. o. od działań wykonywanych na zamówienie użytkownika
|
10. Rejestr bazowy, rejestr graniczny. rejestr bazowy - przechowuje najmniejszy dopuszczalny adres fizyczny pamięci rejestr graniczny - zawiera rozmiar obszaru pamięci np. jeżeli rb=300040, a rg=120900, to w programie mogą wystąpić odniesienia do wszystkich adresów od 300040 do 420940
|
11. Składowe systemu operacyjnego. a) zarządzanie procesami, s. o. musi zapewnić:
b) zarządzanie pamięcią operacyjną:
c) zarządzanie pamięcią pomocniczą
d) zarządzanie systemami we/wy
e) zarządzanie plikami
f) system ochrony g) praca sieciowa h) interpretator komend |
12. Usługi systemu operacyjnego. a) wykonanie programu System powinien móc załadować program do pamięci i rozpocząć jego wykonywanie. Program powinien móc zakończyć swą pracę normalnie lub z przyczyn wyjątkowych b) operacje we/wy Program użytkownika nie może wykonywać operacji we/wy bezpośrednio, więc środki do realizacji tych czynności musi mieć s. o. c) manipulowanie systemem plików Programy muszą zapisywać i odczytywać pliki. Jest im również potrzebna możliwość tworzenia i usuwania plików przy użyciu ich nazw d) komunikacja Może przebiegać za pomocą pamięci dzielonej lub przy użyciu mniej ogólnej techniki przekazywania komunikatów, w której pakiety informacji są przenoszone między procesami za pośrednictwem s. o. e) wykrywanie błędów S. o. powinien być nieustannie powiadamiany o występowaniu błędów. Na wszystkie rodzaje błędów s. o. powinien odpowiednio reagować, gwarantując poprawność i spójność obliczeń f) przydział zasobów Jeżeli wielu użytkowników i wiele zadań pracuje w tym samym czasie, to każdemu z nich muszą być przydzielone zasoby. S. o. zarządza różnego rodzaju zasobami. g) rozliczanie Przechowywanie danych o tym, którzy użytkownicy, w jakim stopniu korzystają z poszczególnych zasobów komputera. Przechowywanie takich rekordów może służyć do rozliczania lub gromadzenia informacji w celach statystycznych h) ochrona Obejmuje sprawdzanie poprawności wszystkich parametrów przekazywanych w wywołaniach systemowych i gwarantuje nadzór nad dostępem do wszystkich zasobów systemu. Zabezpiecza przed niepożądanymi czynnikami zewnętrznymi. |
13. Funkcje systemowe. Funkcje systemowe tworzą interfejs między wykonywanym programem, a s. o. Można z nich korzystać za pomocą instrukcji w języku asemblera. Można je podzielić na 5 podstawowych kategorii: a) nadzorowanie procesów:
b) operacje na plikach:
c) operacje na urządzeniach:
d) utrzymywanie operacji
e) komunikacja
|
14. Struktura systemu DOS i UNIX. Warstwowa struktura systemu MS-DOS:
(użytkownicy)
programy, shell, polecenia, kompilatory, interpretatory, biblioteki systemowe
interfejs między funkcjami systemowymi, a jądrem
- sygnały - obsługa terminali - np. znakowy we/wy - program obsługi terminali - system plików - wymiana - np. blokowego we/wy - program obsługi dysków i taśm - planowanie przydziału procesora - zastępowanie stron - pamięć wirtualna - stronicowanie na żądanie
interfejs między jądrem, a sprzętem
- sterowniki terminali - terminale - sterowniki urządzeń - dyski i taśmy - sterowniki pamięci - pamięć operacyjna
Struktura systemu UNIX: UNIX składa się z dwóch odrębnych części: jądra i systemowych programów. Jądro dzieli się dalej na ciąg interfejsów i programów obsługi urządzeń |
15. Cechy systemu NT.
|
16. Budowa systemu NT. Architekturę systemu NT tworzy warstwowy układ modułów. Głównymi warstwami są: a) działające w trybie chronionym - warstwa abstrakcji sprzętu - (ukrywa różnice sprzętowe przed górnymi warstwami s.o.) eksportuje interfejs maszyny wirtualnej, z którego korzystają: jądro, egzekutor i moduły sterujące urządzeń. Jedną z zalet takiego podejścia jest to, że wystarczy aby każdy moduł sterujący występował tylko w jednej wersji, może on działać na wszystkich rodzajach sprzętu bez przenoszenia kodu modułu sterującego. Warstwa MAL (???) umożliwia także przetwarzanie symetryczne - jądro - stanowi podstawę egzekutora i podsystemów. Strony jądra nigdy nie są usuwane z pamięci operacyjnej. Jądro ma cztery główne obowiązki: planować procesy, obsługiwać przerwania i sytuacje wyjątkowe, synchronizować na niskim poziomie procesor, podejmować działania naprawcze po awarii zasilania. Jądro jest zorientowane obiektowo. Przez typ obiektu rozumie się zdefiniowany w systemie NT typ danych, który ma zbiór atrybutów (wartości danych) i zbiór metod (funkcji lub procedur). Reprezentant danego typu obiektowego nazywa się obiektem. Jądro wykonuje swoje zadania posługując się zbiorem obiektów jądrowych:
- egzekutor - wykonuje zbiór usług, z których mogą korzystać wszystkie podsystemy środowiskowe. Usługi te można podzielić na grupy: zarządcę obiektów, zarządcę pamięci wirtualnej, zarządcę procesów, udogodnienie lokalnych wywołań procedur, zarządcę we/wy oraz monitor odwołań b) działających w trybie użytkownika duży zbiór podsystemów |
17. Definicja procesu.
S. o. musi zapewniać:
|
18. RAID (redundant array of inexpensive disks)(nadmiarowa tablica niezależnych wątków) - bitowy - blokowy RAID - zwiększa wydajność, polepsza niezawodność w skutek pamiętania nadmiarowych danych; metoda paskowania dysków przeplot - grupa dysków traktowana jako jedna jednostka pamięci 0 - przeplot blokowy, duża wydajność, duża awaryjność, implementowany jako rozszerzenie systemu operacyjnego 1 - mirroring (odbicie lustrzane), dane zapisuje się jednocześnie na dwóch zestawach dysków, dobre bezpieczeństwo. Wykonuje się kopie każdego dysku. Rozwiązanie to jest drogie ponieważ do pamiętania tej samej ilości danych stosuje się dwukrotnie więcej dysków, jednak zapewnia to dwukrotnie szybsze czytanie 2 - przeplot bitowy, bajty dzieli się na grupy bitów i rozdziela się pomiędzy dyski, duża wydajność, trudno rozbudowywalne 3 - pełny przeplot (0) i jeden dysk nadmiarowy (sum kontrolnych) 4 - jak (3), ale z przeplotem bitowym 5 - jak (3), ale informacja o parzystości jest dzielona między dyski, zmniejsza narzut przy zapisie, wielka wydajność i łatwość rozbudowy |
19. Własności plików FAT i NTFS. FAT:
NTFS
Porównanie FAT i NTFS:
|
20. Przekazanie, a przesłanie komunikatu. wysłanie - komunikat ląduje w kolejce komunikatów odpowiedniego wątku przekazanie - komunikaty są bezpośrednio przekazywane procedurze obsługi danego okna |
21. SendMessage(), PostMessage(), GetMessage(), PickMessage(). PostMessage - przekazanie komunikatu w trybie pocztowym. Procedury pocztowe są asynchroniczne, Zwracają one sterowanie natychmiast i wywołujący je wątek nie jest zorientowany, kiedy naprawdę komunikat zostaje doręczony. SendMessage - procedury typu send… są synchroniczne - blokują nadawcę do czasu doręczenia i przetworzenia komunikatu. GetMessage - wywoływana w celu obsługiwania zadań w anonsowanych w jej kolejce wejściowej. |
22. Praca pośrednia.
Zasadniczą zaletą pracy pośredniej było to, że komputer główny nie był już ograniczony przez prędkość czytników kart i drukarek wierszowych, ale jedynie przez prędkość o wiele szybszych jednostek taśm magnetycznych |
No udało się….. jak jest (???), to nie jestem pewien, bo nie mogłem na 100% rozczytać
Zaawansowane systemy równoległe:
O zwiększonej przepustowości
O zwiększonej niezawodności
łagodna degradacja (graceful degradation)
miękki upadek (fail-soft systems)
Symetryczna wieloprocesorowość (SMP)
Każdy z procesorów wykonuje identyczną kopię systemu operacyjnego.
Wiele procesów może być uruchomione naraz bez utraty wydajności.
Większość współczesnych systemów operacyjnych wspiera SMP.
Asymetryczna wieloprocesorowość
Każdemu procesorowi przydzielane jest specyficzne zadanie, nadrzędny procesor zarządza i przydziela prace procesorom podporządkowanym.
Typowe dla bardzo dużych systemów.
Klastry pozwalają dwu lub większej liczbie systemom współdzielić pamięć.
Zapewniają zwiększenie niezawodności.
Asymmetric clustering: jeden z serwerów wykonuje aplikację podczas gdy inne stanowią „gorącą” rezerwę.
Symmetric clustering: wszystkie N hostów wykonują aplikację.
Systemy czasu rzeczywistego mogą być dwóch typów:
Hard real-time - systemy z twardymi ograniczeniami;
Soft real-time - systemy z łagodnymi ograniczeniami czasowymi.
Twarde ograniczenia czasowe (hard real-time):
Brak pamięci pomocniczej, dane przechowywane w pamięci o krótkim czasie przechowywania lub w pamięciach typu ROM (read-only memory)
Nie są wspierane przez systemy operacyjne ogólnego przeznaczenia ze względu na stosowany tam podział czasu.
Łagodne ograniczenia czasowe (soft real-time)
Ograniczona stosowalność w sterowaniu robotami przemysłowymi
Użyteczne w takich aplikacjach jak: multimedia, wirtualna rzeczywistość (virtual reality), wymagają pewnych zaawansowanych cech systemu operacyjnego.
Maksymalne wykorzystanie procesora osiąga się przez wieloprogramowość
Wykonanie procesu składa się z następujących po sobie cykli działania procesora i oczekiwania na urządzenia zewnętrzne (CPU-I/O grupa cykli)
Rozkład czasów faz procesora
Wybiera jeden proces spośród przebywających w pamięci procesów gotowych do wykonania i przydziela mu procesor.
Planowanie w warunkach 1 i 4 nazywa się niewywłaszczeniowym (nonpreemptive).
Wszystkie pozostałe sytuacje bazują na wywłaszczeniowym schemacie planowania (preemptive).
Program koordynujący (ekspedytor, dyspozytor ang. dispatcher) jest modułem SO, który przekazuje sterowanie procesora do procesu wybranego przez planistę krótkoterminowego; Do jego obowiązków należy:
przełączanie kontekstu
przełączanie do trybu użytkownika
uruchomienie programu użytkownika od odpowiedniego adresu w celu wznowienia działania programu
Opóźnienie ekspedycji (ang. Dispatch latency) - czas od momentu zatrzymania jednego procesu i uruchomienia następnego.
Wykorzystanie procesora - dąży się do tego, aby procesor był nieustannie zajęty pracą
Przepustowość (ang. throughput) - liczba procesów kończonych w jednostce czasu
Czas cyklu przetwarzania (Turnaround time) - czas upływający między chwilą powołania procesu w systemie a chwilą zakończenia procesu
Czas oczekiwania - czas oczekiwania w kolejce procesów gotowych do wykonania
Czas odpowiedzi - czas upływający między przedłożeniem zamówienia a pojawieniem się pierwszej odpowiedzi, kryterium ważne w systemach interaktywnych.
Planowanie metodą „pierwszy nadszedł - pierwszy obsłużony” (FCFS)
Proces Czas trwania fazy procesora
P1 24
P2 3
P3 3
Procesy nadchodzą w następującym porządku: P1 , P2 , P3
Czas oczekiwania dla P1 = 0; P2 = 24; P3 = 27
Średni czas oczekiwania: (0 + 24 + 27)/3 = 17
Załóżmy, że procesy nadchodzą w kolejności P2 , P3 , P1 .
Diagram Gantta:
Czas oczekiwania dla P1 = 6; P2 = 0; P3 = 3
Średni czas oczekiwania: (6 + 0 + 3)/3 = 3
Dużo lepiej niż poprzednio.
Możemy mieć tu do czynienia z efektem konwoju, procesy czekają na zwolnienie procesora przez jeden „wielki” proces
Planowanie metodą „najpierw najkrótsze zadanie” (Shortest-Job-First - SJF)
Z każdym procesem wiąże się długość najbliższej fazy procesora. Procesor zostaje przydzielony procesowi mającemu najkrótszą następną fazę CPU.
Możliwe dwa schematy postępowania:
niewywłaszczeniowy - jeżeli procesor został przydzielony procesowi proces nie może być wywłaszczony dopóki nie zakończy swojej fazy procesora.
wywłaszczeniowy - jeżeli pojawi się nowy proces mający krótszą fazę procesora niż pozostały czas fazy bieżąco wykonywanego procesu - następuje wywłaszczenie tego procesu. Schemat ten nazywany jest Shortest-Remaining-Time-First (SRTF).
Można udowodnić, że SJF jest optymalny - tzn. daje minimalny średni czas oczekiwania dla danego zbioru procesów.
Przykład - niewywłaszczeniowy algorytm SJF
Proces Czas przybycia Czas trwania fazy CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
SJF (bez wywłaszczenia)
Średni czas oczekiwania = (0 + 6 + 3 + 7)/4 = 4
Przykład - wywłaszczeniowy
algorytm SJF
Proces Czas przybycia Czas trwania fazy
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
SJF (wywłaszczeniowy)
Średni czas oczekiwania = (9 + 1 + 0 +2)/4 = 3
Planowanie na podstawie priorytetu
Każdemu procesowi przypisujemy priorytet (pewną liczbę całkowitą)
Procesor przydziela się temu procesowi, który ma najwyższy priorytet (mniejsza liczba Ⴚ wyższy priorytet).
Wywłaszczeniowe
Niewywłaszczeniowe
Zauważmy, że SJF jest algorytmem priorytetowym, w którym priorytet (p) jest odwrotnością następnej (przewidywanej) fazy procesora.
Problem Ⴚ nieskończone wstrzymywanie procesów - procesy o niskich priorytetach mogą oczekiwać w nieskończoność
Rozwiązanie Ⴚ Wprowadzenie starzenia się procesów - stopniowe podwyższanie priorytetów procesów długo oczekujących w systemie.
Planowanie rotacyjne - ang. Round Robin (RR)
Każdy proces otrzymuje niewielką jednostkę czasu procesora (kwant czasu), zwykle 10-100 milisekund. Po upływie tego czasu proces jest wywłaszczany i umieszczany na końcu kolejki procesów gotowych.
Jeżeli mamy n procesów w kolejce procesów gotowych i kwant czasu jest równy q, to każdy proces otrzymuje 1/n czasu procesora porcjami, których wielkość nie przekracza q jednostek czasu. Żaden z procesów nie oczekuje dłużej niż (n-1)q jednostek czasu.
Wydajność
q bardzo duże პ FCFS
q małe პ q musi być odpowiednio duże w odniesieniu do czasu przełączania kontekstu.
Przykład algorytmu RR (q = 20)
Proces Czas fazy CPU
P1 53
P2 17
P3 68
P4 24
Diagram Gantta:
Zwykle, większa wartość średniego czasu przetwarzania niż w SJF, lecz lepszy czas odpowiedzi.
Wielopoziomowe kolejki
Kolejka procesów gotowych jest rozdzielona na osobne kolejki:
procesów pierwszoplanowych (interactive) i procesów drugoplanowych (wsadowych - batch)
Każda kolejka ma własny algorytm planowania,
procesów pierwszoplanowych - RR, procesów drugoplanowych - FCFS
Musi istnieć planowanie między kolejkami.
Stałopriorytetowe planowanie wywłaszczające; (np., kolejka pierwszoplanowa może mieć absolutny priorytet nad kolejką procesów wsadowych). Możliwość blokowania.
Operowanie przedziałami czasu (Time slice) - każda kolejka dostaje pewną porcję czasu procesora w którym może planować przydział dla swoich procesów; na przykład, 80% dla pierwszoplanowych - RR
20% wsadowe - FCFS
Proces może być przemieszczany między różnymi kolejkami; pewien sposób implementacji „starzenia się” procesów.
Planista wielopoziomowych kolejek ze sprzężeniem zwrotnym jest określony za pomocą następujących parametrów:
Liczba kolejek
Algorytm planowania dla każdej kolejki
Metoda używana do decydowania o awansowaniu procesu do kolejki o wyższym priorytecie
Metoda dymisjonowania procesu do kolejki o niższym priorytecie
Metoda określająca kolejkę, do której trafia proces potrzebujący obsługi
Trzy kolejki:
Q0 - kwant czasu 8 ms
Q1 - kwant czasu 16 ms
Q2 - FCFS
Planowanie
Nowy proces otwiera kolejkę Q0 i jest obsługiwany na zasadzie FCFS. Kiedy proces uzyskuje CPU, zadanie wykonuje się przez 8 ms. Jeżeli nie zostanie zakończone jest przenoszone do kolejki Q1.
Kolejka Q1 jest obsługiwana na zasadzie FCFS i proces otrzymuje 16 ms. Jeżeli i teraz nie zostanie zakończony, jest wywłaszczany i przenoszony do kolejki Q2.
Przykład działania algorytmu bankiera
5 procesów P0 - P4; 3 typy zasobów: A (10 egzemplarzy), B (5 egzemplarzy), C (7 egzemplarzy).
Migawkowy stan systemu w momencie T0:
Przydział Max Dostępne
A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
Zawartość macierzy Potrzebne jest określona jako: Max - Przydzielone.
Potrzebne
A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
System jest obecnie w stanie bezpiecznym. Istnieje sekwencja < P1, P3, P4, P2, P0> spełniająca kryterium bezpieczeństwa.
Sprawdzamy czy Zamówienia Ⴃ Dostępne (to jest, (1,0,2) Ⴃ (3,3,2) პ spełnione. Zamówienie zrealizowane, otrzymujemy:
Przydzielone Potrzebne Dostępne
A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 1 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
Wykonujemy algorytm bezpieczeństwa i znajdujemy, że <P1, P3, P4, P0, P2> spełnia wymagania bezpieczeństwa.
Czy zamówienie (3,3,0) dla P4 może zostać spełnione?
Czy zamówienie (0,2,0) dla P0 może zostać spełnione?
Pięć procesów P0 - P4; trzy typy zasobów
A (7 egzemplarzy), B (2 egzemplarzy)
oraz C (6 egzemplarzy).
Moment T0:
Przydzielone Zamówienia Dostępne
A B C A B C A B C
P0 0 1 0 0 0 0 0 0 0
P1 2 0 0 2 0 2
P2 3 0 3 0 0 0
P3 2 1 1 1 0 0
P4 0 0 2 0 0 2
Sekwencja <P0, P2, P3, P1, P4> daje Finish[i] = true dla wszystkich i.
P2 zamawia dodatkowy zasób typu C.
Zamówienia
A B C
P0 0 0 0
P1 2 0 1
P2 0 0 1
P3 1 0 0
P4 0 0 2
Stan systemu?
Można zwolnić zasoby P0, lecz nie wystarcza to do zaspokojenia zapotrzebowania procesów.
Istnieje blokada, obejmująca P1, P2, P3, i P4.
Problem dynamicznego przydziału pamięci
Jak na podstawie listy wolnych obszarów (dziur) zrealizować zamówienie
na obszar o rozmiarze n. Strategie wyboru:
Pierwsza pasująca: Przydziela się pierwszą „dziurę” o wystarczającej wielkości.
Najlepiej pasująca: Przydziela się najmniejszą z dostatecznie dużych „dziur”; niezbędne jest przeszukanie całej listy, chyba że jest ona uporządkowana wg rozmiaru.
Najgorzej pasująca: Przydziela się największą „dziurę”; niezbędne jest przeszukanie całej listy. Strategia taka pozostawia po przydziale największą dziurę.
Symulacje wykazały, że strategie pierwsza pasująca i najlepiej pasująca są lepsze niż wybór największej „dziury” pod względem czasu, jak i wykorzystania pamięci.
Fragmentacja zewnętrzna - suma wolnych obszarów w pamięci wystarcza na spełnienie zamówienia, ale nie stanowi spójnego obszaru.
Fragmentacja wewnętrzna - przydzielona pamięć może być niewiele większa niż zamawiana; ta dodatkowa pamięć znajduje się wewnątrz jednostki przydziału i nie będzie wykorzystana.
Zmniejszenie fragmentacji przez upakowanie
Przemieszczanie zawartości pamięci w taki sposób aby scalić wszystkie wolne obszary pamięci w jeden blok.
Możliwość upakowania daje tylko dynamiczne przemieszczanie adresów, wykonywane podczas działania procesu.
Problem transmisji WE/WY
Zablokowanie procesu w pamięci, gdy wykonał zamówienie na operację WE/WY.
Realizacja operacji WE/WY jedynie do buforów SO.
16
0
rb=30040
rg=120900
420940
300040
monitor |
zadanie 1 |
zadanie 2 |
zadanie … |
zadanie n |
program obsługi urządzeń w pamięci ROM BIOS
programy obsługi urządzeń z poziomu MS-DOS
rezydujące programy systemowe
programy użytkownika