Procesi so paralelni, če obstojajo istočasno. Paralelni procesi so lahko drug od drugega neodvisni, lahko pa so asinhroni, kar pomeni, da zahtevajo občasno sinhronizacijo in sodelovanje. Interakcija asinhronih programov je včasih zelo kompleksna.
Pri obravnavi paralelnih procesov zasledimo vrsto zanimivih pojavov in pred programerjem takih (programskih) procesov se pojavijo dodatni problemi, na kakršne ni naletel niti pri zelo kompliciranih klasičnih programskih sistemih.
Tako si lahko posamezni programi med seboj konkurirajo za sredstva (resources), ki so v njihovem "delovnem" okolju na voljo. Pravimo, da so taki procesi konkurenčni. Preprost zgled za tako konkurenčnost so na primer sočasne zahteve po dostopu do diska v mnogouporabniškem računalniškem sistemu.
Pogosto se pojavi potreba po medsebojni časovni koordinaciji posameznih paralelnih procesov. In ne nazadnje, Posamezni procesi se morajo pogosto med seboj pogovarjati. Govorimo o medprocesni koordinaciji in komunikaciji.
Prav zaradi konkurenčnosti procesov in tudi potreb po nihovi medsebojni
sinhronizaciji moramo uvesti pojem stanja procesa.
Zaenkrat omenimo le, da je proces, ki mora čakati na nek drug proces, na
sprostitev nekega sredstva (resource) ali na nek dogodek, v blokiranem
stanju. Poenostavljeno naj velja, da je proces, ki ni blokiran, tekoč.
V resnici so pri gradnji posameznih operacijskih sistemov uvedli še vec
procesnih stanj. Splošen koncept prehajanja med procesnimi stanji prikazuje
naslednja slika.
Konkreten primer: Stanja procesov pri sistemu UNIX