Multitegumtöö

Multiprogrammeerimine

Informaatika algusaegadel oli protsessoriaeg kallis ja kõiksugused arvuti lisaseadmed üldjuhul aeglased. Kui arvuti käitas programmi, millel oli tarvis juurdepääsu lisaseadmele, pidi keskprotsessor käskude täitmise seniks lõpetama, kuni lisaseadmed andmeid töötlesid.
Esimene multiprogrammi süsteemiga arvuti oli J. Lyons and Co. Leo III. Mitu programmi laeti korraga arvuti mällu ja üks neist lasti käima. Ühe programmi kontekst salvestati mällu, kui programm jäi ootama mõne välise seadme järele, ning mälus olevatest programmides järgmine lasti käima.
Multiprogrammi süsteemi populariseerumisele aitas oluliselt kaasa virtuaalmälu ja -masinate laiem levik.

Kooperatiivne multitegumtöö

Varajased multitegumtöö süsteemid kasutasid rakendusi, mis jagasid vabalt ressursse teiste rakendustega. Tänapäeval ei leia see meetod enam väga palju kasutust, ent sellel põhimõttel toimisid nii Windows 95 kui ka Mac OS.
Kooperatiivne multitegumtöö toimib põhimõttel, et käimasolev protsess on valmis ja võimeline korrapäraselt teistele programmidele ressursse loovutama. Süsteemi kokkujooksmiseks piisab ühest ainsast halvasti kirjutatud programmist, mis tarbib ära kogu keskprotsessori võimsuse.

Eelisasendus

Eelisasendus, ka tõrjuv multitegumtöötlus, on multitegumtöö vorm, kus operatsioonisüsteem lubab igale protsessile lõpliku aja selle täitmiseks. Kui protsessi ei suudetud selle ettenähtud ajaga täita, pannakse see ootele, kuni tähtsam tegum on lõpetanud. Plaanur tegeleb protsesside järjestamisega ning arvutusaja jagamisega. Sellises süsteemis saab protsesse jaotada kaheks: esiteks protsessid, mis ootavad sisendit või väljundit, st nende täitmise kiirust piirab sisend või väljund, teiseks protsessid, mis kasutavad protsessorit, nende täitmiskiirus on piiratud arvutusvõimsusega. Näiteks lihtsamates süsteemides, kui protsess ootab mingit sisendit (nt kõvakettalt andmeid või klaviatuurilt klahvivajutusi), siis peab kogu süsteem selle taga ootama ning taustal ei ole võimalik protsessori jõudlust kasutada. Näiteks kasutades eelisasendust, on võimalik sisendi-väljundi protsess (protsess nr 1) katkestada ning anda protsessor mõne teise protsessi (protsess nr 2) käsutusse. Kui näiteks sisendist saadakse andmeid, siis katkestatakse protsess nr 2 ning jätkatakse protsessi nr 1 täitmisega.

Multitegumtöö reaalajasüsteemis

Sarnaselt eelisasendusega antakse igale tegumile piiratud aeg, mille jooksul peab tegumi töö tehtud saama. Ajastust haldab protsessor. Kui aeg on täis, katkestatakse protsess ning liigutakse tähtsuselt järgmise juurde. Süsteemi hierarhia peab tagama olulisematele protsessidele suurema osa arvutusvõimsusest.

Lõimtöötlus

Lõimtöötlus (inglise multithreading) on ühe programmi eri protsesside jaotamine eri tuumade või protsessorite vahel (näiteks üks protsess kogub andmeid, teine analüüsib neid andmeid, kolmas kirjutab saadud tulemused kõvakettale). Lõimed on efektiivsed, sest nendes töötavad programmiosad kasutavad sama aadressiruumi.
Mõned süsteemid toetavad lõimtöötlust riistvara tasandil.

Mälukaitse

Multitegumtöös on vajalik ressursside pidev ümberjaotamine, mälukaitse hoolitseb turvalise ja efektiivse mäluruumi haldamise eest nii, et seal ei tekiks viga ega kirjutataks mõne teise programmi infot üle.
Halvasti toimiv mälukaitse on potentsiaalne turvaoht, mälukaitse peab keelama selleks mitte ette nähtu programmidel delikaatsete andmete mälust lugemise, nt paroolide.
Üldiselt tegeleb mälukaitsega kernel.