lastscan7 (12)

lastscan7 (12)



d) adresowanie wieloelementowe jednopoziomowe (pośrednie) - suma składowych

adresu wyznacza adres danej w pamięci

c) adresowanie wieloelementowe dwupoziomowe (pośrednie)

•    bazowe z przemieszczeniem

•    indeksowe z przemieszczeniem

•    bazowo- indeksowe

•    względne z przemieszczeniem - bazą jest zawartość licznika rozkazów

•    względne indeksowe    **'

W architekturze Intel 80x86 zaadresowanie danej w pamięci wymaga dwóch wskaźników identyfikatora spójnego bloku pamięci zwanego segmentem i adresu względnego wewnątrz segmentu o wartości nic przekraczającej rozmiaru segmentu. Wskaźnik segmentu umieszczony w- rejestrze wyznacza adres początku segmentu (bazę odniesienia) Najbardziej złożonym trybem adresowania 2 spotykanego w procesorach rodziny Intel 80x86 jest dwuwskaźnikowe skalowane adresowanie bazowo-indeksowe z przemieszczeniem(rys 3 ) 3, folia). Adres obliczamy ze wzoru:

LA = ((wskaźnik segmentu]) + (baza) + (indeks)*skala + przemieszczenie

Nawias [... ] oznacza adres pośredni a nawias (...) oznacza, żc składowa adresu umieszczona jest w rejestrze procesora

Elastyczność adresowania można poprawić poprzez odniesienie adresów danych do bazy pośredniej Adresowanie takie wraz z adresowaniem wieloelementowym zostało zastosowane w architekturze MC 680x0. Ciekawymi przypadkami są:

•    adresowanie preindeksowe gdzie indeks jest użyty do wyliczenia adresu bazy

pośredniej, a adres logiczny jest wyliczany ze wzoru:

LA = ((baza) + przemieszczenie + (indeks) • skala] + relokacja (rys 3 14. folia)


•    adresowanie postindeksowe, gdzie indeks służy do modyfikacji bazy pośredniej, a

adres logiczny jest obliczany ze wzoru:

LA * ((baza) + przemieszczenie] + (indeks) * skala + relokacja (rys 3.15, folia)

Wielorakość trybów adresowania jest cechą szczególną maszyn klasy CISC. W maszynach klasy RISC z uwagi na ustalony rozmiar kodu stale adresu są dane w postaci skróconej Najbardziej złożonym trybem adresowania w maszynach tego typu jest skalowane adresowanie bazowo-indeksowe.

Adresowanie danych systemowych

Typową strukturą danych systemowych jest stos programowy W obszarze stosu dostęp do danych jest sekwencyjny. Adresowanie realizowane jest przez jeden wskaźnik szczytu stosu Rozwiązanie takie wymaga automatycznej modyfikacji wskaźnika albo przed transferem danych lub już po transferze (rys. 3.16, folia).

Adresowanie opisowe (deskryptorowe)

Szczególną metodą adresowania wieloelementowego jest adresowanie opisowe Cechą szczególna tego trybu adresowania jest odniesienie wszystkich adresów spójnego obszaru pamięci do adresu bazowego wyznaczanego na podstawie opisu (deskryptors) lokalizowanego poprzez wskaźnik (podobnie jak baza pośrednia w adresowaniu preindeksowym lub postindeksowym) Oprócz adresu bazowego opis zawiera również informacje umożliwiające realizację selektywnego dostępu do bloku Zaletą tej metody adresowania jest elastyczne adresowanie zmiennych strukturalnych przy jednoczesnym zapewnieniu prywatności (rys 3 17, folia) Taki sposób adresowania jest stosowany przy realizacji mechanizmów pamięci wirtualnej, w której kluczowym problemem jest zapewnienie kontrolowanego dostępu do danych wszelkiego typu W adresowaniu deskrypłotowym wskaźnikiem adresu bazowego jest pełen adres wirtualny danej lub jego wyróżniona część (tworząca adres strony wirtualnej lub wirtualnego segmentu), a. W dwupoziomowym adresowaniu pośrednim - zawartość rejestru procesora.

Wykład 4 - system operacyjny - procesy Model procesorowy systemu operacyjnego

