U računarstvu, proces je instanca računarskog programa koja se izvršava u jednoj ili više niti. Sadrži programski kod i svu njegovu aktivnost. Ovisno o operativnom sistemu (OS), proces se može sastojati od više niti koji istovremeno izvršavaju zadatke.[1][2] Dok je računarski program pasivni skup instrukcija, proces je taj koji vrši stvarno izvršavanje tih instrukcija.
Multitasking je metoda koja omogućava višestrukim procesima da dijele procesor druge sistemske resurse. Svaka procesorska jezgra izvršava jedan zadatak u isto vrijeme. Multitasking dozvoljava svakom procesoru da se prebacuje između zadataka koji se izvršavaju bez čekanja na završetak svakog zadatka. Ovisno od operativnog sistema, prebacivanja se mogu izvesti kada zadaci izvode operacije ulaza/izlaza, kada zadatak pokazuje da se može prebaciti, ili na hardversko upravljanje prekidom.
Memorija (obično neka oblast virtualne memorije); koja uključuje izvršni kod, podatke specifične za proces (ulaz i izlaz), praćenje aktivnih podrutina i/ili drugih događaja)
Sistemski opis resursa koji su dodijeljeni procesu, kao što su deskriptori datoteka (Unix terminologija) ili handles (Windows), te izvori podataka i odvodi.
Sigurnosni atributi, kao što su vlasnik procesa i skup dozvola za rad (dozvoljene operacije).
Stanje procesora, kao što je sadržaj registara i adresiranje fizičke memorije.
Multitasking operativni sistem može se samo prebacivati između procesa kako bi djelovao kao da ih izvršava istovremeno (to jest, paralelno), iako praktično samo jedan proces može biti izvršen u bilo kojem trenutku na jednom CPU-u (osim ako CPU ima više jezgara), onda se mogu koristiti višenitne (multithreading) ili druge slične tehnologije).
Kernel operativnog sistema koji omogućava multitasking zahtjeva procese da imaju određena stanja. Imena za ova stanja nisu standardizirana, ali imaju sličnu funkcionalnost.[1]
Prvo, proces je "stvoren" tako što se učitava iz neke vrste uređaja za pohranu (hard disk, CD-ROM, itd.) u glavnu memoriju. Nakon toga procesni planer (eng. scheduler) mu dodjeljuje stanje "čekanja".
Dok proces "čeka", on očekuje od planera da uradi takozvani <i>context switch</i> i učita proces u procesor. Stanje procesa tada postaje "pokrenut", a procesor izvršava procesne instrukcije.
Ako proces treba da čeka na resurs (na primjer da sačeka korisnički unos), dodjeljuje se "blokirano" stanje. Stanje procesa se mijenja natrag na "čekanje" kada proces više ne treba čekati (u blokiranom stanju).
Kada proces izvrši svoj zadatak, ili ga sam operativni sistem završi, više nije potreban. Proces se trenutno uklanja ili se premješta u stanje "prekinuto". Kada se ukloni, on se čeka da bude uklonjen iz glavne memorije.[1][3]