Rozumiem, że procesor wielordzeniowy może uruchamiać wiele wątków tego samego procesu w tym samym czasie, używając różnych rdzeni.
Czy może również uruchamiać wiele procesów jednocześnie (każdy rdzeń uruchamia inny proces)?
źródło
Rozumiem, że procesor wielordzeniowy może uruchamiać wiele wątków tego samego procesu w tym samym czasie, używając różnych rdzeni.
Czy może również uruchamiać wiele procesów jednocześnie (każdy rdzeń uruchamia inny proces)?
Jeśli chodzi o system operacyjny i aplikacje, każdy rdzeń jest osobnym procesorem i podlega takim samym regułom koligacji , jak wiele procesorów.
To, który procesor (rzeczywisty, rdzeniowy lub hiperwątkowy), na którym działa proces, zależy całkowicie od systemu planowania systemu operacyjnego. To ten system planowania (na który wpływ mają ustawienia koligacji ) decyduje, gdzie i kiedy proces powinien zostać uruchomiony. Procesy i wątki mogą dowolnie przełączać się między procesorami i rdzeniami, według harmonogramu.
Z mojej ograniczonej wiedzy na temat systemów operacyjnych uważam, że każdy proces ma co najmniej jeden wątek i to właśnie te wątki są planowane, a nie same procesy. Proces po prostu przechowuje informacje o programie i uruchomionych wątkach. W ten sposób aplikacja jednowątkowa jest traktowana tak samo jak aplikacja wielowątkowa, ale aplikacja wielowątkowa może lepiej wykorzystywać zasoby.
Załóżmy na przykład, że mamy dwa procesy z dwoma wątkami i jedną aplikacją wątkową, z których wszystkie ciężko pracują na dwurdzeniowym procesorze (lub podwójnym procesorze, tutaj nie ma znaczenia)
Process A
|_Thread A-1
|_Thread A-2
Process B
|_Thread B-1
|_Thread B-2
Process C
|_Thread C
Każdy wątek jest planowany na wszystkich rdzeniach procesora, a obciążenie jest równoważone przez harmonogram systemu operacyjnego.
Jeśli następnie skonfigurujemy koligację procesora dla Procesu B, aby ograniczyć go do jednego procesora, wówczas wszystkie wątki tego procesu zostaną również powiązane z tym procesorem i nie będą działać na żadnym innym procesorze. Zrobienie tego samego w Procesie C nie spowoduje żadnych rzeczywistych zmian, ponieważ może ono działać tylko na jednym CPU na raz.
Krótka odpowiedź:
Procesy i wątki (jak w przypadku wielowątkowości) są konstrukcjami na poziomie systemu operacyjnego. Gdy osiągniesz wystarczająco niski poziom w harmonogramie, znikają one i masz tylko kilka wątków wykonywania w kolejce, aby uzyskać czas wykonania.