Yhteistyöllinen moniajo:
1. Tehtävän tuotto: Yhteistoiminnallisessa moniajossa tehtävät luovuttavat vapaaehtoisesti prosessorin hallinnan muille tehtäville. Tämä saavutetaan ohjelmointikielen "tuotto"-lauseella tai vastaavalla mekanismilla.
2. Työtehtävien yhteistyöhön luottaminen: Jokainen tehtävä on vastuussa suorittimen hallinnan nimenomaisesta luopumisesta muiden tehtävien suorittamiseksi. Jos tehtävä ei anna hallintaa, koko järjestelmä saattaa jumittua tai lakata vastaamasta.
3. Ei prioriteettipohjaista ajoitusta: Koska tehtävät tekevät yhteistyötä ja päättävät, milloin luovuttavat, ei ole olemassa käsitettä prioriteettipohjaisesta ajoituksesta. Kaikilla tehtävillä on yhtäläinen prioriteetti, ja suoritusjärjestys riippuu yksinomaan kunkin tehtävän myöntyvästä käyttäytymisestä.
4. Yksinkertaisuus: Yhteistyöllinen moniajo on suhteellisen yksinkertainen toteuttaa ennaltaehkäisevään moniajoon verrattuna. Se ei vaadi ajoitusmekanismia tai kehittyneitä algoritmeja tehtävien hallintaan.
5. Yleinen varhaisissa käyttöjärjestelmissä: Yhteistyötä moniajoa käytettiin yleisesti varhaisissa käyttöjärjestelmissä, joissa yksinkertaisuus oli etusijalla suorituskyvyn tai monimutkaisten työkuormien käsittelyn edelle.
Ennaltaehkäisevä moniajo:
1. Tehtävien ajoituksen käyttöjärjestelmän hallinta: Ennaltaehkäisevässä moniajossa käyttöjärjestelmä (OS) hallitsee tehtävien ajoitusta ja päättää, milloin tehtäviä vaihdetaan. Käyttöjärjestelmä ennaltaehkäisee tehtävät, jotka ovat olleet käynnissä ennalta määrätyn ajan, ja antaa muille tehtäville mahdollisuuden suorittaa.
2. Prioriteettipohjainen ajoitus: Ennaltaehkäisevä moniajo mahdollistaa prioriteettipohjaisen ajoituksen, mikä tarkoittaa, että korkeamman prioriteetin tehtävät ovat etusijalla alemman prioriteetin tehtäviin nähden. Tämä varmistaa paremman resurssien allokoinnin ja reagoivuuden aikakriittisiin tehtäviin.
3. Pakotettu kontekstin vaihto: Käyttöjärjestelmä voi väkisin keskeyttää tehtävän suorittamisen ja tallentaa sen tilan muistiin. Kun tehtävä jatkuu, sen entinen tila palautetaan, mikä varmistaa jatkuvuuden ja eheyden.
4. Parempi suorituskyky: Ennaltaehkäisevä moniajo tarjoaa tehokkaamman ja ennakoitavamman tehtävien ajoituksen, mikä parantaa järjestelmän yleistä suorituskykyä ja reagointikykyä.
5. Monimutkaisuus: Ennaltaehkäisevä moniajo sisältää monimutkaisempia algoritmeja ja mekanismeja ajoitukseen, kontekstin vaihtamiseen ja tehtävätilojen hallintaan, mikä tekee sen toteuttamisesta haastavampaa.
Yhteenvetona voidaan todeta, että yhteistoiminnallinen moniajo perustuu vapaaehtoiseen tehtävien tuottamiseen, ja tehtävillä on yhtäläinen prioriteetti eikä käyttöjärjestelmä voi hallita aikataulutusta. Se on yksinkertaisempi toteuttaa, mutta se voi johtaa järjestelmän jumittumiseen, jos tehtävät eivät toimi yhteistyössä. Ennaltaehkäisevä moniajo puolestaan tarjoaa paremman käyttöjärjestelmän hallinnan, mahdollistaa prioriteettipohjaisen ajoituksen ja varmistaa ennustettavan tehtävien suorittamisen. Se on tehokkaampi ja sopii nykyaikaisiin laskentaympäristöihin, jotka vaativat korkeaa suorituskykyä ja reagointikykyä.