Naprej Nazaj Kazalo

7. Kako zmore računalnik opravljati več stvari naenkrat?

Saj jih v resnici ne. Računalnik lahko obenem opravlja le eno opravilo (ali proces) naenkrat. Pač pa lahko računalnik izjemno hitro preklaplja med opravili, tako da mnogo počasnejšim ljudem ustvari privid hkratnega izvajanja. Temu pravimo tudi sistem z dodeljevanjem časa.

Eno od opravil jedra je tudi dodeljevanje procesorskega časa procesom. Ta del jedra se imenuje razporejevalnik opravil (angl. scheduler), in v sebi hrani vse potrebne podatke za vse uporabniške procese v zverinjaku. Vsako stotinko sekunde se v jedru sproži prekinitev; prestreže jo razporejevalnik in začasno ustavi proces, ki trenutno teče, ter požene naslednji proces s seznama.

Stotinka sekunde se morda ne sliši dosti, vendar pa današnji mikroprocesorji v tem času izvedejo na tisoče strojnih ukazov, ki lahko postorijo kar nekaj. Tako da, tudi če obenem teče veliko procesov, lahko vsak od njih vseeno opravi kar nekaj v dodeljenem mu času.

V praksi program ni vedno deležen vsega razpoložljivega časa. Če med izvajanjem prispe zahtevek za prekinitev, jedro ustavi trenutno opravilo in požene prekinitveni servisni program. Šele ko ta opravi svoje, se začne tekoče opravilo spet izvajati. Plaz prekinitev visoke pomembnosti lahko tako povsem zaustavi normalno obdelavo -- na srečo pa pri sodobnih Unixih redko pride do tega.

Hitrost, s katero se program izvaja, je v resnici zelo redko omejena s procesorskim časom, ki mu je na voljo (izjema so seveda računsko intenzivne operacije, denimo generiranje zvoka ali tridimenionalne grafike). Dosti pogosteje so zastoji pogojeni s tem, da program čaka na podatke z diska ali omrežja.

Operacijski sistem, ki podpira več hkratnih procesov imenujemo večopravilni sistem. Družina operacijskih sistemov Unix je bila zasnovana z mislijo na večopravilnost in je v tem pogledu zelo dobra -- dosti bolj učinkovita kot Windows ali Mac OS, pri katerih so večopravilnost dodali pozneje, in je izvedena slabše. Učinkovita in zanesljiva večopravilnost je v veliki meri zaslužna za uspeh Linuxa kot omrežnega strežnika.


Naprej Nazaj Kazalo