wątki programowe a wątki sprzętowe

Jaka jest różnica między wątkami programowymi, sprzętowymi i java?

Czy wątki programowe, java i sprzętowe są niezależne czy współzależne? Pytam o to, ponieważ Wiem, że wątki Javy są tworzone wewnątrz procesu z in jvm (java.exe).

Czy to prawda, że te różne procesy są wykonywane na różnych wątkach sprzętowych?

Author: Eng.Fouad, 2011-04-08

4 answers

Wątki programowe to wątki wykonywania zarządzane przez system operacyjny.

Wątki sprzętowe są cechą niektórych procesorów, które umożliwiają lepsze wykorzystanie procesora w pewnych okolicznościach. Mogą być wystawione na działanie/przez system operacyjny jako dodatkowe rdzenie ("hyperthreading").

W Javie tworzone wątki zachowują abstrakcję wątków oprogramowania, gdzie JVM jest "systemem operacyjnym". Czy JVM mapuje wątki Javy na OS wątki to sprawa JVM (ale prawie na pewno tak). A następnie system operacyjny będzie używał wątków sprzętowych, jeśli są one dostępne.

 40
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-20 07:59:14

"Wątek sprzętowy" to fizyczny procesor lub rdzeń. Tak więc 4-rdzeniowy procesor może obsługiwać 4 wątki sprzętowe na raz - procesor naprawdę robi 4 rzeczy w tym samym czasie.

Jeden wątek sprzętowy może uruchomić wiele wątków programowych. W nowoczesnych systemach operacyjnych jest to często wykonywane przez cięcie czasu - każdy wątek dostaje kilka milisekund do wykonania, zanim system operacyjny zaplanuje inny wątek do uruchomienia na tym procesorze. Ponieważ system operacyjny szybko przełącza się między wątkami, wygląda na to, że jeden procesor robi więcej niż jedna rzecz na raz, ale w rzeczywistości rdzeń nadal działa tylko jeden wątek sprzętowy, który przełącza się między wieloma wątkami oprogramowania.

Nowoczesny JVMs mapuje wątki Javy bezpośrednio do natywnych wątków dostarczanych przez system operacyjny, więc nie ma żadnych nieprzewidywalnych narzutu wprowadzanych przez wątki Javy vs natywne. Jeśli chodzi o wątki Sprzętowe, SYSTEM OPERACYJNY próbuje mapować wątki na rdzenie, jeśli jest ich wystarczająco dużo. Tak więc, jeśli masz program java, który uruchamia 4 wątki i ma więcej 4 lub więcej rdzeni, jest duża szansa, że Twoje 4 wątki będą działać równolegle na 4 oddzielnych rdzeniach, jeśli rdzenie są bezczynne.

 36
Author: mdma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-08 09:57:20

Myślę, że się mylisz. Nigdy nie słyszałem o wątkach sprzętowych (chyba, że masz na myśli hyper threading na niektórych maszynach Intela). Każdy proces jest uruchomioną reprezentacją programu. Wątki są jednoczesnymi przepływami wykonawczymi w procesie. Definicje wątków Javy są mapowane do wątków systemowych przez JVM. Java miała kiedyś koncepcję GreenThreads , która już nie istnieje.

 1
Author: questzen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-08 09:57:52

Wątek:

  • wątek sprzętowy (strand lub virtual CPU) to zasoby sprzętowe to uruchamia wątek oprogramowania.
  • wątek oprogramowania jest strumieniem instrukcje wykonywane przez procesor;

Wątek to pojedyncza linia poleceń, które są przetwarzane, każda aplikacja ma co najmniej jeden wątek, większość ma wielokrotności. Rdzeń to fizyczny sprzęt, który działa na wątku.

A {[0] } jest sekwencją wykonawczą aktywną w procesorze (rdzeń). Z definicji,

  • jednordzeniowy procesor może mieć tylko jeden wątek aktywny na raz.
  • [[1]} dwurdzeniowy procesor może mieć maksymalnie dwa wątki aktywne (jeden na rdzeń); ale tylko jeden na rdzeń. Procesor może pracować tylko na jednym wątku na rdzeń, procesory z hyperthreading mogą pracować na wielu wątkach na rdzeń.

Dla procesorów z hyperthreading, w rdzeniu znajdują się dodatkowe rejestry i jednostki wykonawcze, dzięki czemu może przechowywać stan dwóch wątków i pracować na nich obu, normalnie aby zmienić wątki trzeba opróżnij rejestry do pamięci podręcznej, zapisz je z powrotem do pamięci głównej, a następnie załaduj pamięć podręczną dzięki nowym wartościom i ładowaniu rejestrów przełączniki kontekstowe znacznie szkodzą wydajności.

Wątki Javy są zarządzane bezpośrednio przez OS, tzn. jeśli rdzenie CPU są bezczynne, to rozkłada wątek na bezczynnych rdzeniach.

 0
Author: sapy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-29 02:35:22