Watki. kod programu za ladowany do pami eci operacyjnej, wraz ze środowiskiem (zbiorem
|
|
- Maciej Stasiak
- 7 lat temu
- Przeglądów:
Transkrypt
1 Watki Procesy stanowia podstawowa jednostke, z której tradycyjnie sk lada sie wiekszość systemów operacyjnych. Procesy posiadaja dwie podstawowe cechy: kod programu za ladowany do pamieci operacyjnej, wraz ze środowiskiem (zbiorem zmiennych posiadajacych wartości) i zasobami (np. zbiorem otwartych plików, i innymi przydzielonymi zasobami, np. portami komunikacyjnymi, itd.) przechowywanym przez jadro systemu, ślad wykonania (execution trace), tzn. ciag wykonywanych instrukcji, wraz z niezbednymi przy ich wykonywaniu konstrukcjami, np. licznikiem programu (PC), zbiorem rejestrów z zawartościa, stosem wywo lywanych procedur wraz z ich argumentami, itp. W starszych systemach operacyjnych te dwie cechy procesu by ly integralnie ze soba zwiazane. Nowsze systemy pozostawiaja pierwsza ceche procesom, ale druga im odbieraja na rzecz watków (threads). Watki podstawowe pojecia 1
2 Procesy wielowatkowe Watki z natury rzeczy sa jednostkami podrzednymi procesów, tzn. jeden proces może sk ladać sie z jednego lub wiecej watków. Watki podstawowe pojecia 2
3 Wspólne dane watków Ponieważ watki danego procesu wspó ldziela miedzy soba jego kod, zatem wszystkie zmienne globalne sa ich wspólna w lasnościa. Każdy z watków może w dowolnym momencie odczytać lub nadpisać wartość zmiennej globalnej. Jest to zarazem zaleta i wada. Zaleta polega na tym, że jest to najszybsza możliwa metoda komunikacji miedzy watkami, ponieważ wartości generowane przez watek źród lowy sa od razu dostepne w watku docelowym. Jednak taki wspólny dostep do danych wymaga synchronizacji, ponieważ watek docelowy nie wie kiedy dok ladnie dane zosta ly już wygenerowane i kiedy może je odczytać (wyobraźmy sobie, że dane te maja znaczna objetość, np. gdy jest to tablica lub struktura). Nie wiedzac tego, może odczytać stare dane, albo np. dane cześciowo zmodyfikowane, które moga w ogóle nie mieć sensu. Podobnie synchronizacji wymaga sytuacja, gdy dwa watki (lub wiecej) chca modyfikować dane. Bez synchronizacji takie operacje mog lyby doprowadzić do trwa lego zapisania danych niespójnych. Synchronizacji nie wymagaja operacje odczytu wspólnych danych. Watki podstawowe pojecia 3
4 Prywatne dane watków Wywo lywane przez watki funkcje posiadaja zmienne lokalne, które nie sa już wspó ldzielone z innymi watkami. Przydatne okazuja sie również jednak specjalne mechanizmy pozwalajace na tworzenie danych globalnych, które by lyby prywatne dla danego watku. Watki podstawowe pojecia 4
5 Programowanie z użyciem watków Watki pozwalaja tworzyć programy dzia lajace wspó lbieżnie. Wspó lbieżność przydaje sie wielokrotnie w programowaniu, na przyk lad: w różnego rodzaju serwerach obs lugujacych równocześnie wiele żadań, w programach okienkowych, gdzie aktualizacja stanu okienek, np. oczekujaca na odczyt danych z urzadzenia, może być realizowana asynchronicznie do petli oczekujacej na reakcje użytkownika; tego rodzaju oczekiwanie na kilka różnych rzeczy naraz stwarza trudność w programowaniu, tworzenie wspó lbieżnych aplikacji ma sens również w zwiazku z coraz wieksz a liczba procesorów (lub rdzeni) dostepnych we wspó lczesnych komputerach; program napisany wspó lbieżnie może być wtedy wykonywany szybciej niż program napisany jednowatkowo. Watki podstawowe pojecia 5
6 Wspó lbieżność z użyciem watków i procesów Programowanie z watkami jest podobne do programowania procesów, z nastepuj acymi różnicami: Wszystkie watki danego procesu wykonuja ten sam program, podczas gdy procesy sa kompletnie oddzielnymi obiektami, każdy z w lasna przestrzenia adresowa, mogacymi wykonywać dowolne programy. Watki maja automatycznie dostepn a szybka komunikacje przez zmienne globalne, która jednak wymaga synchronizacji. Tworzenie watków jest tanie, a wiec znacznie szybsze niż tworzenie procesów, co ma znaczenie np. w serwerach obs lugujacych bardzo wiele zg loszeń na sekunde. Czas potrzebny na pe lne utworzenie nowego procesu (fork()) na wspó lczesnych procesorach z zegarem GHz wynosi w granicach od 0.1 nawet do 2 ms. Czas potrzebny na utworzenie nowego watku jest o oko lo rzad wielkości mniejszy: 15 do 50 µs (pthread_create()). Jednak należy pamietać, że utworzone już watki nie maja żadnej przewagi, i wykonuja sie tak samo szybko jak utworzone procesy. Pomijajac interakcje miedzy soba, wspó lbieżnie wykonujace sie watki zachowuja sie ca lkiem podobnie do wspó lbieżnie wykonujacych sie procesów. Watki podstawowe pojecia 6
7 Watki użytkownika Ze wzgledu na sposób realizacji watków w systemie operacyjnym można wyróżnić dwa rodzaje watków: watki użytkownika i watki jadra. Watki użytkownika (user level threads, ULT) sa tworzone i w ca lości obs lugiwane w przestrzeni użytkownika, zaimplementowane samodzielnie, lub za pomoca odpowiedniej biblioteki. Wtedy: jadro systemu nie ma świadomości istnienia watków, ani nie zapewnia im wsparcia, możliwe jest ich zastosowanie nawet w systemach nieobs lugujacych watków, tworzenie i prze laczanie watków jest szybkie, ponieważ wykonuje tylko tyle kodu ile wymaga, bez prze laczania kontekstu jadra, jeśli jeden z watków wywo la funkcje systemowa powodujac a blokowanie (czekanie), to pozosta le watki nie bed a mog ly kontynuować pracy, nie ma możliwości wykorzystania wielu procesorów/rdzeni do wykonywania różnych watków programu. Przyk ladem popularnej, przenośnej biblioteki watków użytkownika dla systemów POSIX/ANSI-C jest GNU Pth (GNU Portable Threads). Watki podstawowe pojecia 7
8 Watki jadra Wiekszość wspó lczesnych systemów operacyjnych realizuje watki w jadrze systemu, zwane watkami jadra (kernel level threads, KLT). Dla programów wykorzystujacych te watki: jadro zajmuje sie obs luga watków (tworzeniem, prze laczaniem); trwa to typowo d lużej niż dla watków użytkownika, watek czekajacy na coś w funkcji systemowej nie blokuje innych watków, w systemach wieloprocesorowych jadro ma możliwość jednoczesnego wykonywania wielu watków jednej aplikacji na różnych procesorach. Watki jadra wspierane sa przez prawie wszystkie wspó lczesne systemy operacyjne skali makro, i wiele systemów operacyjnych skali mikro. Jednak ani czysty model watków użytkownika ani czysty model watków jadra nie zapewniaja po laczenia elastyczności programowania z efektywnościa wykonywania programu. Dobrym modelem jest natomiast taka implementacja biblioteki watków użytkownika, która odwzorowuje watki użytkownika na watki jadra. Watki podstawowe pojecia 8
9 Odwzorowanie wiele-jeden Ten model ma zastosowanie do czystej biblioteki watków użytkownika, przenośnych bibliotekach watków (np. GNU Portable Threads), w systemach jednoprocesorowych, lub nieobs lugujacych watków. Watki podstawowe pojecia 9
10 Odwzorowanie jeden-jeden Ten model jest najcześciej obecnie stosowany, np. w systemach Solaris, Linux, Windows XP. Watki podstawowe pojecia 10
11 Odwzorowanie wiele-wiele Model stosowany w dawniejszych implementacjach watków w systemach operacyjnych. Pozwala kontrolować rzeczywisty stopień wspó lbieżności programów przez przydzielanie odpowiedniej liczby watków jadra. Watki podstawowe pojecia 11
12 Model mieszany Model podobny do modelu wiele-wiele ale pozwala na przydzielenie watku jadra wybranym watkom użytkownika. Stosowany np. w systemach: IRIX, HP-UX, Tru64 UNIX. Watki podstawowe pojecia 12
13 Krótkie podsumowanie pytania sprawdzajace Odpowiedz na poniższe pytania: 1. Porównaj równoleg lość realizowana za pomoca procesów i watków wymień podobieństwa i różnice. 2. W szczególności porównaj: - różnice w szybkości tworzenia procesów i watków, - różnice w szybkości pracy procesów i watków, - różnice w szybkości komunikacji procesów i watków przez pamieć wspólna. 3. Porównaj realizacje watków w modelu watków jadra i użytkownika jakie sa zalety każdego modelu. Watki podstawowe pojecia 13
14 Watki podstawowe pojecia 14
15 Watki Pthread Standard watków POSIX (IEEE c) zwany Pthread (lub Pthreads) jest modelem wspó lbieżności wielowatkowej i standardem programowania aplikacji wielowatkowych. Standard wprowadza interfejs programistyczny (API), który posiada szereg implementacji dla wszystkich wspó lczesnych systemów uniksowych, w tym Mac OS X, i Android. Istnieja również implementacje dla systemu Windows. Standard Pthread definiuje funkcje tworzenia, zarzadzania, i synchronizacji watków. Jest zwykle zrealizowany za pomoca oddzielnej biblioteki. Kompilacja w systemach uniksowych wymaga użycia flagi -lpthread. Na podstawowym poziomie reprezentuje on zatem model watków użytkownika. Jednak funkcje Pthread pozwalaja zarzadzać równoleg lościa wykonywania watków, oraz ich szeregowaniem w systemie operacyjnym, zatem implementacja biblioteki musi odwzorować watki Pthread na watki jadra danego systemu. Standard Pthread realizuje zatem mieszany model implementacji watków. Watki standard i biblioteka Pthread 15
16 Podstawowe pojecia modelu watków Pthread Każdy proces startuje jako jednowatkowy i może w dowolnym momencie zaczać tworzyć dodatkowe watki. Watki tworzy sie funkcja pthread_create określajac funkcje (i jej argument), której wywo lanie rozpoczyna wykonywanie watku. Watek g lówny procesu ma znaczenie nadrzedne gdy on sie kończy to kończa sie wszystkie watki, oraz ca ly proces. Istnieje zestaw atrybutów, którymi można indywidualnie kontrolować zachowanie każdego watku. Atrybuty maja wartości domyślne, ale można je zmieniać. Watek może zakończyć sie sam, a także może go zakończyć inny watek procesu funkcja pthread_cancel. Zakończenie watku jest troche podobne do zakończenia procesu: watek generuje kod zakończenia (status), który może być odczytany przez watek macierzysty. Jeden watek może przejść w stan oczekiwania na zakończenie innego watku, co zwane jest wcielaniem (join) i wykonywane funkcja pthread_join. Watki moga być od l aczone i wtedy nie podlegaja wcielaniu, tylko kończa sie bez potrzeby odczytywania ich statusu. Watki standard i biblioteka Pthread 16
17 Uwagi o kasowaniu watków Skasowanie watku bywa przydatne, gdy program uzna, że nie ma potrzeby wykonywać dalej watku, pomimo iż nie zakończy l on jeszcze swej pracy. Watek kasuje funkcja pthread_cancel(). Skasowanie watku może naruszyć spójność modyfikowanych przezeń globalnych danych, zatem powinno być dokonywane w przemyślany sposób. Istnieja mechanizmy wspomagajace oczyszczanie struktur danych (cleanup handlers) po skasowaniu watku. W zwiazku z tym skasowany watek nie kończy sie od razu, lecz w najbliższym punkcie kasowania (cancellation point). Jest to tzw. kasowanie synchroniczne. Punktami kasowania sa wywo lania niektórych funkcji, a program może również stworzyć dodatkowe punkty kasowania wywo luj ac funkcje pthread_testcancel(). W przypadkach gdy watek narusza struktury danych przed jednym z punktów kasowania, może on zadeklarować procedure czyszczac a, która bedzie wykonana automatycznie w przypadku skasowania watku. Te procedure należy oddeklarować natychmiast po przywróceniu spójności struktur danych. Watki standard i biblioteka Pthread 17
18 Krótkie podsumowanie pytania sprawdzajace Odpowiedz na poniższe pytania: 1. Jak sie ma model watków standardu Pthread do modeli watków użytkownika i watków jadra? Watki standard i biblioteka Pthread 18
19 Semantyka watków a semantyka procesów POSIX W semantyce procesów systemu Unix, utrwalonej standardami POSIX, istnieje szereg niefortunnych elementów, które koliduje z semantyka watków. Takimi elementami sa: funkcje exec*, sygnalizacja b ledów przez funkcje systemowe, ogólnie efekty globalne generowane przez niektóre funkcje systemowe, obs luga sygna lów. Watki kolizje z semantyka procesów POSIX 19
20 Semantyka watków: funkcje exec Proces w systemie Unix może wywo lać jedna z funkcji exec* co powoduje przeobrażenie ca lego procesu i rozpoczecie wykonywania innego programu. Zachodzi pytanie, jak takie przeobrażenie powinno wygladać dla procesu, który utworzy l już kilka watków, i oto jeden z watków wywo la l jakaś funkcje exec*. Zosta lo to rozwiazane w ten sposób, że w momencie wywo lania jednej z funkcji exec* przez dowolny watek procesu gina wszystkie jego utworzone dodatkowo watki, proces redukuje sie do jednowatkowego, i rozpoczyna wykonanie nowego programu zgodnie ze zwyk la semantyka funkcji exec*. Watki kolizje z semantyka procesów POSIX 20
21 Semantyka watków: sygnalizacja b ledów Model sygnalizacji b ledów przez funkcje systemowe Uniksa polega na: 1. sygnalizacji wystapienia b ledu w funkcji systemowej przez zwrócenie pewnej specyficznej wartości, która może być różna dla różnych funkcji (typowo: dla funkcji zwracajacych int jest to wartość -1, a dla funkcji zwracajacych wskaźnik jest to wartość NULL), 2. ustawienia wartości zmiennej globalnej procesu errno na kod zaistnia lego b ledu; należy pamietać, że wartość zmiennej errno pozostaje ustawiona nawet gdy kolejne wywo lania funkcji systemowych sa poprawne. W oczywisty sposób, model ten nie bedzie dzia la l poprawnie w programach z watkami. Jednocześnie wprowadzenie zupe lnie innego modelu w systemach uniksowych wymaga loby przedefiniowania wszystkich funkcji, i jest nie do pomyślenia. Wprowadzono wiec nastepuj ace zasady: funkcje zwiazane z watkami nie sygnalizuja b ledów przez zmienna errno (która jest globalna w procesie), lecz przez niezerowe wartości funkcji, dla umożliwienia zwyk lym funkcjom sygnalizacji przyczyn b ledów, każdy z watków MOŻE otrzymać prywatn a kopie zmiennej globalnej errno (wymaga to kompilacji programu z makrodefinicja -D_REENTRANT). Watki kolizje z semantyka procesów POSIX 21
22 Semantyka watków: efekty globalne w funkcjach systemowych Poza wyżej omówionymi, szereg dalszych funkcji systemu Unix generuje globalne efekty uboczne, np. w celu korzystania z nich w dalszych wywo laniach. Funkcje te zosta ly zdefiniowane dawniej, zanim powsta ly watki, i sa one po prostu niekompatybilne z użyciem watków w programach (np. funkcja strtok biblioteki string). Funkcje, które nie tworza takich efektów, i moga być bez ograniczeń używane w programach z watkami, nazywane sa: thread-safe lub reentrant. Ta druga nazwa określa fakt, że funkcja może być jednocześnie wiele razy wywo lywana w jednej przestrzeni adresowej, i odnosi sie to zarówno do wywo lań w watkach, jak i wywo lań rekurencyjnych. Dla funkcji, które nie sa thread-safe albo reentrant, zdefiniowano w systemach uniksowych ich zamienniki, które maja te w lasności. Zamienniki maja inne nazwy (np. strtok_r) i inny interfejs wywo lania. W programach z watkami należy uważać na te kwestie, i wykorzystywać tylko funkcje thread-safe. Watki kolizje z semantyka procesów POSIX 22
23 Semantyka watków: obs luga sygna lów Każdy watek ma w lasna maske sygna lów. Watek dziedziczy ja od watku, który go zainicjowa l, lecz nie dziedziczy sygna lów czekajacych na odebranie. Sygna l wys lany do procesu jest doreczany do jednego z jego watków. Sygna ly synchroniczne, tzn. takie, które powstaja w wyniku akcji danego watku, np. SIGFPE, SIGSEGV, sa doreczane do watku, który je wywo la l. Sygna l do określonego watku można również skierować funkcja pthread_kill. Sygna ly asynchroniczne, które powstaja bez zwiazku z akcjami, np. SIGHUP, SIGINT, sa doreczane do jednego z tych watków procesu, które nie maja tego sygna lu zamaskowanego. Jedna ze stosowanych konfiguracji obs lugi sygna lów w programach wielowatkowych jest oddelegowanie jednego z watków do obs lugi sygna lów, i maskowanie ich we wszystkich innych watkach. Watki kolizje z semantyka procesów POSIX 23
24 Krótkie podsumowanie pytania sprawdzajace Odpowiedz na poniższe pytania: 1. Jakie elementy modelu procesów Unix/POSIX sa niekompatybilne z semantyka atków? w Watki kolizje z semantyka procesów POSIX 24
25 Synchronizacja watków Ponieważ watki sa z definicji wykonywane wspó lbieżnie i asynchronicznie, a także operuja na wspó ldzielonych globalnych strukturach danych, konieczne sa mechanizmy dla zapewnienia wy laczności dostepu. Mechanizmy wzajemnej synchronizacji i blokowania ograniczaja wspó lbieżność, zatem należy stosować jak najdrobniejsze blokady (patrz dalej). Dostepne mechanizmy synchronizacji standardu POSIX muteksy (mutual exclusion) blokady odczytu i zapisu (read-write locks) semafory zmienne warunkowe (conditional variables) bariery Watki synchronizacja 25
26 Synchronizacja watków: muteksy Muteksy s luża do wprowadzenia ochrony fragmentu programu, zwanego sekcja krytyczna, która może wprowadzić b ledy jeśli bedzie wykonana równocześnie przez różne procesy/watki. Rozważmy wielowatkowy program obs lugujacy operacje na dowolnych kontach bankowych, sp lywaj ace z oddzia lów i bankomatów: Watek 1: // otrzymany numer konta // oraz wartosc operacji saldo[konto] += operacja; Watek 2: // otrzymany numer konta // oraz wartosc operacji saldo[konto] += operacja; Tak równoleg le jak i quasi równoleg le wykonanie tych watków może spowodować takie pofragmentowanie tych operacji, że jeśli jednocześnie pojawia sie dwie operacje na tym samym koncie, to zostanie obliczona niepoprawna wartość salda. Zjawisko takie jest nazywane wyścigami. Można mu zapobiec za pomoca muteksu: Watek 1: pthread_mutex_lock(transakcyjny); saldo[konto] += operacja; pthread_mutex_unlock(transakcyjny); Watek 2: pthread_mutex_lock(transakcyjny); saldo[konto] += operacja; pthread_mutex_unlock(transakcyjny); Za lożenie blokady muteksu powoduje, że żadna z tych operacji nie może być przerwana przez druga. W danej chwili tylko jeden watek może posiadać blokade muteksu, a drugi bedzie musia l na nia czekać. Watki synchronizacja 26
27 Synchronizacja watków: muteksy (cd.) Ważna kwestia zwiazan a z operowaniem na zmiennych synchronizacyjnych przez wielowatkowe programy jest, że operacje te musza być realizowane przez system operacyjny, a nie program użytkownika. Program, który sprawdzi lby, że wartość muteksu wynosi 0 (wolny), i chcia lby nastepnie ustawić go na 1 (zajety), móg lby zostać wyw laszczony zaraz po sprawdzeniu, i w wyniku wyścigów zajać muteks już w miedzyczasie zajety przez inny watek. Jedynie system operacyjny może zapewnić nierozdzielne wykonanie sprawdzenia i zajecia muteksu. Każdy mechanizm synchronizacji ma zatem swój interfejs funkcyjny udostepniaj acy w laściwy zestaw operacji. Na przyk lad, podstawowe operacje na muteksach (z pominieciem operacji na atrybutach muteksów): #include <pthread.h> int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); Watki synchronizacja 27
28 Synchronizacja watków: muteksy (cd.) Muteks, podobnie jak inne mechanizmy synchronizacji zdefiniowane przez standard POSIX, wykorzystuja struktury pamieciowe tworzone jawnie w programach. Muteks jest zwyk la zmienna logiczna, ustawiana na 1 (blokada) lub 0 (brak blokady), plus informacja, który watek za loży l blokade muteksu, i zatem ma prawo ja zdjać. Przy deklaracji zmiennych typu muteks należy pamietać, żeby zainicjalizować je na zero, co oznacza muteks odblokowany. static pthread_mutex_t mutex1; pthread_mutex_t *mutex2; mutex2 = (pthread_mutex_t *) calloc(1, sizeof(pthread_mutex_t)); pthread_mutex_t mutex3 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex4; pthread_mutexattr_t attr_ob; pthread_mutexattr_init(&attr_ob) pthread_mutex_init(&mutex4, &attr_ob) Watki synchronizacja 28
29 Synchronizacja watków: blokady zapisu i odczytu Blokady zapisu i odczytu sa innym rodzajem mechanizmu synchronizacyjnego, bed acym pewnym uogólnieniem muteksu. Wyobraźmy sobie, że wśród nap lywaj acych operacji bankowych wiekszość stanowi sprawdzenie salda. Pobranie salda nie może być wykonywane równocześnie z jakakolwiek operacja wp laty ani wyp laty, ponieważ w tym czasie saldo mog loby być niepoprawnie odczytane. Jednak nic nie stoi na przeszkodzie, żeby sprawdzanie salda nie mog lo sie odbywać równocześnie z innymi operacjami sprawdzenia salda, nawet tego samego konta. Aby to zrealizować, do zabezpieczenia obs lugi transakcji zamiast muteksu należy użyć blokady zapisu i odczytu. Przy realizacji transakcji wp laty lub wyp laty zak ladana bedzie blokada zapisu, co wyklucza wszelkie inne jednoczesne operacje. Jednak przy realizacji jakiejkolwiek operacji sprawdzenia salda, należy użyć blokady odczytu, co powoduje, że inne operacje sprawdzenia salda moga przebiegać równolegle, a wstrzymywane bed a tylko operacje wp laty i wyp laty. Korzyść z użycia tego mechanizmu bedzie znaczaca tylko wtedy gdy operacji wymagajacych blokad odczytu bedzie znacznie wiecej niż tych wymagajacych blokad zapisu. W wielu systemach tak jest, np. w systemie weryfikacji hase l lub PINów bedzie znacznie wiecej operacji odczytu (sprawdzenia) niż operacji zapisu (zmiany) has la/pinu. Watki synchronizacja 29
30 Operacje na blokadach zapisu i odczytu: #include <pthread.h> int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); Watki synchronizacja 30
31 Synchronizacja watków: drobnoziarnistość Zauważmy, że mechanizmy synchronizacji, jakkolwiek potrzebne, ograniczaja wspó lbieżność dzia lania wielowatkowych programów. Wiele watków może zostać wstrzymanych na muteksie lub blokadzie za lożonej przez pojedynczy watek. Istnienie blokad zapisu i odczytu jest wyrazem ogólnej tendencji do tworzenia drobnoziarnistych mechanizmów synchronizacji. Program realizujacy zmiane PINu użytkownika móg lby za lożyć blokade bazy PINów na ca ly swój czas dzia lania, na czas wykonania jednej procedury zawierajacej zapis PINu, lub tylko dok ladnie na czas zapisywania nowego PINu. Ta ostatnia możliwość stanowi synchronizacje najbardziej drobnoziarnista i w najmniejszym stopniu ogranicza wspó lbieżność. Blokady zapisu i odczytu sa uogólnieniem muteksów, ale logicznie daja to samo: prawid low a synchronizacje pracy wielu watków. Zauważmy, że za lożenie blokady zapisu jest praktycznie równoważne za lożeniu blokady zwyk lego muteksu. Fakt, że istnieje oddzielny mechanizmu blokady odczytu pozwala zwiekszyć wspó lbieżność programu, dzieki drobnoziarnistości synchronizacji. Watki synchronizacja 31
32 Watki synchronizacja 32
33 Synchronizacja watków: semafory Semafory sa innym uogólnieniem muteksów, pozwalajacym zarzadzać zasobami, mierzonymi w sztukach. 1 Zamiast w ca lości zajmować dany zasób, watki zajmuja pewna liczbe jednostek tego zasobu, w granicach aktualnie dostepnej puli. Watek, który zażada zajecia wiekszej liczby niż aktualnie dostepna musi czekać, aż inny watek/inne watki nie zwolnia dostatecznej liczby jednostek. Analogia, ilustrujac a zastosowanie semaforów może być wystawa (np. malarstwa), na która ze wzgledów bezpieczeństwa można wpuścić jednorazowo maksymalnie N osób. Semafor wstepnie ustawiamy na wartość N. Każda wchodzaca osoba zg lasza żadanie jednostkowego zajecia semafora, co dekrementuje jego licznik (wyrażajacy liczbe wolnych miejsc na wystawie). Po osiagnieciu maksimum (wyzerowaniu semafora), nastepne osoby zg laszajace żadania zajecia semafora musza czekać. Każda wychodzaca osoba zwalnia (inkrementuje) semafor, co może spowodować wpuszczenie jednej osoby do środka, o ile czeka w żadaniu zajecia semafora. 1 Jaktoby lojużwyjaśnionewcześniej,nazwasemaforjestmyl aca. W kolejnictwie semafor jest stosowany do sygnalizacji zajetego toru. Informatycznym odpowiednikiem tego mechanizmu jest muteks. Semafory wprowadzi l w 1965 holenderski informatyk Edsger Dijkstra. Pojecie muteksu, jako semafora binarnego, zosta lo zdefiniowane dużo później. Watki synchronizacja 33
34 Muteks można traktować jako szczególny przypadek semafora. Logicznie muteks jest równoważny semaforowi przyjmujacemu tylko wartości 1 lub 0. Zatem semafory sa uogólnienie muteksów, ponieważ dostarczaja wiekszych możliwości. Jednak jest to uogólnienie innego rodzaju niż blokady zapisu i odczytu, które logicznie dostarczaja tych samych us lug co muteksy. Wprowadzajac rozdzielenie typu blokady, pozwalaja one na zwiekszenie drobnoziarnistości synchronizacji. Watki synchronizacja 34
35 Synchronizacja watków: semafory implementacja Biblioteka Pthread nie wprowadza semaforów, ponieważ istnieje szereg innych standardów definiujacych semafory, dobrze implementowanych we wszystkich systemach. Poniżej przedstawiono interfejs funkcyjny semaforów standardu POSIX Realtime. Mechanizmy tego standardu różnia sie od mechanizmów Pthread miedzy innymi tym, że sa oparte na systemie plików. Semafory tworzone w tym standardzie istnieja jako pliki w systemie plików, aczkolwiek standard nie określa jaki ma to być system plików. Na przyk lad, może to być wirtualny system plików, niezlokalizowany na dysku komputera. #include <semaphore.h> int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); int sem_post(sem_t *sem); int sem_getvalue(sem_t *restrict sem, int *restrict sval); int sem_init(sem_t *sem, int pshared, unsigned int value); sem_t *sem_open(const char *name, int oflag, /* unsigned long mode, unsigned int value */...); int sem_close(sem_t *sem); int sem_destroy(sem_t *sem); Watki synchronizacja 35
36 Watki synchronizacja 36
37 Synchronizacja watków: zmienne warunkowe Zmienne warunkowe s luż a do czekania na, i sygnalizowania, spe lnienia jakichś warunków. Ogólnie schemat użycia zmiennej warunkowej ze stowarzyszonym muteksem jest nastepuj acy: struct { pthread_mutex_t mutex; pthread_cond_t cond; {... inne zmienne przechowujace warunek } } global = { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, {...} }; schemat sygnalizacji zmiennej warunkowej: pthread_mutex_lock(&global.mutex); // ustawienie oczekiwanego warunku pthread_cond_signal(&global.cond); pthread_mutex_unlock(&global.mutex); schemat sprawdzania warunku i oczekiwania: pthread_mutex_lock(&global.mutex); while ( { warunek niespelniony } ) pthread_cond_wait(&global.cond, &global.mutex); //wykorzystanie oczekiwanego warunku pthread_mutex_unlock(&global.mutex); Watki synchronizacja 37
38 Synchronizacja watków: zmienne warunkowe (cd.) Pe lny interfejs funkcjonalny zmiennych warunkowych: int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); Algorytm dzia lania funkcji pthread_cond_wait: 1. odblokowanie muteksu podanego jako argument wywo lania 2. uśpienie watku do czasu aż jakiś inny watek wywo la funkcje pthread_cond_signal na danej zmiennej warunkowej 3. ponowne zablokowanie muteksu Watki synchronizacja 38
39 Krótkie podsumowanie pytania sprawdzajace Odpowiedz na poniższe pytania: 1. Dlaczego potrzebne sa mechanizmy synchronizacji? 2. Czy dodanie synchronizacji do programu wielowatkowego może raczej przyspieszyć czy spowolnić jego wykonanie? 3. Wyjaśnij mechanizm ochrony sekcji krytycznej programu muteksem. 4. Wyjaśnij dlaczego operacje na muteksie, który jest zwyk la zmienna logiczna, musza być realizowane przez system operacyjny, a nie przez program użytkownika. 5. Wyjaśnij dlaczego drobnoziarnistość synchronizacji zwieksza wspó lbieżność programów. 6. Porównaj ochrone sekcji krytycznej muteksem i blokada zapisu i odczytu. 7. Porównaj operacje dostepne na muteksach i semaforach. 8. Opisz wspó lprace watków synchronizowana za pomoca zmiennej warunkowej. Watki synchronizacja 39
40 Watki synchronizacja 40
41 Przyk lad: producenci i konsumenci Przyk ladowy program producentów i konsumenta (jednego), zaczerpniety z ksiażki Stevensa (nowe wydanie, tom 2). Pierwsza wersja nie zawiera żadnej synchronizacji operacji na zmiennych globalnych i może generować b ledy. #define MAXNITEMS #define MAXNTHREADS 100 int nitems; /* read-only by producer and consumer */ struct { pthread_mutex_t mutex; int buff[maxnitems]; int nput; int nval; } shared = { PTHREAD_MUTEX_INITIALIZER }; void *produce(void *), *consume(void *); int main(int argc, char **argv) { int i, nthreads, count[maxnthreads]; pthread_t tid_produce[maxnthreads], tid_consume; Watki przyk lad: producenci i konsumenci 41
42 if (argc!= 3) err_quit("usage: prodcons2 <#items> <#threads>"); nitems = min(atoi(argv[1]), MAXNITEMS); nthreads = min(atoi(argv[2]), MAXNTHREADS); Set_concurrency(nthreads); /* start all the producer threads */ for (i = 0; i < nthreads; i++) { count[i] = 0; Pthread_create(&tid_produce[i], NULL, produce, &count[i]); } /* wait for all the producer threads */ for (i = 0; i < nthreads; i++) { Pthread_join(tid_produce[i], NULL); printf("count[%d] = %d\n", i, count[i]); } /* start, then wait for the consumer thread */ Pthread_create(&tid_consume, NULL, consume, NULL); Pthread_join(tid_consume, NULL); } exit(0); Watki przyk lad: producenci i konsumenci 42
43 void * produce(void *arg) { for ( ; ; ) { Pthread_mutex_lock(&shared.mutex); if (shared.nput >= nitems) { Pthread_mutex_unlock(&shared.mutex); return(null); /* array is full, we re done */ } shared.buff[shared.nput] = shared.nval; shared.nput++; shared.nval++; Pthread_mutex_unlock(&shared.mutex); *((int *) arg) += 1; } } void * consume(void *arg) { int i; for (i = 0; i < nitems; i++) { if (shared.buff[i]!= i) printf("buff[%d] = %d\n", i, shared.buff[i]); } return(null); } Watki przyk lad: producenci i konsumenci 43
44 Przyk lad: producenci i konsumenci (2) Druga wersja programu z konsumentem pracujacym równolegle i synchronizacja wszystkich operacji na zmiennych globalnych za pomoca muteksu. Wykorzystanie muteksu powoduje ca lkowicie poprawne dzia lanie programu. Fragment funkcji main uruchamiajacy wszystkie watki równolegle: Set_concurrency(nthreads + 1); /* create all producers and one consumer */ for (i = 0; i < nthreads; i++) { count[i] = 0; Pthread_create(&tid_produce[i], NULL, produce, &count[i]); } Pthread_create(&tid_consume, NULL, consume, NULL); Watki przyk lad: producenci i konsumenci 44
45 void * produce(void *arg) { for ( ; ; ) { Pthread_mutex_lock(&shared.mutex); if (shared.nput >= nitems) { Pthread_mutex_unlock(&shared.mutex); return(null); /* array is full, we re done */ } shared.buff[shared.nput] = shared.nval; shared.nput++; shared.nval++; Pthread_mutex_unlock(&shared.mutex); *((int *) arg) += 1; } } Watki przyk lad: producenci i konsumenci 45
46 void consume_wait(int i) { for ( ; ; ) { Pthread_mutex_lock(&shared.mutex); if (i < shared.nput) { Pthread_mutex_unlock(&shared.mutex); return; /* an item is ready */ } Pthread_mutex_unlock(&shared.mutex); } } void * consume(void *arg) { int i; } for (i = 0; i < nitems; i++) { consume_wait(i); if (shared.buff[i]!= i) printf("buff[%d] = %d\n", i, shared.buff[i]); } return(null); Watki przyk lad: producenci i konsumenci 46
Watki. kod programu za ladowany do pami eci operacyjnej, wraz ze środowiskiem (zbiorem
Watki Procesy stanowia podstawowa jednostke, z której tradycyjnie sk lada sie wiekszość systemów operacyjnych. Procesy posiadaja dwie podstawowe cechy: kod programu za ladowany do pamieci operacyjnej,
Procesy wielowatkowe. Watki. Wspólne dane watków. Prywatne dane watków. Programowanie z użyciem watków
Watki Procesy stanowia podstawowa jednostke, z której tradycyjnie sk lada sie wiekszość systemów operacyjnych. Procesy posiadaja dwie podstawowe cechy: Procesy wielowatkowe Watki z natury rzeczy sa jednostkami
w zależności od wartości zmiennej operacja (dodatnia lub ujemna).
Wyścigi Watki sa z definicji wykonywane wspó lbieżnie i asynchronicznie, a także operuja na wspó ldzielonych globalnych strukturach danych. Może to prowadzić do korupcji tych struktur. Rozważmy wielowatkowy
Unix: programowanie z użyciem w atków
Unix: programowanie z użyciem w atków Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 1999 2006 Witold Paluszyński All rights reserved. Niniejszy dokument
Unix: programowanie z użyciem w atków
Unix: programowanie z użyciem w atków Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 1999 2006 Witold Paluszyński All rights reserved. Niniejszy dokument
Temat zajęć: Tworzenie i obsługa wątków.
Temat zajęć: Tworzenie i obsługa wątków. Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Tworzenie wątków, przekazywanie parametrów do funkcji wątków i pobieranie
z powielaniem wielu struktur danych oraz komunikacja
c Wies law P laczek 28 8 Watki 8.1 Wprowadzenie Wiele rozwiazywanych problemów można podzielić na zadania czastkowe, które daja sie wykonać niemal niezależnie. Każde z takich zadań można by powierzyć oddzielnemu
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
w odróżnieniu od procesów współdzielą przestrzeń adresową mogą komunikować się za pomocą zmiennych globalnych
mechanizmy posix Wątki w odróżnieniu od procesów współdzielą przestrzeń adresową należą do tego samego użytkownika są tańsze od procesów: wystarczy pamiętać tylko wartości rejestrów, nie trzeba czyścić
Procesy. w systemach operacyjnych (quasi)równoleg le wykonywanie wielu być wykonywane naprzemiennie i/lub jednocześnie.
Procesy Procesy umożliwiaja w systemach operacyjnych (quasi)równoleg le wykonywanie wielu zadań. Moga być wykonywane naprzemiennie i/lub jednocześnie. Zatem system operacyjny musi to (quasi)równoleg le
Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1
Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów
Wieloprogramowy system komputerowy
Wieloprogramowy system komputerowy sprzet: procesor(y), pamieć(i), lacza i magistrale komunikacyjne, urzadzenia wejścia/wyjścia system operacyjny obs luguje i zarzadza sprzetem, umożliwia prace i korzystanie
Plan wykładu. Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 1 p. Wzajemne wykluczanie. Procesy współbieżne
Plan wykładu Obliczenia równoległe w zagadnieniach inżynierskich Wykład 1 Podstawowe pojęcia i model programowania Sposoby realizacji watków w systemach operacyjnych Tworzenie watów i zarzadzanie nimi
Wieloprogramowy system komputerowy
Wieloprogramowy system komputerowy sprzet: procesor(y), pamieć(i), lacza i magistrale komunikacyjne, urzadzenia wejścia/wyjścia system operacyjny obs luguje i zarzadza sprzetem, umożliwia prace i korzystanie
Funkcje systemu Unix
Funkcje systemu Unix Witold Paluszyński witold@ict.pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 2002 2005 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia ly
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1
Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)
1. Uruchom poniższy program tworzący pojedynczy wątek:
9 Wątki 1. Uruchom poniższy program tworzący pojedynczy wątek: #include #include #include void* worker(void* info) int i; for(i=0; i
Systemy Operacyjne - Operacje na plikach
Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man
Programowanie aplikacji równoległych i rozproszonych. Wykład 1
Wykład 1 p. 1/52 Programowanie aplikacji równoległych i rozproszonych Wykład 1 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Plan wykładu
Programowanie Współbieżne
Programowanie Współbieżne Pthread http://www.unix.org/version2/whatsnew/threadsref.html Oraz strony podręcznika systemowego man 1 Wątki W tradycyjnym modelu w systemie Unix, jeżeli proces wymaga, by część
Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1
Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.
Plan wykładu. Programowanie aplikacji równoległych i rozproszonych. Wykład 1 p. Wzajemne wykluczanie. Procesy współbieżne
Plan wykładu Programowanie aplikacji równoległych i rozproszonych Wykład 1 Podstawowe pojęcia i model programowania Sposoby realizacji watków w systemach operacyjnych Tworzenie watów i zarzadzanie nimi
Systemy Operacyjne 2: Wątki pthreads. dr inż. Arkadiusz Chrobot
Systemy Operacyjne 2: Wątki pthreads dr inż. Arkadiusz Chrobot 18 kwietnia 2013 1. Wprowadzenie Wątki podobnie jak procesy umożliwiają współbieżną realizację czynności w wykonywanym programie. Domyślnie
Zaawansowane programowanie w C++
Zaawansowane programowanie w C++ Micha l Tanaś, PhD Adam Mickiewicz University, Faculty of Physics http://www.amu.edu.pl/~mtanas Michal.Tanas@amu.edu.pl Wykonanie klasycznego programu System operacyjny
4.2 Sposób korzystania z l acza
4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego
Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci
Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1
Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące
Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.4
Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.4 Synchronizacja wątków Omawiane zagadnienia Czym jest synchronizacja wątków? W jakim celu stosuje się mechanizmy
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Jędrzej Ułasiewicz Programownie aplikacji współbieżnych str. 1. Wątki
Jędrzej Ułasiewicz Programownie aplikacji współbieżnych str. 1 1 Informacje wstępne...2 2 Rodzaje wątków...7 poziomu jądra...7 poziomu użytkownika...8 Rozwiązania mieszane...8 3 Biblioteka pthreads...12
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska
Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu
Podstawy programowania współbieżnego. 1. Wprowadzenie. 2. Podstawowe pojęcia
Podstawy programowania współbieżnego Opracowanie: Sławomir Samolej, Tomasz Krzeszowski Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2010 1. Wprowadzenie Programowanie współbieżne
Paradygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4
Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional
Problemy współbieżności
Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe) realizowana programowo (bariera, sekcja krytyczna, operacje atomowe) wzajemne wykluczanie
Paradygmaty programowania
Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................
Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ
Jeszcze o funkcjach i strukturze projektu Zak lad Chemii Teoretycznej UJ 3 grudnia 2008 1 2 3 4 5 typedef Plan typedef specyfikator typu nazwa S luży do stworzenia nowej nazwy dla jakiegoś typu. Nazwa
Wieloprogramowy system komputerowy
Wieloprogramowy system komputerowy sprzet: procesor(y), pamieć, lacza i magistrale komunikacyjne, urzadzenia wejścia/wyjścia system operacyjny: obs luguje i zarzadza sprzetem, umożliwia prace i korzystanie
Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Funkcje systemów operacyjnych czasu rzeczywistego
Funkcje systemów operacyjnych czasu rzeczywistego Witold Paluszyński Katedra Cybernetyki i Robotyki Wydzia l Elektroniki, Politechnika Wroc lawska http://www.kcir.pwr.edu.pl/~witold/ 2011 2015 Ten utwór
Wielozadaniowość w systemie Microsoft Windows
Wielozadaniowość w systemie Microsoft Windows mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Idea wielozadaniowości Proces główny Wątki Algorytm szeregowania ustala kolejność
Mariusz Rudnicki PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.4
Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE WSPÓŁBIEŻNE I SYSTEMY CZASU RZECZYWISTEGO CZ.4 Synchronizacja wątków Omawiane zagadnienia Czym jest synchronizacja wątków? W jakim celu stosuje
Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.
Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).
Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ
w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L
Zaawansowane programowanie w C++ (PCP)
Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi
9. Problem wzajemnego wykluczania i sekcji krytycznej
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Problem wzajemnego wykluczania i sekcji krytycznej 9.1 Przeplot i współużywalność zasobów Wyróżniamy dwa rodzaje zasobów: 1. Zasoby współużywalne
Operacje na plikach. Organizacja systemu plików. Typy plików. Struktury plików. Pliki indeksowane. Struktura wewn etrzna
Organizacja systemu plików organizacja logiczna pliku: rekordy o sta lej lub zmiennej d lugości np. w systemie Unix typowo pliki zorganizowane sa jako sekwencje bajtów, zatem sa to rekordy o sta lej d
1. Procesy i współbieżność
1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,
Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.
Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,
Futex (Fast Userspace Mutex) Łukasz Białek
Futex (Fast Userspace Mutex) Łukasz Białek Futex informacje podstawowe Stworzony w 2002 roku przez Hubertusa Franke, Matthew Kirkwooda, Ingo Molnára i Rustiego Russella. Jest mechanizmem w Linuxie, który
Wprowadzenie do programowania współbieżnego
Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)
Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,
16 3 Procesy 3 Procesy Pojecie procesu jest kluczowe dla zrozumienia funkcjonowania wielozadaniowych systemów operacyjnych. Trudność w zrozumieniu tego pojecia i tym samym zg lebienie mechanizmu obs lugi
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Kurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
Problemy czytelników i pisarzy oraz 5 ucztujących filozofów
Problemy czytelników i pisarzy oraz 5 dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
Paradygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 1 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Wielowątkowy serwer TCP
Wielowątkowy serwer TCP Wątek współbieżne działanie współdzielenie danych wykonywanie tego samego programu tańsze tworzenie w porównaniu do fork() join(), a detach() pthread - interesujące fragmenty pthread_create(),
Tworzenie wątków. #include <pthread.h> pthread_t thread;
Wątki Wątek (ang, thread) jest to niezależna sekwencja zdarzeń w obrębie procesu. Podczas wykonywania procesu równolegle i niezależnie od siebie może być wykonywanych wiele wątków. Każdy wątek jest wykonywany
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Rozdzia l 3. Laboratorium 3. danych zawierajac
Rozdzia l 3 Laboratorium 3 3.1. Tablice Tablica jest struktura danych zawierajac a zmienne tego samego typu. CLR środowiska.net Framework wspiera tworzenie tablic jedno oraz wielo wymiarowych. 3.1.1. Tablice
procesy odrębne dzielone
procesy odrębne Unikatowy PID (2-32000) Zmienne Zbiory deskryptorów plików Przestrzeń stosu (lokalne zmienne, wywołania funkcji) Środowisko Licznik rozkazów dzielone Kod programu brak możliwości zapisu
SYSTEMY CZASU RZECZYWISTEGO - VxWorks
WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()
by lo pozostawione procesom lub programom. W nowoczesnych i wi ekszych systemach
Zarzadzanie pamieci a W dawnych systemach operacyjnych, ale także w bardziej prymitywnych systemach wspó lczesnych (np. w ma lych systemach przeznaczonych na platformy wbudowane), operacje zarzadzania
Wykorzystanie pami eci operacyjnej przez system
Zarzadzanie pamieci a Wykorzystanie pamieci operacyjnej przez system W dawnych systemach operacyjnych, ale także w bardziej prymitywnych systemach wspó lczesnych (np. w ma lych systemach przeznaczonych
synchronizacji procesów
Dariusz Wawrzyniak Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji Plan wykładu (2) Semafory Rodzaje semaforów (1) Semafor jest
Współbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Wskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Równoleg le sortowanie przez scalanie
Równoleg le sortowanie przez scalanie Bartosz Zieliński 1 Zadanie Napisanie programu sortuj acego przez scalanie tablicȩ wygenerowanych losowo liczb typu double w którym każda z procedur scalania odbywa
Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology
Funkcje Piotr Zierhoffer Institute of Computer Science Poznań University of Technology 7 października 2012 Funkcje Funkcja podprogram. Nazwany blok kodu realizujacy jakieś zadanie. sin(x), arccos(x), min(a,
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
synchronizacji procesów
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Definicja semafora Klasyfikacja semaforów Implementacja semaforów Zamki Zmienne warunkowe Klasyczne problemy synchronizacji (2) Semafory
Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory
Dzisiejszy wykład Klasa string wersja prosta wersja ze zliczaniem odwołań Wyjątki Specyfikator volatile Semafory 1 Klasa string Przetwarzanie tekstów jest powszechną dziedziną zastosowań komputerów W języku
Funkcje systemów operacyjnych czasu rzeczywistego
Funkcje systemów operacyjnych czasu rzeczywistego Witold Paluszyński Katedra Cybernetyki i Robotyki Wydzia l Elektroniki, Politechnika Wroc lawska http://www.kcir.pwr.edu.pl/~witold/ 2011 2017 Ten utwór
Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu
Proces Procesy i wątki Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz
Drzewa AVL definicje
Drzewa AVL definicje Uporzadkowane drzewo binarne jest drzewem AVL 1, jeśli dla każdego wez la różnica wysokości dwóch jego poddrzew wynosi co najwyżej 1. M D S C H F K Z typowe drzewo AVL minimalne drzewa
Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007
Zak lad Metod Obliczeniowych Chemii UJ 14 marca 2007 Rzad 1 Zamiast wst epu 2 Rzad Notacja dużego O Notacja Ω Notacja Θ 3 S lowniczek Rzad Algorytm W matematyce oraz informatyce to skończony, uporzadkowany
Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 5 Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo
Obliczenia rozproszone z wykorzystaniem MPI
Obliczenia rozproszone z wykorzystaniem Zarys wst u do podstaw :) Zak lad Metod Obliczeniowych Chemii UJ 8 sierpnia 2005 1 e konkretniej Jak szybko, i czemu tak wolno? 2 e szczegó lów 3 Dyspozytor Macierz
Indeks odwzorowania zmiennej zespolonej wzgl. krzywej zamknietej
Indeks odwzorowania zmiennej zespolonej wzgl edem krzywej zamkni etej 1. Liczby zespolone - konstrukcja Hamiltona 2. Homotopia odwzorowań na okr egu 3. Indeks odwzorowania ciag lego wzgledem krzywej zamknietej
Proces y i y w i ąt ą ki
Procesy i wątki Proces Proces jest wykonywanym programem. Wykonanie procesu musi przebiegać w sposób sekwencyjny ( w dowolnej chwili na zamówienie naszego procesu może być wykonany co najwyżej jeden rozkaz
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),
27 4 L acza L acza w systemie UNIX sa plikami specjalnymi, s luż acymi do komunikacji pomiedzy procesami. L acza maja kilka cech typowych dla plików zwyk lych, czyli posiadaja swój i-weze l, posiadaja
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach
Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,
Komunikacja za pomocą potoków. Tomasz Borzyszkowski
Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania
Implementacje zgodne z tym standardem są nazywane wątkami POSIX lub Pthreads.
pthreads (POSIX) implementacji równoległości poprzez wątki w architekturach wieloprocesorowych z pamięcią współdzieloną przenośność problem programistyczny, gdy dostawcy sprzętu wdrażali własne wersje
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ
Zak lad Chemii Teoretycznej UJ 26 listopada 2007 wielowymiarowe 1 2 wielowymiarowe 3 Typ tablicowy Plan wielowymiarowe Tablica Zajmujacy spójny obszar w pamieci zestaw zmiennych (obiektów) tego samego
Programowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD