background image

47. Algorytmy szeregowania zadań
        

        Algorytm szergowania tzw. planista lub z ang. scheduler odpowiada 
za przydzielenie

dostępu do procesora dla poszczególnych 
          procesów, dodatkowo musi uwzględniać priorytety, gotowość do 

działania oraz
przeciwdziałać zagłodeniu procesu (czyli 

        niedopuścić żeby dany proces nigdy nie był wykonany)
        W systemach operacyjnych czasu rzeczywistego najważniejsze aby dany 

proces skończył
się przed zaplanowanym dla nie go czasem.

        Rozróżniamy dwa rodzaje planistów: krótkoterminowy który wybiera 
procesy spośród

gotowych do wykonania (musi być bardzo szybki)
        oraz długoterminowy który wybiera zadania z pamięci masowej i 

ładuje do pamięci
operacyjnej.

        Obecne systemy oparte są o wielozadaniowość z wywłaszczeniem
        * FIFO - algorytm powszechnie stosowany, jeden z prostszych w 

realizacji, dający
dobre

        efekty w systemach ogólnego przeznaczenia; zadanie wykonuje się aż 
nie zostanie

        wywłaszczone przez siebie lub inne zadanie o wyższym priorytecie;
        * Planowanie rotacyjne (round-robin) - każde z zadań otrzymuje 

kwant czasu; po
        spożytkowaniu swojego kwantu zostaje wywłaszczone i ustawione na 

końcu kolejki;
        * Planowanie sporadyczne - zadania otrzymują tak zwany "budżet 

czasu"; ten algorytm
        pomaga pogodzić wykluczające się reguły dotyczące szeregowania 

zadań okresowych i
        nieokresowych; wciąż nie jest implementowany przez wiele systemów, 

jednak znalazł
się w

        standardzie POSIX;
        Mniej powszechne

        Trzy wymienione wyżej algorytmy są stosowane najczęściej. Jednak 
lista algorytmów

        szeregowania jest bardzo długa i znajdują się na niej między innymi 
jeszcze takie

algorytmy
        jak:

        * FCFS (first come, first start) - Bardzo podobny do kolejki FIFO - 
Pierwszy

przyjdzie,
        pierwszy wykonany. Algorytm ten dokonuje najsprawiedliwszego 

przydziału czasu
(każdemu

        według potrzeb), jednak powoduje bardzo słabą interakcyjność 
systemu - pojedynczy

długi
        proces całkowicie blokuje system na czas swojego wykonania, gdyż 

nie ma priorytetów
        zgodnie z którymi mógłby zostać wywłaszczony. Algorytm ten stosuje 

się jednak z
        powodzeniem w systemach wsadowych, gdzie operator ładuje zadania do 

wykonania, a one
        wykonują się do skutku.

background image

        * SJF (shortest job first) - Najpierw najkrótsze zadanie. Jest 
algorytmem

optymalnym ze
        względu na najkrótszy średni czas oczekiwania. W wersji z 

wywłaszczaniem, stosowana
jest

        metoda: najpierw najkrótszy czas pracy pozostałej do wykonania. 
Problemem tego

algorytmu
        jest głodzenie długich procesów - może się zdarzyć, że cały czas 

będą nadchodzić
krótsze

        procesy, a wtedy proces dłuższy nigdy nie zostanie wykonany.

48. Model sekcji krytycznej i warunki jego poprawnego funkcjonowania.

        * Sekcja krytyczna to ciąg operacji na pewnym zasobie 
współdzielonym (zazwyczaj

pamięci) który musi być
        wykonany tylko przez jeden proces z potencjalnie wielu innch. 

Proces przed
wejściem do SK musi przejść przez sekcje

        wejściową, gdy takowy już jest w SK wówczas inne w sekcji 
wejściowej nie

mogą jej przejść i są wstrzymywane do chwili
        przejścia procesu z SK do sekcji wyjściowej (która powiadamia ich o 

opuszczeniu),
wtedy jeden z procesów z sekcji wejściowej zostanie wpuszczony do SK.

          
        * Sekcji krytycznej musi spełniać kilka warunków aby działać 

dobrze:  
         + wzajemne wykluczenie - tylko jeden proces może przebywać i 

wykonywać sekcje
krytyczną

         + warunek postępu - (ograniczona liczba wejść) tylko procesy w 
sekcji wejściowej

mogą kandydować do wejścia w sekcje krytyczną
         + ograniczone czekanie - każdy proces aplikujący do sekcji 

krytycznej musi kiedyś
do niej wejść (chyba, że sam zrezygnuje) 

         
        * Przykładowy algorytm 

         + algorytm piekarniczy, każdy z procesów jest numerowny nazwijmy 
ten numer p,

dodatkowo wejścia do sekcji krytycznej są także numerowane nazwijmy je k 
           wejść może proces o najniższym parze numerów (p, k) jeżeli 

sekcja jest wolna. A
dlaczego para? Poniważ możliwe, że dwa procesy dostaną ten sam

           numer k (a identyfikator p jest zawsze unikalny). Więc dlaczego 
numery k skoro

wystarczą p? Nie każdy z procesów p będzie aplikował do sekcji 
           krytycznej.

        * Znane sposoby realizacji sekcji krytycznej:
         + semafory (binarny, liczbowy)

          + mutexy
         + moniotry (wysoko poziomowe mechanizmy jezyków programowania)

49. Stronicowanie i stronicowanie na żądanie – wsparcie sprzętowe, korzyści

wynikające ze stosowania tych technologii.

background image

        * Stronicowanie jest jednym ze sposobów rozwiązania problemu 
zewnętrznej

fragmentacji polegającym na dopuszczeniu nieciągłości 
          logicznej przestrzeni adresowej procesu. Zostało użyte przez 

polskiego inżyniera
Jacka Karpińskiego w architekturze komputera K-202.

          Podstawowa metoda stronicowania:
         • Pamięć fizyczna dzielona jest na bloki stałej długości zwane 

ramkami.
         • Pamięć logiczna dzielona jest na bloki stałej długości zwane 

stronami.
         • Rozmiary stron i ramek są identyczne.

         • Przy wykonywaniu procesu, strony z pamięci pomocniczej 
wprowadzane są w dowolne

ramki pamięci operacyjnej.
         W systemach komputerowych podział pamięci na mniejsze obszary o 

ustalonej lub
zmiennej wielkości przydzielanie tym blokom adresów fizycznych lub 

logicznych.
         Historia. Stronicowanie pamięci fizycznej wykonywane było z powodu 

ograniczenia
przestrzeni adresowej procesora (stronicowanie fizyczne).

        * Stronicowanie na żądanie (angielskie demand paging), popularny 
algorytm

stronicowania, opóźniający sprowadzanie stron z dysku do chwili, 
          gdy zabraknie ich w wykonywanym procesie (czyli strona 

sprowadzana jest z dysku
do pamięci wtedy gdy jest potrzebna); 

          rzadko stosowany w postaci czystej