Mis on multiprogrammeerimine?

Multiprogrammeerimine on üks põhilisemaid paralleeltöötluse liike, mida saab kasutada paljudes erinevates keskkondades. Põhimõtteliselt võimaldab see mitmel programmil korraga olla aktiivne, töötades samal ajal ühe protsessori kaudu. Selle funktsionaalsus selles keskkonnas hõlmab pidevat protsessi, mille käigus täidetakse järjestikku ühe programmi funktsiooniga seotud ülesandeid, seejärel liigutakse edasi järgmise programmiga seotud ülesande käitamiseks.

Seda tüüpi töötlemine erineb oluliselt multitöötlusest, sest kuigi praegu võib olla mitu aktiivset programmi, ei täida uniprotsessor üheaegselt kõigi programmide käske. Selle asemel adresseerib protsessor iga programmi, täidab ühe käsu ja liigub seejärel järjekorras järgmise programmi juurde. Eelmine programm jääb aktiivseks, kuid läheb passiivsesse olekusse, kuni üheprotsessor naaseb järjekorra ette ja täidab teise käsu.

Lõppkasutaja seisukohast on protsess tõrgeteta. Mis puudutab tegelikku funktsionaalsust, siis näib, et kasutaja kasutab korraga mitut erinevat rakendust. Selle põhjuseks on asjaolu, et multiprogrammeerimine kasutab käskude kiireks täitmiseks üheprotsessorit. Lõpptulemus on see, et kasutaja märkab vähe või üldse mitte viivitust, kui minimeerib ühe rakenduse, et täita mõne teise rakendusega seotud ülesannet.

Multiprogrammeerimise mehhanismi nimetatakse katkestuseks. Igale ülesandele antakse töötlemiseks konkreetne aeg, enne kui operatsioonisüsteemid liiguvad järgmise programmi ja järgmise ülesande juurde. Teatud mõttes tähendab see meetod mitme ülesande korraga žongleerimist, ühe vajaliku toimingu kiiret sooritamist, seejärel liikumist, et teha midagi teistsuguse ülesandega enne endisele töökohale naasmist.

Mälu on selle töötlemisviisi korrektseks toimimiseks oluline. Peab olema piisavalt mahtu tagamaks, et kui ühes pöörlevas järjekorras olevas programmis tekib probleem, ei hoia see ära viivitusi ega mõjuta teiste avatud rakenduste tööd. Samal ajal peaks olema teatud tüüpi mälukaitse. Kui see nii ei ole, võib ühe rakenduse probleem tekitada kaskaadefekti, mis lülitab välja või vähemalt aeglustab teisi avatud rakendusi.