dr inż. Grażyna KRUPIŃSKA D-10 pokój 227 WYKŁAD 12 WSTĘP DO INFORMATYKI

Podobne dokumenty
Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Podstawy Informatyki Systemy operacyjne

Działanie systemu operacyjnego

System operacyjny wstęp

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Działanie systemu operacyjnego

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Procesy, wątki i zasoby

Systemy operacyjne. Literatura do zagadnień wykładowych (1) Literatura do zagadnień wykładowych (2) Program przedmiotu. Forma zaliczenia przedmiotu

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

4. Procesy pojęcia podstawowe

Systemy operacyjne. Program przedmiotu. Forma zaliczenia przedmiotu. Dariusz Wawrzyniak 1

Systemy operacyjne. Program przedmiotu

Proces y i y w i ąt ą ki

Procesy, zasoby i wątki

4. Procesy pojęcia podstawowe

Procesy, zasoby i wątki

Mechanizmy pracy równoległej. Jarosław Kuchta

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Procesy, zasoby i wątki

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Systemy operacyjne. Paweł Pełczyński

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Budowa systemów komputerowych

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Programowanie współbieżne Wykład 2. Iwona Kochańska

Systemy operacyjne III

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Zarządzanie procesami i wątkami

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Podsumowanie. Klasyfikacja ze względu na sposób przetwarzania. Klas. ze względu na liczbę wykonywanych zadań

Podsumowanie. Systemy operacyjne Podsumowanie 1. Klasyfikacja ze względu na sposób przetwarzania

Podsumowanie. Klasyfikacja ze względu na. liczbę użytkowników. Klasyfikacja ze względu na. Inne rodzaje systemów operacyjnych. sposób przetwarzania

4. Procesy pojęcia podstawowe

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Planowanie przydziału procesora

projektowanie systemu

Informatyka. informatyka i nauki komputerowe (computer science)

Planowanie przydziału procesora

Materiały pomocnicze 1

Zarządzanie procesorem

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Prezentacja systemu RTLinux

Wprowadzenie do systemów operacyjnych

LEKCJA TEMAT: Zasada działania komputera.

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Urządzenia wejścia-wyjścia

Systemy operacyjne III

Systemy operacyjne. wykład 1- System operacyjny i jego zadania. dr Marcin Ziółkowski

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

Mikroprocesor Operacje wejścia / wyjścia

System komputerowy. System komputerowy

Informatyka, systemy, sieci komputerowe

Systemy operacyjne III

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Paweł Skrobanek. C-3, pok

Czujniki obiektowe Sterowniki przemysłowe

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Synchronizacja procesów i wątków

Planowanie przydziału procesora

Monitory. Wady semafora

Celem wykładu jest wprowadzenie fundamentalnych pojęć, integralnie związanych z systemem operacyjnym, na których opiera się przetwarzanie we

Systemy operacyjne. Zajęcia 11. Monitory

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

41. System operacyjny. Postrzeganie systemu operacyjnego przez warstwę oprogramowania użytkowego

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

1.1 Definicja procesu

dr inż. Jarosław Forenc

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

System operacyjny MACH

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Struktura systemów komputerowych

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Architektura komputerów

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Transkrypt:

dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 12 WSTĘP DO INFORMATYKI

Systemy operacyjne 2 System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na efektywne współdzielenie urządzeń maszyny cyfrowej Per Brinch Hansen

Systemy operacyjne 3 System operacyjny (nadzorczy, nadrzędny, sterujący) jest to zorganizowany zespół programów, które pośredniczą między sprzętem a użytkownikami, dostarczając użytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów oraz w tym samym czasie sterują przydziałem zasobów dla zapewnienia efektywnego działania. Alen Shaw

Systemy operacyjne 4 System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. Abraham Silberschatz

Systemy operacyjne 5 System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania. Andrew Tanenbaum

