Käyttöjärjestelmät I S2004 / OSIO 3 (18.10-29.10)
In english
Prosessit, siirräntä ja tiedostojärjestelmä

o PALAUTE Osion 3 raportit ovat jaossa huoneessa C127. samassa tilassa on kurssimappeja ja laskaripapereita jaossa. Laitan lokeron takaseinän kirjahyllyyn. Noutakaa sieltä omanne. Arvioidut raportit tulevat sinne arviointiprosessin edetessä. Kaikki raportit pyritään arvioimaan ja palauttamaan lokeroon viimeistään tiistaina, jotta ainakin keskiviikkopäivä jää vielä aikaa tarkastella niitä ennen tenttiä.

o TAVOITTEET

-- Tutustumme prosesseihin ja säikeisiin, niiden hallintaan sekä vuorottamisen perusideaan.
-- Tutustumme siirrännän perustekniikoihin sekä pohdimme kaikkeen siirräntään oleellisesti liittyvää puskurointia.
-- Selvitämme kuinka tiedostojärjestelmä voidaan toteuttaa ja kuinka prosessi käyttää tiedostoja.

Avainsanat: prosessi, säie, prosessin kuvaaja (PCB), säikeen kuvaaja TCB, prosessin/säikeen tilat, I/O menetelmät, laiteriippuva vs. laiteriippumaton siirräntä, tiedostojenhallinta, vapaan levytilan hallinta.

o OPPIKIRJAN TEKSTI

o LUENTOKALVOT sekä MUUTA MATERIAALIA

  • See also Stallings's pages

    Muuta materiaalia: Tanenbaum A.S.: Modern Operating Systems. 2nd ed. 2001. Sivut 71-94, 269-300, 399-408, 445-448. Kirja löytyy myös TKTL:n kirjastosta.

    o HARJOITUKSET, KOHDAT A-C

    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 raporttia, 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.

    o 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 (raporttiin mukaan jäsenten nimet, ohjaajan nimi ja ryhmän numero).

    => 3.1 - PROSESSI JA SÄIE

    a) Selittäkää käsitteet prosessi ja säie. Miten ne liittyvät toisiinsa? Mitä hyötyä on säikeiden käytöstä?

    b) Olettakaa, että käytössä on ytimessä toteutetut säikeet. Mitä tietoa on talletettu PCB:hen ja mitä tietoa TCB:hen? Kertokaa kunkin tiedon osalta milloin ja mihin KJ tuota tietoa tarvitsee.

    c) Miten KJ:n kirjanpito poikkeaa, jos säikeet on toteutettu vain käyttäjätasolla?

    => 3.2 - KOLMOSET MONIAJOSSA

    Suoritettavana on 3 samanlaista prosessia: kukin muodostuu silmukasta, jossa ensin lasketaan 500 ms ja sitten tulostetaan 150 ms. Silmukka suoritetaan 1000 kertaa.

    a) Paljonko kuluu aikaa, jos prosessit suoritetaan peräkkäin (yksiajojärjestelmä)? Mikä on prosessien keskimääräinen läpimenoaika ja mikä on prosessorin käyttöaste?

    b) Esittäkää aikadiagrammin avulla miten prosessit etenevät osituskäyttöön perustuvassa moniajojärjestelmässä, jossa KJ jakaa prosessoria prosesseille 100 ms aikaviipaleina. Jos aikaviipale jää kesken, prosessi saa seuraavalla kerralla kokonaan uuden aikaviipaleen. Olettakaa lisäksi, että tulostukset toimivat rinnan eivätkä häiritse toisiaan (voivat edetä yhtäaikaa). Paljonko suorittamiseen kuluu tällä kertaa aikaa? Entä mikä on nyt prosessien keskimääräinen läpimenoaika ja prosessorin käyttöaste?

    c) Olettakaa seuraavaksi, että käytössä on SMP-laitteisto, johon kuuluu kaksi prosessoria. Siinä suoritetaan b)-kohdan prosesseja, jotka käynnistetään yhtä aikaa. Esittäkää aikadiagrammin avulla kuinka prosessien suoritus etenee. Paljonko suoritukseen menee aikaa tällä kertaa? Mikä on nyt prosessien keskimääräinen läpimenoaika ja prosessorien käyttöaste?

    => 3.3 - TOIPUMINEN

    Levyn tiedostojärjestelmä voi myös vikaantua esim. ohjelmavirheen tai levyn vikaantumisen vuoksi. Tällöin levyltä ei löydykään tiedostoja normaalisti.

    Ajatellaan yksinkertaista hierarkista tiedostojärjestelmää (esim. FAT), jossa käytetään tiedostoille varaustaulua. Mitä tapahtuu, jos vapaata levytilaa osoittava taulu tai lista katoaa levyn vikaantumisen vuoksi? Voidaanko tällaisesta tilanteesta toipua takaisin normaaliin tilanteeseen vai täytyykö koko levylle sanoa hyvästi? Millaisia vaihtoehtoja voisit ajatella olevan? Onko toipumisen kannalta merkitystä millaiseen rakenteeseen vapaantilan tiedot on tallennettu?

    => 3.4 - FAT JA LEVYTIEDOSTON KÄYTTÖ

    FAT-tiedostojärjestelmä käsittelee levyä ikäänkuin se olisi jatkuva levyn ulkoreunasta alkava varausyksikköjen (lohkojen) muodostama yksiulotteinen taulukko. Ensin numeroidaan ylimmän levypinnan uloimman uran lohkot, sitten seuraavan levypinnan uloimman uran lohkot jne. Tämän jälkeen numeroidaan ylimmän levypinnan toiseksi uloimman uran lohkot jne.

    Tarkasteltavalla levyllä on kaksi levypintaa (numerot 0 ja 1), kummallakin pinnalla on 80 uraa (numerot 0..79 ulkoapäin lukien). Urat jakaantuvat 18:aan sektoriin (numerot 1..18). Sekä sektorin että lohkon koko on 512 tavua.

    Levyn alusta on varattu 1 sektori boottitietuetta varten, yhteensä 18 sektoria varaustaululle ja sen kopiolle (FAT, file allocation table) sekä 14 sektoria juurihakemistolle.

    a) Montako tavua levylle kaiken kaikkiaan sopii?

    b) Montako prosenttia levystä jää käyttäjän hakemistoille ja tiedostoille?

    c) Hakemistoalkiossa on tiedostonimen ja attribuuttien lisäksi vain tiedoston ensimmäisen lohkon numero. Loput tiedoston lohkot käyvät ilmi seuraamalla varaustaulussa ylläpidettyä ketjutusta. Tiedoston JEMMA ensimmäinen lohko on varausyksikössä 44, ja varaustaulun sisältö ko. kohdassa:

    43:
    44: 45
    45: 46
    46: 50
    47:
    48:
    49:
    50: 51
    51: 52
    52: 60
    

    Millä levypinnalla, uralla ja sektorilla sijaitsee tiedoston JEMMA 2152:s tavu?

    => 3.5 - OPEN - KÄYTÄ - CLOSE

    a) Eräissä järjestelmissä tiedostoa ei tarvitse erikseen avata tai sulkea rutiineilla fd = open(tdstonimi,käyttötapa) ja close(fd), vaan KJ avaa tiedoston, kun sitä käytetään ensimmäisen kerran ja KJ sulkee sen, kun ohjelma päättyy. Mitä hyötyä / haittaa tästä on verrattuna siihen, että tiedosto on erikseen avattava ennen sen käyttöä ja että tiedoston voi halutessaan erikseen sulkea?

    b) Kun prosessi avaa tiedoston, se antaa parametrina tiedostonimen sekä käyttötavan (esim. read / write / append). Kuinka KJ löytää suhteellista polkunimeä käyttävän tiedoston? Miten KJ tarkistaa onko aiottu käyttötapa sallittu tälle prosessille?

    c) Montako levyhakua tarvitaan UNIX-järjestelmässä pahimmillaan, kun halutaan lukea tiedoston /usr/ville/data tavu 13423956? Oletetaan, että juurihakemiston / i-solmu on jo muistissa, eikä yksikään tarvittavista hakemistoista ole niin iso, että se jakautuisi useampaan lohkoon.

    => 3.6 - SIIRRÄNTÄÄ JA TIEDOSTOJEN HALLINTAA

    Prosessi tekee palvelupyynnön READ lukeakseen aiemmin avaamastaan tiedostosta F muuttujaan MJA yhden kokonaisluvun (siis 4 tavua). Oletetaan lisäksi, että mitään ei ole valmiiksi muistissa. Kokonaisluku on siis noudettava levyltä asti.

    Mitä parametreja prosessin on välitettävä käyttöjärjestelmälle? Miten?

    Kuinka KJ pääsee käsiksi juuri tähän tiedostoon F liittyviin tietoihin?

    Mistä KJ saa selville monesko tiedoston lohko on luettava muistiin? Kun lohkonumero on selvillä, voi laiteriippumaton taso antaa I/O-pyynnön laiteajurille. Mitä tietoja laitejurille pitää välittää?

    Ajuri laskee lohkonumerosta lohkon fyysisen sijainnin (levypinta, ura ja sektori) ja välittää sen levyohjaimelle. Mitä muita tietoja laiteajuri antaa levyohjaimelle DMA-siirtoa varten ja kuinka se nämä parametrit välittää?

    DMA-ohjain pystyy siirtämään itsenäisesti tiedon levyltä muistiin, joten CPU suorittaa muita prosesseja siirron aikana. Miten KJ saa tiedon siirron valmistumisesta? Miten KJ käsittelee palvelupyynnön loppuun (vihje: minne ohjain siirsi?)?

    o B - PERUSTELKAA PORUKALLA TARKISTUSKYSYMYKSIÄ

    Kehittäkää viisi aihepiiriin liittyvää tarkistuskysymystä / keskeistä asiaa pohtivaa tehtävää, sekä perustelkaa miksi kysymyksiinne on tärkeää osata vastata. 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ä.

    Vihjaiskaa, jos joku kohta kaipaa mielestänne tarkennusta, asiaan voidaan palata luennolla.

    o C - TEHKÄÄ PORUKALLA EVALUOINTIA / ITSEARVIOINTIA

    Tiimityönä: Täyttäkää oheinen lomake 3 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, vastatkaa kaikkiin kohtiin ja perustelkaa mielipiteitänne. Palautteen kattavuus (ts. onko kaikkiin kohtiin vastattu ajatuksella) arvioidaan (0, 1, tai 2), 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.


    o Kertauskysymyksiä (Poimittuna raporteista)

    • Mitä prosessit ja säikeet ovat, kuinka ne eroavat toisistaan ja mitä yhteistä niillä on?
    • Minkälaisissa tiloissa prosessit voivat olla ja mitä tilat merkitsevät?
    • Mitkä ovat tilanvarauksen perustehtävät ja ongelmat eri toteutustavoissa?
    • Miten uusi prosessi syntyy?
    • Mitä eroa on säikeiden ULT ja KLT toteutuksissa?
    • Mitä hyötyä on säikeistä?
    • Mitä hyötyä on osituskäyttöön perustuvasta moniajojärjestelmästä verrattuna yksiajojärjestelmään?
    • Mistä osista prosessi koostuu, missä ne sijaitsevat ja miten ne linkittyvät toisiinsa?
    • Miten Mode Switch ja prosessinvahto eroavat toisistaan?
    • Mikä merkitys on varaustaululla (FAT) tiedostojärjestelmässä
    • Miksi ohjelman käyttämien tiedostojen sulkeminen on yleensä ohjelmoijan vastuulla?
    • Mitä tietoja FAT sisältää?
    • Mitä tehtäviä kuuluu KJ:n tiedostojen hallintaan?
    • Kuinka KJ löytää suhteellista polkunimeä käyttävän tiedoston
    • Mistä KJ tietää missä levyllä on vapaita ja/tai varattuja alueita?
    • Mitä erilaisia puskurointitapoja on, miten ne toimivat ja miksi niitä tarvitaan?
    • Miksi DMA siirto on parempi kuin epäsuora I/O?
    • Miten hakemistojen käyttö tiedostojen organisoinnissa on kehittynyt?
    • Mitä eroja on siirrännän eri perustekniikoilla
    • Mistä tehtävistä KJ:n tiedostojärjestelmä huolehtii?
    • Millaisia perustietorakenteita KJ ylläpitää?
    • Tiedostojen erilaista käsittelyä varten voi olla erilaisia tietorakenteita. Millaisia tietorakenteita on käytössä?
    • Käyttäjä ajaa UNIX-järjesetelmässä komennon ls. Mitä tiloja prosessi käy läpi suorituksensa aikana? Mikä aiheuttaa tilasiirtymät? Mitä levyoperaatioita käyttöjärjestelmä tekee, jotta hakemistolistaus saadaan tulostettua?
    • Mitä eri KJ:n keroksia tarvitaan, kun prosessi haluaa lukea levyltä tiedostosta tavuja muistissa olevaan muuttujaan? Mitä parameterja välitetään kerroksien välillä ja miten?
    • Mitä hyötyä on siirräntäjärjestelmän hierarkiasta.
    • Miksi tiedostojen varaustaulusta on hyvä pitää varmuuskopioita
    • Miten DMA siirto toimiii?
    • Mitä eroa on hakemistolla ja tiedostolla? Entä samankaltaisuuksia?
    • Mikä on hakemisto ja onko siitä muuta hyötyä kuin tiedostojen organisointi
    • Monet siirron osat ovat käyttöjärjestelmän ohjelmallisia elementtejä, kuten laiteajuri. Miten käyttöjärjestelmä ladataan muistiin, kun levynhallinta on vielä jossain levyllä?
    • Mitä väylävaihtoehtoja on DMA-ohjaimen, prosessorin, muistin ja I/O-laitteiden kytkemiselle? Mitä hyötyä eri malleilla on?

    Osioon 2 o


    Paras kuri - ainoa joka tehoaa - on itsekuri.

    Sivu luotu 13.10.2004 Tiina Niklander, Auvo Häkkisen sivujen pohjalta