Kur duhet bërë skedulimi i proceseve?

Me të drejte mund të shtrohet pyetja se në cilat momente duhet bë rë skedulimi. Janë disa situata kur duhen marrë vendime skedulimi.
Së pari, kur një proçes krijohet merret një vendim skedulimi, duhet të ekzekutohet proçesi fëmijë apo duhet të vazhdojë ekzekutimin proçesi i ri. Përderisa të dy proçeset janë në gjendjen gati për ekzekutim, është normale që nuk është problem nëse mund të zgjidhet një ri nga këto dy proçese apo tjetri.
Një vendim skedulimi merret gjithashtu në momentin kur një proçes përfundon. Ky proçes nuk mund të ekzekutohet më, kështu që duhet zgjedhe një tjetër proçes për tu ekzekutuar. Ky proçes do merret natyrisht nga rradha e proçeseve që janë në gjendjen gati për ekzekutim. Nqs asnjë proçes nuk është në gjendje të tille, atëherë nis ekzekutimin një proçes i sistemit i tillë për këtë moment.
Moment tjetër skedulimi është kur një proçes është bllokuar në pritje të një paisjeje I/O, ose në një semafor. Në këtë moment duhet zgjedhë për ekzekutim një tjetër proçes.

Shpesh arsyeja e bllokimit të një proçesi A është se ai pret të marrë të dhëna nga një proçes B. Për këtë një vendim i mire do ishte që pas bllokimit të proçesit A të niste ekzekutimin pikërisht proçesi B. Mirëpo problemi është se skeduluesi nuk ka një informacion për këtë.

Një moment i katërt është kur ndodh një interrupt për I/O. Nqs interrupt ndodh vjen nga një paisje I/O e cila ka përfunduar punën, atëherë rinis proçesi i cili më parë duhet të jetë bllokuar nga kjo paisje dhe që tani është në gjendjen gati për ekzekutim. Është në dorë të skeduluesit të vendosë për të nisë punën pikërisht ky proçes, apo të zgjedhe për ekzekutim një tjetër proçes nga radha e proçeseve të gatshme.

Algoritmet e skedulimit ndahen në dy kategori. Një algoritëm quhet nonpreemptive nëse merr një proçes për ekzekutim dhe e lejon të vazhdoje derisa të bllokohet (duke kërkuar të dhëna nga ne paisje I/O) ose derisa të lëshojë vete kontrollin e CPU-se. Ky algoritëm nuk do ndaloje një proçes edhe sikur ai të jetë duke u ekzekutuar për orë të tera. Asnjë vendim skedulimi nuk merret në mes të një clock interrupt-t. Pasi është kryer një clock interrupt, gjithmonë rinis proçesi që po ekzekutohej para se të behej kjo interrupt.

Një algoritëm është preemptive kur proçesi lejohet të ekzekutohet në një interval kohe i fiksuar. Nqs në fund të këtij intervali proçesi është ende duke u ekzekutuar, atëherë ai ndërpritet nga skeduluesi dhe zgjidhet një tjetër proçes për të nise ekzekutimin. Kur kryhet një clock interrupt kontrolli i kalon CPU-se dhe skeduluesit. Nqs nuk ka një clock atëherë skedulimi sipas një algoritmi nonpreeptive.

Bazuar në librin Modern Operating Systems, me autor A.Tanenbaum

Exit mobile version