Jądro Systemu
Rafał Grzybowski
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
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
Rafał Grzybowski
Podstawowe składniki jądra
program wstępnej obsługi przerwań
dyspozytor przełączający procesor
pomiędzy procesami
INNE WARSTWY
procedury komunikacji
JDRO SYSTEMU
pomiędzy procesami
SPRZT
Rafał Grzybowski
Reprezentacja procesów
deskryptor procesu - wektor stanu
procesu
nazwa procesu
stan procesu
" wykonywany - proces bieżący
" wykonywalny
" niewykonywalny
sprzętowy deskryptor procesu
Rafał Grzybowski
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
Deskryptor Deskryptor
Data
procesu 1 procesu 2
Struktura procesów
Tablica główna
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 zródła przerwania
zainicjować obsługę przerwania
Rafał Grzybowski
Aańcuch przeskoków
Pamiętaj rejestry programu
T
Procedura obsługi
Czy przerwanie ze zródła 1?
dla zródła 1
N
Procedura obsługi
T
Czy przerwanie ze zródła 2 ?
dla zródła 2
N
Procedura obsługi
T
dla zródła 3
Czy przerwanie ze zródła 3 ?
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 !
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.
Znajdz 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.
Rafał Grzybowski
Kolejka procesora
Wykonywany
Deskryptor procesu 1
Niewykonywalny
Deskryptor procesu 2
Wykonywalny
Deskryptor procesu 3
Wykonywalny
Deskryptor procesu 4
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.
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
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
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;
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
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
"sprawdz i ustaw"
Wyszukiwarka
Podobne podstrony:
10 Linux Jądro systemu2006 07 Jądro systemu operacyjnego [Inzynieria Oprogramowania]budowa systemu,jadrowylaczenie aktualizacji systemu XPEV (Electric Vehicle) and Hybrid Drive Systemssystem ósemkowyANALIZA KOMPUTEROWA SYSTEMÓW POMIAROWYCH — MSEInstalacja systemu Windows z pendrive aMIERNICTWO I SYSTEMY POMIAROWE I0 04 2012 OiORola laboratoriów w świetle wymagań systemów zarządzania jakosciąwięcej podobnych podstron