Käyttöjärjestelmät t I Luento 10: TIEDOSTOJÄRJESTELM RJESTELMÄ OSA 2 Stallings, Luku 12.1-12.7 + PALVELUPYYNNÖT KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-1 Sisält ltöä Peruskäsitteistöä, tehtäviä ja tavoitteita Järjestelmän rakenne Tiedostojen organisointi u saantimenetelmät Hakemistot Yhteiskäyttö Levykirjanpito UNIX-esimerkki Palvelupyynnöt KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-2 10-1
Käyttöjärjestelmät I Pikakertaus tiedostojärjestelmistä KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-3 KJ:n tiedostojärjestelm rjestelmä Tdstojen käsittely suojaussyistä aina KJ:n tdstojärjestelmän kautta u käyttöoikeudet osa tdstomääreitä (attribuutteja) Huolehtii tallennuksen ja käytön yks.kohdat u kirjanpito vapaista lohkoista (taltiolla!) u hierarkkinen hakemistorakenne: kirjanpito tdstoista Fnimeäminen ja attribuutit, tdstoon kuuluvat lohkot u tdstojen käyttö Favoimet tdstot, luku / kirjoituspositio Fyhteiskäyttö Ei ota kantaa tdston loogiseen rakenteeseen u tdsto KJ:lle vain pötkö tavuja / lohkoja u sovellus tietää tulkinnan KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-4 10-2
KJ:n perustietorakenteita Kuva 3.10 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-5 KJ:n perustietorakenteita Tiedostokuvaajat (+levypartitiot) u kirjanpito vapaista / varatuista levylohkoista Fpysyvä kirjanpito levyllä, KJ tuo muistiin käsittelyä varten Fhakemistoalkio per tdsto (myös hsto on tdsto!) mitkä lohkot kuuluvat tdstoon muut tdston attribuutit (mm. omistaja, käyttöoikeudet) u kirjanpito avatuista tiedostoista Fprosessikohtaista PCB:ssä + yhteistä tietoa Fkäyttöoikeuksien tarkistaminen Fluku / kirjoituspositio Fyhteiskäyttö: poissulkeminen / synkronointi KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-6 10-3
Järjestelmän n rakenne Kuva 12.1 Tiedonhallintajärjestelmä Laiteriippumaton Laiteriippuva Järjestelmän n rakenne Tan01 Kuva 5-165 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-8 10-4
Tiedostonhallinnan elementit KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-9 Tiedostojen organisointi Nopea saanti u tärkeä yksittäistä tietuetta käsiteltäessä u ei tärkeä koko tdstoa erätyönä päivitettäessä Päivittämisen helppous u esim. CD-ROMilla oleva tdsto ei muutettavissa Talletustilan tehokas käyttö u ei moninkertaista / ylimääräistä talletusta u mutta ylimääräiset indeksit nopeuttavat käyttöä Ylläpidon yksinkertaisuus Luotettavuus KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-10 10-5
Saantimenetelmät Sovelluksella standardoidut operaatiot tdston käsittelemiseksi u open(), close(), read(), write(), seek() Tdstojen erilaista käsittelyä varten voi olla niitä tukevia lisätietorakenteita u kekorakenne u peräkkäisrakenne u indeksoitu peräkkäisrakenne u indeksoitu rakenne u hajautettu rakenne Vaikuttavat tdstojen talletustapaan, käyttötapaan ja käytön tehokkuuteen KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-11 Hakemistorakenteena hierarkinen puurakenne Juurihakemisto, kotihakemistot, alihakemistot Myös prosessit voivat luoda alihakemistoja Juurihstolla kiinteä paikka levyllä KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-12 10-6
Tiedostojen yhteiskäytt yttö Käyttöoikeudet merkitty attribuutteihin Käyttäjien jaottelu (UNIX: u g o) Oikeuksien jaottelu ryhmittäin (UNIX: rwx) Hakemiston oikeudet (UNIX: rwx) Omistaja voi muuttaa käyttöoikeuksia Muita mahdollisia oikeuksia Eräissä järjestelmissä mahdollista määritellä myös käyttäjäkohtaisia oikeuksia KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-13 Tiedostojen yhteiskäytt yttö KJ tarkistaa käyttöoikeudet yleensä vain tdstoa avattaessa u PCB:ssä omistaja (uid) ja ryhmä (gid) u hstoalkiossa omistaja (uid) ja ryhmä (gid) Oikeudet oltava kaikkiin polkunimen osiin Käyttäjän uid ja gid käyttäjätietokannasta u UNIX: passwd-tdsto: uid ja ensisijainen gid group-tdsto: käyttäjän muut ryhmänumerot uid ja gid periytyvät lapsiprosesseille ja edelleen luoduille tdstoille KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-14 10-7
Käyttöjärjestelmät I Tilanvaraus KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-15 Tilanvaraus Ennaltavaraus u maksimikoko kerrottava etukäteen Fonnistuu, jos esim. kopioidaan tdsto Fluojilla taipumus arvioida yläkanttiin Fhukkaa tilaa u sijoitettavissa käytön kannalta tehokkaasti Fminimoi hakuajan Varaus tarvittaessa u järkevämpää ja yleisempää u ei hukkaa tilaa u hakuajan minimoimiseksi joskus uudelleenjärjestelyä KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-16 10-8
Tilanvaraus Pidettävä kirjaa taltion vapaista alueista u kirjanpito taltiolla u lue muistiin muuttamista varten Pidettävä kirjaa tdstolle varatuista alueista u kirjanpito tdstokohtaisesti u löytyy hstoalkiosta / tdston attribuuteista Varaus yhtenä tai useampana erillisenä alueena Kerralla varattavan alueen koko vaikuttaa u kirjanpitoalueiden kokoon u hukkatilan määrään KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-17 Varausyksikön koko Jos tdston osat sopivasti peräkkäin, käsittely tehokasta u väh. hakuvarren siirtoja ja pyörähdysviipeitä Pientä varausyksikköä käytettäessä kirjanpitoalueet vievät enemmän tilaa Kiinteän varausyksikkökoon käyttö yksinkertaistaa varausta ja vapautusta u vrt. virtuaalimuisti ja sivutus Vaihtelevanmittaisen varausyksikön käyttö minimoi hukkatilaa u vrt. segmentointi u kirjanpito työläämpää KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-18 10-9
Koko tdsto yhdelle alueelle Hstoalkiossa vain ens. lohkon numero sekä tdston koko (pituus) Koon muuttaminen vaikeaa u arvioitava varausta tehtäessä u saatetaan joutua kopioimaan uudelle alueelle KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-19 Koko tdsto yhdelle alueelle Pirstoutuminen u tdstojen väliin jää tyhjää tilaa Vapaista alueista linkitetty lista u ens. vapaa lohkonumero, montako vapaata peräkkäin Vrt. yksinkertainen muistinhallinta u samat ongelmat ja heikkoudet KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-20 10-10
Lohkojen ketjutus Varaus lohko kerrallaan vasta tarvittaessa Hstoalkiossa viite tdston ensimm. lohkonumeroon sekä tdston koko Ketjutukselle tav. erillinen varaustaulu FAT, file allocation table u ketjutus ei syö tilaa datalohkoista u tdston lohkot muodostavat hstoalkiosta alkavan ketjun Falkiossa srvan lohkon numero tai loppumerkki u myös vapaat lohkot voidaan merkitä samaan tauluun KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-21 Lohkojen ketjutus Lohkojen varaus ja vapautus helppoa u mikä tahansa vapaa lohko kelpaa, u ei yhdistelemistä, ei järjestelemistä Saattaa aiheuttaa tdston pirstoutumista u peräkkäiset lohkot kaukana toisistaan Fhidastaa hakua u lohkojen järjestäminen lähemmäs toisiaan (consolidation) u levyn tiivistäminen (defragmentation) KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-22 10-11
Lohkojen ketjutus KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-23 Lohkohakemisto Erillinen hakemisto tdstolle varatuista lohkoista Usein erillään omassa lohkossa u hstoalkiossa vain hstolohkon numero KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-24 10-12
Vapaan tilan hallinta Tan01 6-216 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-25 Vapaan tilan hallinta Bittikartta u 0=vapaa, 1=varattu Vapaiden lohkojen listat u lohkoja, joihin talletettu vapaiden lohkojen numeroita u lohkon viimeinen numero viite seuraavaan lohkoon, jossa lisää vapaiden numeroita u esim. vanha UNIX Lohkojen varaus ja vapautus helppoa Saattaa aiheuttaa tdston pirstoutumista KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-26 10-13
Käyttöjärjestelmät I Esimerkki: Wanha perinteinen UNIX KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-27 UNIX Hstoalkiossa vain tdstonimi ja i-solmun numero (inode, information node) u tdstolla voi olla useita nimiä! Tdston muut attribuutit i-solmussa (64 B) u omistaja (uid), ryhmä (gid) u linkkien lukumäärä u koko tavuina u tdstotyyppi Fhsto, tavallinen, lohkolaite, merkkilaite, putki... u käyttöoikeusbitit Fomistaja rwx, ryhmä rwx ja muut rwx u aikaleimoja: muutettu, käytetty, inodea muutettu KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-28 10-14
UNIX i-solmussa myös 13 alkion lohkohakemisto u 10 suoraa tdston lohkonroa u lohkonro, jossa 256 tdston lohkonroa u lohkonro, jossa 256 lohkonroa, joissa 256 tdston lohkonroa u lohkonro, jossa 256 lohkonroa, joissa 256 lohkonroa, joissa 256 tdston lohkonroa Pääosa UNIX-tdstoista kooltaan alle 10 kiloa u lohkonumerot nopeasti selvillä Suurin tiedostokoko > 16 GB u mutta i-nodessa vain 32-bittiä koolle => max 4GB KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-29 UNIX Tan01 6-386 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-30 10-15
UNIX Tan01 6-396 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-31 UNIX Tan01 10-31 vapaat lohkot ketjutettu aiemmin kuvatulla tavalla taltiota alustettaessa i-solmussa merkintä vapaa/varattu superlohkossa mm. laitenro, partition koko, vapaiden lohkojen listan alku, vapaiden i-solmujen numeroita KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-32 10-16
UNIX PCB i-node nbr device nbr n = read(fd, buf, count) q laitenumeron perusteella KJ löytää laitekuvaajan ja ajurin KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-33 UNIX: Lohkopuskuri Tan01 6-27 Tunnussolmu laite#, lohko#, linkkejä, Modified, Free Puskurit kokonaisina erillisellä alueella tunnussolmussa viite varsinaiseen puskuriin Hajautustaulu etsinnän nopeuttamiseksi avaimena laite#, lohko# KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-34 10-17
LINUX Virtual File System Toteutukset usein sekoituksia useista eri malleista. Linuxissakin on useita mahdollisia tiedostojärjestelmiä (Käyttö)järjestelmän ylläpitäjä päättää mitä todella käytetään. KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-35 Käyttöjärjestelmät I PALVELUPYYNNÖT KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-36 10-18
Palvelupyyntö KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-37 Palvelupyynnöt Sovellus pyytää KJ:n palvelua käskykantaan kuuluvan käskyn välityksellä u Prosessit ja niiden välinen kommunikointi u Muisti u Tiedostot ja tiedostojärjestelmä u Siirräntä u Ym. Parametrit pinoon, sitten käsky esim. SVC Palvelupyyntö aiheuttaa keskeytyksen u CPU etuoikeutettuun tilaan u CPU suorittamaan KJ:tä KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-38 10-19
read(fd,, buffer, nbytes) Tan01 1-171 17 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-39 POSIX palvelupyyntöjä Portable Operating System ("UNIX Style") KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-40 10-20
POSIX palvelupyyntöjä Tan01 1-181 18 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-41 Käyttöesimerkki Tan01 1-191 19 Riisuttu komentotulkki KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-42 10-21
WIN32 API palvelupyyntöjä KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-43 Kertauskysymyksiä Mitä tehtäviä kuuluu KJ:n tdstojen hallintaan? Mitä laiteajuri tekee? Miksi jokaiseen tdstoon liittyvään palvelupyyntöön ei liity siirräntää? Mitä tietoja tdston attribuuteissa? Mitä tdstojärjestelmän käyttöön liittyviä tietoja PCB:ssä? Miten tdstojen käyttöoikeudet tavallisimmin määritellään? Milloin ne tarkistetaan? KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 10-44 10-22