We współczesnych systemach operacyjnych możliwe jest wykonywanie kilku zadań w tym samym czasie. Jeżeli liczba zadań jest większa od ilości procesorów to mamy do czynienia z systemem wielozadaniowym i w takim wypadku budowa systemu operacyjnego musi umożliwiać okresowe przełączanie zadań. Jeśli przełączanie jest wystarczająco szybkie użytkownik ma wrażenie, iż zadania wykonywane są równolegle (współbieżnie) Do opisu mechanizmów związanych z zarządzaniem równoległością i innych usług służy model procesowy systemu operacyjnego W modelu tym przyjmuje się. że wszystkie funkcje systemu operacyjnego i wszystkie programy użytkownika mogą być wykonywane współbieżnie. Program zapisany jako sekwencja instrukcji procesora w chwili uruchomienia staje się procesem Koniecznością staje się aby system operacyjny zajmował się harmonogramow-aniem procesów, które określa zasady w jakiej kolejności są one uruchamiane, kiedy należy je wstrzymać lub usunąć z systemu. Utworzenie nowego procesu wymaga przygotowania struktur danych opisujących jego relacje ze środowiskiem, zwłaszcza zaś sposób przydziału pamięci i mechanizmy jego współpracy z innymi procesami. Wynikiem tego działania to zwanego ustanowieniem procesu jest umieszczenie procesu na liście procesów aktywnych (rys 6 2, folia)

Proces potomny {child proces) zaczyna niezależne istnienie i jest realizowany współbieżnie z procesem rodzicielskim. Separacja procesów jest tak duża, że nawet podczas wykonywania lego samego fragmentu kodu nie może następować wzajemne przenikanie procesów. Poziom aktywności procesu podczas jego wykonywania nazywa się stanem procesu. Wykonywanie procesu może być wstrzymane na pewien czas, np. w oczekiwaniu na zajście pewnego zdarzenia i potem wznowione Po wykonaniu się wszystkich funkcji procesu proces jest zatrzymany i usunięty z systemu.

Informacja niezbędna do pełnego opisu procesu nazywa się kontekstem procesu. W skład kontekstu procesu wchodzą:

•    błok sterujący procesu, znajdujący się w tablicy procesów przez cały czas istnienia (aktywności) procesu

•    kontekst procesora, obejmujący rejestr stanu SR, licznik programu PC, rejestry ogólne, rejestry sterujące i połączenia do procesów współpracujących

•    kontekst pamięci, niezbędny tylko dla procesów aktywnych, obejmujący obszar programu i danych użytkowych oraz obszar danych systemowych

Blok sterujący procesu zawiera:

•    identyfikator procesu

•    minimalny kontekst procesora, który stanowi niezbędną do wznowienia procesu informację o stanie procesora (rejestr stanu i licznik programu)

Blok sterujący zawiera także:

•    wskaźnik obszaru pamięci w którym zapisano pełny kontekst procesora

•    informacje dotyczące wykorzystania czasu procesora i harmonogramowania

Aby możliwe było harmonogramowanie procesom przyporządkowuje się poziomy uprzywilejowania. Zwykle wystarcza wyróżnienie 4 takich poziomów

•    obsługi wyjątków - utrzymanie integralności systemu

•    obsługi we/wy - funkcje krytyczne względem czasu (obsługa przerwań, odmierzanie czasu, obsługa dysków)

•    nadzoru - inicjalizacja i harmonogramowanie procesów, zarządzanie pamięcią, obsługa plików

•    użytkowników

We współczesnych systemach operacyjnych funkcje systemowe wykonywane są jako niezależne procesy na poziomie nadzoru lub na kilku różnych poziomach ze względu na pilność ich obsługi Zdarzenia zagrażające spójności systemu (wyjątki) muszą być zawsze obsłużone w pierwszej kolejności. Z. kolei funkcje krytyczne względem czasu muszą posiadać wyższy poziom uprzywilejowania niż zarządzanie procesami lub obsługa systemu plików.

Funkcje zarządzania procesami obejmują

•    tworzenie i aktualizacjo struktur danych    procesu

•    inicjowanie, synchronizację i usuwanie procesu

•    ochronę procesu i jego zasol*ów

•    przełączanie procesów

Przełączanie procesów

