osnovni pojmi uporabimo definicijo ki pravi da je programski proces pravzaprav odvijanje nekega programa skupaj z okoljem ki je za to odvijanje potrebno v to okolje sodijo predvsem potrebne programske strukture kot je njegova koda podatkovne strukture in sklad v to okolje sodijo tudi vsi ostala potrebna sredstva resources tako potrebujemo za omenjene programske strukture zadostno kolicino pomnilnika dostop do perifernih naprav itd procesi so paralelni ce obstojajo istocasno paralelni procesi so lahko drug od drugega neodvisni lahko pa so asinhroni kar pomeni da zahtevajo obcasno sinhronizacijo in sodelovanje interakcija asinhronih programov je vcasih zelo kompleksna pri obravnavi paralelnih procesov zasledimo vrsto zanimivih pojavov in pred programerjem takih programskih procesov se pojavijo dodatni problemi na kakrsne ni naletel niti pri zelo kompliciranih klasicnih 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 konkurencni preprost zgled za tako konkurencnost so na primer socasne zahteve po dostopu do diska v mnogouporabniskem racunalniskem sistemu pogosto se pojavi potreba po medsebojni casovni koordinaciji posameznih paralelnih procesov in ne nazadnje posamezni procesi se morajo pogosto med seboj pogovarjati govorimo o medprocesni koordinaciji in komunikaciji prav zaradi konkurencnosti procesov in tudi potreb po nihovi medsebojni sinhronizaciji moramo uvesti pojem stanja procesa zaenkrat omenimo le da je proces ki mora cakati 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 tekoc v resnici so pri gradnji posameznih operacijskih sistemov uvedli se vec procesnih stanj v nadaljevanju bomo spoznavali razlicne pristope ki pomagajo resevati problematiko paralelnih procesov pri tem nam bodo kot rdeca nit sluzili nekateri tipicni problemi