Sistema eragilea

Sistema eragilea, ordenagailu batek duen programarik garrantzitsuena da. Guztiz espezializatuak diren ordenagailu txikiek izan ezik, esate  baterako etxe-tresna elektrikoak kontrolatzen dituztenek salbu, ordenagailu guztiek izan behar dute sistema eragilea.

Esplotazio-arazoak eta hasierako konponbideak

Lehen konputagailuen arazo nagusia erabilera txikia zen, lehen irtenbidea hura maneiatuko zuen operadore profesional bat jartzea izan zen, eta, beraz, erreserba-orriak ezabatu, denbora aurreztu eta abiadura handitu zen. Horretarako, lanak eskuz multzokatzen ziren lotetan, automatizatu gabeko lotekako prozesamendua (batch processing) izenaz ezagutzen denaren bidez.

Monitore egoiliarrak

Programen konplexutasunak aurrera egin ahala, atazen antolaketa operadore baten beharrik gabe automatizatzeko irtenbideak ezarri behar izan ziren. Hori dela eta, monitore egoiliarrak sortu ziren: memorian bizi ziren programak, eta lan-ilara baten exekuzioa kudeatzen zuten. Monitore egoiliar bat kargadore batez, komando-interprete batez eta sarrera/irteera maneiatzeko kontrolagailu batez (drivers) osatuta zegoen.

S/i aldi baterako biltegiratzea duten sistemak

Hardwarean egindako aurrerapenek etenaldien euskarria sortu zuten, eta, ondoren, soluzio aurreratuago bat lortzeko saiakera bat egin zen: lan baten e/k bere kalkuluekin gain jartzea; beraz, bufer-sistema sortu zen, funtzionamendu honekin:

Programa batek bere irteera memoria eremu batean idazten du (bufer 1).
Monitore egoiliarrak buffer-tik hasten du irteera, eta aplikazio-programak irteera 2. buffer-ean utziz kalkulatzen du.
Buffer 1etik irtetea amaitu egiten da eta kalkulu berria ere bai.
Buffer 2-tik irteten hasten da eta beste kalkulu berri batek bere irteera buffer 1-era bideratzen du.
Prozesua berriro errepika daiteke.

Kalkulu-eragiketak baino kalkulu-eragiketa askoz gehiago badaude arazoak sortzen dira,  (CPUk mugatuta) edo kalkulu-eragiketa baino eragiketa gehiago badaude (e/k mugatuta).

Spoolers

Disko magnetikoa agertzen da, eta errendimendu arazoentzako irtenbide berriak sortzen dira. Gailu moteletako datuak aldez aurretik iraultzeko zinta magnetikoak kentzen dira eta diskoekin ordezten dira (disko batek zinta bat baino gehiago simulatu ditzake). Lan baten kalkuluaren eta beste lan baten e/en arteko gain jartzearen ondorioz, diskoan hainbat zereginetarako taulak sortzen dira, Spool bezala ezagutzen dena (Simultaneous Peripherial Operation On-Line).

Sistema eragile multiprogramatuak

Aurrerapen berri bat sortu da: memoria babesten duen hardwarea, errendimendu-arazoei irtenbide berriak eskainiz:

Lan batzuen kalkulua beste lan batzuen sarrerarekin/irteerarekin gainjartzen da.
Hainbat programa memorian mantendu daitezke.
Memoriako programei PUZaren erabilera esleitzen zaie.
Aurreko aldaketekin, monitore egoiliarrak zeregin berriei ekin behar die, eta programa anitzeko sistema operatiboak sortu behar ditu, funtzio hauekin:

Memoria administratzea.
PUZaren erabilera kudeatzea (plangintza).
E/s gailuen erabilera administratzea.
Zeregin horiek betetzen dituenean, monitore egoiliarra sistema eragile multiprogramatu bihurtzen da.

Sistemarako deiak

So bakoitzak sistemari egiten dizkion deien multzo propioa ezartzen du. Dei multzo hori soaren interfazea da aplikazioen aurrean. Aplikazioek SO-rekin komunikatzeko erabili behar duten hizkuntza osatzen dute. Horregatik, so-z aldatzen badugu eta aurrekoaren gainean lan egiteko diseinatutako programa bat irekitzen badugu, oro har, programak ez du funtzionatuko, salbu eta so berriak interfaze bera badu. Horretarako:

Dei bakoitzak formatu bera izan behar du.
So berrirako dei bakoitzak aurrekoaren emaitza berak eman behar ditu.

PUZ batean gauzatzeko moduak

Aplikazioek ezin dituzte PUZaren jarraibide guztiak erabili. Hala ere, sistema operatiboak PUZaren jarraibide guztiak erabiltzeko aukera izan behar du. Horregatik, PUZ batek (gutxienez) bi eragiketa-modu izan behar ditu:

Erabiltzaile modua: PUZak aplikazioen joko mugatuaren jarraibideak bakarrik exekutatu ahal izango ditu.
Gainbegiratzeko modua: PUZak jarraibide-joko osoa egiteko aukera izan behar du.

Aplikazioak

Aplikazio batek, normalean, ez daki non dagoen deiaren zerbitzu-errutina. Beraz, deia funtzio-dei gisa kodetzen bada, OZn edozein aldaketa eginez gero, aplikazioa berreraiki beharko litzateke.

Baina garrantzitsuena da funtzio-dei batek ez duela aldatzen PUZa gauzatzeko modua. Horrela, zerbitzu-errutinara deitzea lortu behar da, non dagoen jakin behar izan gabe, eta deian PUZaren eragiketa-modua aldaraztea (eta aurreko modua berreskuratzea itzuleran).