Systemy operacyjne 6..zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na efektywne współdzielenie urządzeń maszyny cyfrowej jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania. jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. to zorganizowany zespół programów, które pośredniczą między sprzętem a użytkownikami, dostarczając użytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów oraz w tym samym czasie sterują przydziałem zasobów dla zapewnienia efektywnego działania.

Systemy operacyjne 7 Użytkownik 1 Użytkownik 2 Użytkownik 3 Użytkownik n Kompilator Odtwarzacz muzyki Edytor tekstu Baza danych Sprzęt komputerowy

Systemy operacyjne 8 Użytkownik 1 Użytkownik 2 Użytkownik 3 Użytkownik n Kompilator Odtwarzacz muzyki Edytor tekstu Baza danych Programy systemowe i użytkowe(powłoka, GUI) SYSTEM OPERACYJNY Sprzęt komputerowy

tryb jądra tryb użytkownika Systemy operacyjne 9 Użytkownik 1 Użytkownik 2 Użytkownik 3 Użytkownik n Kompilator Odtwarzacz muzyki Edytor tekstu Baza danych Programy systemowe i użytkowe(powłoka, GUI) SYSTEM OPERACYJNY Sprzęt komputerowy

Systemy operacyjne 10 Tryby działania komputera tryb jądra (nadzorcy) - uprzywilejowany tryb wykonywania kodu, w którym procesor zezwala na dostęp do całej pamięci systemu oraz do wszystkich instrukcji procesora; W trybie jądra działa kod systemu operacyjnego. tryb użytkownika nieuprzywilejowany tryb procesora, w którym dostępna jest ograniczona liczba interfejsów oraz ograniczony dostęp do zasobów systemowych. W trybie użytkownika działają aplikacje użytkownika. Dwa tryby pracy procesora wprowadzono w celu ochrony krytycznych dla systemu operacyjnego danych. Mechanizm uniemożliwiający błędnej aplikacji użytkownika naruszenie stabilności całego systemu

Zarządzanie zasobami Zadania systemu operacyjnego 11 Definicja interfejsu użytkownika Udostępnianie systemu plików Udostępnianie środowiska do wykonywania programów użytkownika mechanizm ładowania i uruchamiania programów mechanizmy synchronizacji i komunikacji procesów Sterowanie urządzeniami wejścia-wyjścia Obsługa podstawowej klasy błędów

Zarządzanie zasobami 12 Przydział zasobów Planowanie dostępu do zasobów Ochrona i autoryzacja dostępu do zasobów Odzyskiwanie zasobów Rozliczanie - gromadzenie danych o wykorzystaniu zasobów

Zarządzanie zasobami 13 Procesor przydział czasu procesora Pamięć alokacja przestrzeni adresowej dla procesów transformacja adresów Urządzenia zewnętrzne udostępnianie i sterowanie urządzeniami pamięci masowej alokacja przestrzeni dyskowej udostępnianie i sterownie drukarkami, skanerami itp. Informacja (system plików) organizacja i udostępnianie informacji ochrona i autoryzacja dostępu do informacji

14 Systemy operacyjne Systemy przetwarzania bezpośredniego systemy interakcyjne występuje bezpośrednia interakcja pomiędzy użytkownikiem a systemem operacyjnym, wykonywanie zadania użytkownika rozpoczyna się zaraz po przedłożeniu. Systemy przetwarzania pośredniego systemy wsadowe występuje zwłoka między przedłożeniem a rozpoczęciem wykonywania zadania, niemożliwa jest ingerencja użytkownika w wykonywanie zadania

Spooling 15 Spooling procesor pobiera kolejne zadania z dysku, wykonuje je i zapisuje wyniki na dysku wyniki zakończonych zadań są drukowane zadanie systemu operacyjnego - synchronizacja wczytywania zadań, wypisywania wyników oraz zarządzanie informacjami magazynowanymi na dysku.

