
Keskustelkaamme eroavaisuuksien ja etuoikeutettujen aikataulujen eroista lyhyesti alla olevan vertailukaavion avulla.
Vertailukaavio
Vertailun perusteet | Ennakoiva aikataulu | Ei etukäteissuunnittelua |
---|---|---|
perustiedot | Resurssit allokoidaan prosessille rajoitetun ajan. | Kun resurssit on allokoitu prosessille, prosessi pitää sen ajan, kunnes se täydentää purskeaikansa tai siirtyy odotusasentoon. |
Keskeyttää | Prosessi voidaan keskeyttää välillä. | Prosessia ei voi keskeyttää, ennen kuin se päättyy tai siirtyy odottavaan tilaan. |
nälkiintyminen | Jos korkean prioriteetin prosessi saapuu usein valmiustilaan, matalan prioriteetin prosessi voi nälkään. | Jos prosessi, jossa on pitkä purskeaika, kulkee CPU: ta, toinen prosessi, jossa on vähemmän CPU-purskeaikaa, voi nälkään. |
yläpuolella | Ennakoivalla ajoituksella on yleiskustannukset prosessien ajoituksesta. | Ei-preemptive-ajoituksella ei ole yleiskustannuksia. |
Joustavuus | Ennakoiva aikataulu on joustava. | Ei-preemptiivinen ajoitus on jäykkä. |
Kustannus | Ennakoiva ajoitus on kustannuksiin liittyvä. | Ei-preemptiivinen ajoitus ei ole kustannusyhdistävä. |
Ennakoivan aikataulun määritelmä
Ennakoiva ajoitus on sellainen, joka voidaan tehdä tilanteissa, joissa prosessi siirtyy käyttötilasta valmiustilaan tai odottavasta tilasta valmiustilaan . Täällä resurssit (CPU-syklit) allokoidaan prosessille rajoitetun ajan ja sitten otetaan pois, ja prosessi asetetaan takaisin valmiustilaan uudelleen, jos sillä on jäljellä vielä CPU-purskeaika. Prosessi pysyy valmiina jonossa, kunnes se saa seuraavan mahdollisuuden suorittaa.
Jos prosessi, jolla on korkea prioriteetti, saapuu valmiustilaan, sen ei tarvitse odottaa, että nykyinen prosessi täyttää purskeaikansa. Sen sijaan nykyinen prosessi keskeytetään suorituksen keskellä ja asetetaan valmiustilaan, kunnes prosessi, jossa on ensisijainen tehtävä, hyödyntää CPU-syklejä. Näin jokainen valmisjonon prosessi saa jonkin aikaa CPU: n suorittamiseen. Se tekee ennaltaehkäisevän aikataulun joustavaksi, mutta kasvattaa prosessin vaihtamista juoksevasta tilasta valmiustilaan ja vise-verseen.
Algoritmit, jotka toimivat ennaltaehkäisevällä aikataululla, ovat Round Robin. Lyhin Job First (SJF) ja Priority-aikataulutus voivat kuulua ennalta ehkäisevän aikataulun alla.
Otetaanpa esimerkki Preemptive Schedulingista, katso alla oleva kuva. Meillä on neljä prosessia P0, P1, P2, P3. Josta P2 saapuu ajankohtaan 0. CPU on allokoitu prosessille P2, koska jonossa ei ole muuta prosessia. Samaan aikaan P2 suoritettiin, P3 saapui ajankohtaan 1, nyt jäljellä oleva aika prosessille P2 (5 millisekuntia), joka on suurempi kuin P3: n tarvittava aika (4 mil-s sekuntia). Joten CPU on allokoitu prosessorille P3.

Määritelmä ei-preemptive aikataulutus
Ei-preemptiivinen ajoitus on sellainen, jota voidaan soveltaa olosuhteissa, kun prosessi päättyy, tai prosessi siirtyy käynnistä odottavaan tilaan . Ei-preemptiivisessa aikataulussa, kun resurssit (CPU) on allokoitu prosessille, prosessi pitää CPU: n, kunnes se lopetetaan tai se saavuttaa odotustilan.
Toisin kuin ennaltaehkäisevä ajoitus, ei-preemptiivinen ajoitus ei keskeytä prosessia, joka suorittaa CPU: n suorittamisen keskellä. Sen sijaan se odottaa prosessin suorittavan CPU-purskeajan ja sitten se voi jakaa CPU: n toiselle prosessille.
Jos ei-preemptive-aikataulussa suoritetaan prosessi, jossa on pitkä CPU-purskeaika, toisen prosessin täytyy odottaa pitkään, mikä lisää prosessien keskimääräistä odotusaikaa valmiustilassa. Ei-preemptiivisella ajoituksella ei kuitenkaan ole mitään ylimääräistä prosessin vaihtamista valmiista jonosta CPU: han, mutta se tekee ajastuksen jäykäksi, koska toteutusprosessia ei edes ennakoida prosessille, jolla on suurempi prioriteetti.

Ensisijaisten ja ei-ennakkoluulottomien aikataulujen keskeiset erot
- Ensisijaisen ja ei-preemptiivisen ajoituksen välinen ero on se, että ennaltaehkäisevässä aikataulussa CPU allokoidaan prosesseille rajoitetun ajan. Vaikka ei-preemptive-aikataulussa CPU on allokoitu prosessille, kunnes se päättyy tai siirtyy odottamaan tilaan .
- Suoritusprosessi ennaltaehkäisevässä ajoituksessa keskeytetään suorituksen keskellä, kun taas suoritusprosessi ei-preemptiivisessa ajoituksessa ei keskeydy suorituksen keskellä.
- Preemptive Schedulingilla on yleiskuva siitä, että prosessi vaihdetaan valmiustilasta käynnissä olevaan tilaan, vise-jaeeseen ja valmisjonon ylläpitoon. Toisaalta ei-preemptive-ajoituksella ei ole ylimääräistä prosessin vaihtamista juoksutilasta valmiustilaan.
- Ennaltaehkäisevässä aikataulussa, jos etusijalla oleva prosessi saapuu usein valmiiseen jonoon, prosessin, jossa on alhainen prioriteetti, on odotettava pitkään, ja sen täytyy joutua nälkään. Toisaalta jos ei-preemptiivisessa aikataulussa CPU on allokoitu prosessille, jossa on suurempi purskeaika, prosessit, joissa on pieni purskeaika, voivat joutua nälkään.
- Ennakoiva ajoitus on varsin joustava, koska kriittiset prosessit saavat käyttää CPU: ta, kun ne saapuvat valmiustilaan riippumatta siitä, mikä prosessi on tällä hetkellä käynnissä. Ei-preemptiivinen ajoitus on jäykkä, vaikka kriittinen prosessi siirtyy valmiustilaan CPU: n käynnissä olevaa prosessia ei häiritä.
- Preemptive Scheduling on kustannusyhdistys, koska sen on säilytettävä yhteisten tietojen eheys, jota ei tapahdu ei-preemptive-aikataulun yhteydessä.
johtopäätös:
Ei ole, että ennaltaehkäisevä ajoitus on parempi kuin ei-preemptiivinen ajoitus tai vise-jae. Kaikki riippuu siitä, miten ajoitus minimoi prosessien keskimääräisen odotusajan ja maksimoi suorittimen käytön.