Horretarako, zeregin horretarako berariaz diseinatutako makina-jarraibideak erabiltzen dira, funtzio-deietarako erabiltzen direnak ez bezalakoak.

Sistemarako deien interfaze-liburutegiak

Sistemarako deiek ez dute beti adierazpen erraza maila altuko hizkuntzetan; horregatik, interfaze-liburutegiak sortzen dira, sistemarako deiak egiteko erabil daitezkeen funtzio-liburutegiak. Programazio-lengoaia desberdinetarako daude.

Aplikazioak interfaze-liburutegiko funtzio batera deitzen du (dei arrunt baten bidez), eta funtzio horrek egiten dio dei sistemari.

Etenak eta salbuespenak

SAk aplikazio-programen eta hardwarearen arteko tarteko posizioa betetzen du. Ez da hardwarea erabiltzera mugatzen aplikazioek hala eskatzen dutenean; izan ere, egoera batzuetan hardwareak behar du Soren kodea exekutatzea. Egoera horietan, hardwareak sistemara deitzeko aukera izan behar du, eta dei horiek bi baldintzatan egin ahal izango dira:

D/i gailuren batek arreta behar du.
Errore bat gertatu da programaren (normalean aplikazioaren) jarraibide bat exekutatzen saiatzean.
Bi kasuetan, egindako ekintza ez du aplikazio-programak antolatzen, hau da, ez da programan agertzen.

Aurreko bi kasuen arabera, etenaldiak eta salbuespenak ditugu:

Etena: seinale bat da, e/s gailu bat PUZera bidaltzen duena, egiten ari zen eragiketa amaitu dela adierazteko.
Salbuespena: PUZak instrukzio bat exekutatzen ari zela antzemandako errore-egoera bat, SOren tratamendua behar duena.

Etenaldien tratamendua

Etenaldi bat, nolanahi ere, uneko instrukzioaren exekuzioa amaitu ondoren egingo da.

Tratamendua etenaldia eragin duen s/i gailuaren araberakoa da, eta horren aurrean etenaldia eragin duen gailua identifikatzeko aukera izan behar du.

Prozedura horren abantaila da ez dela denborarik galdu behar periferikoaren egoera kontsultatzeko errutinak etengabe exekutatzen. Eragozpena da gailuak behar diren zirkuitu elektronikoak izan behar dituela ordenagailuaren etenaldien sistemara sartzeko.

Etenen garrantzia

Etenaldiak tratatzeko mekanismoari esker, sistema eragileak aplikazio baten zerbitzuan erabil dezake PUZa, eta beste bat, berriz, eragiketa bat e/s-ko gailu batean noiz amaituko zain dago.

Hardwarea soari abisatzeaz arduratzen da e/s gailua amaitu denean eta soak esku har dezakeenean, komeni bada, gailuaren zain zegoen programa exekutatzen jarraitzeko.

Denbora-tarte jakin batzuetan komenigarria izan daiteke eten-seinalerik ez onartzea. Horregatik, etenak programaz inhibitu daitezke (nahiz eta hori ezin duten egin).

Etendura bidezko sinkronismoaren adibide bat teklatuaren bidez sartutako karaktereen biltegiratzea da. Karaktere bat sartzen denean, gailuaren datuen erregistroan kodetzen da, eta, gainera, egoeraren erregistroko bit bat aktibatzen da, hardwarean eten bat sortzen duena. Prozesadoreak aldi baterako uzten du osatzen ari zen ataza, eta dagokion etenaldiko arreta-errutina exekutatzen du. Teklatuak karaktere bat gordetzen du teklatuari lotutako tarteko memoria-bektorean (buffer ere esaten zaio), eta sarrera/irteera eragiketaren itxaronaldian zegoen prozesua pizten du..

Salbuespenak

PUZa gaizki eraikitako instrukzio bat exekutatzen saiatzen denean, kontrol-unitateak salbuespen bat ateratzen du, SOri tratamendu egokia exekutatu ahal izateko. Etenaldi batean ez bezala, abian den instrukzioa abortatu egiten da. Salbuespenak eta etenak identifikatuta egon behar dira.

Salbuespen-motak

Programa baten jarraibideak gaizki eraikita egon daitezke hainbat arrazoirengatik:

Eragiketa-kodea okerra izan daiteke.
Zehaztu gabeko eragiketaren bat egiten saiatzen da, hala nola zero zatituz.
Baliteke instrukzioa baimenduta ez egotea egungo betearazpen-moduan.
Operadoreren baten helbidea okerra izan daiteke, edo erabilera-baimenen bat urratzen saiatu.

Salbuespenen garrantzia

Salbuespenak tratatzeko mekanismoa funtsezkoa da, PUZa gauzatzeko moduekin eta memoria babesteko mekanismoekin batera, aplikazioek onartzen ez zaizkien eragiketak egitea eragozteko. Nolanahi ere, salbuespen baten tratamendu espezifikoa SOk egiten du.

Etenen kasuan bezala, hardwarea kontrola bere horretan uztera mugatzen da, eta hori da egoera behar bezala tratatzen duena.

Nahiko ohikoa da salbuespen baten tratamendua ez itzultzea salbuespena gertatu zenean gauzatzen ari zen programara, baizik eta programak programa hori gauzatzeari ekitea. Faktore hori programatzailearen trebetasunaren araberakoa da, salbuespena behar bezala kontrolatzeko.