Systemy operacyjne 16 Systemy jednozadaniowe niedopuszczalne jest rozpoczęcie wykonywania następnego zadania użytkownika przed zakończeniem poprzedniego. Systemy wielozadaniowe dopuszczalne jest istnienie jednocześnie wielu zadań (procesów), którym zgodnie z pewną strategią przydzielany jest procesor. Zwolnienie procesora następuje w wyniku żądania przydziału dodatkowego zasobu, zainicjowaniu operacji wejścia-wyjścia, przekroczenia ustalonego limitu czasu (kwantu czasu)

Systemy operacyjne 17 Zadania systemu operacyjnego zarządzanie pamięcią i pilnowanie, aby jeden proces nie ingerował w obszar pamięci przydzielonej innym procesom, przydzielanie urządzeń zewnętrznych procesom, jeśli procesor jest bezczynny, to należy wybrać jeden z procesów, które znajdują się w pamięci i są gotowe do wykonania; jest to tzw. szeregowanie krótkoterminowe, jeśli zwalnia się pamięć operacyjna i można wczytać z dysku kolejne zadanie oczekujące na wykonanie, to należy wybrać jedno z oczekujących zadań; jest to tzw. szeregowanie długoterminowe.

Systemy operacyjne 18 Systemy dla jednego użytkownika zasoby przeznaczone są dla jednego użytkownika, nie ma mechanizmów autoryzacji dostępu, a mechanizmy ochrony informacji są ograniczone. Systemy wielodostępne wielu użytkowników może korzystać z zasobów systemu komputerowego, a system operacyjny gwarantuje ich ochronę przed niepowołaną ingerencją. system plików indywidualizacja zasobów dyskowych

Systemy operacyjne 19 Systemy czasu rzeczywistego zorientowane na przetwarzanie z uwzględnieniem czasu zakończenie zadania, tzw. linii krytycznej. Systemy sieciowe i rozproszone umożliwiają zarządzanie zbiorem rozproszonych jednostek przetwarzających, które są zintegrowane siecią komputerową i nie współdzielą fizycznie zasobów. niezawodność współdzielenie zasobów zwiększenie mocy obliczeniowej nowe usługi

Systemy operacyjne 20 W typowym systemie operacyjnym wyróżniamy następujące podsystemy: podsystem zarządzania procesami podsystem zarządzania pamięcią podsystem systemu plików podsystem wejścia/wyjścia podsystem pamięci pomocniczej podsystem usług sieciowych podsystem ochrony interpreter poleceń i programy użytkowe

Funkcje systemowe 21 Programy użytkowników mają dostęp do usług systemu operacyjnego poprzez tzw. funkcje systemowe. operacje na procesach - tworzenie nowych procesów, przerwanie, zawieszanie, wznawianie działania procesu, pobranie informacji o procesie, oczekiwanie na określone zdarzenie, przydzielanie i zwalnianie pamięci. operacje na plikach - utworzenie pliku, usunięcie pliku, otwarcie pliku, odczyt z pliku, zapis do pliku, pobranie lub zmiana atrybutów pliku. operacje na urządzeniach - zamówienie i zwolnienie urządzenia, odczyt z i zapis do urządzenia, pobranie lub zmiana atrybutów urządzenia, (logiczne) przyłączenie lub odłączenie urządzenia. informacje systemowe - pobieranie i/lub ustawianie najrozmaitszych informacji systemowych, w tym: czasu i daty, wersji systemu operacyjnego, atrybutów użytkowników. komunikacja - przekazywanie informacji między procesami.

Jądro systemu (kernel) Struktura systemu Unix 22 Sygnały Obsługa terminali System znakowego I/O Moduły sterujące terminali Sterowniki terminali Terminale Użytkownicy Powłoki i polecenia Kompilatory i interpretery Biblioteki systemowe Interfejs funkcji systemowych jądra System plików Wymiana System blokowego I/O Moduły sterujące dysków i taśm Interfejs między jądrem a sprzętem Sterowniki urządzeń Dyski i taśmy Planowanie przydziału procesora Zastępowanie stron Stronicowanie na żądanie Pamięć Planowanie wirtualna przydziału procesora Zastępowanie stron Stronicowanie na żądanie Pamięć wirtualna Sterowniki pamięci Pamięć operacyjna

