300 likes | 435 Views
Ajoitus. prosessien ajoitus resurssien varaaminen vuorontamisen algoritmit reaaliaikaiset järjestelmät. Vuorontaja jakaa prosessoriaikaa prosessien kesken reiluus nälkiintymisen estäminen tehokas käyttö pieni yleisrasite (vuorontajan oma prosessorin käyttö)
E N D
Ajoitus prosessien ajoitus resurssien varaaminen vuorontamisen algoritmit reaaliaikaiset järjestelmät
Vuorontaja jakaa prosessoriaikaa prosessien kesken • reiluus • nälkiintymisen estäminen • tehokas käyttö • pieni yleisrasite (vuorontajan oma prosessorin käyttö) Vuorontajaan ja sen optimointiin liittyy paljon tutkimusta, keskeinen osa käyttöjärjestelmää
Pitkän aikavälin ajoitus • päätös siitä, mikä prosessi otetaan suoritukseen • ohjelmat voivat poistua joukosta vain tullessaan suoritetuksi tai kun käyttöjärjestelmä tappaa ne • ongelma: milloin voi ottaa uusia prosesseja suoritukseen? Mitä enemmän prosesseja suorituksessa, sitä useampaan osaan rajoitetut resurssit joudutaan jakamaan, myös yleisrasite saattaa kasvaa. Mahdollisuudet: aina prosessin valmistuessa valitaan uusi tai tietyin väliajoin ajetaan ajoitusalgoritmi jatkuu…
… jatkuu • ongelma: Mikä prosessi valitaan suoritettavaksi? Priorisointiongelma. • monen käyttäjän järjestelmässä rajattu määrä käyttäjiä. Muita pyydetään odottamaan tai kokeilemaan myöhemmin uudestaan
Keskipitkän aikavälin ajoitus • Päätös siitä, mitkä prosessit siirretään READY-tilaan (keskusmuistiin) tai SUSPENDED-tilaan (levylle) • muistinhallinnan ongelma (käsitellään omassa luvussaan)
Lyhyen aikavälin ajoitus • Päätös siitä, mitkä prosessit siirretään RUN-tilaan. I/O-ajoitus • Päätös siitä, minkä prosessin I/O-pyyntö käsitellään seuraavaksi. Olennaista ajoituksessa on jonojen odotusaikojen minimointi ja suorituskyvyn parantaminen
Ei-irrottava vuorontaminen • Prosessoria ei oteta prosessilta koskaan väkisin, vaan prosessi itse luovuttaa sen määrätyin väliajoin, tehdessään resurssipyynnön tmv. • Yleisrasite osa sovelluksia. • Ongelmia ikuisten silmukoiden kanssa • Keskeytyksiä ei voi käyttää
Irrottava vuorontaminen Prosessori otetaan pois prosessilta, jos tapahtuu • kellokeskeytys • I/O-keskeytys • Käyttöjärjestelmäkutsu • Signaali Yleisemmin käytetty menetelmä, joskus tosin keskeytykset estetään
Käyttäjäsuuntautunut vs. järjestelmäsuuntautunut Käyttäjäsuuntautunut järjestelmä pyrkii optimoimaan käyttäjälle näkyvän suorituskyvyn, järjestelmäsuuntautunut taas pyrkii optimoimaan resurssien käyttöasteen tai muun sille määritellyn tavoitteen
Käyttäjäsuuntautuneet ajoituskriteerit Vasteaika Läpimenoaika Takarajat Ennakoitavuus Järjestelmä-suuntautuneet kriteerit Läpäisykyky prosessorin käyttöaste reiluus prioriteetit resurssien tasapainotus Seuraavassa algoritmien yleisiä esittelyjä
First Come First Served (FCFS, FIFO) • ei-irrottava • yksinkertaisin algoritmeista • prosessit sijoitetaan käynnistymisjärjestyksessä jonoon, mistä niitä otetaan suoritukseen • minimaalinen yleisrasitus • korkea normitettu läpimenoaika • suosii laskentaa vaativia tehtäviä, I/O-tehtävät usein hitaita • suosii pitkiä tehtäviä
Round Robin • irrottava • kuten FCFS, mutta kellokeskeytys sijoittaa prosessin takaisin jonon loppuun • käytettävän ’siivun’ pituus vaikuttaa merkittävästi tehoon • suosii edelleen laskentaa • VRR -> apujono ja resurssipyynnöille oma jono • suosittu, nopeaa prosessien vaihtoa hiottu • toimiakseen tehokkaasti kaikkien prosessien mahduttava muistiin
SPN (Shortest Process Next) • ei-irrottava • pienimmät työt otetaan suoritukseen ensisijaisesti • heikko ennakoitavuus • vaatii tietoa prosessien suoritusajoista • suoritusajat voidaan laskea aiemmista suorituskerroista, ei aina hyvä tapa • johtaa helposti pitkien prosessien nälkiintymiseen
SRT (Shortest Remaining Time) • irrottava • SPN:n variaatio, lyhyin suoritettava prosessi aina suorituksessa • READY-jonoon lisätty prosessi aiheuttaa aina tarkistuksen • vaatii edelleen arviot • kellokeskeytyksiä ei tarvita • suosii lyhyitä prosesseja, pitkät mahdollisesti nälkiintyvät • mitä tehdään, jos uuden prosessin arvioitu suoritusaika on vain vähän vähemmän kuin suorituksessa olevan?
HRRN (Highest Response Ratio Next) • irrottava • RR=(w+s)/s (w=odotusaika, s=arvioitu suoritusaika) • suosii lyhyitä prosesseja, mutta yksikään prosessi ei pääse nälkiintymään
Prioriteettijonot • prosesseille annetaan prioriteetit • prioriteetti voi olla staattinen tai dynaaminen, dynaaminen tuottaa yleisrasitetta • käyttöjärjestelmän prosessit saavat korkeamman prioriteetin • käyttäjällä usein mahdollisuus vaikuttaa prioriteettiin • erilliset jonot eri prioriteettitasoille • nälkiintymistä voidaan estää muuttamalla prioriteettia ajan funktiona
MFQ (Multilevel Feedback Queue) • prosessi tulee jonoon korkeimmalla prioriteetilla • tasoilla käytetään irrottavaa menetelmää, kuten Round Robin • kun prosessi on käyttänyt siivunsa ja sen suoritus ei ole vielä loppunut, se tiputetaan prioriteetissa yhden tason alaspäin • käyttöjärjestelmän prosessit voidaan priorisoida erikseen • tietyn tason prosesseja otetaan suoritukseen vain, jos sen yläpuolella olevilla tasoilla ei ole yhtään prosessia • pysäytettynä oleva aika ei vaikuta prioriteettiin • aikakvantin pituus on ratkaiseva toimivuuden kannalta • nälkiintyminen mahdollista, ongelma voidaan poistaa muuttamalla prioriteettia ajan funktiona
FSS (Fair Share Scheduling) • pyrkii jakamaan resursseja prosessiryhmien kesken • esim. yhden sovelluksen tai käyttäjäryhmän osuutta resursseista voidaan rajoittaa
Tosiaikaiset järjestelmät • Tosiaikainen järjestelmä voidaan määritellä järjestelmäksi, jossa toiminnan oikeellisuus ei riipu vain sen loogisesta lopputuloksesta, vaan myös lopputuloksen ajoituksesta. • Kova tehtävä pitää suorittaa tietyssä aikaikkunassa, tai tapahtuu jotain vakavaa, esimerkiksi lentokone törmää toiseen • Pehmeän tehtävän tekemisessä on järkeä, vaikka se myöhästyisikin • Jaksottomat suoritetaan vain kerran vasteena johonkin syötteeseen • jaksolliset suoritettaan ”T-pituisin välein” tai ”kerran T-pituisessa jaksossa.”
Yleisesti ottaen reaaliaikailla järjestelmillä on viisi erikoista vaatimusta: • Ennakoitavuus (determinism) - kuinka nopeasti järjestelmä huomioi keskeytykset? • Reagointikyky (responsiveness) – Kuinka nopeasti järjestelmä alkaa käsitellä keskeytystä? • Käyttäjän ohjauskyky (user control) – Käyttäjä pystyy vaikuttamaan enemmän kuin tyypillisessä ei-reaaliaikajärjestelmässä. Käyttäjä määrittelee tyypillisesti esimerkiksi mitkä ovat kovia ja mitkä pehmeitä tehtäviä, ja mikä on niiden suhteellinen tärkeysjärjestys. • Luotettavuus (reliability) - Ohjelmisto- ja laiteviat saattavat aiheuttaa järjestelmien hidastumista. Tosiaikaisissa järjestelmissä tämä voi johtaa katastrofeihin. • Vikasietoisuus (fail-soft operation) – Mikä tahansa järjestelmä voi kuitenkin kärsiä vioista, joten käyttöjärjestelmä pitää suunnitella siten, että viankin sattuessa se säilyttää mahdollisimman suuren osan toimintakyvystään.
Tähän liittyen järjestelmän sanotaan olevan vakaa (stable), jos se saavuttaa tärkeimpien tehtäviensä aikarajat, silläkin uhalla, että jotkut vähemmän tärkeät tehtävät myöhästyvät tai jäävät suorittamatta.
Näiden ominaisuuksien saavuttamiseksi tosiaikaisilla käyttöjärjestelmillä on yleensä ainakin valtaosa seuraavista piirteistä: • Nopea prosessin/säikeen vaihto • Pieni koko (minimaaliset toiminnot) • Kyky reagoida nopeasti ulkoisiin keskeytyksiin • Moniajo ja prosessien välinen kommunikointi semaforeilla, signaaleilla ja tapahtumilla • Nopeaan tiedon lisäämiseen erikoistuneiden tietorakenteiden käyttö • Prioriteetteihin perustuva irrottava ajoitus • Sellaisten jaksojen minimointi, jolloin keskeytykset on estetty • Alkeistoiminnot tehtävien viivyttämiseksi tietyllä ajalla ja niiden pysäyttämiseksi/jatkamiseksi • Erikoistuneita hälytyksiä ja laskureita.
Tosiaikainen ajoitus • reiluus ja keskimääräinen vasteaika eivät ole tärkeitä • kriittinen prosessi saa suoritusvuoron prosessorin vapautuessa • vaihtoehtoisesti kriittinen prosessi tekee korkean prioriteetin keskeytyksen (ellei prosessori ole varattu jollekin, jolla on vielä kovempi prioriteetti)
Staattiset taulukkopohjaiset ajoitusmenetelmät, joissa kullekin tehtävälle määritetään etukäteen prioriteetti. Tuloksena on taulukko, joka määrää ajoaikaisen suoritusjärjestyksen. Tämä sopii jaksollisten tehtävien ajoitukseen. • Staattiset prioriteettipohjaiset irrottavat menetelmät, joissa prioriteetit määrätään samoin etukäteen, mutta suoritusjärjestystä ei sidota etukäteen. Suoritusjärjestyksen määräävät prioriteetit sitä mukaa kuin niitä keskeytyksillä kutsutaan. jatkuu…
… jatkuu • Dynaamiset suunnitelmapohjaiset menetelmät, joissa ajoituksen mielekkyys määritetään ajoaikaisesti eikä etukäteen. Uusi tehtävä hyväksytään vain, jos on mahdollista saavuttaa sen aikarajat uhraamatta minkään jo ajoitetun (korkeamman prioriteetin) prosessin aikarajoja. Yksi analyysin tuloksista on aikataulu, tai suunnitelma, jota käytetään päätettäessä mikä prosessi vaihdetaan suoritukseen. • Dynaamiset parhaan yrityksen menetelmät, joissa ei tehdä ajoitusanalyysia ollenkaan. Järjestelmä pyrkii saavuttamaan kaikki aikarajat ja peruuttaa kaikki tehtävät, joiden aikarajoja ei tavoiteta. Tyypillisesti käytetään jonkinlaista takaraja-ajoitusta. Järjestelmissä, joissa tehtävät ovat jaksottomia eikä staattinen ajoitusanalyysi ole mahdollinen, tämä on helpoimmin toteutettavissa oleva järjestelmä. Huonona puolena tehtävän onnistumista ei voi ennakoida, vaan se selviää vasta, kun tehtävä on suoritettu tai sen takaraja on saavutettu. Tämä on yleisin kaupallisissa järjestelmissä käytetty menetelmä.
Takaraja-ajoitus Yleisiä vaatimuksia • Valmiusaika: Milloin tehtävä on valmis suoritettavaksi. Jaksollisissa tehtävissä se voidaan tietää etukäteen, jaksottomissa järjestelmä voi vain tulla tietoiseksi, että tehtävä voidaan suorittaa • Aloituksen takaraja: Mihin mennessä suorituksen pitää alkaa. • Lopetuksen takaraja: Mihin mennessä tehtävän on oltava valmis. Yleensä ei käytetä sekä aloituksen että lopetuksen takarajoja. • Suoritusaika: Kauanko tehtävältä kuluu sen suorittamiseen. Joskus tämä tiedetään etukäteen, joskus se lasketaan tilastollisesti ja joskus sitä ei edes tarvita. • Resurssivaatimukset: Mitä tehtävä tarvitsee suoriutuakseen. • Prioriteetti: Tehtävän tärkeyden mitta. Jos kovan takarajan rikkominen aiheuttaa järjestelmän kaatumisen, voidaan tehtävälle antaa absoluuttinen prioriteetti. Muussa tapauksessa suhteellinen prioriteetti on hyvä vaihtoehto. Tosiaikaisten tehtävien prioriteetit voivat olla korkeampia kuin käyttöjärjestelmän ytimen prioriteetit • Alitehtävät: Tehtävä voidaan joskus jakaa pakollisiin ja vaihtoehtoisiin osiin, joista vain pakollisilla on kovat aikarajat.
Ongelmakohtia: • mikä tehtävä suoritetaan seuraavaksi? • millainen irrotuspolitiikka? (hyvin kriittinen kysymys)