Moniajo

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun
Tämä artikkeli liittyy tietotekniikkaan. Moniajo voi viitata myös rautatieliikenteessä käytettyyn monivetoon.


Linux Mint, Xfce, Firefox, laskuohjelma, kalenteri, Vim, GIMP ja VLC media player yhtäaikaisesti päällä.

Moniajo on tietokoneen käyttöjärjestelmän ominaisuus, joka mahdollistaa näennäisesti usean ohjelman ajamisen samanaikaisesti. Jos tietokoneessa on vain yksi suoritin, moniajo toteutetaan jakamalla suorittimelle eri prosessien tehtäviä nopeasti vaihdellen. Todellisessa monisuoritintietokoneessa prosessien tehtävät jaetaan usean suorittimen kesken.

Ensimmäiset moniajojärjestelmät tulivat markkinoille 1960-luvulla. Ensimmäiset moniajoa tukevat käyttöjärjestelmät olivat Multics ja OS/360MFT.

Nykyaikaisempia moniajon toimintamalleja ovat ennakoiva moniajo, irrottava moniajo ja keskeyttävä moniajo (engl. pre-emptive), jossa käyttöjärjestelmän osa tai prosessi nimeltä vuorontaja ("skeduleri", engl. scheduler) irrottaa ajossa olevan prosessin suorittimesta, valitsee uuden suoritettavan prosessin valmiustilassa olevien joukosta, antaa suorittimen sen hallintaan ja määrittelee sen saaman aikaviipaleen (engl. time slice). Näin vältetään yhteistyömoniajossa oleva ongelma, että yksi huonosti käyttäytyvä ohjelma voi varastaa koneen koko laskentatehon. Vuoronvaihto (engl. Context switch) tarkoittaa suorituksessa olevan ohjelman tilan säilömistä toisen ohjelman suorituksen ajaksi: tämä tarkoittaa suorittimen rekisterien arvojen säilömistä muistipinoon.

Suoritukseen annettava aikaviipale voi perustua useisiin eri tekijöihin kuten prosessin prioriteettiin sekä järjestelmän kokonaiskuormitukseen. Odottavalle säikeelle tai ohjelmalle voidaan antaa enemmän suoritusaikaa jotta se vapautuu tilanteestaan mahdollisimman nopeasti ja koska se voi luovuttaa (engl. yield) ajoaikansa mikäli odottaminen jatkuu.

Moniajo usein hyödyntää laitteiston keskeytyksiä vuoronvaihtoon, jolloin käyttöjärjestelmälle annetaan vuoro tarvittaessa tai ajoitetusti.

Irrottava/ennakoiva/keskeyttävä moniajo[muokkaa | muokkaa wikitekstiä]

Irrottavaa, ennakoivaa tai keskeyttävää (engl. pre-emptive) moniajoa käyttävät useimmat oikeaa moniajoa tukevat järjestelmät.[1][2][3]

Tämän tyyppistä monia käyttävät Unix-tyyppiset käyttöjärjestelmät, mukaan lukien BSD-versiot ja Linux.

Mikrotietokoneissa tämän tyyppistä moniajoa ovat käyttäneet muun muassa AmigaOS Amiga-tietokoneissa (julkaistu 1985).[4]

Myös TRIPOS on käyttänyt irrottavaa moniajoa. IBM siirtyi OS/2:n Warp-versiossa tukemaan ennakoivaa moniajoa.[3]

Yhteistyömoniajo[muokkaa | muokkaa wikitekstiä]

Yhteistyömoniajo (engl. Cooperative multitasking, Non-preemptive multitasking) missä ohjelmat vapaaehtoisesti jakoivat suoritinaikaa toisille ohjelmille oli käytössä mm. RISC OS-käyttöjärjestelmässä, Windows 95 -käyttöjärjestelmää edeltävät Windows-käyttöjärjestelmät ja macOS -käyttöjärjestelmää edeltävät Mac OS -järjestelmät. Microsoft siirtyi ennakoivaan moniajoon Windows NT:ssä ja Apple OS X:ssä (BSD-ydin).

OS/2 oli osittain ennakoivaa moniajoa tukeva (Warp-versiot)[3], mutta osin rajattu yhteistyömoniajoon varhaisissa versioissa.

Aikajakava[muokkaa | muokkaa wikitekstiä]

Aikajakava (engl. time sharing) yhdistää moniohjelmointia ja moniajoa.

Aikajakamista käytettiin tietokonejärjestelmissä kuten PDP-10 ja S/360.

Moniohjelmointi[muokkaa | muokkaa wikitekstiä]

Varhaisissa tietokonejärjestelmissä oli niin kutsuttua moniohjelmointikäsittelyä(engl. multiprogramming).

Näissä tietokone suorittaa yhtä ohjelmaa kunnes ohjelma pysähtyy odottamaan esimerkiksi laite-IO:ta ja vaihtaa silloin suoritettavaa ohjelmaa.

Reaaliaikainen[muokkaa | muokkaa wikitekstiä]

Reaaliaikainen käyttöjärjestelmä perustuu takeeseen vasteajan noudattamisesta. Tämän tyyppinen moniajo voi erota teknisesti merkittävästikin, jotta aikarajattu toiminta (engl. deadline) ei ylity missään tilanteessa.

Reaaliaikaisia käyttöjärjestelmiä ovat muun muassa QNX ja VxWorks.

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. [www.cs.tut.fi/etaopetus/titepk/luku15/moniajo.html Moniajo] Viitattu 2.3.2017.
  2. Fagerlund, Kai: https://www.theseus.fi/bitstream/handle/10024/10317/TMP.objres.570.pdf?sequence=2 Viitattu 2.3.2017.
  3. a b c OS/2 Warp versio 3 IBM. Viitattu 2.3.2017.
  4. The Micro-AmigaOne and Amiga OS4 Developer Prerelease (Update 1) Ars Technica. Viitattu 28.2.2017.