Koncepcja procesu 23 Proces (nazywany też czasem zadaniem) to wykonujący się program. Każdy proces ma własny licznik instrukcji, który wskazuje następną instrukcję do wykonania, oraz własny obszar przydzielonej mu pamięci operacyjnej. Proces jest elementarną jednostką pracy (aktywności) zarządzaną przez system operacyjny, która ubiega się o zasoby systemu komputerowego w celu wykonania programu. Procesem jest cały kontekst niezbędny do wykonania programu. program definiuje zachowanie procesu, dane zbiór wartości przetwarzanych oraz wyniki, zbiór zasobów tworzących środowisko wykonawcze, blok kontrolny procesu (PCB, deskryptor) opis bieżącego stanu procesu.

Koncepcja zasobu 24 Zasobem jest element sprzętowy lub programowy systemu komputerowego, którego brak może potencjalnie zablokować wykonywanie programu System operacyjny definiuje element systemu komputerowego jako zasób. Zasoby tworzone przez jądro systemu operacyjnego nazywamy wirtualnymi, np. plik. (pliki udostępnia system operacyjny; na poziomie maszynowym mamy sektory dysku, w których składowana są dane)

Procesy i zasoby 25 Ze względów pojęciowych lub projektowych fragmenty kodu jądra związane z obsługą procesów i zasobów wyodrębnia się w postaci zarządców. Zarządca procesów (ang. process manager) kontroluje stany procesów w celu efektywnego i bezpiecznego wykorzystania współdzielonych zasobów systemu. Zarządca zasobów (ang. resource manager) realizuje przydział zasobów stosownie do żądań procesów, aktualnego stanu systemu oraz ogólnosystemowej polityki przydziału.

Deskryptor procesu PCB 26 Informacje związane z każdym procesem : Identyfikator procesu Stan procesu Licznik rozkazów Rejestry procesora Informacje o planowaniu przydziału procesora Informacje o zarządzaniu pamięcią Informacje do rozliczeń Informacje o stanie wejścia-wyjścia

Stany procesu 27 nowy - właśnie utworzono. aktywny- jest właśnie wykonywany przez procesor. czekający - czeka na zajście jakiegoś zdarzenia gotowy - czeka na przydzielenie mu procesora. zakończony - zakończył działanie.

28 Diagram przejść stanu procesów nowy przyjęcie przerwanie - wywłaszczenie zakończony wyjście gotowy aktywny decyzja planisty obsłużenie zdarzenia lub operacji I/O czekający oczekiwanie na zdarzenie lub na wykonanie operacji I/O

Planowanie procesów 29 Planowanie procesów polega na wskazywaniu procesu, któremu ma być w danej chwili przydzielony procesor (gotowy aktywny) W systemie w każdej chwili może być aktywnych co tyle procesów, ile jest procesorów. Procesy nieaktywne czekają na przydział procesora w kolejkach. Kolejka zadań - wszystkie procesy w systemie Kolejka gotowych - gotowe do wykonania Kolejka do urządzenia - dla każdego urządzenia wejściawyjścia odrębna taka kolejka

Planowanie 30 Kolejka procesów gotowych CPU I/O Kolejka operacji I/O Proces potomny Wystąpienie przerwania Zamówienie operacji I/O Zużycie kwantu czasu Powołanie procesu potomnego Czekanie na przerwanie

31 Planista Selekcji procesu, który ma przejść do stanu aktywny, dokonuje odpowiedni proces systemowy planista. Planista długoterminowy (albo planista zadań) decyduje o tym, który z procesów ma być załadowany do pamięci i gotowy do wykonania. Kontroluje on poziom wieloprogramowości, czyli liczbę współbieżnie wykonywanych procesów. Planista krótkoterminowy (albo planista procesora) decyduje o tym, który z procesów gotowych ma być wykonywany przez procesor.

