background image

Jądro Systemu

Rafał Grzybowski

background image

Rafał Grzybowski

Podstawowe wymagania sprzętowe

Mechanizm przerwań
Ochrona pamięci
Zbiór rozkazów uprzywilejowanych

– 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

Zegar czasu rzeczywistego

background image

Rafał Grzybowski

Rozkazy uprzywilejowane

Proces użytkownika wywołuje system operacyjny w 
celu wykonania pewnej czynności, która wymaga 
użycia rozkazu uprzywilejowanego
Nadeszło przerwanie
Pojawił się błąd w procesie użytkownika
Wystąpiła próba wykonania rozkazu 
uprzywilejowanego, podczas gdy komputer 
pracuje w trybie użytkownika

background image

Rafał Grzybowski

Podstawowe składniki jądra

program wstępnej obsługi przerwań

dyspozytor przełączający procesor 

pomiędzy procesami

procedury komunikacji 

pomiędzy procesami

SPRZĘT

JĄDRO SYSTEMU

INNE WARSTWY

background image

Rafał Grzybowski

Reprezentacja procesów

deskryptor procesu - wektor stanu 

procesu

nazwa procesu

stan procesu

• wykonywany -

proces bieżący

• wykonywalny
• niewykonywalny

sprzętowy deskryptor procesu 

background image

Rafał Grzybowski

Tablica główna

Reprezentacja procesów c.d.

środowisko ulotne procesu (kontekst 
procesu) -

podzbiór takich podlegających zmianom 

właściwości systemu, do których proces może mieć dostęp.

struktura procesów

Numer wersji

Data

Struktura procesów

Deskryptor

procesu 1

Deskryptor

procesu 2

background image

Rafał Grzybowski

Wstępna obsługa przerwań

odpowiadanie na syganły nadchodzące z 
zewnątrz do systemu (przerwania) oraz 
pochodzące z samego systemu (pułapki 
błędów itp.)

Dwa zadania główne:

określenie źródła przerwania

zainicjować obsługę przerwania

background image

Rafał Grzybowski

Łańcuch przeskoków

Czy przerwanie ze źródła 3 ?

Czy przerwanie ze źródła 2 ?

Czy przerwanie ze źródła 1?

Pamiętaj rejestry programu

Procedura obsługi
dla źródła 1

T

N

T

T

N

Procedura obsługi
dla źródła 2

Procedura obsługi
dla źródła 3

background image

Rafał Grzybowski

Dyspozytor

Przydzielanie procesora centralnego do różnych 
procesów w systemie

po przerwaniu, zmieniającym stan jakiegoś procesu,

po odwołaniu do systemu, które powoduje, że chwilowo nie można 
kontynuować wykonywania bieżącego procesu,

po wykryciu błędu, nasuwającego podejrzenie, że wystąpił on w 
bieżącym procesie.

Do dyspozytora przechodzi się z zasady po 
wszystkich przerwaniach !

background image

Rafał Grzybowski

Dyspozytor

Czy bieżący proces nadal nadaje się do wykonania przez ten 

procesor? Jeżeli tak, to przekaż sterowanie do tego miejsca w 

pamięci operacyjnej, na które wskazuje licznik rozkazów. Jeżeli 

nie, to:

Zapamiętaj środowisko ulotne bieżącego procesu w jego 

deskryptorze procesu.

Znajdź najodpowiedniejszy proces i odtwórz jego środowisko 

ulotne na podstawie jego deskryptora procesu.

Przekaż sterowanie do nowo wybranego procesu, do miejsca 

wskazywanego przez jego odtworzony licznik rozkazów.

background image

Rafał Grzybowski

Kolejka procesora

Deskryptor procesu 1

Niewykonywalny

Wykonywalny

Wykonywalny

Deskryptor procesu 2

Deskryptor procesu 3

Deskryptor procesu 4

Wykonywany

background image

Rafał Grzybowski

Dyspozytor

Czy bieżący proces dla tego procesora jest nadal pierwszym

niewykonywanym procesem w kolejce procesora? Jeżeli tak, to 

podejmij jego wykonanie. Jeżeli nie, to:

Zapamiętaj środowisko ulotne bieżącego procesu.

Odtwórz środowisko ulotne pierwszego niewykonywanego

procesu w kolejce procesora.

Przekaż sterowanie do tego procesu.

background image

Rafał Grzybowski

Kolejka wielopoziomowa ze 

sprzężeniem zwrotnym 

Kilka kolejek procesora, z każdą kolejką jest 
związany pewien ustalony kwant czasu
Najmniejszy kwant określa się dla kolejki o 
najwyższym priorytecie, największy zaś - dla 
kolejki o najniższym priorytecie
Jeżeli proces wykonuje się przez cały 
przydzielony mu kwant czasu, to jest 
odsyłany do następnej kolejki o niższym 
priorytecie

background image

Rafał Grzybowski

Czekaj i sygnalizuj

Operacje te powinny być dostępne dla wszystkich procesów.

Wynikiem operacji czekaj może być zablokowanie procesu, które 

spowoduje przejście do dyspozytora w celu ponownego 

przydziału procesora.

Wygodnym sposobem “obudzenia procesu” jest włączenie w 

procedurę obsługi przerwania operacji sygnalizuj

background image

Rafał Grzybowski

Blokowanie i odblokowywanie procesów

czekaj(s):

if s <> 0 then s := s – 1
else dodaj proces do kolejki
semafora i uczyń go niewykonywalnym;

sygnalizuj(s): if kolejka pusta then s := s + 1

else usuń jakiś proces z kolejki semafora
i uczyń go wykonywalnym;

background image

Rafał Grzybowski

Dołączanie procesów do kolejki i 

usuwanie ich z niej

Dla większości semaforów można przyjąć
organizację kolejki zgodną z prostą zasadą - kto 
pierwszy przyszedł, ten pierwszy wychodzi; 
gwarantuje ona, że w końcu uwolni się wszystkie 
zablokowane procesy
Procesy o wysokich priorytetach nie powinny być
odsyłane na długo do kolejki semafora.
Zmiana implementacji
semafora

background image

Rafał Grzybowski

Niepodzielność operacji

operacje czekaj i sygnalizuj powinny być
niepodzielne w tym znaczeniu, iż w dowolnej 
chwili tylko jeden proces może je wykonywać
W komputerze z jednym procesorem 
niepodzielność zapewnia wyłączanie
mechanizmu przerwań
W komputerze z kilkoma procesorami 
centralnymi wykorzystywany jest rozkaz 
"sprawdź i ustaw"