|
TAVOITTEET
Tarkoituksena on palauttaa mieleen laitteiston keskeiset komponentit sekä prosessorin toimintaidea, ts. kuinka prosessori suorittaa yksittäistä ohjelmaa.
Tavoitteena on ymmärtää moniajon aiheuttamat laitteistovaatimukset, sen hyödyt sekä saada yleiskäsitys käyttöjärjestelmän tehtävistä, sen tarjoamista palveluista moniajojärjestelmässä ja siitä kuinka käyttöjärjestelmä koordinoi laitteiston osien käyttöä.
Avainsanat: käskysykli, keskeytysmekanismi, palvelupyyntö, laitteistotuki, KJ:n tehtävät
OPPIKIRJAN TEKSTI
LUENTOKALVOT sekä MUUTA MATERIAALIA
Muuta materiaalia: Tanenbaum A.S.: Modern Operating Systems. 2nd ed. 2001. Sivut 1-70. Kirja löytyy myös TKTL:n kirjastosta.
HARJOITUKSET, KOHDAT A-C
Opetusohjelmaan merkityn harjoitusryhmän ensimmäisessä kokoontumisessa muodostetaan 4-6 hengen opintopiirejä, jotka työskentelevät samalla kokoonpanolla koko kurssin ajan. Kukin opintopiiri nimeää vastuuhenkilön, joka huolehtii mm. ryhmän yhteydenpidon sujumisesta ja raporttien toimittamisesta luennoijalle.
Ennen ryhmän tapaamista: Tutustu huolellisesti kaikkiin tehtäviin. Pohdi niitä jo itseksesi ja kirjaa ylös tehtäviin liittyviä ajatuksia, tuloksia, ongelmia ja pulmia. 1. tapaaminen: Käykö yhdessä läpi tehtävät ja pohtikaa mitä tiedätte asiasta, mitä tietoja vielä tarvitsisitte, jne. Ohjaaja on tapaamisessa käytettävissä, mutta ei ratko tehtävää puolestanne. Hän voi ohjata ryhmäänne oikeaan suuntaan, jos tuntuu, että olette ihan eksyksissä. Osion aikana: Tapaamisten välillä voitte järjestää oman tapanne kommunikoida keskenänne: tapaamiset laitoksella, sähköposti, irc, webCT (jos joku haluaa sitä käyttää, niin ottakaa yhteyttä luennoijaan). Laatikaa raporttinne 2. tapaamiseen mennessä. 2. tapaaminen: Ryhmät esittelevät raporttiensa sisältöjä muille ryhmille. 2. tapaamisen jälkeen: Jos on tarvetta vielä täydentää tai muokata ryhmän rapottia, niin tämä on mahdollista tapaamisen jälkeen. Tähän on varattu korkeintaan kaksi päivää, koska raporttien on tarkoitus olla valmiina jo 2. tapaamisessa. |
Osion 1 raportti (kohdat A-C) tulee palauttaa kirjallisena joko luennolla tai huoneen D225 vieressä olevaan lokeroon. Raporttiin pitää kirjata: opintopiirin jäsenten nimet, laskuharjoitusryhmän numero ja ohjaajan nimi. Viimeinen palautusajankohta on
Palautus on siis viimeistään kaksi päivää oman harjoitusryhmän toisen kokoontumisen jälkeen.
A - POHTIKAA PORUKALLA TEHTÄVIÄ Allaolevan tehtävälistan kaikki tehtävät on tarkoitettu kaikkien pohdittavaksi. Laatikaa yhdessä ratkaisut näihin tehtäviin ja palauttakaa ne kirjallisena (raportiin mukaan jäsenten nimet, ohjaajan nimi ja ryhmän numero). Vastaukset saavat olla käsinkirjoitettuja ja osittain jopa ranskalaisten viivojen muodossa. Muistakaa kuitenkin pohtia asiaa riittävän syvällisesti: mikä / kuka tekee? (erityisesti laitteisto vs. KJ), milloin? miksi toimitaan näin? mikä voisi mennä pieleen, jos...? jne. |
1.1 - PROSESSORI JA KÄSKYJEN SUORITTAMINEN
Tehtävä on pääosin Tietokoneen Toiminta -kurssin kertausta. Tarkoituksena on palauttaa mieleen laitteiston keskeiset komponentit ja prosessorin toimintaidea.
Selitä prosessorin toiminnan kannalta keskeiset rakenneosat ja kuvaa mahdollisimman yksityiskohtaisesti prosessorin toimintaa käskysyklin aikana. Selityksen tulee liikkua erillisten toimintayksikköjen (ALU, CU, MMU, välimuisti, väylät...) ja prosessorin sisäisten rekistereiden (PC, IR, PSW, ...) tasolla. Selityksestä tulee käydä ilmi ainakin:
Mikä on kunkin osan tarkoitus/tehtävä? Kuinka muistinouto tapahtuu? Mistä prosessori tietää, milloin sen muistista noutama bittijono pitää tulkita käskyksi ja milloin dataksi? Miten prosessori suorittaa käskyn? Mistä se löytää käskyn tarvitsemat operandit?
Kurssikirjan kuvan 1.7 käskysyklissä on myös valinta "Interrupts Disabled / Interrupts Enabled". Mitä se tarkoittaa? Mistä CPU tietää, että keskeytykset on estetty / sallittu? Miksi tämä haarautuminen on tarpeen?
Miten CPU huomaa, että sen on siirryttävä suorittamaan KJ:n koodia (ts. seuraava käsky on noudettava prosessin sijasta KJ:n muistialueelta)?
Piirrä tarvittaessa selventäviä kuvia.
Miten rakenteeseen/toimintaan vaikuttaa se, että oletetaan että laitteistoon kuuluu välimuisti ja tuki virtuaalimuistin käytölle?
1.2 -KESKEYTYSMEKANISMI
Selitä keskeytysmekanismin perusideat siten että selvityksestä käy ilmi vastaukset ainakin seuraaviin kysymyksiin:
Miksi keskeytysmekanismi on tarpeellinen? Mitä käsitteellistä eroa on termeillä poikkeus (engl. trap) ja keskeytys (engl. interrupt)? Mitä yhteistä niillä on? Millaisia poikkeuksia ja keskeytyksiä voi sattua prosessin suoritusaikana? Miten ja milloin prosessori huomaa keskeytyksen? Entä mitä sen jälkeen tapahtuu? Mitkä keskeytyskäsittelyyn liittyvistä toiminnoista ovat laitetoimintoja ja mitkä toiminnot KJ hoitaa ohjelmallisesti?
Mistä prosessori tietää, onko se suorittamassa tavallisen prosessin vai käyttöjärjestelmän koodia? Onko tämä tieto välttämätön? Millä perusteella prosessori kieltäytyy suorittamasta eräitä käskyjä, jos suoritettavana on tavallinen prosessi käyttöjärjestelmän sijasta?
Kun KJ on käsitellyt keskeytyksen, se laittaa prosessorin suorittamaan joko sitä keskeytynyttä prosessia, tai valitsee tilalle uuden prosessin, jolloin CPU on saatettava suorittamaan tätä valittua prosessia. Miten?
1.3 - PALVELUPYYNTÖ
Eräät toiminnot eivät ole sallittuja tavalliselle prosessille. Jos prosessi tarvitsee ko. toimintoja, se pyytää käskykantaan kuuluvalla palvelupyyntökäskyllä (system call) apua KJ:ltä, joka toteuttaa tehtävän sen puolesta.
Miksi palvelupyyntöjä ylipäätään tarvitaan? Eikö niitä ilmankin pärjättäisi? Pitääkö kaikki palvelupyynnöt suorittaa prosessorin etuoikeutetussa tilassa? Miten palvelupyyntö ja etuoikeutettu tila liittyvät toisiinsa? Vai onko niiden liityttävä toisiinsa?
Palvelupyyntöä voi verrata tavalliseen aliohjelmakutsuun (vrt. esim. TTK-91 CALL-käsky): tarvitaan palvelun nimi sekä parametrinvälitystä. Hahmottele yleisellä tasolla millaisia palveluja KJ:n tulisi tarjota sovelluksen käytettäväksi palvelupyyntöjen kautta. Mieti myös mitä tietoa KJ:lle olisi välitettävä kunkin palvelupyynnön yhteydessä.
Vihje: prosessien hallinta, muistinhallinta, tiedostojärjestelmä, siirräntä, suojaukset, ym. Katso myös POSIX palvelupyynnöt.
1.4 - LAITTEISTON JA KÄYTTÖJÄRJESTELMÄN RAJAMAILLA
Tarkoituksena on toteuttaa moniajoon perustuva KJ. Järjestelmästä ei voi saada luotettavaa (eli sellaista, jossa sovellukset eivät voi sotkea toisiaan tai käyttää luvattomasti toistensa resursseja), ellei jo laitteistotasolla ole toteutettu eräitä keskeisiä toimintoja. Selvitä mitkä laitteistolla suoritettavat toiminnot ovat välttämättömiä, ja selitä miten niiden avulla saavutetaan tuo kaivattu luotettavuus.
1.5 - KJ SAA VIPINÄÄ KONEESEEN
Kun tietokoneen käyttäjä kirjoittaa komentotulkin kehotteeseen käynnistettävän ohjelman nimen tai napsauttaa kuvaketta hiirellä ikkunaympäristössä, KJ luo uuden prosessin suorittamaan koodia. Mitkä käyttöjärjestelmän osat toimivat tässä yhteydessä, missä järjestyksessä ja mitä tehtäviä ne tekevät?
Kun kaikki uuden prosessin luontiin liittyvä on valmista, laittaa KJ aikanaan prosessorin suorittamaan tätä uutta prosessia. Miten se tapahtuu? Jatka selitystäsi niin pitkälle, että uuden prosessin ensimmäiset käskyt on suoritettu.
Vihje: Mieti ihan oman kokemuksesi nojalla sekä tarkista kirjasta mitä KJ:n tehtäviä siellä on mainittu ja sovita niitä tässä mainittuun tapaukseen.
1.6 - SAMANAIKAISIA TOIMIJOITA
a) Mitä uusia laitteistopiirteitä ja käyttöjärjestelmässä ohjelmallisesti toteutettuja piirteitä on täytynyt ottaa mukaan, kun on siirrytty yksiajojärjestelmästä moniajojärjestelmään ja toisaalta eräajojärjestelmästä interaktiiviseen järjestelmään. Ajattele asiaa KJ:n tehtävien valossa. Perustele!
b) Mitä vaatimuksia laitteistolle ja KJ:lle voisi seurata siitä, että järjestelmässä on useita prosesseja suorittavia prosessoreita (SMP, symmetric multiprocessing)? Mitä KJ:n osia voidaan säilyttää kutakuinkin ennallaan?
c) Mitä erityisvaatimuksia KJ:lle voisi seurata siitä, että koneet kytketään toisiinsa verkon avulla? Lähesty asiaa tavallisen käyttäjän kannalta: kuinka verkkojärjestelmän olemassaolo näkyy esimerkiksi sinulle, kun työskentelet TKTL:llä jollakin mikrotietokoneella?
1.7 - MUISTIHAKU Ylimääräinen tehtävä, jolla voi korvata yhden tehtävän 1.1. -1.6
Virtuaalimuistijärjestelmän muistihierarkiaan kuuluu välimuisti, keskusmuisti ja levy. Jos prosessin viittaama sana on valmiiksi välimuistissa, sen nouto prosessorin rekisteriin kestää 2 ns. Jos sana on haettava keskusmuistista, nouto välimuistiin vie 10 ns, jonka jälkeen muistiviittaus aloitetaan alusta. Jos sana ei ole keskusmuistissakaan, on se ensin noudettava levyltä keskusmuistiin, siirrettävä sieltä edelleen välimuistiin ja lopulta rekisteriin. Siirto levyltä keskusmuistiin vie 10 ms. Välimuistin osumatodennäköisyys (hit rate) on 0.95 ja keskusmuistin osumatodennäköisyys on 0.6.
Kuinka monta nanosekuntia kestää keskimäärin ennenkuin viitattu sana on saatu prosessorin rekisteriin? Mitä johtopäätöksiä voit tehdä saamastasi vastauksista? Anna numeroiden lisäksi myös sanallinen selitys, jotta myös satunnainen opiskelija tulee vakuuttuneeksi ratkaisun oikeellisuudesta.
Nopeuserojen konkretisointi: Jos nouto keskusmuistista rekisteriin veisi 1 sek, niin kauanko vastaavasti veisi nouto levyltä keskusmuistiin? Mitähän CPU mahtaa puuhia sillä aikaa, kun I/O-laitteisto siirtää tietoa levyltä keskusmuistiin?
B - PERUSTELKAA PORUKALLA TARKISTUSKYSYMYKSIÄ Kehittäkää viisi aihepiiriin liittyvää tarkistuskysymystä / keskeistä asiaa pohtivaa tehtävää, sekä perustelkaa miksi kysymyksiinne on tärkeää osata vastata ("koska on tärkeää tietää" ei ole perustelu :-). Saatte valita myös kirjan / luentokalvojen ja harjoitusten kysymyksistä. Tässä kohdassa on tärkeämpää kehittää hyvät perustelut kuin keksiä pyöriviä esineitä uudelleen. Välttäkää myös 'trivial-pursuit'-tyyppisiä yksittäisiä detaljitietoja testaavia kysymyksiä. Hyvä tarkistuskysymys on sellainen, johon vastaaminen vaatii suuremman kokonaisuuden ymmärtämistä. Syntyikö asian tiimoilta askarruttavia kysymyksiä tai nousiko esiin ongelmia? Millaisia? Vihjaiskaa, jos joku kohta kaipaa mielestänne tarkennusta, asiaan voidaan palata luennolla. |
C - TEHKÄÄ PORUKALLA EVALUOINTIA / ITSEARVIOINTIA Tiimityönä: Täyttäkää oheinen lomake 1, ja jättäkää se luennoijalle / laatikkoon ryhmän raportin mukana. Lomaketta jaetaan harjoitusryhmässä. Kyselyllä on kaksi tarkoitusta: (1) kerätä tietoa tehtävien tekemisen onnistumisesta opintopiireissä ja (2) auttaa opintopiiriä oman toiminnan parantamisessa. Arvostamme lyhyitä vastauksia, joihin olennainen on kiteytetty. Pyrkikää olemaan avoimia. Paneutukaa palautteen antamiseen huolella ja vastatkaa kaikkiin kohtiin. Palautteen kattavuus (ts. onko kaikkiin kohtiin vastattu ajatuksella) arvioidaan (0, 1 tai 2 ruksia), sen sijaan palautteen sisällöllä ei ole vaikutusta arviointiin. Muuta palautetta / kommentteja voitte lähettää milloin tahansa kurssin uutisryhmään hy.opiskelu.tktl.kj (toivottavasti saamme keskustelua aikaiseksi), tai kertoa suoraan kurssin vetäjille suullisesti, sähköisesti tai kirjallisesti. |
Kertauskysymyksiä (Poimittuna raporteista)
Katso myös Syksyn 2003 kertauskysymyksiä |
|