Proces
- jedno z najbardziej podstawowych pojęć w informatyce. Z definicji jest to po prostu egzemplarz wykonywanego programu.
Należy odróżnić jednak proces od wątku - każdy proces posiada własną przestrzeń adresową, natomiast wątki posiadają wspólną sekcję danych.
Każdy proces posiada tzw. "rodzica". W ten sposób tworzy się swego rodzaju drzewo procesów. Proces może (ale nie musi) mieć swoje procesy potomne.
Za zarządzanie procesami odpowiada jądro systemu operacyjnego. Sposób obsługi procesów jest różny dla różnych systemów operacyjnych
W skład procesu wchodzi:
Każdemu procesowi przydzielone zostają zasoby, takie jak:
Wątek (ang. thread)
- jest innym rodzajem procesu, wykonywanego współbieżnie w obrębie jednego zadania (programu). Różnica między zwykłym procesem a wątkiem polega na współdzieleniu przez wszystkie wątki uruchomione w jednym zadaniu przestrzeni adresowej oraz wszystkich struktur systemowych (np. listy otwartych plików, gniazdek, itp.).
Ta cecha ma dwie ważne konsekwencje:
Wątki wymagają mniej zasobów do działania i też mniejszy jest czas ich tworzenia.
Dzięki współdzieleniu przestrzeni adresowej (pamięci) wątki jednego zadania mogą się między sobą komunikować w bardzo łatwy sposób, niewymagający pomocy ze strony systemu operacyjnego. Przekazanie dowolnie dużej ilości danych wymaga przesłania jedynie wskaźnika, zaś odczyt (a niekiedy zapis) danych o rozmiarze nie większym od słowa maszynowego nie wymaga.