Proces jest to obiekt tworzony przez system operacyjny w celu wykonania programu. Wykonanie programu odbywa się przez wykonanie związanego z nim procesu.
Stworzenie procesu odbywa się przez wykonanie przez system operacyjny następujcycli czterech czynności;
• utworzenie deskryptora procesu
• przydział przestrzeni adresowej
• załadowanie programu do przydzielonej przestrzeni adresowej
• przekazanie deskryptora procesu programowi szeregowania.
Program szeregowania przydziela procesowi czas procesora. Operacje We/Wy zwykle powodują zawieszenie procesu i przekazanie czasu procesora innemu procesowi gotowemu do wykonania.
Aby zwiększyć zrównoległenic obliczeń wewwnątrz procesu wprowadzono nowy typ elementu programowego tzw wątek albo “lekki proces” (ang. thread, lightweight process). Wątki są deklarowane wewnątrz procesu przez odpowiednie instrukcje. Wątkowi odpowiada sekwencja instrukcji. Przy tworzeniu wątku tworzony jest Blok Opisu Wątku (TCB).Wykonanie wątku inicjowane jest instrukcją. Wszystkie wątki wewnątrz procesu współdzicląjego zasoby. Przełączanie czasu procesora między wątkami tego samego procesu jest prostsze, gdyż nie następuje zmiana tak dużego kontekstu jak procesu. Stąd nazwa ‘lekkie procesy”.
Podobnie jak procesy, wątki mogą być w jednym z trzech stanów; wykonywany, gotowy do wykonania, zawieszony (oczekujący).
Przydziałem czasu procesora wątkom zajmuje się program szeregowania wątków, który działa na kolejkach Bloków Opisu Wątków.
Wątki mogą być tworzone i kończone w następujący sposób:
• niezsynchronizowane tworzenie i kończenie, po stworzeniu wątek wykonuje się niezależnie od procesu matki (CREATE_TI1READ, START_TUREAD), wątek kończy się bez synchronizacji z procesem matką,
• niezsynchronizowane tworzenie i zsynchronizowane kończenie,, po stworzeniu wątek wykonuje się niezależnie od procesu matki (FORK), proces matka nic może kontynuować bez kontrolowanego zakończenia wątku (JOIN).
• zsynclironizowane tworzenie i kończenie, wszystkie wątki w danej fazie wykonywania procesu są tworzone i wykonywane równolegle (COBEGIN), wszystkie razem utworzone wątki muszą się zakończyć, aby proces mógł kontynuować wykonywanie
(COEND).
TO Tl
Tl T2 TO - Tn