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

Podobne dokumenty
Systemy operacyjne. Studia podyplomowe Wydział Informatyki PB

Procesy, wątki i zasoby

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

projektowanie systemu

Procesy, zasoby i wątki

Procesy, zasoby i wątki

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

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

Proces y i y w i ąt ą ki

Systemy operacyjne III

Procesy, zasoby i wątki

Zarządzanie procesami i wątkami

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

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

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

4. Procesy pojęcia podstawowe

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

System operacyjny MACH

Procesy, zasoby i wątki

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Temat zajęć: Tworzenie i obsługa wątków.

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

1.1 Definicja procesu

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 2. Zasoby i procesy w systemach i sieciach komputerowych

procesy odrębne dzielone

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Podstawy systemów operacyjnych

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

Działanie systemu operacyjnego

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

Zarządzanie procesami (omawiane zagadnienia)

Model procesu w systemie Linux. Tomasz Borzyszkowski

Systemy operacyjne. Paweł Pełczyński

... Ireneusz Mrozek. Wydział Informatyki

Zaawansowane programowanie w C++ (PCP)

Struktury systemów operacyjnych

2.1 Pojęcie wątku Modele wielowątkowości Wybrane zagadnienia wielowątkowości Wątki POSIX... 18

Działanie systemu operacyjnego

Prezentacja systemu RTLinux

Systemy operacyjne II

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

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Informatyka, systemy, sieci komputerowe

Koncepcja procesu. Procesy i wątki. Diagram stanów procesu. Stan procesu. Blok kontrolny procesu Process Control Block (PCB)

Działanie systemu operacyjnego

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

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Działanie systemu operacyjnego

Aplikacje w Javie- wykład 11 Wątki-podstawy

Zarządzanie procesorem

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

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

Jądro systemu operacyjnego

Sygnały. 7. Sygnały (2005/2006)

w odróżnieniu od procesów współdzielą przestrzeń adresową mogą komunikować się za pomocą zmiennych globalnych

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Systemy Operacyjne - zarządzanie procesami

Wykład 2. Struktury systemów komputerowych. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Kolejki FIFO (łącza nazwane)

Systemy operacyjne. Wojciech Kwedlo Wydział Informatyki PB, p. 127 aragorn.pb.bialystok.pl/~wkwedlo

Procesy i wątki. Wątki. Procesy

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wprowadzenie do systemów operacyjnych

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

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

Podstawy Informatyki Systemy operacyjne

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

Systemy operacyjne. Studia podyplomowe Wydział Informatyki PB

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

Temat zajęć: Obsługa procesów w systemie.

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

5. Model komunikujących się procesów, komunikaty

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

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

Struktury systemów operacyjnych

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

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

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

Wykład 7 Podręczna pamięć buforowa (ang. buffer cache) w systemie Linuks. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

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

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

4.2 Sposób korzystania z l acza

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Programowanie współbieżne Wykład 7. Iwona Kochaoska

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Wywoływanie procedur zdalnych

Wieloprogramowanie. Systemy operacyjne / Procesy i wątki str.4/32. Proces w systemie operacyjnym. Tworzenie i kończenie procesów

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

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

Współbieżność w środowisku Java

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

Procesy. S. Samolej: Procesy

Transkrypt:

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 Program jest pojęciem statycznym. Proces ma naturę dynamiczną (zmieniającą się). Zmianie ulegają m.in. Licznik rozkazów (adres ostatnio wykonywanej instrukcji) Rejestry procesora Wskaźnik stosu Proces ma przestrzeń adresową Kod Dane zainicjalizowane Uruchom program Dane niezainicjalizowane Stos Wojciech Kwedlo, Wykład z Systemów Operacyjnych -2- Wydział Informatyki PB

Model procesów Pojedynczy licznik rozkazów (punkt widzenia procesora) A B C B D A Wiele liczników rozkazów (punkt widzenia systemu oper.) B C D Z punktu widzenie procesora na komputerze jest wykonywany jeden program Z punktu widzenia systemu jednocześnie jest wykonywanych wiele programów. D C B A Czas Wojciech Kwedlo, Wykład z Systemów Operacyjnych -3- Wydział Informatyki PB

Stany procesu Nowy proces został utworzony. Nowy 1 Gotowy 2 Gotowy proces czeka na przydział procesora. Proces mógłby się wykonywać, ale nie wykonuje się, ponieważ w tej chwili wykonuje się jakiś inny proces. Aktywny wykonywane są instrukcje procesu. 5 3 W systemie z jednym procesorem w danej chwili jeden proces może być aktywny Oczekujący 4 Aktywny Oczekujący (uśpiony) proces czeka na zdarzenie (np. Zakończenie operacji we-wy). 7 7 Zakończony 6 Na poprzednim wykładzie proces, który zainicjalizował transmisję DMA lub wysłała znak do drukarki, był usypiany w oczekiwaniu na przerwanie. Proces w stanie uśpionym nie otrzyma procesora. Zakończony proces zakończył działanie Wojciech Kwedlo, Wykład z Systemów Operacyjnych -4- Wydział Informatyki PB

Przejścia pomiędzy stanami procesu 1 (Nowy => Gotowy). Nowo utworzony proces przechodzi do kolejki procesów gotowych. Planista długoterminowy (ang. long-term scheduler) w systemach wsadowych. 2 (Gotowy => Aktywny) Proces otrzymuje przydział procesora. 3 (Aktywny => Gotowy) Procesowi został odebrany procesor (i przekazany innemu procesowi). Przejściami 2 oraz 3 zarządza planista krótkoterminowy (ang. short-term). 4 (Aktywny => Oczekujący) Proces przechodzi w stan oczekiwania na zajście zdarzenia. (np. na zakończenie transmisji wejścia -wyjścia patrz poprzedni wykład) 5 (Oczekujący => Gotowy) Zdarzenie na które czekał proces nastąpiło (przerwanie we/wy na poprzednim wykładzie). Przejścia 4 oraz 5 są wykonywane przy przeprowadzeniu synchronicznej operacji wejścia wyjścia (ale nie tylko). 6 (Aktywny => Zakończony). Proces zakończył pracę (np. funkcja exit w Uniksach, błąd ochrony) 7 (Gotowy =>Zakończony oraz Oczekujący => Zakończony). Proces został zakończony przez inny proces (np. funkcja kill w systemie Unix). Wojciech Kwedlo, Wykład z Systemów Operacyjnych -5- Wydział Informatyki PB

Dodatkowy stan zawieszony (ang. suspended) Proces oczekuje bardzo długo na operacje we-wy (np. polecenie login) Przejście do stanu zawieszonego Pamięć zajmowana przez proces podlega wymianie (ang. swapping) tzn. zapisaniu na dysk do obszaru wymiany (swap area). Zwolniona pamięć może być wykorzystana przez inne procesy. Po zajściu zdarzenia proces ponownie wczytywany z obszaru wymiany Inne przyczyny zawieszenie procesu. Żądanie użytkownika Brak pamięci w systemie Proces co jakiś czas cyklicznie wykonuje jakąś czynność np. Sprawozdawczość Przejściami do i z stanu zawieszenie zarządza planista średnioterminowy (ang. medium-term scheduler) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -6- Wydział Informatyki PB

Diagram przejść z uwzględnieniem stanu zawieszenia. Planista długoterminowy Planista krótkoterminowy najważniejszy i występujący w każdym systemie. Rozstrzyga problem: Któremu procesowi w stanie gotowym mam przydzielić procesor Planista średnioterminowy Wojciech Kwedlo, Wykład z Systemów Operacyjnych -7- Wydział Informatyki PB

Blok kontrolny procesu ang. Process Control Block - PCB PCB służy do przechowywania informacji o procesie istotnych z punktu widzenia systemu operacyjnego Stan procesu Identyfikator procesu Licznik rozkazów Rejestry procesora Informacja o przydzielonej pamięci Informacja o otwartych plikach Informacja o połączeniach sieciowych Informacja niezbędna do tworzenia systemowych struktur danych. System operacyjny posługuje się różnymi kolejkami procesów. Jeżeli kolejki są implementowane jako listy z dowiązaniami, PCB może zawierać dowiązanie (wskaźnik) do następnego elementu w kolejce Wojciech Kwedlo, Wykład z Systemów Operacyjnych -8- Wydział Informatyki PB

Wykorzystanie kolejek w systemie operacyjnym Ready queue kolejka procesów w stanie gotowym. Proces wędruje pomiędzy kolejkami Kolejki procesów w stanie zablokowanym (oczekujących na wystąpienie zdarzenia). Z każdym typem zdarzenia związana jedna kolejka. Dzięki temu system wydajnie implementuje przejścia 4 oraz 5 W rzeczywistym systemie takich mogą być setki kolejek dla procesów w stanie oczekującym. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -9- Wydział Informatyki PB

Przełączenie kontekstu pomiędzy procesami Wojciech Kwedlo, Wykład z Systemów Operacyjnych -10- Wydział Informatyki PB

Przełączenie kontekstu (ang. context switch), a przełączenie trybu (ang. mode switch) P 1 P 2 P 3 P 4 Przełączenie kontekstu to zmiana procesu. Jądro Jądro Jądro Jądro Przełączenie kontekstu Przełączenie trybu zmiana trybu pracy procesora (jądra <=> użytkownika) W większości systemów (Uniksy,Windows) przyjęto model, w którym funkcje systemu wykonują się w kontekście procesu użytkownika. W uproszczeniu model ten zakłada że system operacyjny jest kolekcją procedur wywoływanych przez procesy w celu wykonania pewnych usług. Stąd (tydzień temu) mówiłem o procesie wykonującym się w trybie jądra (jeżeli wykonywany jest kod jądra). Przejście od programu użytkownika do programu jądra w wyniku wywołania funkcji systemowej (przerwanie programowe) lub przerwania sprzętowego wiąże się z przełączeniem trybu. Zmiana trybu jest znacznie mniej kosztowna niż zmiana kontekstu. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -11- Wydział Informatyki PB

Utworzenie procesu Proces rodzicielski tworzy proces potomny, który z kolei może stworzyć kolejne procesy. Powstaje drzewo procesów. Współdzielenie zasobów. Procesy rodzicielski i potomny mogą Współdzielić część zasobów Współdzielić wszystkie zasoby Nie współdzielić żadnych zasobów Wykonywanie Procesy rodzicielski i potomny wykonują się współbieżnie Proces rodzicielski oczekuje na zakończenie procesu potomnego. Przestrzeń adresowa Odrębna przestrzeń adresowa dla procesu potomnego (fork w systemie Unix proces potomny wykonuje się w nowej przestrzeni adresowej będącej kopią przestrzeni procesu rodzicielskiego) Proces ma nowy program załadowany do nowej przestrzeni adresowej (CreateProcess w Win32) Proces potomny i rodzicielski wykonują się w tej samej przestrzeni adresowej (clone w Linuksie; wątki Java i POSIX) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -12- Wydział Informatyki PB

Wywołania systemowe fork, exec, wait w Unix-ie #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int pid; pid = fork(); if (pid < 0) { /* Błąd!!! */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* proces potomny */ execlp("/bin/ls","ls",null); } else { /* proces rodzicielski */ wait(null); printf("child Complete"); exit(0); } } fork tworzy nowy proces Wywoływana z procesu rodzicielskiego Powracają z niej proces potomny i rodzicielski exec zastępuje obraz bieżącego procesu nowym programem. proces wołający nigdy nie wraca z exec (chyba że powstanie błąd) wait blokuje proces do momentu zakończenia procesu potomnego Wojciech Kwedlo, Wykład z Systemów Operacyjnych -13- Wydział Informatyki PB

Drzewo procesów w systemie Unix Polecenie pstree Wojciech Kwedlo, Wykład z Systemów Operacyjnych -14- Wydział Informatyki PB

Zakończenie procesu Zakończenie na własne żądanie. Proces sam podejmuje decyzję o zakończeniu pracy wywołując odpowiednie wywołanie systemowe. (system Unix: exit ). W programie w języku C jest to robione automatycznie po zakończeniu funkcji main Proces został zakończony w wyniku akcji innego procesu Unix: proces otrzymał sygnał SIGKILL. Polecenie kill w shellu, funkcje systemowe raise oraz kill. Proces został zakończony przez system operacyjny Naruszenie mechanizmów ochrony. Przekroczenie ograniczeń na przyznany czas procesora. Proces rodzicielski się zakończył (w niektórych systemach) Cascading termination Wojciech Kwedlo, Wykład z Systemów Operacyjnych -15- Wydział Informatyki PB

Wielowątkowość Jeden proces wykonuje się w wielu współbieżnych wątkach (ang. thread). Każdy wątek (inna nazwa: proces lekki, ang. lightweight) Ma swój własny stan (Aktywny, Gotowy, Zablokowany,... ) Ma swoje wartości rejestrów i licznika rozkazów. Ma swój własny stos (zmienne lokalne funkcji!!!). Ma dostęp do przestrzeni adresowej, plików i innych zasobów procesu WSZYSTKIE WĄTKI TO WSPÓŁDZIELĄ!!! Operacje zakończenia, zawieszenia procesu dotyczą wszystkich wątków. Procesy są od siebie izolowane, wątki nie! Wojciech Kwedlo, Wykład z Systemów Operacyjnych -16- Wydział Informatyki PB

Procesy i wątki Wątek 1 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan Proces Przestrzeń adresowa Otwarte pliki Procesy potomne Obsługa sygnałów Sprawozdawczość Zmienne globalne Wątek 2 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan Wątek 3 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan Wojciech Kwedlo, Wykład z Systemów Operacyjnych -17- Wydział Informatyki PB

Proces z jednym wątkiem Standardowy Unix MS-DOS Wojciech Kwedlo, Wykład z Systemów Operacyjnych -18- Wydział Informatyki PB

Proces z wieloma wątkami Linux MS-Windows POSIX OS/2 Solaris Wojciech Kwedlo, Wykład z Systemów Operacyjnych -19- Wydział Informatyki PB

Cechy wątków Zalety Utworzenie i zakończenie wątku zajmuje znacznie mniej czasu niż w przypadku procesu Możliwość szybkiego przełączania kontekstu pomiędzy wątkami tego samego procesu Możliwość komunikacji wątków bez pośrednictwa systemu operacyjnego Możliwość wykorzystania maszyn wieloprocesorowych SMP Wady Źle zachowujący się wątek może zakłócić pracę innych wątków tego samego procesu. W przypadku dwóch procesów o odrębnych przestrzeniach adresowych nie jest to możliwe Wojciech Kwedlo, Wykład z Systemów Operacyjnych -20- Wydział Informatyki PB

Wątki na poziomie użytkownika ang. user-level threads System operacyjny nie jest świadom istnienia wątków. Zarządzanie wątkami jest przeprowadzane przez bibliotekę w przestrzeni użytkownika. Wątek A wywołuje funkcję read Standardowo funkcja systemowa read jest synchroniczna (usypia do momentu zakończenia operacji) Jednak sprytna implementacja w bibliotece wywołuje wersję asynchroniczną i przełącza się do wątku B. Rozwiązanie to jest szybkie, ma jednak wady: Dwa wątki nie mogą się wykonywać współbieżnie na dwóch różnych procesorach. Nie można odebrać procesora jednemu wątkowi i przekazać drugiemu Wojciech Kwedlo, Wykład z Systemów Operacyjnych -21- Wydział Informatyki PB

Wątki na poziomie jądra ang. kernel-level threads Wątek jest jednostką systemu operacyjnego. Wątki podlegają szeregowaniu przez jądro. W systemie SMP wątki mogą się wykonywać na różnych procesorach. Przetwarzanie równoległe. Windows i Linux wykorzystują tę metodę. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -22- Wydział Informatyki PB

Przykład użycia wątków: Program do przetwarzania obrazów Użytkownik wydał polecenie Save Jego wykonanie może potrwać kilkadziesiąt sekund. Kto w tym czasie będzie obsługiwał mysz i klawiature? Wątek główny odpowiadający za interakcję z użytkownikiem. Po wydaniu polecenia Save tworzy wątek roboczy zapisujący obraz do pliku. Następnie powraca do konwersacji z użytkownikiem Dzięki temu aplikacja nie jest zablokowana (klepsydra w Win) na czas zapisywania Wątek roboczy wykonuje zapis i kończy pracę. Uwaga na synchronizację wątków!!! Co się stanie gdy po wydaniu polecenia Save natychmiast wydamy polecenie Usuń obraz? Sytuacja wyścigu (ang. race). Wojciech Kwedlo, Wykład z Systemów Operacyjnych -23- Wydział Informatyki PB

Wątek zarządca Wątek roboczy Przykład użycia wątków: Serwer WWW while(true) { getnextrequest(&buf); handoffwork(&buf); } Połączenie sieciowe Kernel Pamięć podręczna stron WWW while(true) { waitforwork(&buf); lookforpageincache(&buf,&page); if(pagenotincache(&page)) { readpagefromdisk(&buf,&page); } returnpage(&page); } Technika puli wątków: Zamiast tworzyć nowy wątek do obsługi kolejnego żądania, mamy zbiór wątków stale gotowych do działania. Nie ponosimy kosztu tworzenia i usuwania wątków. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -24- Wydział Informatyki PB

Problemy z wątkami W standardowej bibliotece C, w wersji wielowątkowej, errno jest implementowane jako prywatna zmienna globalna (nie współdzielona z innymi wątkami) Kilka wątków jednocześnie wywołuje funkcje malloc/free - może dojść do uszkodzenia globalnych struktur danych (listy wolnych bloków pamięci) Potrzeba synchronizacji => może prowadzić do spadku wydajności Wojciech Kwedlo, Wykład z Systemów Operacyjnych -25- Wydział Informatyki PB

Problemy z wątkami Proces otrzymuje sygnał: Wszystkie wątki otrzymują sygnał Wybrany wątek otrzymuje sygnał Wątek aktualnie aktywny otrzymuje sygnał Proces wykonuje fork. Czy duplikować jedynie działający wątek, czy też wszystkie wątki? Proces wywołuje exit. Zakończyć proces czy też jedynie aktywny wątek? Anulowanie wątku (ang cancellation). Wykonać natychmiast. Wątek co jakiś czas sprawdza czy nie został anulowany. Standard POSIX zawiera odpowiedzi na powyższe problemy. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -26- Wydział Informatyki PB

Implementacje wątków Java threads pomijamy na tym wykładzie, domena dr. Bołdaka POSIX threads na pracowni, za chwilę Windows threads podobne do POSIX Wojciech Kwedlo, Wykład z Systemów Operacyjnych -27- Wydział Informatyki PB

POSIX threads utworzenie i dołączenie wątku wątku void *thread(void *param) { // tu kod wątku // możemy przekazać wynik return NULL } int main() { pthread_t id; // Parametr przekazywany wątkowi void *param=null; pthread_create(&id,null,&thread,param); // Funkcja thread w odrębnym wątku // współbieżnie z main // id przechowuje identyfikator wątku Funkcja pthread_create tworzy nowy wątek. Rozpoczyna on pracę od funkcji, której adres przekazano jako trzeci argument. Funkcja pthread_join usypia wywołujący ją wątek do momentu, kiedy wątek o identyfikatorze przekazanym jako pierwszy argument zakończy pracę. Zakończenie pracy wątku powrót z funkcji która go rozpoczyna. } void *result; // Czekaj na zakończenie wątku pthread_join(id,&result); // Wynik w result,zamiast &result można // przekazać NULL Wojciech Kwedlo, Wykład z Systemów Operacyjnych -28- Wydział Informatyki PB