Green thread

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Green thread (z ang., zielony wątek) − wątek, który jest tworzony i obsługiwany przez maszynę wirtualną, w odróżnieniu od wątków natywnych danego systemu operacyjnego. Zielone wątki emulują środowisko wielowątkowe niezależnie od możliwości systemu, na którym zostały uruchomione. Są zarządzane w przestrzeni użytkownika, a nie jądra systemu, przez co mają możliwość pracy w środowiskach, które nie wspierają wątków.

Współprogramy (ang. coroutines) - Pojęcie współprogramu ma dwie odmienne definicje(!). Obie definicje zgodnie stwierdzają, że współprogram cechuje się posiadaniem ciągu instrukcji do wykonania i ponadto możliwością zawieszania wykonywania jednego współprogramu A i przenoszenia wykonywania do innego współprogramu B. W szczególności można wznowić pracę zawieszonego współprogramu A, a wykonywanie będzie podjęte w miejscu, w którym zostało zawieszone. Tym co różni obie definicje jest zdolność współpracy z rekurencyjnymi procedurami. (Nb. W językach programowania funkcyjnego koncepcja współprogramu istnieje pod postacią kontynuacji - pojęcia wprowadzonego niemal równocześnie z współprogramami. )Squeak - implementacja języka Smalltalk. Cechy: multimedialność, niezależność od platformy, darmowy, licencja Open Source.

Wydajność[ | edytuj kod]

Na wielordzeniowych procesorach, natywne implementacje wątków pozwalają na automatyczne podzielenie pracy na poszczególne procesory, na co zwyczajowo nie zezwalają implementacje zielonych wątków . Na niektórych maszynach wirtualnych zielone wątki mogą być uruchamiane szybciej niż odbywa się to dla natywnych wątków systemu operacyjnego. Na jednoprocesorowych komputerach najbardziej wydajny model nie został jeszcze jasno określony, benchmarki na komputerach z zainstalowanym jądrem linuksowym pokazują, że:

Inwersja priorytetów – zjawisko mogące występować w wielozadaniowych systemach operacyjnych takie, że w danej chwili wykonuje się inne zadanie niż powinno się wykonywać zgodnie z regułami algorytmu szeregowania.Przełączanie kontekstu, przełączanie zadań – proces zachowywania i odtwarzania stanu procesora (kontekstu), by wiele procesów mogło dzielić zasoby pojedynczego procesora. Przełączanie kontekstu polega na przydzielaniu procesorowi kolejnych zadań i jest ważną cechą wielozadaniowego systemu operacyjnego. Z reguły przełączanie kontekstu jest zadaniem intensywnym obliczeniowo i wiele czasu przy projektowaniu systemów operacyjnych poświęca się na optymalizację tego zadania.
  • zielone wątki wypadają lepiej od natywnych pod względem czasu aktywacji i synchronizacji
  • natywne wątki systemu osiągają dużo lepszą wydajność przy operacjach I/O oraz przy przełączaniu kontekstu.
  • Dodatkowo, zielony wątek może blokować wszystkie inne wątki, jeśli dokonuje blokującej operacji I/O. Aby zapobiec temu problemowi, zielone wątki muszą używać asynchronicznych operacji I/O, co komplikuje ich implementację, oraz zwiększa ich czas reakcji.

    System operacyjny (ang. Operating System, skrót OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika.Jądro systemu operacyjnego (ang. kernel) – podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania.

    Stworzone w przestrzeni użytkownika zielone wątki są lżejsze od natywnych, ale jako że implementują formę wielozadaniowości, błędy implementacyjne w programach używających wątków mogą powodować nieoczekiwane zakończenie działania.

    Podstrony: 1 [2] [3] [4]




    Warto wiedzieć że... beta

    Ruby to interpretowany, w pełni obiektowy i dynamicznie typowany język programowania stworzony w 1995 roku przez Yukihiro Matsumoto (pseudonim Matz). W języku angielskim ruby oznacza rubin.
    Wywłaszczenie – technika używana w środowiskach wielozadaniowych, w której algorytm szeregujący (scheduler) może wstrzymać aktualnie wykonywane zadanie (np. proces lub wątek), aby umożliwić działanie innemu. Dzięki temu rozwiązaniu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego. W systemach bez wywłaszczenia zadania jawnie informują scheduler, w którym momencie chcą umożliwić przejście do innych zadań. Jeżeli nie zrobią tego w odpowiednim czasie, system zaczyna działać bardzo wolno. Oprócz tego wywłaszczanie umożliwia szczegółowe określanie czasu, w jakim dany proces może korzystać z procesora. Wywłaszczanie w niektórych systemach operacyjnych może dotyczyć nie tylko programów, ale także samego jądra – przykładem takiego systemu jest Linux.
    Wielozadaniowość – cecha systemu operacyjnego umożliwiająca mu równoczesne wykonywanie więcej niż jednego procesu. Zwykle za poprawną realizację wielozadaniowości odpowiedzialne jest jądro systemu operacyjnego.
    Proces – jedno z podstawowych pojęć w informatyce, definiowane jako egzemplarz wykonywanego programu. Każdy nowo powstały proces otrzymuje unikatowy numer, który go jednoznacznie identyfikuje, tzw. PID (od (ang.) process identifier).
    Go – język programowania opracowany przez pracowników Google: Roberta Griesemera, Roba Pikea oraz Kena Thompsona. Łączy w sobie łatwość pisania aplikacji charakterystyczną dla języków dynamicznych (np. Python, Lisp), jak również wydajność języków kompilowanych (np. C, C++).
    Smalltalk jest w pełni obiektowym, reflektywnym językiem programowania z dynamicznym typowaniem. Umożliwia to w praktyce zupełnie inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający współczesnych języków obiektowych (np. Java), które rozwinęły się z wcześniejszych języków proceduralnych takich jak C, czy Pascal.
    Jądro Linux (ang. Linux kernel) – najważniejsza, wolna część uniksopodobnych systemów operacyjnych Linux napisana przez Linusa Torvaldsa w 1991 roku, a obecnie rozwijana przez licznych programistów z całego świata w ramach The Linux Foundation.

    Reklama