logo

Proces kontra. Wątek | Różnica między procesem a wątkiem

„Różnica między procesem a wątkiem” to jedno z najczęściej zadawanych pytań podczas rozmów kwalifikacyjnych. Oba procesy i wątki są ze sobą powiązane i bardzo podobne, co powoduje zamieszanie w zrozumieniu różnic między nimi. Proces i wątek stanowią niezależną sekwencję wykonywania, ale oba różnią się w ten sposób, że procesy są wykonywane w różnych obszarach pamięci, podczas gdy wątki tego samego procesu są wykonywane w przestrzeni pamięci współdzielonej.

W tym temacie zrozumiemy krótkie wprowadzenie procesów i wątków oraz jakie są inne różnice między nimi.

Proces kontra. Nitka

Co to jest proces?

Proces jest instancją programu, który jest wykonywany. Kiedy uruchamiamy program, nie jest on wykonywany bezpośrednio. Wykonanie wszystkich kroków wymaganych do wykonania programu zajmuje trochę czasu, a wykonanie tych kroków nazywa się procesem.

Proces może tworzyć inne procesy w celu wykonywania wielu zadań jednocześnie; utworzone procesy są znane jako klonowanie lub proces potomny , a główny proces jest znany jako proces nadrzędny . Każdy proces zawiera własną przestrzeń pamięci i nie dzieli jej z innymi procesami. Jest znany jako podmiot aktywny. Typowy proces pozostaje w pamięci w poniższej formie.

Proces kontra. Nitka

Proces w systemie operacyjnym może pozostać w dowolnym z następujących stanów:

    NOWY: Tworzony jest nowy proces.GOTOWY: Proces jest gotowy i czeka na przydzielenie procesorowi.DZIAŁANIE: Program jest wykonywany.CZEKANIE: Oczekiwanie na wystąpienie lub wystąpienie jakiegoś zdarzenia.ZAKOŃCZONY: Wykonanie zakończone.

Jak działają procesy?

Kiedy zaczynamy wykonywać program, procesor zaczyna go przetwarzać. Wykonuje następujące kroki:

  • W pierwszej kolejności program po przetłumaczeniu jest ładowany do pamięci komputera w postaci kodu binarnego.
  • Program wymaga pamięci i innych zasobów systemu operacyjnego, aby go uruchomić. Zasoby takie jak rejestry, licznik programów i stos oraz te zasoby są dostarczane przez system operacyjny.
  • Rejestr może zawierać instrukcję, adres przechowywania lub inne dane wymagane przez proces.
  • Licznik programów śledzi przebieg programu.
  • Stos zawiera informacje o aktywnych podprogramach programu komputerowego.
  • Program może mieć różne instancje, a każda instancja działającego programu nazywana jest indywidualnym procesem.

Cechy procesu

  • Za każdym razem, gdy tworzymy proces, musimy wykonać osobne wywołanie systemowe dla każdego procesu w systemie operacyjnym. The widelec () funkcja tworzy proces.
  • Każdy proces istnieje w swoim własnym adresie lub przestrzeni pamięci.
  • Każdy proces jest niezależny i traktowany przez system operacyjny jako izolowany proces.
  • Procesy potrzebują IPC (komunikacja między procesami), aby mogły się ze sobą komunikować.
  • Nie jest wymagana odpowiednia synchronizacja pomiędzy procesami.

Co to jest wątek?

Wątek jest podzbiorem procesu i jest również znany jako proces lekki. Proces może mieć więcej niż jeden wątek, a wątki te są zarządzane niezależnie przez program planujący. Wszystkie wątki w ramach jednego procesu są ze sobą powiązane. Wątki zawierają pewne wspólne informacje, np segment danych, segment kodu, pliki itp., które są udostępniane w ich wątkach rówieśniczych. Ale zawiera własne rejestry, stos i licznik.

Proces kontra. Nitka

Jak działa wątek?

Jak już wspomnieliśmy, wątek jest podprocesem lub jednostką wykonawczą w procesie. Proces może zawierać jeden wątek lub wiele wątków. Wątek działa w następujący sposób:

  • Kiedy proces się rozpoczyna, system operacyjny przydziela mu pamięć i zasoby. Każdy wątek w procesie dzieli pamięć i zasoby tylko tego procesu.
  • Wątki służą głównie do usprawnienia przetwarzania aplikacji. W rzeczywistości w danym momencie wykonywany jest tylko jeden wątek, ale szybkie przełączanie kontekstu między wątkami daje złudzenie, że wątki działają równolegle.
  • Jeśli w procesie wykonywany jest pojedynczy wątek, jest to tzw jednonitkowy A jeśli wiele wątków jest wykonywanych jednocześnie, nazywa się to wielowątkowość.

Rodzaje wątków

Istnieją dwa rodzaje wątków, którymi są:

1. Wątek na poziomie użytkownika

Jak sama nazwa wskazuje, wątki na poziomie użytkownika są zarządzane wyłącznie przez użytkowników, a jądro nie przechowuje żadnych informacji.

Są szybsze, łatwe w tworzeniu i zarządzaniu.

Jądro traktuje wszystkie te wątki jako jeden proces i obsługuje je tylko jako jeden proces.

Wątki na poziomie użytkownika są implementowane przez biblioteki na poziomie użytkownika, a nie przez wywołania systemowe.

2. Wątek na poziomie jądra

Wątki na poziomie jądra są obsługiwane przez system operacyjny i zarządzane przez jego jądro. Wątki te są wolniejsze niż wątki na poziomie użytkownika, ponieważ informacjami kontekstowymi zarządza jądro. Aby utworzyć i zaimplementować wątek na poziomie jądra, musimy wykonać wywołanie systemowe.

Zamiana ciągu Java

Funkcje wątku

  • Wątki dzielą dane, pamięć, zasoby, pliki itp. z wątkami równorzędnymi w procesie.
  • Jedno wywołanie systemowe może utworzyć więcej niż jeden wątek.
  • Każdy wątek ma swój własny stos i rejestr.
  • Wątki mogą bezpośrednio komunikować się ze sobą, ponieważ dzielą tę samą przestrzeń adresową.
  • Wątki muszą być zsynchronizowane, aby uniknąć nieoczekiwanych scenariuszy.

Kluczowe różnice między procesem a wątkiem

  • Proces jest niezależny i nie jest zawarty w innym procesie, podczas gdy wszystkie wątki są logicznie zawarte w procesie.
  • Procesy są obciążone dużym obciążeniem, podczas gdy wątki są lekkie.
  • Proces może istnieć indywidualnie, ponieważ zawiera własną pamięć i inne zasoby, podczas gdy wątek nie może mieć swojego indywidualnego istnienia.
  • Nie jest wymagana odpowiednia synchronizacja pomiędzy procesami. Natomiast wątki muszą być synchronizowane, aby uniknąć nieoczekiwanych scenariuszy.
  • Procesy mogą komunikować się między sobą wyłącznie za pomocą komunikacji między procesami; w przeciwieństwie do tego wątki mogą bezpośrednio komunikować się ze sobą, ponieważ dzielą tę samą przestrzeń adresową.

Tabela różnic między procesem a wątkiem

Proces Nitka
Proces to instancja programu, która jest wykonywana lub przetwarzana. Wątek to segment procesu lub lekki proces, który jest zarządzany niezależnie przez program planujący.
Procesy są od siebie niezależne i dlatego nie współdzielą pamięci ani innych zasobów. Wątki są współzależne i współdzielą pamięć.
Każdy proces jest traktowany przez system operacyjny jako nowy proces. System operacyjny traktuje wszystkie wątki na poziomie użytkownika jako jeden proces.
Jeśli jeden proces zostanie zablokowany przez system operacyjny, drugi proces może kontynuować wykonywanie. Jeśli jakikolwiek wątek na poziomie użytkownika zostanie zablokowany, wszystkie powiązane z nim wątki równorzędne również zostaną zablokowane, ponieważ system operacyjny traktuje je wszystkie jako jeden proces.
Przełączanie kontekstu między dwoma procesami zajmuje dużo czasu, ponieważ są one ciężkie w porównaniu z wątkiem. Przełączanie kontekstu między wątkami jest szybkie, ponieważ są one bardzo lekkie.
Segment danych i segment kodu każdego procesu są od siebie niezależne. Wątki dzielą segment danych i segment kodu z wątkami równorzędnymi; dlatego są takie same dla innych wątków.
System operacyjny potrzebuje więcej czasu na zakończenie procesu. Wątki można zakończyć w bardzo krótkim czasie.
Tworzenie nowego procesu zajmuje więcej czasu, ponieważ każdy nowy proces pochłania wszystkie zasoby. Wątek potrzebuje mniej czasu na utworzenie.