Moniajo

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 käynnissä.

Moniajo (engl. multitasking) on tietokoneen käyttöjärjestelmän ominaisuus, joka mahdollistaa usean ohjelman ajamisen samanaikaisesti.

Jos tietokoneessa on vain yksi suoritin, moniajo toteutetaan jakamalla suorittimelle tehtäviä nopeasti vaihdellen (näennäisesti rinnakkain), kun taas monisuoritintietokoneessa tehtävät jaetaan usean suorittimen kesken ja voidaan suorittaa aidosti rinnakkaisesti (moniprosessointi).[1][2][3] Tehtävät voivat olla eri prosesseissa tai eri säikeissä: prosessi on suoritettava ohjelma ja säiettä kutsutaan toisinaan kevyeksi prosessiksi, joka ei vaadi osoitevaruuden vaihtoa.[1][4]

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.

Vähemmän eksaktissa kielenkäytössä käytetään moniajo-termiä myös kuvaamaan sellaista käyttöliittymää, jossa käyttäjä voi vaihtaa "lennossa" usean sovelluksen välillä. Erityisesti termiä käytetään silloin, kun tällaista mahdollisuutta ei ole, ja todetaan virheellisesti, että moniajo puuttuu.

  1. a b Arpaci-Dusseau, Remzi H. & Arpaci-Dusseau, Andrea C.: The Abstraction: The Process (PDF) pages.cs.wisc.edu. Viitattu 1.3.2020. (englanniksi)
  2. Viittausvirhe: Virheellinen <ref>-elementti;viitettä oscpumulti ei löytynyt
  3. Arpaci-Dusseau, Remzi H. & Arpaci-Dusseau, Andrea C.: Scheduling: Introduction (PDF) pages.cs.wisc.edu. Viitattu 1.3.2020. (englanniksi)
  4. Nikita Ishkov: A complete guide to Linux process scheduling (PDF) trepo.tuni.fi. 2015. Viitattu 1.3.2020. (englanniksi)

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne