Przykładowe zadanie z unikania blokad.

Podobne dokumenty
Przekształcanie wykresów.

24 proste kroki. aby pokonac. Obrazki. logiczne. Rozwiazania. i wskazowki dla nauczyciela. Copyright Logi Urszula Marciniak 2015

WIELOKĄTY FOREMNE I ICH PRZEKĄTNE

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Informatyka II. Laboratorium Aplikacja okienkowa

CIĄGI wiadomości podstawowe

Pomorski Czarodziej 2016 Zadania. Kategoria B

POTRZEBY A B C D E P P P P P

Teraz przechodzimy do zakładki Zarządzanie kolorami.

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Rejestracja Baltie. Tu wpisz swój numer UID. Tu wpisz swoje hasło

Uwagi ogólne. 3. Użycie gwiazdki zamiast kropki na oznaczenie mnożenia: 4. Lepiej niż 6, F wyglądałby zapis: 69,539 pf.

Grafika komputerowa ZS Sieniawa Andrzej Pokrywka. Ścieżki cz. 2. Rysunki z kreskówek. Autor: Joshua Koudys

Instrukcja rejestracji na zajęcia WF

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty).

8. Dynamiczne generowanie grafiki, cz. 2

Przepis. Wstęp HTML & CSS. W tym projekcie nauczycie się, jak stworzyć stronę internetową ze swoim ulubionym przepisem. Zadania do wykonania

Przykładowe rozwiązania

Kopiowanie, przenoszenie plików i folderów

Podział sieci na podsieci wytłumaczenie

lider projektu: finansowanie:

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Prezentacje w SCRATCHu HANNA KOSTRZEWA

Baza danych. Program: Access 2007

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Krystalochemia białek 2016/2017

Problem zakleszczenia

Baltie 2010 etap szkolny, zadania dla kategorie A, B

Tutorial. HTML Rozdział: Ramki

Konrad Słodowicz sk30792 AR22 Zadanie domowe satelita

Obiekt 2: Świątynia Zeusa

Władza i Wpływ cz.3. Mapa władzy i wpływu Jak określić skuteczność tych relacji, od których zależy nasz sukces i powodzenie zawodowe.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Logo Komeniusz. Gimnazjum w Tęgoborzy. Mgr Zofia Czech

Lekcja : Tablice + pętle

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

4. po Wielkanocy CANTATE

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

4. Rysowanie krzywych

Newsy Gim 2. Wydanie specjalne. Zuzia Margol z II a nie lubi upubliczniać swoich prac, ale dla nas zrobiła

Przekierowanie portów w routerze - podstawy

KRYTERIA OCENIANIA KOMPETENCJI KOMPUTEROWYCH UCZNIA. Klasa I

Podczas tej lekcji przyjrzymy się, jak wykonać poniższy rysunek przy pomocy programu BobCAD-CAM

Jak założyć stronę na blogu?

Piotr Eichler SP2LQP

PODSTAWOWE KONSTRUKCJE GEOMETRYCZNE

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Formatowanie komórek

Systemy operacyjne. wykład 11- Zakleszczenia. dr Marcin Ziółkowski. Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Mapologia nauka efektywnego notowania część 1

Edytor materiału nauczania

1 Spedytor Wstępny instruktaż

Przetwarzanie grafiki rastrowej na wektorową

Jak używać poziomów wsparcia i oporu w handlu

Żeby dodać artykuł, trzeba się na portalu zarejestrować i w menu użytkownika na stronie portalu kliknąć: Nowy artykuł. W swoim menu zobaczą ten link

PORADNIK DLA KANDYDATA

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Co to jest niewiadoma? Co to są liczby ujemne?

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Szaleństwo Mandali. Prawa autorskie: Helen Shrimpton, Wszystkie prawa zastrzeżone. Autorka: Helen

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

W tej instrukcji zostanie opisany sposób w jaki tworzy się, edytuje i usuwa obiekty na mapie. Następnie wybierz Rysuj

Ćwiczenie 1 Automatyczna animacja ruchu

Kurs Adobe Photoshop Elements 11

Najprostsze z zadań z prawdopodobieństwa robi się korzystając z dystrybuanty. Zacznijmy od tego - tu mamy rozkład (wyniki pomiarów):

Materiały pomocnicze z programu AutoCAD 2014.

Skalowanie i ustawianie arkuszy/układów wydruku w AutoCAD autor: M. Motylewicz, 2012

1. A 2. A 3. B 4. B 5. C 6. B 7. B 8. D 9. A 10. D 11. C 12. D 13. B 14. D 15. C 16. C 17. C 18. B 19. D 20. C 21. C 22. D 23. D 24. A 25.

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

*** FRAGMENT ARKUSZA ***

24 proste kroki. aby pokonac. Obrazki. logiczne. ro05155

Przekazywanie teczek studentów do Archiwum.

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

Rysowanie skosów, okien dachowych, otworów w skośnych sufitach

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

i na matematycznej wyspie materiały dla ucznia, pakiet 19, s. 1 KARTA:... Z KLASY:...

Celem tego projektu jest stworzenie

Konspekt szkółki niedzielnej propozycja Niedziela przedpostna Estomihi

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Definiowanie procedur z parametrami w Logo Komeniuszu.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Poradnik obsługi sklepu internetowego opartego o wtyczkę WooCommerce

17. Naprzemienne odejmowanie

SZKOŁA PODSTAWOWA NR 1 W LUBARTOWIE. Równania

8. Neuron z ciągłą funkcją aktywacji.

Język maszyn zeszyt ćwiczeń

PRZEWODNIK DO NARYSOWANIA HARMONOGRAMU WZORCOWEGO

Informacje o członkach WSRM na

Podstawowe komendy. Ćwiczenie 1

Dane w poniższej tabeli przedstawiają sprzedaż w dolarach i sztukach oraz marżę wyrażoną w dolarach dla:

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

BAJKA O PRÓCHNOLUDKACH I RADOSNYCH ZĘBACH

Samouczek przygotowujący do Kuratoryjnego Konkursu Matematycznego (na podstawie zadań z roku 2009) Szkoły podstawowe Odpowiedzi

Zapraszamy na mini-kurs Od marzenia do sukcesu

:: Montaż blokady ARB w WJ ::

Wykład 1: Wskaźniki i zmienne dynamiczne

Deklaracja struktury w C++

Transkrypt:

Przykładowe zadanie z unikania blokad. Mamy system operacyjny, a w nim cztery procesy (,,,) i dwa zasoby (,), przy czym dysponujemy trzema egzemplarzami zasobu i trzema egzemplarzami zasobu. Oto zapotrzebowanie na zasoby zgłaszane przez poszczególne procesy, mówiąc inaczej, tabela przedstawia ilość egzemplarzy każdego zasobu, które są potrzebne odpowiednim procesom: Proces Potrzebuje egzemplarzy Potrzebuje egzemplarzy 1 2 1 1 1 2-2 Polecenie: Pokazać stan blokady oraz pokazać ciąg bezpieczny (ciąg stanów umożliwiających uniknięcie blokady) CZĘŚĆ PIERWSZA pokazywanie stanu blokady Sytuacja początkowa: Gdzie,,, są procesami,, są zasobami, z kolei punkty wewnątrz prostokątów reprezentujących i to egzemplarze tych zasobów (mamy po 3 dla każdego zasobu) Oto jak przedstawia się zapotrzebowanie na poszczególne egzemplarze zasobów i : Obrazek pokazuje nam zapotrzebowanie na egzemplarze, czyli, np. jeśli proces czeka na 1 egzemplarz i 2 egzemplarze, to na obrazku mamy to przedstawione jako strzałki wychodzące z tego procesu do zasobów. I to jest ważne: zapotrzebowanie na zasób przedstawiane jest jako strzałka wychodząca z procesu i sięgająca boku prostokąta reprezentującego zasób. 1

Teraz możemy zrobić jakiś przykładowy przydział zasobów i od razu zróbmy taki, by reprezentował on stan blokady. Stan blokady, czyli taki stan, gdy istnieje cykl procesów czekających na przydział zasobów. Zasada jest taka, że przydzielenie egzemplarza zasobu oznaczane jako strzałka wychodząca z danego egzemplarza do odpowiedniego procesu. Przydział stanowiący stan blokady ( dla ułatwienia rozróżniłem kolorem dwa różne stany: oczekiwanie na egzemplarz [kolor czerwony] i przydział egzemplarza [kolor czarny]): Na obrazku nie zrobiłem nic innego jak tylko przydzieliłem tak zasoby procesom, by każdy proces musiał jeszcze na coś czekać(nie ma procesu, który dostał wszystko, czego chciał). Mamy tu taką sytuację, że każdy proces czeka na któryś z zasobów, ale nie może go otrzymać, bo ten jest przetrzymywany przez inny proces. Mimo, że sytuacja ta jest w systemie niepożądana, to musieliśmy ją sztucznie stworzyć, by pokazać stan blokady. Nie jest to jednak odpowiedź na pytanie o przedstawianie stanu blokady, a tylko jej część. Odpowiedzią pełną, jest przedstawienie cyklu, który zawiera procesy czekające i zasoby, na które te procesy czekają. Chodzi, więc o to by spojrzeć dokładnie na obrazek i wyznaczyć jakąś zamkniętą drogę, która kończy się w tym samym procesie, w którym się zaczyna. Pomocne są tu właśnie strzałki, gdyż to one właśnie wyznaczają taką drogą (nie można iść pod prąd, czyli w stronę przeciwną niż pokazuje strzałka!). Przykładowy cykl znaleziony na powyższym obrazku przedstawia się następująco: Jak widać, wypisałem cykl, a teraz małe wytłumaczenie. Gdybym chciał przeczytać, co tak naprawdę zostało napisane, brzmiałoby to tak (odwołując się też do obrazka): proces czeka na zasób (na obrazku: strzałka od procesu do zasobu), ten jest przydzielony procesowi (strzałka od egzemplarza zasobu do procesu ). Proces czeka na jeszcze jeden egzemplarz zasobu (pokazuje to też strzałka na obrazku), a ten jest przydzielony procesowi (jw. strzałka od egzemplarza zasobu do procesu). Tu kółko się zamyka i mamy piękny dowód na to, że stan blokady wystąpił i procesy będą czekać w nieskończoność. Tylko dla opornych: strzałki w naszym cyklu są jak strzałki na obrazku. Gdy strzałka idzie od procesu do zasobu, oznacza to, że proces czeka na egzemplarz, gdy z kolei strzałka idzie od zasobu do procesu to znaczy, że egzemplarz zasobu został temu procesowi przydzielony. Tak wiec, gdy widzimy sytuację to tak naprawdę nic innego jak tylko zapis tego, co pokazuje nam obrazek, czyli czeka na, który jest przydzielony do. Cykl więc nasz można zapisać tak: czeka na, który jest przydzielony, który czeka na przydzielony do (okropnie brzmi, ale mam nadzieje, że jest to w miarę jasne). 2

Można znaleźć inny cykl, który pokazuje stan blokady, a jest nim np.: Aby wszystko było jasne, przeczytam, to co zostało napisane: Proces czeka na egzemplarz, ten jest przydzielony procesowi. czeka na kolejny egzemplarz, a ten z kolei jest przydzielony procesowi. czeka na jeszcze jeden egzemplarz, który jest przetrzymywany przez proces i tak w kółko. Uwaga!!! Stanem blokady może być także i taki przydział, gdy któryś z procesów nie przetrzymuje żadnego zasobu, ale je tylko zamawia. Wtedy mówimy, że ten proces nie bierze udziału w blokadzie, ponieważ nie przetrzymuje zasobu a warunkiem blokady jest, aby proces przetrzymywał przynajmniej jeden zasób. Przykład: Zmodyfikujmy nasze zadanie w taki sposób: zamiast 3 egzemplarzy zasobu mamy 2 egzemplarze. Nasz stan blokady wyglądał by wtedy następująco: W tym przypadku proces nie przetrzymuje żadnego zasobu a tylko czeka na zwolnienie przetrzymywanych. Procesami biorącymi udział w blokadzie są wtedy tylko,,. Natomiast zasoby biorące udział w blokadzie pozostają te same, czyli, (gdyby jednak się zdarzyło tak, że mamy jeszcze jeden dodatkowy zasób Z3 o powiedzmy 2 egzemplarzach a nie byłby on wtedy ani przetrzymywany przez jakiś proces ani potrzebny innym procesom to wtedy mówimy, że taki zasób nie bierze udziału w blokadzie). Odpowiedź na polecenie pokazać stan blokady brzmi: Stanem blokady jest taki przydział zasobów ( i tu rysujemy obrazek...) Blokadą objęte są procesy,, i, a przetrzymywany jest zasób,. Czyli procesy biorące udział w blokadzie to,,,, a zasobami biorącymi udział w blokadzie są i. Odpowiadający tej sytuacji cykl wygląda następująco: 3

CZĘŚĆ DRUGA pokazanie ciągu bezpiecznego A teraz część druga zadania, w której mamy pokazać ciąg bezpieczny (ciąg stanów umożliwiających uniknięcie blokad). Ta część zadania opiera się w zasadzie na rysowaniu kolejnych etapów przydziału zasobów. Przydział ten nie może być jednak przypadkowy, a taki, że nie wystąpi blokada. Kolejne etapy przydziału wyglądają następująco: Etap 0 (tak naprawdę pokazuje tylko zapotrzebowanie na zasoby i jego rysowanie nie jest konieczne): Etap 1 (tutaj zaczynam już przydzielać zasoby odpowiednim procesom): Jak widać przydzieliłem zasoby podobnie jak w pierwszej części zadania, tyle, że tym razem proces czeka na 2 egzemplarze ( a nie 1 jak wcześniej), a proces otrzymał wszystkie egzemplarze, które potrzebował (wtedy ich nie miał). Dzięki temu, mamy taką sytuację, że proces może się wykonać i oddać zasoby, które przetrzymywał, a my możemy je przydzielać i to właśnie zrobimy w etapie 2: Etap 2: Jak widać mamy już dwa wolne egzemplarze zasobu (po zwolnieniu ich przez proces ), możemy je przydzielać i to też robimy (mamy tu 3 możliwości: przydział zasobów procesowi, procesowi, lub, wybór jest dowolny): 4

Ja obdarowałem dwoma egzemplarzami proces i dzięki temu wykona nam się kolejny proces (niekoniecznie wykona, ale zwolni nam zasoby) i będziemy mogli użyć nasze zasoby do dalszego przydziału. Etap 3: Na początku usuwam strzałki dla procesu, gdyż on już skorzystał z przydzielonych mu egzemplarzy: I teraz mogę rozdzielić 2 wolne egzemplarze dla innych potrzebujących, co właśnie robię: Jak widać przydział został dokonany całkowicie (każdy proces mógł skorzystać z zasobów), a naszym rozwiązaniem są obrazki narysowane powyżej i obrazujące ciąg bezpieczny stanów. Teraz jeszcze zostało nam wypisanie kolejności wykonywania się procesów. Patrzymy więc na rysunki i wypisujemy: najpierw wykonał się proces, potem, a następnie i (współbieżnie). Ogólnie można napisać tak:,, i. Koniec części drugiej :] A teraz kilka ważnych uwag: Pamiętajcie by dobrze rysować strzałki! Zapotrzebowanie procesu na zasób = strzałka od procesu do boku prostokąta reprezentującego zasób Przydział egzemplarza procesowi = strzałka od egzemplarza do procesu 5

Wersja obrazkowa dla wielbicieli komiksów: Zapotrzebowanie: Proces Zasób Przydział: Proces Zasób Odpowiedzią na pierwszą część zadania jest: Narysowanie obrazka pokazującego stan blokady, wypisanie procesów tkwiących w blokadzie, wypisanie zasobów tkwiących w blokadzie, wypisanie cyklu pokazującego stan blokady. Odpowiedzią na drugą część zadania jest: Wypisanie kolejnych etapów (zwanych ciągiem stanów bezpiecznych) obrazujących przydział zasobów dla poszczególnych procesów, wypisanie kolejności wykonywania poszczególnych procesów. Powodzenia i mam nadzieje, że choć trochę się to, co napisałem przyda... 6