Planista 32 Planowanie opiera się na trzech elementach : 1. Tryb decyzji - zbiór wytycznych odnośnie momentu dokonywania analizy priorytetów procesów. 2. Funkcja priorytetu wyznacza aktualny priorytet procesu na podstawie parametrów procesu i stanu systemu. 3. Reguła arbitrażu reguła rozstrzygania konfliktu w przypadku procesów o tym samym priorytecie.

Planista 33 Decyzje planisty są podejmowane jedynie : przejście procesu aktywnego do stanu oczekiwania, zakończenie procesu, to planowanie nazywamy niewywłaszczeniowym Jeżeli decyzje planisty podejmowane są także: przejście procesu ze stanu oczekiwania do stanu gotowości, przejście procesu aktywnego do stanu gotowości. to planowanie nazywamy wywłaszczeniowym

Wywłaszczenie 34 Pojawienie się procesu o wyższym priorytecie może być następstwem: utworzenie i przyjęcia nowego procesu, zajścia zdarzenia, oczekiwanego przez proces (np. zakończenie operacji wejścia wyjścia, otrzymania sygnału synchronizacji) obudzenie procesu, upłynięcie kwantu czasu wzrostu priorytetu procesu gotowego, co może mieć miejsce wówczas, gdy priorytety procesów zmieniają się i przeliczane są częściej, niż to wynika z upływu kwantu czasu, czy opuszczenie procesora przez proces.

Komunikacja między procesami 35 1. W jaki sposób proces może przesłać komunikat do innego procesu? 2. Zapobieganie sytuacji, gdy procesy wchodzą sobie w drogę 3. Kolejkowanie procesów proces A generuje dane dla procesu B

36 Wyścig Procesy często dzielą obszary wspólnej pamięci, pliki lub inne zasoby. Warunkami wyścigu nazywamy sytuację, w której dwa lub więcej procesów wykonuje operacje na zasobach dzielonych, a ostateczny wynik tej operacji jest zależny od momentu jej realizacji. Przykład spooler drukarki 1. Drukowanie zapis pliku do katalogu spoolera 2. Demon drukarki sprawdza okresowo czy jest coś do wydrukowania 3. Drukowanie i usunięcie z katalogu 4. Rozmiar katalogu spoolera ograniczony

Wyścig 37 katalog spoolera zmienne współdzielone out = 4 in = 7 4 5 6 7 abc pragram1 pragram3 8

Wyścig 38 katalog spoolera zmienne współdzielone out = 4 in = 7 4 5 6 7 abc pragram1 pragram3 8

Wyścig 39 katalog spoolera zmienne współdzielone out = 4 in = 7 4 5 6 abc pragram1 pragram3 czytanie zm in next_free_slot = in //7 przerwanie zegarowe //przełaczenie na proces B................ 7 8

Wyścig 40 katalog spoolera zmienne współdzielone out = 4 in = 7 4 5 6 abc pragram1 pragram3 czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B................ czytanie zm in next_free_slot = in //7 7 8

Wyścig 41 katalog spoolera zmienne współdzielone out = 4 in = 7 4 5 6 7 8 abc pragram1 pragram3 czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B................ czytanie zm in next_free_slot = 7 wstawienie procesu B do katalogu spoolera

Wyścig 42 katalog spoolera zmienne współdzielone out = 4 in = 8 4 5 6 7 8 abc pragram1 pragram3 B czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B................ czytanie zm in next_free_slot = 7 wstawienie procesu B do katalogu spoolera in = next_free_slot +1....

Wyścig 43 katalog spoolera zmienne współdzielone out = 4 in = 8 4 5 6 7 8 abc pragram1 pragram3 B czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B................ czytanie zm in next_free_slot = 7 wstawienie procesu B do katalogu spoolera in = next_free_slot +1....

