Wielowątkowość/Model procesów

Nasz model zakłada, że całe oprogramowanie, włącznie z systemem operacyjnym, jest zorganizowane w postaci zbioru procesów sekwencyjnych. Proces jest egzemplarzem uruchomionego programu, który ideowo będzie mieć własny wirtualny procesor CPU, ponieważ poza kodem, który ma wykonywać proces zawiera licznik programu, zawartość rejestrów oraz zmiennych. Oczywiście w rzeczywistości procesor fizyczny przełącza się z procesu do procesu. Moglibyśmy więc wysnuć taką definicję procesu:

Warto byłoby jeszcze nakreślić dokładnie różnicę między programem a procesem.Łatwo sobie wyobrazić sytuację, w której do komputera są podłączone dwie drukarki i działają dwa procesy odpowiadające za drukowanie na każdej z nich, przy czym są to dwie kopie tego samego programu albo kilka procesów edytora tekstu działających współbieżnie.

Tak więc program jest zbiorem instrukcji. W tym sensie jest tylko elementem procesu, znajdującym się w jego segmencie kodu. Poza tym do wykonania programu potrzebne są dodatkowe zasoby (procesor, pamięć itp.) Program najczęściej nie zmienia się w czasie wykonywania (nie ulega modyfikacji), chyba, że mamy do czynienia z wirusem, gdzie takie działanie programu służy do utrudnienia zrozumienia tego co robi, podczas gdy stan procesu ulega zmianie: zmienia się stan wykonywania programu podobnie jak stan większości zasobów z tym związanych. Zmianie w wyniku wykonywania procesu ulega np. segment danych, segment stosu, stan rejestrów procesora itp. Procesem jest więc cały ten kontekst niezbędny do wykonania programu, czyli stan wcześniej opisanego wirtualnego CPU. Są to podane w definicji powyżej dane systemowe, dookreślmy teraz dokładnie co się w pod tym pojęciem kryje na przykładzie systemów uniksopodobnych :

Kwestia tego, czy system operacyjny faktycznie będzie trzymać w pamięci dwie kopie kodu programu jest już zupełnie inna i jest związana z zagadnieniami teorii budowy systemów operacyjnych.