Ennaltaehkäisevä ja ei-ennakoiva ajoitus
Tärkeimmät erot ennakoivan ja ei-ennaltaehkäisevän ajoituksen välillä
- Ennakoivassa ajoituksessa CPU allokoidaan prosesseille tietylle ajanjaksolle, ja ei-ennakoiva ajoitus CPU allokoidaan prosessille, kunnes se päättyy.
- Ennakoivassa ajoituksessa tehtävät vaihdetaan prioriteetin perusteella, kun taas ei-ennakoivassa ajoituksessa vaihtoa ei tapahdu.
- Ennaltaehkäisevällä algoritmilla on prosessin vaihtaminen valmiustilasta käynnissä olevaan tilaan, kun taas ei-ennaltaehkäisevällä ajoituksella ei ole tällaista vaihtamisen lisäkustannuksia.
- Ennaltaehkäisevä ajoitus on joustava, kun taas ei-ennaltaehkäisevä ajoitus on jäykkä.

Mikä on ennakoiva ajoitus?
Ennaltaehkäisevä ajoitus on ajoitusmenetelmä, jossa tehtävät jaetaan enimmäkseen niiden prioriteettien mukaan. Joskus on tärkeää suorittaa korkeamman prioriteetin tehtävä ennen toista alhaisemman prioriteetin tehtävää, vaikka alhaisemman prioriteetin tehtävä olisi edelleen käynnissä.
Tuolloin alemman prioriteetin tehtävä on voimassa jonkin aikaa ja jatkuu, kun korkeamman prioriteetin tehtävä on suorittanut loppuun.
Mitä on ennaltaehkäisevä ajoitus?
Tämän tyyppisessä ajoitusmenetelmässä CPU on varattu tietylle prosessille. Prosessi, joka pitää CPU:n kiireisenä, vapauttaa CPU:n joko kontekstia vaihtamalla tai lopettamalla.
Se on ainoa menetelmä, jota voidaan käyttää eri laitteistoalustoilla. Tämä johtuu siitä, että se ei tarvitse erikoislaitteistoa (esimerkiksi ajastinta), kuten ennaltaehkäisevä ajoitus.
Ei-ennaltaehkäisevä ajoitus tapahtuu, kun prosessi siirtyy vapaaehtoisesti odotustilaan tai päättyy.
Ennaltaehkäisevä vs. ei-ennakoiva ajoitus: vertailutaulukko
Tässä on suora vertailu ennaltaehkäisevään ja ei-ennaltaehkäisevään aikatauluun. Tärkeimmät erot ennakoivan ja ei-ennaltaehkäisevän ajoituksen välillä käyttöjärjestelmässä ovat seuraavat:
Ennakoiva ajoitus | Ei ennaltaehkäisevä ajoitus |
---|---|
Prosessori voidaan ennaltaehkäistä suorittamaan eri prosesseja minkä tahansa nykyisen prosessin suorituksen keskellä. | Kun prosessori aloittaa suorituksensa, sen on lopetettava se ennen toisen suorittamista. Sitä ei voi keskeyttää keskellä. |
Suorittimen käyttö on tehokkaampaa verrattuna ennaltaehkäisevään ajoitukseen. | Suorittimen käyttö on vähemmän tehokasta kuin ennaltaehkäisevä ajoitus. |
Ennaltaehkäisevän ajoituksen odotus- ja vasteaika on lyhyempi. | Ei-ennaltaehkäisevän ajoitusmenetelmän odotus- ja vasteaika on korkeampi. |
Ennakoiva ajoitus on etusijalla. Korkeimman prioriteetin prosessi on tällä hetkellä käytössä oleva prosessi. | Kun mikä tahansa prosessi siirtyy käynnissä olevaan tilaan, prosessin tilaa ei koskaan poisteta ajoittimesta ennen kuin se on suorittanut työnsä. |
Ennakoiva ajoitus on joustavaa. | Ei-ennaltaehkäisevä ajoitus on jäykkä. |
Esimerkkejä: – Lyhin jäljellä oleva aika ensin, Round Robin jne. | Esimerkkejä: Ensin saapunut ensin -palvelu, Lyhyin työ ensin, prioriteettiaikataulu jne. |
Ennaltaehkäisevä ajoitusalgoritmi voidaan ennaltaehkäistä, eli prosessi voidaan ajoittaa | Ei-ennakoivassa ajoituksessa prosessia ei voi ajoittaa |
Tässä prosessissa CPU allokoidaan prosesseille tietylle ajanjaksolle. | Tässä prosessissa CPU allokoidaan prosessille, kunnes se päättyy tai siirtyy odotustilaan. |
Ennaltaehkäisevän algoritmin tehtävänä on vaihtaa prosessi valmiustilasta käynnissä olevaan tilaan ja päinvastoin. | Ei-ennaltaehkäisevällä ajoituksella ei ole sellaista ylimääräistä prosessia, joka vaihtaisi prosessin valmiustilaan. |
Ennaltaehkäisevän ajoituksen edut
Tässä ovat ennaltaehkäisevän ajoitusmenetelmän edut/edut:
- Ennaltaehkäisevä ajoitusmenetelmä on vankempi, joten yksi prosessi ei voi monopolisoida prosessoria
- Ajotehtävän valintaa harkitaan uudelleen jokaisen keskeytyksen jälkeen.
- Jokainen tapahtuma aiheuttaa keskeytyksen käynnissä olevien tehtävien suorittamisessa
- Käyttöjärjestelmä varmistaa, että suorittimen käyttö on sama kaikissa käynnissä olevissa prosesseissa.
- Tässä CPU:n käyttö on sama, eli kaikki käynnissä olevat prosessit käyttävät prosessoria tasapuolisesti.
- Tämä ajoitusmenetelmä improvisoi myös keskimääräistä vasteaikaa.
- Ennaltaehkäisevä ajoitus on hyödyllinen, kun käytämme sitä moniohjelmointiympäristössä.
Ei-ennaltaehkäisevän ajoituksen edut
Tässä on ei-ennaltaehkäisevän ajoitusmenetelmän edut/edut:
- Tarjoaa alhaiset aikataulutuskustannukset
- Tarjoaa yleensä korkean suorituskyvyn
- Se on käsitteellisesti hyvin yksinkertainen menetelmä
- Less laskentaresurssien tarve ajoitukseen
Ennaltaehkäisevän ajoituksen haitat
Seuraavat ovat ennakoivan ajoituksen haitat:
- Tarvitsevat rajoitettuja laskentaresursseja ajoitukseen
- Aikatauluttajalta kuluu enemmän aikaa käynnissä olevan tehtävän keskeyttämiseen, kontekstin vaihtamiseen ja uuden saapuvan tehtävän lähettämiseen.
- Prosessin, jolla on matala prioriteetti, on odotettava pidempään, jos korkean prioriteetin prosesseja saapuu jatkuvasti.
Ei-ennaltaehkäisevän ajoituksen haitat
Tässä on ei-ennaltaehkäisevän ajoitusmenetelmän haittoja/haittoja:
- Se voi johtaa nälkään varsinkin niissä reaaliaikaisissa tehtävissä
- Virheet voivat aiheuttaa koneen jäätymisen
- Se voi tehdä reaaliajassa ja prioriteetti ajoitus vaikea
- Huono vasteaika prosesseille
Esimerkki ei-ennakoivasta ajoituksesta
Ei-ennaltaehkäisevässä SJF-ajoituksessa, kun CPU-jakso on varattu prosessiin, prosessi pitää sitä, kunnes se saavuttaa odotustilan tai lopetetaan.
Harkitse seuraavia viittä prosessia, joilla kullakin on oma ainutlaatuinen purskeaikansa ja saapumisaikansa.
Prosessin jono | Räjähdysaika | Saapumisaika |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Vaihe 0) Ajankohtana = 0, P4 saapuu ja aloittaa suorituksen.
Vaihe 1) Ajankohtana = 1, prosessi P3 saapuu. Mutta P4 tarvitsee vielä 2 suoritusyksikköä suorittaakseen loppuun. Se jatkaa täytäntöönpanoa.
Vaihe 2) Ajankohtana =2 prosessi P1 saapuu ja lisätään odotusjonoon. P4 jatkaa suoritusta.
Vaihe 3) Ajankohtana = 3 prosessi P4 lopettaa suorituksensa. P3:n ja P1:n purskeaikoja verrataan. Prosessi P1 suoritetaan, koska sen purskeaika on lyhyempi verrattuna P3:een.
Vaihe 4) Ajankohtana = 4, prosessi P5 saapuu ja lisätään odotusjonoon. P1 jatkaa suoritusta.
Vaihe 5) Ajankohtana = 5, prosessi P2 saapuu ja lisätään odotusjonoon. P1 jatkaa suoritusta.
Vaihe 6) Ajankohtana = 9, prosessi P1 lopettaa suorituksensa. P3:n, P5:n ja P2:n purskeaikoja verrataan. Prosessi P2 suoritetaan, koska sen purskeaika on pienin.
Vaihe 7) Ajankohtana = 10, P2 suorittaa, ja P3 ja P5 ovat odotusjonossa.
Vaihe 8) Ajankohtana = 11, prosessi P2 päättää suorituksensa. P3:n ja P5:n purskeaikoja verrataan. Prosessi P5 suoritetaan, koska sen purskeaika on pienempi.
Vaihe 9) Ajankohtana = 15, prosessi P5 lopettaa suorituksensa.
Vaihe 10) Ajankohtana = 23, prosessi P3 lopettaa suorituksensa.
Vaihe 11) Lasketaan keskimääräinen odotusaika yllä olevalle esimerkille.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Esimerkki ennakoivasta ajoituksesta
Harkitse tätä seuraavaa kolmea prosessia Round robin
Prosessin jono | Räjähdysaika |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
Vaihe 1) Suoritus alkaa prosessilla P1, jonka purskeaika on 4. Tässä jokainen prosessi suoritetaan 2 sekuntia. P2 ja P3 ovat edelleen odotusjonossa.
Vaihe 2) Ajankohtana =2 P1 lisätään jonon loppuun ja P2 alkaa suorittaa
Vaihe 3) Ajankohtana = 4 , P2 ennalta määrätään ja lisätään jonon loppuun. P3 alkaa suorittaa.
Vaihe 4) Ajankohtana = 6 , P3 ennalta määrätään ja lisätään jonon loppuun. P1 alkaa suorittaa.
Vaihe 5) Ajankohtana = 8, P1:n purskeaika on 4. Se on suorittanut suorituksen. P2 aloittaa suorituksen
Vaihe 6) P2:n purskeaika on 3. Se on jo suoritettu 2:n välein. Ajankohtana = 9, P2 suorittaa suorituksen loppuun. Sitten P3 aloittaa suorituksen, kunnes se on valmis.
Vaihe 7) Lasketaan keskimääräinen odotusaika yllä olevalle esimerkille.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7