Wyścig 44 katalog spoolera zmienne współdzielone out = 4 in = 8 4 5 6 7 8 abc pragram1 pragram3 A czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B in = next_free_slot +1............ czytanie zm in next_free_slot = 7 wstawienie procesu B do katalogu spoolera in = next_free_slot +1....

Wyścig 45 katalog spoolera zmienne współdzielone out = 4 in = 8 4 5 6 7 8 abc pragram1 pragram3 A czytanie zm in next_free_slot = 7 przerwanie zegarowe //przełaczenie na proces B in = next_free_slot +1............ czytanie zm in next_free_slot = 7 wstawienie procesu B do katalogu spoolera in = next_free_slot +1....

Komunikacja między procesami 46 Unikanie wyścigu oraz dostęp do współdzielonych zasobów. Unikanie sytuacji.gdy więcej niż jeden proces zapisywał/odczytywał zasób w tym samym czasie. Wzajemne wykluczanie

Komunikacja między procesami 47 Problem producenta-konsumenta Mamy dane dwa procesy: producenta i konsumenta. Oba procesy działają w nieskończonej pętli. Producent wytwarza jednostki jakiegoś produktu, a konsument konsumuje je. Jednostki wyprodukowane, ale jeszcze nie skonsumowane są umieszczane w buforze. Bufor może pomieścić maksymalnie n jednostek produktu. Jeżeli bufor jest pusty, to konsument musi zaczekać, aż producent wyprodukuje kolejną jednostkę produktu. Jeżeli bufor jest pełny, to producent musi zaczekać, aż konsument pobierze jednostkę produktu z bufora. Przykład : buforowanie znaków naciskanych na klawiaturze wysyłanie wydruków na drukarkę

Producent-konsument 48 PRODUCENT KONSUMENT repeat wyprodukuj jednostkę produktu; wstaw wyprodukowaną jednostkę do bufora until false repeat pobierz z bufora jednostkę produktu; skonsumuj pobraną jednostkę until false BUFOR var bufor: array [0..n-1] of produkt; pierwszy: 0..n-1; licznik: 0..n;

Producent-konsument 49 repeat wyprodukuj jednostkę produktu; while licznik < n do bufor [(pierwszy+licznik) mod n] := wyprodukowana jednostka; licznik := licznik + 1 until false repeat while licznik > 0 do pobrana jednostka := bufor [pierwszy]; pierwszy := (pierwszy + 1) mod n; licznik := licznik - 1; skonsumuj pobraną jednostkę until false rejestr1 := licznik; rejestr1 := rejestr1 + 1; licznik := rejestr1; rejestr1 := licznik; rejestr2 := licznik; rejestr2 := licznik; rejestr2 := rejestr2-1; licznik := rejestr2; rejestr2 := rejestr2-1; licznik := rejestr2; rejestr1 := rejestr1 + 1; licznik := rejestr1 ;

Producent-konsument 50 repeat wyprodukuj jednostkę produktu; while licznik < n do bufor [(pierwszy+licznik) mod n] := wyprodukowana jednostka; licznik := licznik + 1 until false repeat while licznik > 0 do pobrana jednostka := bufor [pierwszy]; pierwszy := (pierwszy + 1) mod n; licznik := licznik - 1; skonsumuj pobraną jednostkę until false rejestr1 := licznik; rejestr1 := rejestr1 + 1; licznik := rejestr1; rejestr2 := licznik; rejestr2 := rejestr2-1; licznik := rejestr2; rejestr1 := licznik; (5) rejestr2 := licznik; (5) rejestr2 := rejestr2-1; (4) licznik := rejestr2; (4) rejestr1 := rejestr1 + 1; (6) licznik := rejestr1 ; (6)

Sekcja krytyczna 51 Rozwiązaniem problemu jest "zatomizowanie" operacji pobierania i wkładania jednostek produktu z i do bufora. Należy zapewnić, aby w trakcie gdy jeden proces zmienia zawartość bufora drugi nie mógł robić tego równocześnie. Operacje wkładania i wyjmowania z bufora powinny tworzyć tzw. sekcję krytyczną.

