Mikä on moniohjelmointi?

Moniohjelmointi on yksi perustyypeistä rinnakkaisprosessoinnista, jota voidaan käyttää monissa eri ympäristöissä. Pohjimmiltaan se mahdollistaa useiden ohjelmien aktiivisuuden samanaikaisesti samalla, kun ne kulkevat yhden prosessorin läpi. Sen toiminnallisuus tässä ympäristössä edellyttää jatkuvaa yhden ohjelman toimintoon liittyvien tehtävien suorittamista peräkkäin ja sitten seuraavaan ohjelmaan liittyvän tehtävän suorittamista.

Tämäntyyppinen käsittely eroaa suuresti moniprosessoinnista, koska vaikka aktiivisia ohjelmia voi olla useita, yksisuoritin ei suorita samanaikaisesti komentoja kaikille ohjelmille. Sen sijaan prosessori osoittaa jokaisen ohjelman, suorittaa yhden komennon ja siirtyy sitten jonon seuraavaan ohjelmaan. Edellinen ohjelma pysyy aktiivisena, mutta siirtyy passiiviseen tilaan, kunnes prosessori palaa jonon eteen ja suorittaa toisen komennon.

Loppukäyttäjän kannalta prosessi on saumaton. Todellisen toiminnallisuuden osalta käyttäjä näyttää käyttävän useita eri sovelluksia samanaikaisesti. Tämä johtuu siitä, että moniohjelmointi käyttää yksiprosessoria suorittamaan komennot nopeasti. Lopputuloksena on, että käyttäjä huomioi vain vähän tai ei ollenkaan viiveaikaa pienentäessään yhtä sovellusta suorittaakseen eri sovellukseen liittyvän tehtävän.

Moniohjelmoinnin mekanismi tunnetaan keskeytyksenä. Jokaiselle tehtävälle annetaan tietty määrä aikaa käsittelyyn, ennen kuin käyttöjärjestelmät siirtyvät seuraavaan ohjelmaan ja seuraavaan tehtävään. Tietyssä mielessä tämä menetelmä koskee useiden tehtävien samanaikaista jongleeraamista, yhden tarvittavan toiminnon suorittamista nopeasti ja siirtymistä tekemään jotain eri tehtävää ennen paluuta entiseen työhön.

Muisti on tärkeä, jotta tämä käsittelymuoto toimii oikein. Kapasiteettia on oltava riittävästi sen varmistamiseksi, että jos yksi ohjelma kiertävässä jonossa kohtaa ongelman, se ei estä viivästyksiä tai vaikuta muiden avoimien sovellusten toimintaan. Samaan aikaan jonkinlainen muistisuojaus on oltava käytössä. Jos näin ei ole, yhden sovelluksen ongelma voi luoda porrastetun vaikutuksen, joka sulkee tai ainakin hidastaa muita avoimia sovelluksia.