Informacje o procesach i wątkach
Każdy proces udostępnia zasoby potrzebne do wykonania programu. Proces ma wirtualną przestrzeń adresową, kod wykonywalny, otwarte dojścia do obiektów systemowych, kontekst zabezpieczeń, unikatowy identyfikator procesu, zmienne środowiskowe, klasę priorytetu, minimalny i maksymalny rozmiar zestawu roboczego oraz co najmniej jeden wątek wykonywania. Każdy proces jest uruchamiany za pomocą jednego wątku, często nazywanego podstawowym wątkiem, ale może tworzyć dodatkowe wątki z dowolnego spośród jego wątków.
Wątek jest jednostką w ramach procesu, który można zaplanować do wykonania. Wszystkie wątki procesu współdzielą swoją wirtualną przestrzeń adresową i zasoby systemowe. Ponadto każdy wątek obsługuje obsługę wyjątków, priorytet harmonogramowania, lokalną pamięć wątku, unikatowy identyfikator wątku i zestaw struktur, których system będzie używać do zapisywania kontekstu wątku do momentu jego zaplanowania. Kontekst wątku zawiera zestaw rejestrów maszynowych wątku, stos jądra, blok środowiskowy wątku i stos użytkownika w przestrzeni adresowej procesu wątku. Wątki mogą również mieć własny kontekst zabezpieczeń, który może służyć do personifikacji klientów.
System Microsoft Windows obsługuje z góry wielozadaniowość, która tworzy efekt jednoczesnego wykonywania wielu wątków z wielu procesów. Na komputerze wieloprocesorowym system może jednocześnie wykonywać tyle wątków, ile procesorów jest na komputerze.
Obiekt zadania umożliwia zarządzanie grupami procesów jako jednostką. Obiekty zadań to obiekty, którym można nadawać nazwy, zabezpieczać i udostępniać, które kontrolują atrybuty procesów z nimi powiązanych. Operacje wykonywane na obiekcie zadania mają wpływ na wszystkie procesy skojarzone z obiektem zadania.
Aplikacja może użyć puli wątków , aby zmniejszyć liczbę wątków aplikacji i zapewnić zarządzanie wątkami procesów roboczych. Aplikacje mogą kolejkować elementy robocze, kojarzyć pracę z uchwytami oczekiwania, automatycznie kolejkować na podstawie timera i wiązać z operacjami we/wy.
Planowanie w trybie użytkownika (UMS) to lekki mechanizm, którego aplikacje mogą używać do planowania własnych wątków. Aplikacja może przełączać się między wątkami UMS w trybie użytkownika bez udziału harmonogramu systemu i odzyskać kontrolę nad procesorem, jeśli wątek UMS blokuje w jądrze. Każdy wątek UMS ma własny kontekst wątku zamiast udostępniać kontekst wątku pojedynczego wątku. Możliwość przełączania się między wątkami w trybie użytkownika sprawia, że usługa UMS jest wydajniejsza niż pule wątków w przypadku krótkich elementów roboczych, które wymagają kilku wywołań systemowych.
włókno to jednostka przetwarzająca, której przydzielanie musi być wykonane ręcznie przez aplikację. Włókna działają w kontekście wątków, które je planują. Każdy wątek może zarządzać wieloma przepływami sterowania. Ogólnie rzecz biorąc, włókna nie zapewniają przewagi nad dobrze zaprojektowaną aplikacją wielowątkową. Jednak użycie włókien może ułatwić przenoszenie aplikacji, które zostały zaprojektowane do samodzielnego zarządzania swoimi wątkami.
Aby uzyskać więcej informacji, zobacz następujące tematy:
- Wielozadaniowość
- planowanie
- Wiele wątków
- Procesy potomne
- pule wątków
- Obiekty zadań
- User-Mode planowanie
- Włókna