Ennalta ehkäisevä ja ennaltaehkäisevä ajoitus käyttöjärjestelmissä
Prosessorin ajoitus (tai CPU-aikataulutus) määrittää, mitkä prosessit osoitetaan ja poistetaan CPU: sta, perustuen esimerkiksi aikataulutusmalleihin ennaltaehkäisevä ja Ei-ennaltaehkäisevä aikataulu (tunnetaan myös Yhteistyöaikataulutus).
Vanhemmat järjestelmät voisivat toimia yksinkertaisissa erillisissä tiloissa, mutta yhä nopeammin tarvitsevat reagoivat, joustavat järjestelmät sekä virtualisointi, joka hallitsee tehokkaasti moniprosessointia, tarjoaa nopean reagoinnin kaikkiin tehtävien käsittelyyn liittyviin pyyntöihin.
Ajoitusyksiköitä kutsutaan usein nimellä a tehtävä ja aikatauluttajan tehtävänä on suorittaa ja hallita näitä tehtäviä aina tarvittaessa; ajastin valitsee poistettavan tehtävän ja määritetään CPU: lle käsittelyyn käytettävän aikataulutusmallin mukaan.
Miten aikataulu tietää, mitkä tehtävät ovat ensisijaisia?
Aikataulun on suoritettava oikeudenmukainen ja tehokas valintaprosessi ottaen huomioon muuttuvat, dynaamiset käsittelypyynnöt ja hyödyntää suurimman osan CPU-sykleistä.
Tehtävät voivat olla kahdessa tilassa käsittelyn aikana:
- Jonkin sisällä CPU Burst jossa CPU suorittaa laskutoimituksia tehtävän käsittelemiseksi (ajanjakso CPU: lle Burst vaihtelee tehtävästä tehtäväksi ja ohjelmasta ohjelmaan).
- An Tulo / lähtö (I / O) Burst odottaa tietojen vastaanottamista tai lähettämistä järjestelmästä.
Kun CPU on käyttämättömänä, Scheduler lukee Valmis jono, ja valitsee seuraavan suoritettavan tehtävän. Sitten se on lähettäjä joka antaa CPU: lle valittua tehtävänhallintaa, joten sen täytyy olla nopea! Jokaisen lähettimen ottama aika tunnetaan nimellä Lähetysviive.
Määritellään eri rakenteet ja mukautetut parametrit Valmis jono, samoin kuin useita menetelmiä, joita voidaan käyttää ajoitusprosessin monimutkaisuuden hallintaan.
Yleensä sen optimointi ja maksimointi CPU hyödyntäminen, läpäisy, jne.
Aikataulun on tehtävä päätös jossakin seuraavista vaiheista:
- Kun tehtävä muuttuu a Running a Odotusvaltio (esimerkiksi odottaa I / O-pyynnön aikana).
- Kun tehtävä muuttuu kohteesta Running että Valmis (esimerkiksi vastata keskeytykseen).
- Kun tehtävä muuttuu kohteesta odotus että Valmis (esimerkiksi I / O-pyyntö on valmis).
- Kun Tehtävä
Uusi tehtävä on valittava, jos vaihe 1 tai 4 tapahtuu varmistaaksesi CPU: n täyden hyödyntämisen ja molemmissa vaiheissa 2 ja 3 tehtävää voidaan jatkaa tai uusi valinta on valittu.
Kun ymmärrät, miten tehtävää käsitellään, katsotaan kahta ajoittamismallia, jotka käsittelevät CPU: n keskeytyksiä.
Molemmilla on samankaltaiset piirteet tehtävien, tehtävävaltioiden, jonojen ja prioriteettien kanssa (staattinen tai dynaaminen):
- Ei-ennaltaehkäisevä aikataulu kun tehtävä loppuu, kunnes se pysähtyy (vapaaehtoisesti) tai päättyy. Windows®: llä oli ei-ennalta ehkäisevä aikataulu, kunnes Windows 3.x, minkä jälkeen se muuttui Preemptive-tilaksi Windows 95: sta.
- Ennakoiva aikataulu jossa tehtävä voidaan keskeyttää voimakkaasti CPU: n keskeytyksellä, toisin kuin ei-ennaltaehkäisevä, jossa tehtävä jatkuu, kunnes se vapauttaa CPU: n ohjauksen.
Ei-ennaltaehkäisevä aikataulu
Ei-ennaltaehkäisevän järjestelmän tehtävät jatkuvat loppuun asti.
Aikataulu tarkistaa sitten kaikki tehtävät ja asettaa seuraavan korkeimman tehtävän a Valmis osavaltio.
Ei-ennaltaehkäisevän aikataulun avulla, kun tehtävä on osoitettu suorittimelle, sitä ei voida ottaa pois, vaikka lyhyet tehtävät olisikin odotettava pitempien tehtävien suorittamiseen.
Aikataulunhallinta kaikissa tehtävissä on "oikeudenmukainen" ja vasteajat ovat ennustettavissa, koska korkean prioriteetin tehtävät eivät voi houkutella odottavia tehtäviä alaspäin jonoon.
Ajastin varmistaa, että jokainen tehtävä saa oman osuutensa suorittimesta, mikä estää viivästymisen mihinkään tehtävään. CPU: lle varattu "ajan määrä" ei välttämättä ole yhtä suuri, koska se riippuu siitä, kuinka kauan tehtävä on valmis.
Ennakoiva aikataulu
Tämä aikataulutusmalli mahdollistaa tehtävien keskeytymisen - toisin kuin ei-ennaltaehkäisevä aikataulutus, jolla on "run-to-completion" -lähestymistapa.
Keskeytykset, jotka voidaan käynnistää ulkoisista puheluista, kutsuu ajastimen keskeyttämään käynnissä olevan tehtävän toisen korkean prioriteetin tehtävän hallitsemiseksi - joten CPU: n ohjaus voidaan estää.
Ensisijainen tehtävä a Valmis tila toteutetaan, mikä mahdollistaa nopean reagoinnin reaaliaikaisiin tapahtumiin.
Jotkut ennakkohyväksyntäongelmista aiheuttavat resurssien yleiskustannusten kasvua, kun keskeytyksiä ja ongelmatilanteita voidaan käyttää kahden datan jakamisessa, sillä ne voivat keskeytyä päivitettäessä jaettuja tietorakenteita ja voivat vaikuttaa negatiivisesti tietojen eheyteen.
Toisaalta on käytännöllistä pystyä keskeyttämään tehtävän hallita toista, joka voi olla kriittinen.
Yhteenvetona
Voidaan määritellä useita eri politiikan variansseja ja riippuvuuksia, kuten a "Round Robin -politiikka [i]" jossa kaikki tehtävät (joilla on sama prioriteetti) kulkevat kerran ja asetetaan jonon loppuun seuraavalle kierrokselle.
Muita politiikkoja ovat Ensimmäinen sisällä ensimmäinen ulkona, Lyhin-Job-First, Lyhin-Job-Seuraava, Lyhin jäljellä oleva aika, jne.
Historiallisten tietojen analyysi voi tarjota tietoa näistä näkökohdista, kuten uusien tehtävien saapumisastetta, CPU- ja I / O-purskeita jne. Niin todennäköisyysjakaumat voivat laskea tehtävien odotusaikoja, jolloin järjestelmänvalvojat saavat tarvittavat tiedot aikataulutusmalleihin.