Suositeltava, 2024

Toimituksen Valinta

Ero etuoikeudellisen ja ei-preemptiivisen aikataulun välillä käyttöjärjestelmässä

CPU-ajastimen vastuulla on jakaa prosessi CPU: lle aina, kun CPU on valmiustilassa. CPU-ajastin valitsee prosessin valmiista jonosta ja jakaa prosessorin CPU: lle. Aikataulua, joka tapahtuu, kun prosessi siirtyy käynnissä olevasta tilasta valmiustilaan tai odotustilasta valmiustilaan, kutsutaan Preemptive Schedulingiksi . Kädet, ajoitus, joka tapahtuu, kun prosessi päättyy tai siirtyy käynnistä odottamaan tilan tällaista CPU-ajoitusta, on nimeltään Non-Preemptive Scheduling . Ensisijainen ja ei-preemptiivinen aikataulujen välinen ero on heidän nimissään. Se on ennaltaehkäisevä ajoitus; prosessit voidaan ajoittaa. Ei-preemptive-aikataulussa prosesseja ei voi ajoittaa.

Keskustelkaamme eroavaisuuksien ja etuoikeutettujen aikataulujen eroista lyhyesti alla olevan vertailukaavion avulla.

Vertailukaavio

Vertailun perusteetEnnakoiva aikatauluEi etukäteissuunnittelua
perustiedotResurssit 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älkiintyminenJos 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äpuolellaEnnakoivalla ajoituksella on yleiskustannukset prosessien ajoituksesta.Ei-preemptive-ajoituksella ei ole yleiskustannuksia.
JoustavuusEnnakoiva aikataulu on joustava.Ei-preemptiivinen ajoitus on jäykkä.
KustannusEnnakoiva 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.

Samaan aikaan P3 suoritti, prosessi P1 saapui ajankohtaan 2. Nyt P3: n jäljellä oleva aika (3 millisekuntia) on pienempi kuin aika, jota tarvitaan prosesseissa P1 (4 millisekuntia) ja P2 (5 millisekuntia). Niinpä P3: n sallitaan jatkaa. Vaikka P3 jatkuu, prosessi P0 saapuu ajankohtaan 3, nyt P3: n jäljellä oleva aika (2 millisekuntia) on yhtä suuri kuin P0: n tarvittava aika (2 millisekuntia). Niinpä P3 jatkuu ja P3: n päättyessä CPU on allokoitu P0: lle, koska sillä on vähemmän purskeaikaa kuin muut. Kun P0 päättyy, CPU on allokoitu P1: lle ja sitten P2: lle.

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.

Ratkaise edellä mainittu aikataulutusesimerkki ei-ennakkomuodolla. Koska aluksi prosessi P2 saapuu ajankohtaan 0, niin CPU on allokoitu prosessille P2, jolloin suoritetaan 6 millisekuntia. Kaikkien prosessien välillä eli P0, P1, P3 saapuu valmiina jonoon. Mutta kaikki odottavat, kunnes prosessi P2 täydentää CPU-purskeaikansa. Sitten prosessi, joka saapuu P2: n jälkeen eli P3: lle, jaetaan sitten CPU: lle, kunnes se lopettaa sen purkamisajan. Samoin P1 suorittaa ja CPU annetaan myöhemmin prosessille P0.

Ensisijaisten ja ei-ennakkoluulottomien aikataulujen keskeiset erot

  1. 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 .
  2. Suoritusprosessi ennaltaehkäisevässä ajoituksessa keskeytetään suorituksen keskellä, kun taas suoritusprosessi ei-preemptiivisessa ajoituksessa ei keskeydy suorituksen keskellä.
  3. 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.
  4. 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.
  5. 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ä.
  6. 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.

Top