Wykonywanie wielu procesów na jednym procesorze wymaga ich przełączania, ponieważ w danej chwili czasu tylko jeden proces może korzystać z unikatowego zasobu jakim jest czas procesora Przełączanie procesów jest inicjowane przez wywołanie przełączania i wymaga przełączania kontekstów, przechowania kontekstu procesu zawieszanego i odtworzenie kontekstu procesu wznawianego Wywołanie procesu może być jawne, implikowane lub wymuszone przez zdarzenie zewnętrzne (rys. 6.3. folia)

Wszystkie przełączania procesów dokonywane przez proces aktualnie wykonywany są jawne i synchroniczne. Proces użytkownika nie może samodzielnie uruchomić innego procesu użytkownika. Proces taki jest uruchamiany poprzeż wykonanie usługi systemowej.

W skutek niepoprawnego przebiegu procesu, grożącego naruszeniem spójności systemu jest implikowane wywołanie procesu obsługi tej sytuacji Powodem może być błąd danych, dzielenie przez zero lub próba wykonania niedozwolonej instrukcji

Przełączanie procesów może być leż skutkiem zdarzenia zewnętrznego, zwanego przerwaniem Żądanie obsługi takiego zdarzenia jest zawsze asynchroniczne, a obsługa nie zawsze musi być natychmiastowa

W sysiemach z podziałem czasu najczęstszą przyczyną przełączania procesów jest przerwanie działania procesu ze względu na upływ czasu, co powoduje wywołanie procesu nadzoru. Czas który jest potrzebny na przełączenie procesów jest z punktu użytkownika stracony toteż dąży się do jego minimalizacji. Osiąga się to poprzez minimalizację kontekstu procesu Uniknięcie przełączania procesów jest możliwe wówczas, gdy każdy proces ma swoje własne zasoby a dzielony jest tylko czas W takim wypadku minimalnym kontekstem procesu jest kontekst procesora, który musi obejmować:

•    rejestr statusu

•    licznik programu

•    wskaźnik stosu, jeśli    brak    osobnego rejestru    wskaźnika stosu systemowego

•    nie trzeba przechowywać    rejestrów bo nie są wspólne

W innych przypadkach minimalny kontekst procesu musi zawierać także wskaźnik kontekstu pamięci, niezbędny do jej przełączenia Z tego powodu w architekturach rzeczywistych obsługa wyjątku rozpoczyna się od przechowania kontekstu procesu, który spowodował wyjątek.

Przełączanie minimalnego kontekstu procesu musi być zawsze operacją niepodzielną. W niektórych architekturach dostępne są rozkazy wspomagające przełączanie kontekstu. Po przełączeniu minimalnego kontekstu procesu zwykle następuje przełączenie reszty kontekstu procesora (stany rejestrów) co może być zrealizowane jako przesianie stos - procesor. Pełny kontekst procesu przechowywany jest w tablicy procesu, do której dostęp powinien być możliwy tylko w trybie nadzoru. Przykładem takiej tablicy jest w architekturze Intel 80286 segment stanu zadania TSS.

W przypadku procesów wykonywanych w tym samym kontekście pamięci zwanych wątkami (rhread) nie ma potrzeby przełączania kontekstu pamięci.

Aby możliwa była realizacja mechanizmów ochrony procesy dzieli się na procesy nadzoru (systemowe) i procesy użytkowników Procesy te powinny działać co najmniej w dwóch różnych przestrzeniach adresowych co ma chronić system przed błędami generowanymi przez procesy użytkowników. Separacja przestrzeni adresowych umożliwia optymalizację przełączania kontekstu pamięci Wywołanie systemowe (przełączenia z poziomu użytkownika na poziom systemu) wymaga przełączenia zestawu rejestrów w układzie zarządzania pamięcią, bo każdy proces dysponuje własną pamięcią

3    Synchronizacja procesów

Zależność procesów jest skutkiem współpracy lub współzawodnictwa. Współpraca procesów wymaga ich komunikacji. Komunikacja może być realizowana jako przesianie pewnych wartości kanałem komunikacyjnym (UN1X pipę, message) lub jako odwołanie do pewnych zasobów współdzielonych (UN!X shared niemoty - pamięć współdzielona). Komunikacja procesów musi być synchronizowana ponieważ informacja która ma być przekazana musi zostać wcześniej wytworzona. Głównym problemem synchronizacji jest zapewnienie wzajemnego wykluczania, czyli uniemożliwienie jednoczesnego dostępu dwóch lub więcej procesów do współdzielonego zasobu. Fragment procesu w którym korzysta on z takiego zasobu nazywa się sekcją krytyczną Wykonanie procesu w obrębie sekcji krytycznej polega zwykle na komunikacji z obszarem udostępnionym także innym procesom Ponieważ w danej chwili tylko jeden proces moZe uzyskać dostęp do współdzielonego zasobu, więc każdy proces przebywający w sekcji krytycznej uniemożliwia innym procesom wykonanie ich sekcji krytycznych Rozwiązanie problemu wzajemnego wykluczania wymaga zaopatrzenia procesu w protokół wstępny, realizujący mechanizm czekania na dostęp jak i mechanizm końcowy realizujący zwolnienie współdzielonego zasobu udostępnienie go innym procesom Czas przebywania w sekcji krytycznej jak i czas realizacji protokołu wstępnego i końcowego powinien być możliwie jak najkrótszy.

Rozwiązanie problemu wzajemnego wykluczania bez zapewnienia szansy dostępu każdego procesu do zasobu współdzielonego może prowadzić do zjawiska zwanego zakleszczeniem procesów (deadlock) Zjawisko to polega na tym że proces czeka na zjawisko które nigdy nie nastąpi, bo nastąpić nie może. Rozwiązaniem tego problemu jest laka konstrukcja procesów, aby ich wykonywanie poza sekcją krytyczną nie blokowało innych procesów Zakleszczenie może być także skutkiem wykonywania pętli aktywniej w której kilka procesów realizuje komunikację, uniemożliwiając wykonywanie innym procesom.

Drugim problemem jest zagłodzenie procesu lub zbiorów procesów, czyli uniemożliwienie im dostępu do zasobu współdzielonego wskutek dostępu do tego zasobu przez inne procesy. Wyeliminowanie tego problemu wymaga synchronizacji i kontroli dostępu do zasobu dzielonego zgodnie z zasadami sprawiedliwości

4    Metody synchronizacji

Najprostszym sposobem zapewnienia wzajemnego wykluczania jest zablokowanie wszelkich przerwań w czasie wykonywania sekcji krytycznej. W len sposób procedury realizujące dostęp do współdzielonych zasobów stają się niepodzielne. Rozwiązanie takie może jednak powodować utratę ważnych informacji jeżeli przejście przez sekcję krytyczną nie będzie wystarczająco szybkie i jest możliwe tylko w systemie jednoprocesorowym Alternatywnym rozwiązaniem jest aktywne czekanie na dostęp W tej metodzie sterowanie i kontrola dostępu do dzielonych zasobów są realizowane za pomocą zmiennej kluczującej. W sekcji krytycznej procesu jesl wykonywane wówczas wyłącznie testowanie i ewentualnie blokowanie innym procesom dostępu do współdzielonych zasobów za pomocą zmiennej kluczującej. Podobnie jak poprzednio przerwania muszą być zablokowane w czasie wykonywania sekcji krytycznej. Realizacja tego mechanizmu wymaga wspomagania na poziomie architektury maszyny rzeczywistej, przez umieszczenie na liście rozkazów instrukcji niepodzielnej typu testuj i ustaxv (test and sei) łub porównaj i wymień {compare and s*ap) lub metaiustrukcji kluczującej lock {rys 6.5, folia).

Metoda aktywnego czekania na dostęp powoduje bezużyteczne zaangażowanie czas procesora bo wszystkie ptocesy oczekujące na dostęp do zasobu współdzielonego stale testują możliwość uzyskania dostępu Prowadzi to nasy cenie magistrali testami dostępu

5 Obsługa przerwań

Michał Jur


Wyszukiwarka

Podobne podstrony:
LastScan11 (12) stanowią główny składnik środków piorących, myjących, zwilżających, stosowanych pows
LastScan1 (12) &jOtjucf«uźcl (b^foi*-Ufe
LastScan5 (12) ~ M^ yllilUjdu. ^•^LukLcixŁaA^c- ^q4cKm-I ^ tyop*- -^-fau. iugj-
IMGy86 imię, nazwisko grupa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 suma ocena
TOB12 stąd iLp(t) = 0,25 e-20001 Całkowity prąd iL(t) będąey sumą składowej ustalonej i składowej
LastScan5 (12) ~ M^ yllilUjdu. ^•^LukLcixŁaA^c- ^q4cKm-I ^ tyop*- -^-fau. iugj-

więcej podobnych podstron