Sekcja krytyczna 52 Sekcja krytyczna, to fragment(y) kodu lub operacje, które nie mogą być wykonywane współbieżnie. Sekcja krytyczna jest otoczona dodatkowym kodem synchronizującym przebywanie procesów wejściowych -- przed wejściem do sekcji krytycznej każdy proces musi przejść przez sekcję wejściową, a wychodząc przechodzi przez sekcję wyjściową. Wzajemne wykluczanie: tylko jeden proces na raz może przebywać w sekcji krytycznej.

Sekcja krytyczna 53 Sekcja krytyczna jest otoczona dodatkowym kodem synchronizującym przebywanie procesów wejściowych -- przed wejściem do sekcji krytycznej każdy proces musi przejść przez sekcję wejściową, a wychodząc przechodzi przez sekcję wyjściową. Wzajemne wykluczanie: tylko jeden proces na raz może przebywać w sekcji krytycznej.

Sekcja krytyczna 54 Rozwiązanie problemu sekcji krytycznej polega na podaniu implementacji sekcji wejściowej i wyjściowej. algorytmy z aktywnym oczekiwaniem algorytm Dekkera algorytm piekarniany mechanizmy synchronizacji Semafory Kolejki komunikatów Monitory Sprzętowe mechanizmy synchronizacji

Sekcja krytyczna 55 repeat wyprodukuj jednostkę produktu; while licznik = n do sekcja wejsciowa bufor [(pierwszy+licznik) mod n] := wyprodukowana jednostka; licznik := licznik + 1 sekcja wyjsciowa until false repeat while licznik = 0 do sekcja wejsciowa pobrana jednostka := bufor [pierwszy]; pierwszy := (pierwszy + 1) mod n; licznik := licznik - 1; sekcja wyjsciowa skonsumuj pobraną jednostkę until false

Algorytm Dekkera 56 var k: array [1..2] of 0..1; tablica procesów czyja_kolej: 1..2; zmienna rozstrzygająca p - numer procesu lokalnie k [p] := 0; while k [3 - p] = 0 do begin if czyja_kolej p then begin (* Ustąp drugiemu procesowi.*) k [p] := 1; while czyja_kolej p do; k [p] := 0 end end jest ograniczone do dwóch procesów, proces oczekujący oczekuje aktywnie, tzn. czekając na jakieś zdarzenie sprawdza ciągle warunek określający, czy dane zdarzenie już zaszło. k [p] := 1; czyja_kolej := 3 - p;

Algorytm piekarniany 57 var wybieranie: array [1..n] of boolean; numerek: array [0..n-1] of integer; p - numer procesu lokalnie wybieranie [p] := true; numerek [p] := max (numerek [1], numerek [2],..., numerek [n]) + 1; wybieranie [p] := false; for j := 1 to n do begin while wybieranie [j] do; while numerek [j] 0 and (numerek [j], j) < (numerek [p], p) do; end jest ograniczone do n procesów, proces oczekujący oczekuje aktywnie numerek [p] := 0;

58 Sekcja krytyczna Czekanie aktywne 1. Marnowany jest czas procesora - można by przeznaczyć na wykonanie innego procesu. 2. Uzasadnione gdy czas oczekiwania stosunkowo krótki (najlepiej krótszy od czasu przełączenia kontekstu) Liczba procesów Liczba procesorów 3. Alternatywą do czekania aktywnego jest przejście procesu w stan zablokowany Semafory Monitory

Semafory 59 Semafor jest obiektem abstrakcyjnym służącym do kontrolowania dostępu do ograniczonego zasobu. Semafory są szczególnie przydatne w środowisku gdzie wiele procesów lub wątków komunikuje się przez wspólną pamięć. Semafor S jest obiektem abstrakcyjnym, z którym związany jest licznik L zasobu przyjmujący wartości nieujemne. Na semaforze zdefiniowane są atomowe operacje sem_init, sem_wait, sem_post

