wykłady systemy operacyjne


Systemy operacyjne

Technika mikroprocesorowa

Technika cyfrowa

Elektronika

Elektryczność

Języki wyższego poziomu

asembler

Główne zadania i cele systemu operacyjnego :

  1. Podział zasobów :

  1. Tworzenie maszyny wirtualnej. Czyli taka zmiana właściwości fizycznych maszyny cyfrowej, aby była ona przydatniejsza dla użytkownika.

Zadania maszyny wirtualnej:

W naszym systemie są różnego rodzaju urządzenia : porty szeregowe, równoległe, karet sieciowe, te urządzenia zamieniamy na urządzenia wirtualne. Aby zapisać odczytać z dysku trzeba oprogramować :

Maszyna wirtualna - jest odpowiedzialna za pamięć operacyjną. Pamięć składa się z rejestrów. Możemy umieścić w niej w niej kolka programów jednocześnie. Kody czy adresy tych programów umieszczamy w pamięci. Nie wiemy gdzie. Sprawdzane jest ile jeszcze jest wolnego obszaru i tam gdzie jest wystarczająca dużo miejsca dla tego programu, tam jest on umieszczany.

Adres pamięci wirtualnej każdego programu jest adresowana od zera natomiast inaczej jest w fizycznej. Maszyna wirtualna musi nam zapewnić że programy zostaną zaadresowane od 0 . Zmieniamy fizyczną pamięć na wirtualną gdzie adresy o fizycznej przestają mieć znaczenie

0x08 graphic
P1

P4

P2

P5

0x08 graphic
P3

Następny element maszyny wirtualnej.

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

512 bajtów - Sektor posiada przeważnie taką wielkość

Trzeba pamiętać numer sektora, numer ścieżki i numer głowicy ( na talerzu ). Maszyna musi stworzyć system pliku, do którego będziemy się odwoływać, a nie przez współrzędne.

Numer sektora numer ścieżki numer talerza

23 1571 5

nasępmy element

  1. za pomocą klawiatury

Rodzaje systemów operacyjnych :

  1. systemy dla indywidualnego użytkowania

(wielozadaniowe, jednozadaniowe, Windows)

  1. systemy sterowania procesami (systemy czasu rzeczywistego)

Zastosowanie : w produkcji np. : do monitowana, do kontroli w przemyśle, w medycynie.

  1. Systemy przeglądania ( przechowywania, przetwarzania) plików: ( do przeglądania i modyfikowania dużych baz danych np.: baza danych policji, medyczna)

  2. Systemy przetwarzania transmisji (np.: bankowych, sprzedaż miejsc w samolocie)

  1. Systemy ogólnego przeznaczenia ( przeznaczone są dla szerokiej rzeszy odbiorców, którzy będą używać różnorodnego oprogramowania, sprzętu. Muszą być przygotowane do obsługi wielu urządzeń )

Można podzielić je na :

  1. systemy wsadowe

  2. systemy interaktywne (wielodostępne)

ad. a) zlecamy wykonanie jakiejś pracy, system to realizuje bez naszego udziału, po czym odbieramy

wyniki

ad. b) mamy możliwość współpracy z systemem - jest możliwość ingerencji w wykonywanie zadania, system coś robi, my wprowadzamy dane itd.

  1. Systemy można podzielić na :

  1. jednostanowiskowe( jednośrodowiskowe)

  2. systemy rozproszone ( pewną część systemów komputerowych połączonych jakimiś łączami pracujących na jednym systemie operacyjnym; sprzętów fizycznych będzie kilka na których pracuje jeden system )

Struktury systemu operacyjnego

  1. Struktura jednolita - procedury czy funkcje mogą wywołać każdą inną i mogą być wywołane przez każdą dowolną. Może się pojawić n - błędów. Taka struktura może być pożyteczna przy małych ilościach funkcji i procedur czyli dla bardzo małych systemów operacyjnych.

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

  1. Struktura warstwowa - opiera się na kolejnych warstwach systemu utworzonych jedna nad drugą. Dowolny podprogram jednej warstwy może odwoływać się do dowolnego programu innej warstwy

( wszystkich niższych ) i własnej warstwy. Trzeba określić co będzie robić dana warstwa (jakie funkcje będzie udostępniać innym warstwom). Budując warstwę należy zadbać by wyższym warstwom udostępnić warstwy niższe oraz należy udostępnić wszystkie warstwy wszystkim blokom. Każda z warstw może być realizowana przez osobny zespół, gdy wykryjemy błąd to wymieniamy jedną warstwę.

Odmianą struktury warstwowej jest struktura pierścieniowa : z n - tej warstwy możemy się odwołać o

k - tą warstwę wstecz.

  1. Struktura klient - serwer - system operacyjny dzielimy na szereg modułów ( równorzędnych mniej lub bardziej ). Każdy realizuje różne funkcje. Do realizacji zadania z modułu 1 potrzebne jest wywołanie programu z modułu 3. Odwołanie następuje przez mikro jądro. Nadawca ( moduł 1) wysyła sygnał do odbiorcy (moduł 3) odbiorca wykonuje usługę i tą samą drogą sygnał wraca powrotem do nadawcy

(moduł 1). W tym momencie moduł 1 jest klientem a moduł 3 serwerem. Jeśli w dowolny moduł jest uszkodzony, to zostaje on wymieniony na nowy, sprawny moduł i system znowu pracuje bez problemów.

Może być tak że jeden moduł jednocześnie może być klientem dla innego modułu a dla jeszcze innego może być serwerem. Strukturę tą można dowolnie rozszerzać, lub zmieniać według własnych potrzeb (dodawać lub usuwać moduły)

Odwoływanie się :

I

II

Odwołanie się do ostatniej warstwy a ta rozdziela zadania na pozostałe

III

Może być specjalny moduł przez który można odwołać się do systemu, lub wejście które rozdzieli komunikat na odpowiednie moduły.

Surowa struktura systemu (bez oprogramowania)

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

Mechanizmy pracy i doskonalenie pracy komputera

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Wykonanie zadania w czasie:

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Czytanie programu wykonanie wydruk czas zauważenia wyników

z karty przez Operatora

Działanie takiego systemu było uzależnione od dwóch czynników:

Poprawa pracy sytemu

  1. Można do czytnika włożyć wiele zadań, ale trzeba je rozdzielić czyli wprowadzić dodatkowe karty

rozdzielające. Uzyskujemy w ten sposób język sterowania, dzięki któremu system działa w następujący sposób: Na początku do pamięci należ wprowadzić program, który będzie interpretował język sterowania a następnie wprowadzane są poszczególne zawartości kart będących konkretnymi programami do wykonania przez maszynę. Następuje tu zwiększenie wydajności, za cenę pewnego obszaru pamięci zajmowanego przez program interpretujący język sterowania.

  1. Zwiększenie wydajności przez wprowadzenie taśm magnetycznych ( szybsze jest czytanie taśmy magnetycznej niż z karty perforowanej)

  1. Wprowadzenie komputerów pośrednich, co pozwala na czytanie i równoczesne wykonywanie programu. W tym systemie odbywać się będą prace wsadowe tzn. zadania będą się odbywać przez komputery pomocnicze które pobiorą, skompilują program a następnie prześlą go do wykonania.

Mechanizm stosu

Stos informacji na którym układane są informację jedna nad drugą, a następnie w miarę potrzeb są zdejmowane z tego stos, ale tylko z góry do dołu (od najmłodszej informacji do najstarszej). Mechanizm ten wykorzystywany jest przy wywoływaniu funkcji i procedur.

Działanie mechanizmu stosu

  1. Podprogram przed rozpoczęciem wykonywania zostawia na stosie adres powrotny

  2. Podprogram zaczyna się wykonywać

  3. Gdy podprogram skończy się wykonywać pobiera adres powrotny i wraca do wykonywania programu głównego (wraca do tego samego miejsca programu głównego w którym przerwał działanie odwołując się do podprogramu)

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
A

C

Jeśli wchodzimy do podprogramu to na stosie zapisujemy gdzie mamy wrócić po wykonaniu się programu.

Na stosie można przechowywać chwilowo informację. Na stosie jest adres który określa ostatnie zajęte miejsce.

Stos działa jak ścieżka dostępu, zaczynając działanie podprogram zostawia na stosie adres miejsca do którego ma powrócić. Gdy skończy się wykonywać podprogram

Przerwanie

To pewnego rodzaju wstrzymanie programu głównego w celu wykonania innego programu

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

Czyli podczas wykonania zadania 1 można odczytać zadanie 2 a w trakcie wykonywania zadania 2 można odczytać kolejne zadanie.

Podział przerwań :

  1. przerwania maskowalne

  2. przerwania niemaskowalne

zazwyczaj występuje jedno przerwanie niemaskowalne i wiele przerwań maskowalnych.

Przerwanie maskowalne - Przejęte i wykonywane przez procesor, używane do prawidłowego działania sprzętu. Jeśli nastąpi uszkodzenie sprzętu pojawi się przerwanie niemaskowalne. Może być wykorzystywane do testowania elementów systemu podczas obsługi.

Przerwanie maskowalne - nie musi być wykonywane przez procesor, system przerwań maskowalnych może być wyłączony. W niektórych systemach można zamaskować wszystkie przerwania lub każde z kolei.

Priorytety przerwań

przerwanie o wyższym priorytecie może przerwań wykonywanie zadania o niższym priorytecie

Kontroler przerwań

8 linii wejściowych - kontroler może przyjąć maksymalnie 8 przerwań

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

W komputerach typu PC znajduje się 15 przerwań.

Co się dzieje gdy urządzenie zewnętrzne żąda obsługi przerwania ?

Potwierdza do kontrolera przez magistralę fakt przyjęcia przerwania, procesor wykonuje rozkaz programu obsługi przerwań, jednocześnie pobiera z magistrali danych numer przerwania, zapamiętując adres następnej komórki pamięci z której normalnie pobrał by dane i umieszcza go na stosie, automatycznie umieści rejestr FLAG a następnie wykonuje skok do podprogramu obsługi przerwania, na którego końcu znajduje się rozkaz zakończenia podprogramu, pobierany jest adres ze stosu i następuje powrót do wykonywania programu głównego. Podprogram obsługi przerwania może trwać kilka lub kilkanaście mikrosekund.

Mechanizm kanału

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Bezpośredni dostęp do pamięci.

0x08 graphic

Po sygnale żąda przerwania DMA żąda zwolnienia magistrali. Magistrala dzieli się na pewne cykle, normalnie procesor ma kontrolę nad wszystkimi cyklami. Gdy procesor dostaje żądanie zwolnienia magistrali przechodzi on w stan wysokiej impedancji. Układ DMA przesyła dane a potem zwalnia magistralę.

Procesor pobiera dane i umieszcza je w kolejce po czym wykonuje je po kolei.

Jeśli ma być wykonany skok pod inny adres (lub wywołanie podprogramu )Jeżeli w tym momencie zostanie wydane żądanie bezpośredniego dostępu do pamięci wtedy procesor nie będzie pracował cały czas tylko zostanie wstrzymany na jeden cykl. Po ostatnim cyklu transmisyjnym poprzez kanał jest generowane przerwanie. Z INTC może współpracować DMA jak również urządzenie zewnętrzne.

Jeżeli jest wykonywane jakieś zadanie i np. zgłasza się żądanie odczytu pliku z dysku albo coś zapisać w czasie odczytu bądź zapisu nie wykonuje się zadanie (A). Więc mimo wszystko nie jesteśmy w stanie wykorzystać procesora. Więc umieszcza się drugie zadanie (B) gdy zostaje wstrzymane zadanie (A). Aby wykorzystać w pełni nasz system należy wykonać nie pojedyncze zadanie ale grupy zadań. W ten sposób przechodzimy do monitora wsadowego jednostrumieniowego ( przechodzimy do wykonywania wielu zadań).

System interaktywny jest wielozadaniowy, wielodostępny.

Zadania systemu operacyjnego :

  1. Segregowanie prac

  2. Sterowanie pracami lub interpretowanie języka poleceń

  3. Obsługa urządzeń wejścia wyjścia

  4. Obsługa błędów

  5. Obsługa przerwań

  6. Kontrolowanie prac

  7. Sterowanie zasobami - urządzeniami zewnętrznymi, procesami, pamięcią

  8. Ochrona zasobów ( pamięć, urządzenia peryferyjne, pliki)

  9. Umożliwienie wielodostępności

  10. Umożliwienie dobrego sposobu komunikacji z operatorem

  11. Interfejs graficzny

  12. Ewidencjonowanie zasobów komputera

Właściwości systemu operacyjnego

  1. Współbieżność - wykonywanie wielu czynności jednocześnie (należy zadbać o to by jedno zadanie miało wpływu na inne zadanie)

  2. Wspólne korzystanie z zasobów systemu

  3. Pamięć długookresowa

  4. Niedeterminizm

Pożądane cechy systemu operacyjnego

  1. Wydajność (Procent wykorzystania zasobów) (przepustowość informacyjna)

  2. Niezawodność

  3. Pielęgnowalność

  4. Dobra dokumentacja sytemu :

  1. By system miał mały rozmiar, by nie zawierał dużo pamięci.

Program -to statyczny zestaw instrukcji wykonywany przez jednostkę centralną i realizujący określone

zadanie.

Proces - dynamiczny ciąg działań wykonywany na podstawie programu. Jest czynnością, która powstaje

w wyniku wykonywania programu. W celu wykonania jakiegoś procesu wywołujemy program.

Procesor - urządzenie sprzętowe lub sprzętowo programowe ( połączenie procesora i programu)

Wątek - (proces) proces specjalny, który ma dostęp do kodu i do danych innego procesu

Współbieżność - jest to wykonanie wielu procesów jednocześnie

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Niedeterminizm - kolejność przełączeń między tymi procesami jest inna za każdym razem gdy te procesy

przełączamy.

Komunikacja - działanie procesu w celu wykonania jakiegoś zadania

1.

Wzajemne zapewnianie by jeden proces korzystał z zasobów niepodzielnych .

Zasoby do których procesy mogą rościć jakieś prawa, to zasoby niepodzielne.

Zasoby podzielne to takie które mogą być dołączone w dowolnym czasie,

Pliki do odczytu czyli bloki pamięci zawierające stałe, do zasobów proces może odwołać się w każdej chwili., a w niepodzielnych procesy nie mogą się odwołać w każdym momencie.


Drukarka jest urządzeniem niepodzielnym ponieważ nie możemy jej udostępnić dwóm procesom naraz.

W przypadku udostępnienia zasobów więcej niż jednemu procesowi mogą pojawić się pewne zaburzenia

Proces A Zmienna X=5 Proces B

Proces A odczyta wartość x zwiększy o 1 (czyli 6) i zapisze do pamięci Proces B odczyta x zmniejszy o 1 i zapisze 5

Co się stanie kiedy zanim proces A zapisze wartość 6 proces B pobierze wcześniejszą wartość i zmniejszy ją.

Procesy te działają współbieżnie.

Trzeba zapewnić wzajemne wyłączanie tak aby tylko w danym momencie pracował tylko jeden proces.

  1. Synchronizacja

Jeże li proces A jest wykonywany przez proces 1 to ten sam proces A nie może być wykonywany przez proces 2

  1. Blokada (zakleszczenie) - procesy współzawodniczą o zasoby niepodzielne

A Z1 Z2 B Z1 Z2

Gdy A zażąda dostępu do Z2 to system odmówi dostępu do Z2 przez wstrzymanie A proces B zwolni Z2 i proces A zacznie go ponownie wykorzystywać. Jeśli A zażąda dostępu do Z2(B) a B zażąda dostępu do Z1 (A) to A nie zwolni Z1 bo czeka na zwolnienie Z1(B) a B czeka na zwolnienie Z2 (A) i nastąpi BLOKADA.

Mechanizmy ułatwiające komunikację między procesami.

Semafor - liczba nieujemna na której można wykonywać dwie operacje CZEKAJ i SYGNALIZUJ.

Na liczbie semafora można wykonywać operacje

Operacja CZEKAJ wykonuje operację S:= S - 1 (o ile jest to możliwe)

Operacja SYGNALIZUJ wykonuje operację S:= S + 1

Semafor nie może być ujemny czyli nie może mieć wartości mniejszej niż S>=0

Proces przez semafor komunikuje się z innym procesem.

0x08 graphic

0x08 graphic

Sekcję krytyczną należy obarczyć poleceniem czekaj i sygnalizuj

Dopóki wykonuje się SK procesu A proces B zostaje wstrzymany.

Wzajemne wyłączanie ( otaczając sekcję krytyczną odwołają się do zasobów niepodzielnych operacjami czekaj i sygnalizuj)

Synchronizacja procesu

A czekaj B sygnalizuj

Proces A czeka na wykonanie procesu B, proces A jest zsynchronizowany. Może być tak że oba procesy mogą się zsynchronizowane.

A czekaj B sygnalizuj

A sygnalizuj B czekaj

Działają w tym samym czasie, zsynchronizowały się ale działają asynchronicznie

Proces wytwórcy i konsumenta

Proces wytwórcy wytwarza jakieś informacje, umieszcza je w buforze na n - tym wolnym miejscu,

Proces konsumenta pobiera dane z bufora i przetwarza je dalej

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Synchronizacja wewnętrzna obu procesów.

Proces A przez semafor B sygnalizuje że w buforze są dane, proces B przez semafor W sygnalizuje że jest wolne miejsce w buforze. Proces A będzie czekał aż proces B pobierze dane to zwolni się miejsce i proces A może pracować dalej

Jeżeli gdzieś w takim programie nastąpi błąd nastąpi blokada

Korzystanie z semaforów:

Przykład I

Dowolna liczba pisarzy i czytelników. Gdy pisze to czytelnik nie może czytać

0x08 graphic
0x08 graphic

Mamy dwa rodzaje procesu : pisarza który zapisuje i czytelnika który czyta. Jeśli się pojawi jakiś czytelnik to musi czekać aż zasób zostanie zwolniony. Czytelnicy mogą czytać jednocześnie, ponieważ nie konsumują tej informacji, pozostaje ona w buforze.

Przykład II

To przykład 5 głodnych filozofów.

Filozofowie myślą i jedzą na zmianę. Każdy ma talerz i po obu stronach ma łyżkę. (jest tylko 5 łyżek i każdy z filozofów może jeść tylko dwoma łyżkami.) Każdy z procesów (filozof ) by działał musi wziąć 2 zasoby (łyżki)

Filozof żeby myśleć musi jeść.

Co się stanie gdy wszyscy filozofowie na raz zechcą jeść ?

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

Instrukcja region (region krytyczny )

Monitor - struktura która umożliwia współdzielny obszar

Składa się :z trzech elementów.

  1. danych

  2. procedur dostępu

  3. programu inicjującego

0x08 graphic
0x08 graphic

W jaki sposób można korzystać z semaforów w systemie WINDOWS ?

Istnieją semafory systemowe, jak również procesy użytkownika które mogą tworzyć własne semafory.

Istnieją funkcje które mogą odwoływać się do semaforów.

Funkcje API w systemie WINDOWS

  1. Create Semaphore - proces który tworzy semafor o określonej nazwie. Zwraca uchwyt do semafora który jest tworzony. Każdy z semaforów będzie miał nazwę. Wszystkie odwołania do semaforów będą się odwoływać przez nazwę.

  2. Open Semaphore - ten zwraca uchwyt do semafora

  3. Release Semaphore - funkcja ta realizuję operację sygnalizacji, zwiększa wartość semafora, którego wartość zostanie podana jako parametr ; musimy określić krok o ile będzie zmieniany ( liczba całkowita). Podajemy liczbę o jaką możemy zwiększy nie koniecznie o 1.

  4. Wait For Single Object - czekaj na pojedynczy semafor (obiekt). Podajemy jako parametr uchwyt do semafora, a drugim parametrem jest czas oczekiwania. Jeśli czas zostanie przekroczony to operacja zostanie zakończona.

  1. Cclose Handle - funkcja która usuwa pojedynczy semafor, uchwyt do semafora, który został utworzony. Parametrem jest uchwyt do semafora. Funkcja ta usuwa też inne obiekty.

Komunikaty w systemie klient, serwer

Oprócz semaforów istnieją również komunikaty głównie w systemach klient, serwer.

Żeby przekazywać informacje potrzebna są dwie operacje

Obie te operacje mogą przyjmować różne postacie :

  1. Postać blokująca - gdy obie te operacje będą oczekiwać na wysłanie lub odebranie komunikatu (informacji)

  2. Postać nie blokująca - wysyłany komunikat może być gdzieś przeczytany, jeśli dotrze do miejsca docelowego to ok., jeżeli nie dotrze do celu to nic się nie stanie.

Operacje te mogą być wykonane w sposób pośredni lub bezpośredni

  1. Bezpośrednio - Jeśli podamy identyfikację procesu gdzie będzie wysyłany komunikat, odbiorca musi

wiedzieć z jakiego procesu otrzyma komunikat

nadaj (pid, komunikat)

odbierz (A , komunikat)

  1. Pośredni komunikaty sa przesyłane do pewnych skrzynek

Komunikat - może być wysyłany w różnej formie. Najczęściej kilka słów, które zawierają pewne informacje, czyli komunikat to pewna ilość słów danych. Niektóre są odbierane jako wskaźnik do obszarów pamięci \. Mogą też być buforowane przez system. Operacje nadaj odbierz są operacjami systemowymi bo odwołują się do systemu. System może zapewnić buforowanie lub nie. Jeśli system nie zapewni buforowania to komunikat nie musi być dostarczony. Jeśli będzie buforowanie i zakończy się zapis to system może przystąpić do nadawania go. Można zażądać potwierdzenia dostarczenia komunikatu (czyli proces nadawcy musi być pewien, że komunikat dotarł do odbiorcy. Bufory mogą mieć różne pojemności bądź mogą być nieograniczone.

Elementy systemu operacyjnego

Zawsze będzie występować warstwa lub moduł zwany jądrem. Jest to najbardziej wewnętrzna warstwa która musi być utworzona (zapisana) jako pierwsza. Jądro będzie dawać połączenie między surową maszyną a resztą systemu operacyjnego.

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

Trzeba postawić wymaganie sprzętowi aby móc postawić system.

  1. Mechanizm przerwań - jest konieczny do obsługi urządzeń zewnętrznych pozwala na odbiór danych. Daje

nam możliwość transmisji danych, stosuje się go do przełączenia między procesami. Wydaje się niezbędny.

  1. Ochrona pamięci operacyjnej - powinna być wbudowana wewnątrz procesów. Procesy nie powinny się wzajemnie skłócać. Dlatego trzeba aby ta ochrona pamięci była wbudowana wewnątrz urządzenia adresowego

  2. Występowanie zbiorów rozkazów uprzywilejowanych - ( można je wykorzystać w trybie nadzorcy systemu operacyjnego) Muszą istnieć dwa tryby ale może być ich więcej 4,9,16 ( w procesorach INTEL występują 4 takie tryby)

Każdy z nich ma inny poziom. Wyróżnia się kilka grup[ rozkazów uprzywilejowanych.

  1. włączanie i wyłączanie przerwań - (zależy tu na tym aby przerwania były włączane i wyłączane w trybie systemu operacyjnego)

  2. rozkazy przełączania między procesami

  3. rozkazy obsługi rejestrów pamięci wirtualnej - (pamięć jest chroniona przez pewne rozkazy, rejestry obsługujące pamięć wirtualną ; rozkazy muszą być wykonywane przez procesy systemowe)

  4. operacje wejścia/ wyjścia - rozkazy odnoszące się do urządzeń peryferyjnych (rozkazy odczytu i zapisu) Ochrona zasobów niewspółdzielnych 0to tylko część operacji we / wy. Użytkownicy mają pliki które są dostępne to nie są już chronione.

  5. Rozkazy sterujące - czyli rozkazy które mają wpływ na funkcjonowanie procesora.

Tryb pracy nadzorcy i użytkownika

Przejście z trybu użytkownika na tryb odbiorcy - kiedy?

  1. Odwołanie się do systemu operacyjnego w celu wykonania funkcji systemowej lub rozkazu uprzywilejowanego

Wywołanie API - przy Windows - przełączamy się na tryb nadzorcy. System wykonuje operacje wydane mu przez procesy użytkownika. Proces użytkownika może zwrócić się do systemu aby on wykonał jakiś proces, ale system może odmówić.

  1. Wystąpienie przerwania - jeśli zostanie przyjęte to system wykonuje program obsługi przerwań

  2. Wystąpienie błędu w procesie użytkownika. Mogą być różne błędy:

  1. Próba wykonania rozkazu uprzywilejowanego - jeśli proces użytkownika wykonać taki rozkaz to powstaje wyjątek, przy takim wystąpieniu wyjątku system przechodzi do trybu nadzorcy.

  1. Występowanie zegara czasu rzeczywistego - Można go nie umieszczać ale przy każdym uruchomieniu systemu musimy podawać datę i czas. W oparciu o jego cykliczne przerwanie możemy dokonywać przełączania procesów. W oparciu o wskazanie zegara możemy planować wykonanie procesów oraz rozliczać zasoby.

Gdy są spełnione te wszystkie wymagania to możemy rozpocząć budowę systemu operacyjnego.

Jądro systemu składa się z 3 elementów

  1. programu wstępnej obsługi przerwań

  2. dyspozytora procesów

  3. Implementacji operacji czekaj sygnalizuj

TG - tablica główna zawierająca informacje o naszym systemie

TG - wskaźnik do tablic, list które mogą znajdować się poza jądrem, do struktury procesów.

0x08 graphic
0x08 graphic
0x08 graphic
Nazwa systemu

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Wersja systemu

Data bierzące

Czas bierzący

Data uruchomienia

Czas uruchomienia

Informacje o adresach urządzeń zewnętrzny adres portu równoległego

Adres portu szeregowego

Adres karty sieciowej

0x08 graphic
0x08 graphic
0x08 graphic

II - Inne informacje np. czas uruchamiania procesu (ile był w czasie wykonywany )

ŚV - obszar środowiska ulotne ( dyskryptor sprzętowy) - jest to miejsce do przechowywania wiadomości o rejestrach segmentowych o tym wszystkim co jest potrzebne, aby zatrzymać i wznowić proces.

Podstawowe stany procesu

  1. wykonawczy ( bieżący ) dany proces jest wykonywany przez jakiś inny proces. Tylko jeden może być wykonywany w jednym momencie przez jeden procesor.

Procesów może być wykonywane tyle ile jest procesorów

  1. wykonywalny proces w danym momencie nie jest wykonywany, ale może być w każdej chwili wznowiony

  2. Niewykonywalny ( w oczekiwanie, wstrzymany ) nie może zostać wznowiony, został wstrzymany ;tak długo aż nie zmieni się ich stan procesów niewykonalnych nie możemy ich wznowić

  3. Załadowany - wczytany do pamięci, ale nie pobrany

  4. Zakończony - zakończony ale jeszcze nie usunięty z pamięci.

Dp zawiera również inne pola np. : uruchomienia procesu, wykonywanie procesu. Mogą być informacje o ilości pamięci przydzielonej do procesu. Będzie też zawierać obszar zwany środowiskiem ulotnym ( dyskryptor ulotny). Gdy proces jest przerywany np. a jego stan jest zapisywany w środowisku ulotnym, wykonywana jest instrukcja BC i potem pobiera ten stan ze środowiska i wykonuje dalej proces A; rozpoczęcie tego procesu musi być w takim samym stanie w jaki zostało przerwane.

Jak wykonuje się proces?

Z pamięci są pobierane rozkazy funkcjonujące w rejestrach procesora zmieniają ich wartość. Trzeba zapamiętać stan przerwanego procesu w środowisku, tak aby móc wznowić proces w tym samym miejscu, gdzie został przerwany ( stan wszystkich rejestrów wskaźników musi być taki sam, aby mógł być wznowiony.

Jak działają programy ?

Elementy programowe

  1. Wstępna obsługa przerwań

Zadania :

  1. określić źródło przerwania

  2. ma zainicjować obsługę przerwania dla wybranego urządzenia .

Mogą wystąpić priorytety, czyli niektóre przerwania będą wcześniej obsługiwane niż inne. W trakcie przerwania może nastąpić zmiana stanu procesu

Przykład jak wygląda wstępna obsługa przerwań, w przypadku gdy sprzęt ma możliwość jednego przerwania:

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

W niektórych procesach zostało to inaczej rozwiązane i w pamięci znajduje się tablica przerwań zawierająca wskaźniki do POP. Gdy generujemy przerwanie to urządzenie które to robi wysyła na szynę numer. Procesor odczytuje określone miejsce w tablicy przerwań, odczytuje adres i wywołuje POP o podanym adresie. Wszystko dzieje się sprzętowo. ( całkowicie przez procesor) Może się zdarzyć że kilka urządzeń generuje ten sam numer obsługi przerwania : cześć obsługi przerwań zostaje zrobiona sprzętowo a część programowo łańcuch będzie rekrutki. Ten pośredni schemat występuje u nas w komputerze (w PC jest 15 przerwań) a czasem potrzebujemy 17 i wtedy potrzebna jest wstępna obsługa przerwań dla niektórych z nich.

  1. Dyspozytor (drugi element który występuje w jądrze ) wykonuje przełączenia między procesami.

Przydziela on, określa że po wstrzymaniu procesu A będzie wykonywał się proces B

Kiedy następuje przejście do dyspozytora?

  1. Przerwanie zewnętrzne zmieniające stan jakiegoś stanu procesu np. z wykonywalnego zrobić bieżący, w takim przypadku przechodzimy do dyspozytora

  2. Po wywołaniu systemu który wstrzymuje jakiś procesu wykonanie operacji na semaforze=0 wstrzymanie procesu bieżącego aby inny był bieżący

  3. Błąd krytyczny w bieżącym procesie ( przekazanie sterowanie do innego procesu) przechodzimy do dyspozytora którego zadaniem jest przełączenie na inny proces.

Jak działa dyspozytor ?

Deskryptor sprawdza czy proces jest bieżący, czy może być kontynuowany i czy ma najwyższy priorytet. Jeśli tak to jest kontynuowany. Jeśli nie to należy zapamiętać środowisko ulotne wstrzymanego procesu, aby móc go wznowić. Następnie szukamy najodpowiedniejszego procesu do wznowienia. Po znalezieniu tego procesu odtwarzamy SV wcześniejszego procesu po czym przekazujemy mu sterowanie / działanie. Aby ułatwić dyspozytorowi zadanie , zamiast odwoływać się do struktury systemu będzie odwoływać się do kolejki która zawiera wszystkie procesy, które są w danym momencie bieżące i wykonywalne procesy niewykonywalne nie będą w tej kolejce umieszczane. KP - kolejka procesu.

Deskryptor przy wyborze procesów będzie się posługiwał procesami z kolejki. Kolejka ta może być kolejką uporządkowaną wg. priorytetów ( na początku o najwyższym priorytecie, na końcu o najniższym). Deskryptor podglądając kolejkę będzie pobierał pierwszy proces który jest wykonywalny ( nie bieżący bo już jest wykonywany przez proces) i uczyni go wykonywalnym. Proces pierwszy o najwyższym priorytecie który nie jest wstrzymywany to deskryptor. Znowu może odwołać się do pierwszego o najwyższym priorytecie, jednak występuje tu pewne niebezpieczeństwo. Można temu zaradzić, mianowicie po sprawdzeniu kolejki - pierwszy w kolejce jest pobierany i przesuwany na koniec - jest to kolejka cykliczna mamy zabezpieczenie że proces nie utknie w kolejce. Po przez deskryptor możemy dokonywać starzenia priorytetów procesów jeśli znajdują się one zbyt długo w kolejce i nie jest wykorzystywany czy wznawiany. Inne rozwiązanie to kolejka wielopoziomowa ze sprzężeniem zwrotnym. Każda kolejka będzie miała inny priorytet. Wykonujemy jeden wstrzymania, i na koniec kolejki Priorytety mogą być przypisane do poszczególnych kolejek. Z priorytetów będzie wynikał czas przydzielony do danego procesu :

Najwyższy - krótki czas ale często - procesy krótkie

Najniższy - długi czas ale rzadko - procesy długie

Modyfikacje tej kolejki czyli zastosowanie podwyższenia priorytetów poszczególnych poziomów.

Jeśli proces wykonuje w całości cały swój odcinek czasu to można powiedzieć że jest to proces który będzie wykonywany długo.

Gdy wykorzysta dane mu dwa odcinki czasu to można przydzielić mu jeszcze pewne odcinki czasu. Tak samo odwrotnie. Gdy proces nie wykorzysta całego czasu to ich priorytet roście dostaje krótkie odcinki czasu ale często (na każde żądanie)

Implementacja dwóch operacji czekaj i sygnalizuj

Powody występowania tych sygnałów:

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

Dodatkowo

Możemy utworzyć w pamięci listę której długość będzie określona przez semafor. Możemy nie ograniczać od góry naszego semafora. Stworzymy dynamiczną listę.

Uproszczona struktura

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

KS - kolejka semafora - wskaźnik do listy, w której będziemy mieli identyfikator procesu IP. Jeśli wartość =0 proces zostaje wstrzymany tzn umieszczany w kolejce.

Jeśli proces wykonuje operację czekaj na semaforze =0 to zostanie dodany do kolejki. Jeśli proces wykonuje operację sygnalizuj to któryś z procesów znajdujących się w kolejce zostanie usunięty z kolejki. Ich stan z niewykonalnego staje się wykonalny.

Operacje niepodzielne

To takie które rozpoznajemy, nie możemy ich przerwać i musimy je skończyć. Nie można w ich trakcie wybrać innych operacji, żaden inny proces nie może się wykonać. Czekaj i sygnalizuj są więc operacjami sekcji krytycznej. Trzeba więc w jakiś sposób chronić dostęp do nich. Do tego celu wykorzystuje się rozkazy procesora:

  1. wymień zawartość dwóch komórek - mamy dwie komórki pamięci i wymieniamy ich zawartość

  2. sprawdź i ustaw - odczytuje zawartość danej komórki i jednocześnie zapisuje nową wartość

Implementacja operacji czekaj

Czekaj (S)

0x08 graphic
0x08 graphic
Zajmij

If S>0then S:=S-1

Else begin

ZDBP // znajdź deskryptor bieżącego procesu

UzKP // usuń z kolejki procesora (z bieżącej zmienia się na niewykonalną )

DdKS // dodaj do kolejki semafora operację czekaj

End

0x08 graphic
Uwolnij // zwalniamy dostęp do semafora

Dyspozytor // wywołujemy dyspozytor aby mógł ustalić proces który będzie wznowiony

Implementacja operacji sygnalizuj

Sygnalizuj (S)

0x08 graphic
0x08 graphic
Zajmij

If KS;P then S:=-S+1 //czy kolejka semafora jest pusta: tak, zwiększyć zawartość semafora.

Else begin

VzKP // usuń z kolejki semafora wybrany

DdKP // dodaj do kolejki procesora

End

0x08 graphic
0x08 graphic
Uwolnij

dyspozytor

Zajmij i uwolnij działają podobnie do czekaj i sygnalizuj ( jednak nie mogą być takie same) obie maja zapewnić niepodzielność określonej sekcji krytycznej.

Jeśli posiadamy system jednoprocesorowy to operacje zajmij i uwolnij mogą odpowiadać wyłączeniu i włączeniu przerwań ( zajmij , zamknij, uwolnij - otwórz) To te operacje są niepodzielne.

Jeśli mamy system wieloprocesorowy (może się wykonać wiele procesów jednocześnie) to operacje zamknij i uwolnij mogą się zażądać Dlatego mamy:

I - rozkaz - zmień zawartość dwóch komórek

Mamy dwa procesy A i B oraz semafor S:

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

Instrukcja ta jest instrukcją niepodzielną

Jeśli mamy zwykłą sekcję krytyczną to nie posługujemy się aktywnym czekaniem ( wykonuje to między dwoma procesami). W czekaj i sygnalizuj są bardzo krótkie czasy, ale np.: w czasie drukowania ten czas jest b długi i t nie ma sensu. Znacznie prościej jest umieścić taki proces w kolejce semafora i umożliwić innym procesom pracę.

Przykład z rozkazem sprawdź i ustaw

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Implementacja inaczej (zmniejszamy wartość semafora zanim sprawdzimy)

0x08 graphic
0x08 graphic

To podejście trochę upraszcza operację czekaj sygnalizuj i powoduje że wartość semafora może przyjmować wartości ujemne

Wartości bezwzględne S ( jeśli S<0) mówi nam ile procesów jest w kolejce semafora.

Zarządzanie pamięcią operacyjną

Cel zarządzania pamięcią operacyjną :

  1. Przemieszczania procesów - bloki pamięci zawierają kod dane, zależy nam abyśmy mogli te bloki przesuwać, przemieszczać. Kod ma być umieszczony w komórce o zadanym adresie

System CP/M system 64 KB pamięci jednoprocesorowy, w którym można było mieścić jeden proces( jego kod początkowy 100H)

W pliku programu znajduje się tablica informująca procesor o tym które komórki mają być zwiększone. Generowany adres określa dokładne położenie procesu, ale nie możemy go przesuwać, możemy umieścić w dowolnym miejscu. Wszystkie adresy są adresami względnymi a więc wszystko jedno gdzie umieścimy kod programu, i tak będzie działał poprawnie.

Nie mamy wystarczająco dużo obszarów pamięci ale możemy je zsumować i wtedy możemy przenieść jakiś duży proces. Gdy chcemy umieścić blok ale jest zbyt duży przesuwamy inny i robimy tym samym miejsce.

  1. Ochrona zawartości pamięci - mamy wiele programów, musimy chronić wiele obszary przydzielone do tych programów. Nie można dopuścić by jeden proces mógł ingerować do innego procesu.

  2. Dostęp do obszarów dzielonych - obszary dzielone - do tych obszarów ma dostęp kilka procesów (wybranych) trzeba określić mechanizm który będzie mówił, które procesy mają do czego dostęp. Zapis może i ma mieć tylko jeden w danym momencie.

  3. Organizacja logiczna pamięci - Pamięć ma strukturę liniową. Mamy adresy i one się zmieniają liniowo, Jeśli budujemy jakiś program tworzymy:

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Każdy z tych elementów może być kodowany niezależnie. Chcemy by ten logiczny obszar programu był umieszczony w pamięci ale nie koniecznie jako jeden cały obszar ale jako mniejsze obszary. Chcielibyśmy używać pewnych segmentów czyli by każdy element był realizowany (stworzony) osobno przez różne osoby. Chcielibyśmy aby ten logiczny schemat odzwierciedlał nam program.

  1. Organizacja fizyczna pamięci - czyli podział na pamięć główną ( operacyjną) i pomocniczą (dyski twarde, dyskietki), pamięć pomocnicza rozszerzona pamięć główną. Procesy mogą się wykonywać tylko w pamięci głównej co jednak nie oznacza że nie mogą być odesłane do pamięci pomocniczej

Zarządzanie pamięcią operacyjną (główną) będziemy realizować przez pamięć wirtualną zapewniającą odwzorowanie przestrzeni adresów na przestrzeni pamięci tzn. każdy proces działający w systemie będzie generował adresy i to jest przestrzeń adresowa tego procesu. Przestrzeń pamięci to cała pamięć operacyjna.

Pamięć wirtualna to zmiana przestrzeni adresów generowanych przez proces na przestrzeń w pamięci w której jakieś dane się znajdują.

Adresy mogą być generowane przez proces. Przestrzeń adresów którą miał każdy proces zamiana przestrzeni adresów na przestrzeń pamięci. (adresy generowane przez proces są inne niż przestrzenie adresów to już pamięć wirtualna)

Programy programowane od zera

Jeżeli mamy 16 MB Pamięci fizycznej a potrzebujemy 64 więc tworzymy pamięć wirtualną

sektor

ścieżka

talerz

Użytkownik odwołuje się z zewnątrz lub wewnątrz

Procesor

Pamięć

Urządzenie I/O

Co na początku powinniśmy wykonać ?

Wprowadzenie programu do pamięci, ustawienie rejestrów rozkazów, aby były wykorzystane na początku, uruchomienie.

SK

Dzięki przełącznikom wprowadzano dane do pamięci

Adres i wartości wpisywano ręcznie

Następne wykonanie np.: czytanie informacji z zewnątrz.

Czytnik kart magnetycznych

System komputerowy

drukowanie

Czytnik kart magnetycznych

Przepisywanie z kart perforowanych na taśmy magnetyczne

Pamięć

Procesor

I/O

NTC - Kontroler przerwań (przyjmuje żądania poszczególnych urządzeń i kieruje je do procesora

Z kontrolera przerwań sygnał przerwań

Program obsługi przrewań

Gdy następuje przerwanie musi zostać zapamiętany stan rejestru przy głównym programie

Czas potrzebny na wykonanie rozkazu

przerwanie

Wykonanie obsługi przerwania

Wykonanie programu głównego

CK

SK

DW

Stosując przerwania, można w tle jednego zadania wykonywać inne, wykorzystując w pełni czas naszego systemu

INTC

INTC

Kontroler nadrzędny

Kontroler podrzędny

Połączenie kaskadowe kontrolerów

P

dma

intc

By procesor wykonywał swoje zadania należy połączyć urządzenie peryferyjne z INTC. Do tego celu służy kanał. Dane przepływają między urządzeniem a pamięcią bez udziału procesora. Jest wbudowany w układ kontrolera DMA sterującego bezpośrednim dostępem do pamięci.

A B A C D B

Proces wykonuje się potem zostaje przerwany i znowu się wykonuje. Stan procesu w momencie wznowienia musi być identyczny ze stanem w momencie przerwania.

A

czekaj (S)

sekcja krytyczna

sygnalizuj (S)

B

czekaj (S)

sekcja krytyczna

sygnalizuj (S)

A - wyznacza dane ( proces wytwórcy)

Whille trwa do begin

Czekaj (W)

Czekaj (B) (b wartość początkowa k=1)

SK Zapisz

Sygnalizuj (B) (sygnalizuje że inne procesy mogą mieć dostęp)

Sygnalizuj (D) (sygnalizuje że w buforze znajduje się jakaś dana )

End.

B - Proces konsumenta

Whille trwa do begin

Czekaj (D) (będzie działać gdy jakieś dane będą się znajdować w buforze

Czekaj (B) (czeka na dostęp do bufora)

SK Pobierz pobierz dane

Sygnalizuj (B) (zwolni dostęp do bufora)

Sygnalizuj (W) (zasygnalizuje na semaforze W że zwolnił jeden z

elementów bufora i że jest wolne miejsce )

licz

end.

P

Czekaj (B)

Zaois

Sygnalizuj (B)

Po zapisie zwalniany jest dostęp do bufora

C

Czekaj (M)

Licznik:=licznik+1

If licznik = 1 then czekaj (B)

Sygnalizuj (B) (zwalniany jest

semafor M)

czekaj (M)

licznik:=licznik-1

if licznik=0 then sygnalizuj (B)

sygnalizuj (M)

F

Repeat

Czekaj (S[i]) (bierze pałeczkę)

Czekaj (S[i+1]mod 5) (2 pałęczki)

Jedzenie

Sygnalizuj (S[i])

Sygnalizuj(S[i+1] mod 5)

Until false

Jeżeli wszyscy w tej samej chwili będą chcieli jeść (wszystkie procesy chcą skorzystać jednocześnie ze swoich zasobów ) to doprowadzimy do BLOKADY.

Co robić ?

Możemy ograniczyć filozofom dostęp do jedzenia wprowadzając czekaj (j) i sygnalizuj (j)

F

Repeat

Czekaj (j)

Czekaj (S[i])

Czekaj(S[i+1])

Jedzenie

Sygnalizuj(S[i])

Sygnalizuj(S[i-1])

Sygnalizuj (j)

Nawet jeśli wartość semafora ustawi się na 4 nie uzyskujemy zjawiska BLOKADY ponieważ procesy pobierają dopuszczalną ilość zasobów i odkładają je.

Wystarczy ustawić semafor na niewłaściwą wartość i nie będziemy mogli korzystać z konstrukcji

type m = monitor

deklaracja zmiennych

procedura p1

procedura p2

.........

procedura pN

begin

inicjalizacje

end.

Dostęp do zmiennych jest ograniczony można się do nich odwołać przez procedury Deklaracja monitora przypomina deklarację obiektu. Trzeba zapewnić aby procedury miały wyłączny dostęp do zmiennych

Struktura warstwowa

Sp

ID - identyfikator procesu który nie może się powtórzyć

S - stan procesu, może ulec zmianie

I I

S V

1?

2?

N?

POP 2

POP 1

POP N

T

T

T

N

N

Występuje błąd

Program obsługi przerwania

Taki łańcuch może być wykonywany jako wstępna obsługa przerwań ( wykonywane przez program wstępnej obsługi przerwań)

Łańcuch sprawdzeń ( najpierw sprawdzamy te urządzenia które często generują przerwanie)

S

KS

BU

S - semafor ( nieujemna liczba całkowita, na której

wykonujemy operacje czekaj i sygnalizuj)

KS - (kolejka semafora) lista, pole jest wskaźnikiem,

wskaźnik do list

BU - (bit uzycia) czy dany semafor jest w danym

momencie używany czy jakaś operacja w danym

momencie wykorzystuje sygnały „czekaj” i

„sygnalizuj”

S

KS

BU

OK

IP

PP

IP

Organizacja kolejki

Priorytet procesu

Stan procesu zmienia się z niewykonalnego na wykonalny i umieszczony w kolejce procesora. Skąd można go wywołać

A

S

Bu

0

1

B

1

0

0

0

Operacja zajmij będzie polegała na tym że będziemy zamieniać bity użucia 1 na wartość procesora. Jeśli uzyskamy 1 to wykonuje jakieś operacje na końcu których jest operacja zwolnij czyli oddajemy 1, zwalniamy semafor zwalniamy dostęp do niego, jeśli uzyskamy 0 to wracamy do nieego

0

1

1

Wykonujemy operację

Należy wrócić aby wykonać operację zamień

Operacja zajmij jeśli =0 to wracamy tzw aktywne oczekiwanie (procesor czeka na dostęp do semafora

A

S

Bu

B

0

0

1

1

0

1

Jest czytane przez proces A

I proces B odczytuje (tylko z opóźnieniem)

Aktywne czekanie

Operacja uwolnij

ustaw

1

ustaw

wraca

Czekaj (S)

Zajmij

S:=S-1

If S<0 begin

ZDBP

VzKP

DdKS

End

Uwolnij

dyspozytor

Sygnalizuj (S)

zajmij

S:+S+1

If S<=0 then begin

VZKS

DdKP

End

Uwolnij

dyspozytor

PG

DG

A

IV

PP

PG - program główny

DG - dane pobrane korzystamy z bibliotek

A - algorytmy

IV - interfejs użytkownika

PP - podprogramy pomocnicze



Wyszukiwarka

Podobne podstrony:
wykłady systemy operacyjne ciąg?lszy
Systemy Operacyjne Wykład 2, UŁ WMiI, Wykłady SYS OP, W 2
Systemy operacyjne - wykłady, Administracja, Administracja, Administracja i samorząd, Polityka spole
1a, UŁ Sieci komputerowe i przetwarzanie danych, Semestr II, Systemy operacyjne, Wykład, Systemy, Sy
sowyk, pwr, informatyka i zarządzanie, Informatyka, Systemy operacyjne- laborki i wykład
Systemy Operacyjne Windows 10 2010 wykład 2
caban,systemy operacyjne II, opracowanie wykładu
Podstawy Informatyki Wykład IV System operacyjny
TAM GDZIE PLUS TO ODPOWIEDŹ POPRAWNA, UŁ Sieci komputerowe i przetwarzanie danych, Semestr II, Syste
systemy operacyjn wyklady
systemy operacyjne wykłady xfafhlipgfpwdqhwx4pauokspldpoykwxr5637q XFAFHLIPGFPWDQHWX4PAUOKSPLDPOYK
Systemy Operacyjne Wykład 2
Sciaga Systemy wyklad kolo 27 01 2008, szkola, systemy operacyjne i mikroprocesory
Systemy operacyjne

więcej podobnych podstron