Wątki.

Slides:



Advertisements
Podobne prezentacje
Funkcje w PHP ABK.
Advertisements

Podstawowe pojęcia programowania współbieżnego
Mechanizmy pracy równoległej
Jarosław Kuchta Monitory.
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Wzorce.
SYSTEMY OPERACYJNE WSTĘP
Systemy rozproszone W. Bartkiewicz Wykład 9. Wprowadzenie do koordynacji programów współbieżnych.
Systemy rozproszone W. Bartkiewicz
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
SYSTEMY OPERACYJNE SYNCHRONIZACJA PROCESÓW
formatowanie kodu źródłowego
Semafory Semafor w programowaniu jest abstrakcją o zastosowaniu zaczerpniętym z działalności kolei. Gdy zasobów jest na tyle mało, że trzeba ich użyciem.
Zaawansowana obsługa sygnałów
Podstawowe składniki funkcjonalne procesora i ich rola.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Programowanie w C Wykład 3
Język ANSI C Operacje we/wy
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
ZARZĄDZANIE PROCESAMI
Język Java Wielowątkowość.
15. MECHANIZMY SYNCHRONIZACJI WĄTKÓW Większość koncepcji stworzonych na potrzeby synchronizacji procesów ciężkich została zastosowana też do synchronizacji.
Muteksy Muteksy (mutex – MUTual EXclusion) są prostymi obiektami synchronizacyjnymi pełniącymi rolę semaforów binarnych dla wątków (chroniącymi sekcje.
11. PAKIET IPC Narzędzia z pakietu IPC (InterProcess Communication) służą do koordynacji procesów wykonywa- nych na jednym komputerze (nie są przeznaczone.
Semafory według normy POSIX
14. WĄTKI Procesy w tradycyjnym sensie (tworzone przez wykonanie funkcji fork) mają przydzielaną oddzielną przestrzeń adresową. W przestrzeni tej jest.
10. PROSTE MECHANIZMY KOORDYNACJI DOSTĘPNE W JĘZYKU C W systemie Unix użytkownikowi (nie będącemu administratorem) nie wolno wykonywać bezpośrednio żadnych.
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Procesy odrębne –Unikatowy PID ( ) –Zmienne –Zbiory deskryptorów plików –Przestrzeń stosu (lokalne zmienne, wywołania funkcji) –Środowisko –Licznik.
RODZAJE KOMUNIKACJI MIĘDZY PROCESAMI
Pamięć wspólna Opis własnego rozwiązania Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Pamięć wspólna Przegląd stosowanych rozwiązań Marcin Kamiński, Michał Kotra Wydział EAIiE Katedra Automatyki Kraków, 2008.
Podstawy programowania
Podstawy programowania II
PROGRAMOWANIE SYSTEMOWE [2/3]
Wielozadaniowowść systemu operacyjnego Linux
Przekazywanie argumentów
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Programowanie strukturalne i obiektowe
Problem sekcji krytycznej
Przerwanie ang. interrupt.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Wykład 6b Wątki, mechanizmy IPC
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
PL/SQL – dalsza wędrówka
Systemy operacyjne (wiosna 2014)
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Systemy Operacyjne Synchronizacja
Model współbieżności w Javie
Paweł Starzyk Obiektowe metody projektowania systemów
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Wstęp do programowania Wykład 7
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
POLITECHNIKA POZNAŃSKA
Wątki, programowanie współbieżne
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
Zapis prezentacji:

wątki

Wrażenie jednoczesnego wykonywania Szeregowanie asynchroniczne Istnieją wewnątrz procesów Program ->Proces -> wątek wykonujący sekwencyjnie program - > dodatkowe wątki (ten sam program, ten sam proces) Proces nie oddziałuje na proces rodzica – kopiowanie pamięci wirtualnej, deskryptorów plików, innych zasobów Wątki – współdzielą pamięć, deskryptory plików (np. exec – kończy wszystkie wątki)

Deklaracje funkcji obsługi wątków - <pthread.h> GNU/Linux Deklaracje funkcji obsługi wątków - <pthread.h> Dołączenie biblioteki libpthread -lpthread IDwątku - typ pthread_t Tworzenie wątku – funkcja pthread_create Parametry: wskaźnik do IDwatku wskaźnik atrybutu (NULL - domyślne atrybuty) wskaźnik funkcji wątku argument – typu void* Zwraca - wartość void* Kończenie wątku funkcja wątku kończy dzialanie funkcja pthread_exit funkcja pthread_cancel – anulowanie Stany anulowalności wątku: asynchronicznie anulowalny synchronicznie anulowalny nie anulowalny

#include <pthread.h> #include <stdio.h> void* print_1(void* nic) { while (1) fputc(‘1’,stderr); return NULL; } main() pthread_t idwatek; pthread_create(&idwatek, NULL, &print_1, NULL); while(1) fputc(‘2’, stderr); return 0;

Przekazywanie danych do wątków przez argument wskaźnik do struktury zawierającej dane możliwość wykonywania tego samego kodu dla różnych danych przez wątki czekanie na zakończenie wątku (pthread_join) ID_watku – funkcja pthread_self atrybuty wątku stan odłączenia dołączalny joinable nie jest czyszczony po zakończeniu działania (pthread_join) odłączony detached czyszczony po zakończeniu

Każdy wątek ma własny stos wywołań każdy wywoływany podprogram w każdym wątku ma własne zmienne lokalne przechowywane na stosie wątku Obszar danych własnych wątku: powielanie zmiennych dla wszystkich wątków każdy wątek ma swoją kopię tworzenie – funkcja pthread_key_create ustawianie – funkcja pthread_setspecific pobranie – funkcja pthread_getspecific procedury czyszczące

SYNCHRONIZACJA WĄTKÓW eliminacja sytuacji wyścigu – niepodzielne wykonywanie działań Muteksy (MUTual EXclusion locks) blokada, którą w danej chwili może zamknąć tylko jeden wątek muteks jest odblokowywany przez ten sam wątek próba zablokowania zablokowanego muteksa blokuje wątek po odblokowaniu jeden z czekających - przypadkowy wątek jest wznowiony – może zablokować muteks możliwość zakleszczenia Dwukrotne zablokowanie muteksa przez jeden watek Szybki muteks – deadlock RECOURCIVE_NP - rekurencyjny muteks – zlicza blokady / nie wystąpi dedlock ERRORHECK_NP - nie można dwukrotnie zablokować muteksa - blad NP – GNU/Linuks; nieprzenośne

SYNCHRONIZACJA WĄTKÓW muteksy testowanie muteksów bez blokowania Aby uniknąć czekania na zablokowanym muteksie funkcja pthread_mutex_trylock jeśli muteks nie jest zablokowany – blokuje go jeśli jest – zwraca kod błędu EBUSY

SYNCHRONIZACJA WĄTKÓW semafory zadanie: wątki przetwarzają zadania z kolejki rozwiązanie z muteksami: wątki pobierają zadania; jeśli kolejka pusta – kończą się problem: kolejka opróżni się chwilowo; po nadejściu nowych zadań – brak wątków potrzebny mechanizm blokujący wątki przy pustej kolejce zadań SEMAFOR funkcje: sem_init sem_wait sem_post sem_trywait sem_destroy sem_getvalue

SYNCHRONIZACJA WĄTKÓW zmienna warunku condition variable wątek działa w nieskończonej pętli sterowanej za pomocą flagi gdy flaga nie ustawiona – wstrzymanie bez aktywnego oczekiwania zmienna warunku musi być ustawiona przez inny wątek po tym jak dany wątek rozpoczął czekanie na nią w przeciwnym razie – sygnał utracony aby nie dopuścić do sytuacji wyścigu (wątek wywłaszczony po sprawdzeniu flagi) używane wspólnie z muteksami blokuj muteks testuj flagę if flaga ustawiona then zwolnij muteks; kontynuuj pracę else niepodzielnie zwolnij muteks i czekaj na zmianę warunku

Implementacja wątków w GNU/Linuks wątki realizowane jako procesy (getpid) nie otrzymują kopii, lecz współdzielą zasoby Sygnały sygnały wysyłane z zewnątrz programu odbierane zwykle przez główny wątek wątki mogą wysyłać sygnały do siebie – pthread_kill

clone fork, pthread_create PROCESY A WĄTKI clone fork, pthread_create pozwala określać, które zasoby mają być współdzielone Procesy wątki Program Różne Ten sam Przestrzeń adresowa Kopia Wspólna – możliwość uszkodzenia Koszty Większe - gdy pamięć zmieniana Współdzielenie IPC Podobne zadania