Pojęcia podstawowe. Oprogramowanie systemów równoległych i rozproszonych. Wykład 1. Klasyfikacja komputerów równoległych I

Podobne dokumenty
Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 4

16. Taksonomia Flynn'a.

Programowanie współbieżne i rozproszone

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Algorytmy i Struktury Danych

Nowoczesne technologie przetwarzania informacji

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Wprowadzenie do programowania współbieżnego

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Podstawy Informatyki Systemy sterowane przepływem argumentów

Architektura komputerów

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

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

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Architektura komputerów

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

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

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

Programowanie współbieżne i rozproszone

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

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

3.Przeglądarchitektur

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

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

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Dr inż. hab. Siergiej Fialko, IF-PK,

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

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

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

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

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

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

Wprowadzenie. Dariusz Wawrzyniak 1

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Zaawansowane narzędzia programowania rozproszonego

Architektura Komputerów

Algorytmy dla maszyny PRAM

HPC na biurku. Wojciech De bski

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

3.Przeglądarchitektur

Budowa systemów komputerowych

Modelowanie procesów współbieżnych

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wprowadzenie do architektury komputerów. Taksonomie architektur Podstawowe typy architektur komputerowych

Budowa komputera Komputer computer computare

Sieciowe Systemy Operacyjne

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Metody optymalizacji soft-procesorów NIOS

Architektura mikroprocesorów TEO 2009/2010

Czujniki obiektowe Sterowniki przemysłowe

Opis efektów kształcenia dla modułu zajęć

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Budowa i zasada działania komputera. dr Artur Bartoszewski

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Plan wykładu. Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 1 p. Wzajemne wykluczanie. Procesy współbieżne

PRZEWODNIK PO PRZEDMIOCIE

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Kryptografia na procesorach wielordzeniowych

Wprowadzenie do systemów operacyjnych

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

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

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

Middleware wprowadzenie października 2010

Systemy wieloprocesorowe i wielokomputerowe

Programowanie Rozproszone i Równoległe

Język programowania. Andrzej Bobyk

Inżynieria Programowania - Projektowanie architektoniczne

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Równoległość i współbieżność

Równoległość i współbieżność

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Analiza ilościowa w przetwarzaniu równoległym

Zaawansowane programowanie w C++ (PCP)

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

4. Procesy pojęcia podstawowe

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

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

Systemy operacyjne III

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

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

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

1. Etapy rozwoju systemów komputerowych

Wieloprogramowy system komputerowy

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

Architektura komputerów

Jądro systemu operacyjnego

Transkrypt:

Pojęcia podstawowe Oprogramowanie systemów równoległych i rozproszonych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obliczenia równoległe moga zostać zdefiniowane jako proces równoległego rozwiazywania problemu z wykorzystaniem p jednostek przetarzajacych (procesorów), przy czym zadania uruchamiane w poszczególnych procesach sa od siebie zależne i niezbędna jest wymiana danych pomiędzy nimi. Równoległy system komputerowy (lub po prostu komputer równoległy) definiowany jest jako system zawierajacy szereg procesorów, zdolnych do wspólnego rozwiazywania pewnego zagadnienia obliczeniowego. Określenie to jest na tyle szerokie, że obejmuje superkomputery masywnie równoległe, składajace się z dziesiatków, setek, a nawet tysięcy procesorów, wieloprocesorowe stacje robocze i serwery, systemy wbudowane, itp. Rozproszone systemy komputerowe, zwane również architekturami wielomaszynowymi, składaja się z wielu samodzielnych komputerów (procesor, pamięć, wejście/wyjście) połaczonych siecia komunikacyjna. p. 1/26 Klasyfikacja komputerów równoległych I Klasyfikacja komputerów równoległych II Podstawa klasyfikacji Flynna jest liczba strumieni danych oraz liczba strumieni rozkazów jakie moga zostać wyróżnione w pracy systemu komputerowego. Zostały wyróżnione cztery typy organizacji komputerów: SISD - systemy z pojedynczym strumieniem rozkazów i danych (Single Instruction stream - Single Data stream), SIMD - systemy z pojedynczym strumieniem rozkazów i wielokrotnym strumieniem danych (Single Instruction stream - Multiple Data stream), MISD - komputery z wielokrotnym strumieniem rozkazów i pojedynczym strumieniem danych (Multiple Instruction stream - Single Data stream), MIMD - maszyny z wielokrotnym strumieniem rozkazów i wielokrotnym strumieniem danych (Multiple Instruction stream - Multiple Data stream). Druga klasyfikacja systemów równoległych opiera się na dostępie do pamięci. Wyróżnia się tutaj systemy z: pamięcia wspólna lub inaczej współdzielona (shared-memory parallel computers), pozwalajace na jednoczesny i swobodny (random) dostęp do wspólnej pamięci przez wszystkie procesory, pamięcia rozproszona (distributed memory), w których każdy procesor posiada bezpośredni dostęp tylko do swojej lokalnej pamięci, oprócz tego może się odwoływać do modułów pamięci innych procesorów w sposób pośredni za pomoca odpowiedniej sieci połaczeń (interconnection network). p. 3/26