Semafory 60 Definicja operacji wykonywanych na semaforze sem_init(s,n) Inicjacja Zajmowanie sem_wait(s) Sygnalizacja sem_post(s) Ustawienie licznika semafora S na początkową wartość N. Gdy licznik L semafora S jest dodatni (L > 0) zmniejsz go o 1 (L = L 1). Gdy licznik L semafora S jest równy zero (L==0) zablokuj proces bieżący. Gdy istnieje jakiś proces oczekujący na semaforze S to odblokuj jeden z czekających procesów. Gdy brak procesów oczekujących na semaforze S zwiększ jego licznik o 1 (L=L+1). Semafor binarny -wartość licznika przyjmuje tylko dwie wartości: 0 i 1.

Semafory 61 Implementacja wzajemnego wykluczania semaphore S; // Deklaracja semafora sem_init(s,1); // Inicjacja semafora Proces1 { do { Sekcja_lokalna; sem_wait(s); Sekcja_krytyczna; sem_post(s); } while(1); } Proces2 { do { Sekcja_lokalna; sem_wait(s); Sekcja_krytyczna; sem_post(s); } while(1); }

Semafory 62 L = 1 Proces 1 Proces 2 L = 0 sem_wait(s) użycie zasobu sem_wait(s) blokada L = 0 sem_post(s) odblokowanie użycie zasobu L = 1 sem_post(s)

Semafory 63 Mutex - mutually exclusive (wzajemnie wykluczający się). Mutex jest rodzajem semafora, którego stan jest ustawiony jako sygnalizowany kiedy żaden proces nie sprawuje nad nim kontroli oraz niesygnalizowany, kiedy jakiś proces sprawuje nad nim kontrolę. Synchronizację za pomocą mutexów realizuje się tak, że każdy proces czeka na objęcie mutexa w posiadanie, zaś po zakończeniu operacji wymagającej wyłączności, proces uwalnia mutexa.

Semafory 64 Problem producent-konsument z wykorzystaniem semaforów const int n; Semaphore empty(n),full(0),mutex(1); Item buffer[n]; Semafor mutex zapewnia wzajemne wykluczanie przy dostępie do zmiennych współdzielonych. Semafor full zlicza liczbę elementów w buforze (pełnych miejsc w tablicy). Wstrzymuje konsumenta, gdy w buforze nie ma żadnego elementu. Semafor empty zlicza liczby pustych miejsc w tablicy. Wstrzymuje producenta gdy w buforze nie ma wolnego miejsca.

Semafory 65 const int n; Semaphore empty(n),full(0),mutex(1); Item buffer[n]; int in = 0; Item pitem; while (1) { // produkujemy } empty.wait(); mutex.wait(); buffer[in] = pitem; in = (in+1) % n; mutex.signal(); full.signal(); int out = 0; Item citem; while (1) { full.wait(); mutex.wait(); citem = buffer[out]; out = (out+1) % n; mutex.signal(); empty.signal(); // konsumujemy }

Monitory 66 Monitory - strukturalny mechanizm synchronizacji wbudowanego w języki programowania wysokiego poziomu. Monitor to rodzaj klasy, której metody stanowią sekcję krytyczną. Atrybuty monitora są dostępne jedynie wewnątrz (metod) monitora. Konstrukcja monitora zapewnia, że tylko jeden proces na raz może znajdować się w monitorze. Pozostałe procesy oczekują w kolejce (FIFO). Jeśli jakiś proces chce wejść do monitora, który jest właśnie zajęty, to jest on wstawiany na koniec kolejki procesów oczekujących na wejście do monitora. Jeśli proces opuszcza monitor, a inne procesy czekają w kolejce na wejście do monitora, to pierwszy proces z kolejki wchodzi do monitora. W przypadku monitorów odpowiednie instrukcje synchronizujące są realizowane przez język programowania.