Architektura SMP Klastry Najprostsza i w zwiazku z tym najbardziej rozpowszechniona architektura równoległa jest architektura typu SMP (Symetric Multi Processing). Zasoby pamięci i wejścia/wyjścia sa w tej architekturze współdzielone przez wszystkie procesory systemu. Procesory uzyskuja dostęp do wspólnych zasobów poprzez magistralę, lub w przypadku bardziej rozbudowanych systemów poprzez przełacznik. CPU Cache CPU Cache Pamięć... I/O CPU Cache p. 5/26 Idea klastra obliczeniowego stanowi rozszerzenie idei sieci stacji roboczych (Network Of Workstations - NOW ). Pod względem sprzętowym oba składaja się z pewnej liczby komputerów (stacji roboczych) połaczonych siecia komunikacyjna. Różnica polega na logicznej reprezentacji systemu: w przypadku sieci stacji roboczych każda maszyna widziana jest jako niezależny system i fakt ten musi znaleźć odbicie w stosowanych tam rozwiazaniach programistycznych. W przypadku klastra natomiast pojedyncze maszyny stanowia część wirtualnego komputera udostępnionego dla użytkowników w sposób analogiczny do rzeczywistych superkomputerów. Jedna z podstawowych metod klasyfikacji klastrów stanowi podział na: klastry wysokiej wydajności lub obliczeniowe (high performance clusters), klastry wysokiej dostępności (high availability clusters). Klastry obliczeniowe Klastry wysokiej dostępności W przypadku klastrów obliczeniowych głównym celem twórców jest osiagnięcie jak najwyższej maksymalnej wydajności maszyny równoległej. Powoduje to stosowanie komponentów o najlepszych, pod względem szybkości, parametrach, wykorzystanie dedykowanych sieci komunikacyjnych oraz bazowanie na zabezpieczeniach programowych w zakresie stabilności pracy wirtualnego komputera. Myrinet SCI Gigabit Infiniband Ethernet Przepustowość 140-33 MHz 80 30-50 740-840 (MBytes/s) 215-66 MHz Opóźnienie - 14-33 MHz 6 50-200 6-7 MPI (µs) 5-66 MHz MPI L, 3rd Party MPICH MVAPICH, MPICH-GM MIBAPICH, MVAPICH2 p. 7/26 Klastry wysokiej dostępności wykorzystywane sa w zadaniach wymagajacych niezwykle wysokiej niezawodności i gwarancji nieprzerwanej pracy komputera. Często komponenty stosowane w nich należa do starszych generacji, majacych za soba długi okres testów i udoskonaleń oraz gwarantujacych bezawaryjna współpracę z warstwa programowa. Powszechnie spotykana praktyka jest również wykonywanie pojedynczego zadania jednocześnie przez wiele węzłów klastra, co umożliwia łatwe wykrycie przekłamań w wynikach generowanych przez wadliwa jednostkę jak również natychmiastowe zastapienie jej przez inna, należac a do tej samej grupy. Praktykowane jest również pozostawienie grupy maszyn nieprzydzielonych do żadnego zadania jako zabezpieczenia w przypadku poważniejszej awarii. Typowym przykładem zastosowania klastrów wysokiej dostępności sa serwery internetowe oraz systemy zarzadzaj ace przedsiębiorstwami.

Klastry komputerów PC z wezłami SMP Architektura klastrów obliczeniowych Klaster z wezłami SMP ze wzgledu na dostep do pamieci jest architektura hybrydowa. Poszczególne wezły klastra sa typowym przykładem systemów z pamieci a współdzielona. Natomiast ich połaczenie w klaster musi byc rozpatrywane jako przykład modelu z pamieci a rozproszona. Kaz dy wezeł posiada dostep tylko do swojej lokalnej pamieci, a odwołania do modułów pamieci innych wezłów wymagaja odwoływania sie do nich poprzez siec komunikacyjna. Aplikacje równoległe Aplikacje sekwencyjne Środowisko do programowania równoległego Warstwa pośrednia klastra (Obraz pojedynczego systemu, Infrastruktura dostępowa) Sieć o wysokiej wydajności p. 9/26 Modele programowania I Metaklastry (Systemy Gridowe) Dynamiczny postep w dziedzinie rozległych sieci komputerowych (WAN), umoz liwił stworzenie zintegrowanych hierarchicznych architektur typu metaklaster. Składaja sie one z wielu klastrów rozmieszczonych zazwyczaj w geograficznie odległych miejscach. Tego typu architektury sa postrzegane przez uz ytkowników jako całos c (jeden wirtualny metaklaster), umoz liwiajac wykorzystanie jego zasobów w jednolity sposób. Z punktu widzenia programisty róz nicowanie równoległych modeli obliczen odbywa sie w wyniku udzielenia odpowiedzi na nastepuj ace pytania: Czy dostepna pamiec jest fizycznie współdzielona, czy tez rozproszona? Czy równoległos c zadawana jest w sposób jawny, czy tez niejawny? Czy operacje komunikacyjne zadawane sa jawnie, czy niejawnie? Co reprezentuja operacje bazowe? W jakim stopniu operacje komunikacyjne realizowane sa sprzetowo, a w jakim programowo? itp. p. 11/26

Modele programowania II Modele programowania III W wyniku odpowiedzi na te pytania możemy wyróżnić następujace modele programowania obliczeń równoległych: model z wykorzystaniem kompilatorów zrównoleglajacych programy sekwencyjne, model z równoległościa danych, model z pamięcia współdzielona (funkcjonalny) bazujacy na wykorzystaniu pamięci współdzielonej (shared memory), czy też rozproszonej pamięci współdzielonej (distributed shared memory), model z wymiana komunikatów (message-passing paradigm), model z wykorzystaniem zdalnego wywołania procedur (remote procedure call), model obiektowy. Cały czas trwaja badania nad opracowywaniem kompilatorów zrównoleglających programy sekwencyjne. Mimo tego nie osiagnęły one zadowalajacego poziomu zaawansowania (dojrzałości) i nadaja się do ograniczonej klasy zastosowań. Model z równoległością danych polega na wstępnym przyporzadkowaniu danych do procesorów przez programistę, natomiast realizacja operacji komunikacyjnych oraz przydziału zadań do poszczególnych procesorów jest wykonywana automatycznie przez kompilator. Takie podejście jest zrealizowane w standardzie HPF (High Performace Fortran). Został w nim wyspecyfikowany zbiór funkcji i rozszerzeń dla języka programowania Fortran, które wspieraja kompilator podczas procesu zrównoleglania programu sekwencyjnego. Model ten nadaje się głównie do obliczeń regularnych. p. 13/26 Modele programowania IV Modele programowania V Model z pamięcia współdzielona bazuje na wykorzystaniu wspólnej pamięci, do której dostęp maja wszystkie procesory. Podstawowym zagadnieniem występujacym w tym modelu jest odpowiednia synchronizacja dostępu do pamięci oraz porzadkowanie zdarzeń. Rozwinięciem modelu z pamięcia współdzielona jest model wielowątkowy, w którym procesy zastapione zostały przez watki, czyli tzw. procesy lekkie (Lightweight Processes). Obecnie w większości systemów operacyjnych zaimplementowane zostały mechanizmy wspierajace watki. Znajduja się one również w standardzie POSIX (IEEE POSIX 1003.1c). Wiele współczesnych języków programowania i bibliotek zawiera również wsparcie dla przetwarzania wielowatkowego, w tym także język Java, czy też C#. Również model programowania w oparciu o dyrektywy preprocesora OpenMP wykorzystuje watki jako podstawę swojego działania. Główne cechy modelu z wymiana komunikatów to: dowolny proces posiadajac bezpośredni dostęp tylko do swojej pamięci lokalnej może komunikować się z innym procesem dzięki wymianie komunikatów, wymiana danych pomiędzy procesorami wymaga z definicji udziału komunikujacych się procesorów, np. jeden proces wysyła komunikat, a drugi go odbiera. Najważniejszymi zaletami modelu z wymiana komunikatów sa: możliwość osiagnięcia wysokiej wydajności obliczeń, uniwersalność, dzięki której można zaimplementować ten model na różnych platformach sprzętowych. p. 15/26

Modele programwania VI Modele programwania VII Model zdalnego wywoływania procedur pozwala on aplikacji na wywoływanie procedur (podprogramów) znajdujacych się na innych komputerach. Według tej koncepcji aplikacja wykonywana przez komputer A wywołuje procedurę znajdujac a się na komputerze B, wysyłajac polecenie wykonania podprogramu wraz z argumentami wywołania. Następnie program wywołujacy przechodzi w stan oczekiwania na zakończenie wykonywania procedury przez komputer B w celu odebrania od niego wyników wykonania procedury. Model ten pozwala na tworzenie aplikacji rozproszonych w technologii klient-serwer. Jako odrębny model programowania równoległego można również traktować obiektowy model programowania umożliwiajacy komunikacje pomiędzy obiektami znajdujacymi się na różnych komputerach połaczonych ze soba przy pomocy sieci komunikacyjnej. Tego typu rozwiazania buduje się zazwyczaj w oparciu o jeden z wyżej wymienionych modeli programowania równoległego, jednakże z punktu widzenia programisty te szczegóły implementacyjne sa niewidoczne. W oparciu o model zdalnego wywołania procedur powstała koncepcja zdalnego wywołania metod w języku Java (Remote Method Invocation), standard CORBA (Common Object Request Broker Architecture), technologie.net, czy też EJB z technologii J2EE. p. 17/26 Modele programowania VIII Procesy współbieżne Modele programowania klastrów z węzłami SMP moga zostać podzielone na dwie kategorie: model jednorodny (SMM - single memory model), model hybrydowy (HMM - hybrid memory model). W przypadku modelu jednorodnego programista tworzy aplikacje równoległa wykorzystujac jedynie mechanizmy udostępniane przez jeden model programowania. W modelu hybrydowym programista tworzy aplikację równoległa wykorzystujac więcej niż jeden model programowania równoległego. Mówimy, że dwa procesy sa współbieżne, jeśli jeden z nich rozpoczyna się przed zakończeniem drugiego. W systemach jednoprocesorowych czas pracy procesora jest dzielony pomiędzy wszystkie wykonywane współbieżnie procesy poprzez wykorzystanie zasady podziału czasu. Jeśli w systemie komputerowym jest wiele procesorów, moga one wykonywać różne procesy jednocześnie. Uzależnione procesy moga ze soba współpracować lub współzawodniczyć. Praca takich procesów wymaga synchronizacji. p. 19/26

Wzajemne wykluczanie Bezpieczeństwo i żywotność Obiekt, z którego może korzystać w sposób wyłaczny wiele procesów, nazywa się zasobem dzielonym. Fragment procesu w którym korzysta on z obiektu dzielonego, nazywa się sekcja krytyczna tego procesu. Problem wzajemnego wykluczania: zsynchronizować N procesów, z których każdy w nieskończonej pętli na przemian zajmuje się własnymi sprawami i wykonuje sekcję krytyczna, w taki sposób, aby wykonanie jakichkolwiek dwóch lub więcej procesów nie pokrywało się w czasie. Rozwiazanie problemu wzajemnego wykluczania - dodanie instrukcji poprzedzajacych sekcję krytyczna (protokół wstępny), oraz następujacych bezpośrednio po sekcji krytycznej (protokół końcowy). Poprawność programu sekwencyjnego: częściowa poprawność - jeśli się zatrzyma, to zwróci dobre wyniki, własność stopu - w ogóle się zatrzyma. Własność bezpieczeństwa - program współbieżny jest bezpieczny jeśli nigdy nie doprowadza do niepożadanego stanu (nigdy swa procesy nie znajda się jednocześnie w swoich sekcjach krytycznych). Własność żywotności zapewnia, że każde pożadane zdarzenie w końcu zajdzie (jeśli jakiś proces czeka na wejście do swojej sekcji krytycznej, do w końcu do niej wejdzie). Sprawiedliwość. p. 21/26 Blokada i zagłodzenie Watek - definicja Blokada (zastój, zakleszczenie lub martwy punkt) - Zbiór procesów znajduje się w stanie blokady, jeśli każdy z tych procesów jest wstrzymywany w oczekiwaniu na zdarzenie, które może być spowodowane przez jakiś inny proces z tego zbioru. Zagłodzenie (wykluczenie) - proces nie zostaje wznowiony, mimo że zdarzenie na które czeka, występuje dowolna ilość razy (za każdym razem gdy proces ten mógłby być wznowiony, jest wybierany jakiś inny proces). Watek (thread) można określić jako pojedyncza sekwencję sterowania wewnatrz procesu (podstawowa jednostka użycia procesora). Watek wykonuje niezależny ciag instrukcji, który może być szeregowany do wykonania przez system operacyjny. Środowiskiem do wykonywania watku jest proces. Tradycyjna implementacja procesu ma jeden watek sterowania. W nowszych systemach dopuszcza się istnienie wielu watków wewnatrz procesu. p. 23/26

Własności watków Typy watków Koszt utworzenia i przełaczenia watku jest mniejszy niż procesu. Dane statyczne procesu sa dla watków działajacych w ramach jednego procesu wzajemnie widoczne. Wykonanie każdego watku przebiega sekwencyjnie; każdy watek ma swój licznik rozkazów. Watki moga być wykonywane na oddzielnych procesorach, co umożliwia przyspieszenie obliczeń. Ponieważ watki dziela wspólne dane konieczna jest synchronizacja dostępu do tych wspólnych danych. Ze względu na sposób implementacji rozróżnia się następujace typy watków: Watki poziomu jadra (kernel-space threads) sa implementowane poprzez dołaczenie do każdego procesu tabeli jego watków. System zarzadza każdym watkiem wykorzystujac kwant czasu przyznany dla jego procesu rodzica (funkcja clone). Watki poziomu użytkownika (user-space threads). Rezygnacja z zarzadzania watkami przez jadro. W procesie jest definiowany zbiór wykonalnych procedur, które sa wymieniane poprzez operacje na wskaźniku stosu. Dwupoziomowy (hybrydowy) system watków (two-level threads). Połaczenie systemu watków poziomu użytkownika i jadra. p. 25/26