270 likes | 372 Views
Tiedostonhallinta. CD-ROM, nauha-asema, optiset levyt… Ensisijaisesti kovalevyt. Kovalevy. fyysisesti koostuu urista, jotka on jaettu sektoreihin mahdollisesti useita levyjä rinnakkain levy pyörii vakionopeudella puomi siirtää luku-/kirjoituspään halutulle paikalle
E N D
Tiedostonhallinta • CD-ROM, nauha-asema, optiset levyt… • Ensisijaisesti kovalevyt
Kovalevy • fyysisesti koostuu urista, jotka on jaettu sektoreihin • mahdollisesti useita levyjä rinnakkain • levy pyörii vakionopeudella • puomi siirtää luku-/kirjoituspään halutulle paikalle • hakuaika = aika, joka kuluu puomin siirtämiseen halutulle radalle
Hakuaikojen minimointia • FIFO (ei ole optimointia, mutta ei myöskään nälkiintymistä) • SSTF (Shortest Service Time First) • SCAN (liikkuu vain yhteen suuntaan kerrallaan) • C-SCAN (liikkuu vain yhteen suuntaan) • N-step-SCAN (jonoja, jotka käsitellään) • FSCAN (kaksi jonoa)
Tiedostojen tarkoitus • käytetään tiedon loogiseen jäsentelyyn • kokonaisuuksien hahmottamiseen • jaetaan kolmeen luokkaan: datatiedostoihin, ohjelmatiedostoihin ja erikoistiedostoihin
Tiedostoista Puhuttaessa datatiedostoista kolme keskeistä termiä ovat: • Kenttä, tiedon peruselementti, esimerkiksi sukunimi tai puhelinumero. • Tietue, joka on kokoelma yhteenkuuluvia kenttiä siten kuin joku sovellusohjelma niitä käyttää. • Tiedosto, joka on kokoelma samankaltaisia tietueita. Käyttäjät ja sovellukset käsittelevät tietueita kokonaisuuksina, joihin voidaan viitata nimellä. Suojaukset (käyttöoikeudet) asetetaan usein tällä tasolla. Esimerkki tiedostosta, jossa näkyvät selvästi tietueet (rivit) ja kentät on unixin /etc/passwd tiedosto.
Ohjelmatiedostot eroavat näistä funktionsa puolesta – ne ovat jossakin formaatissa olevia datatiedostoja, jotka käyttöjärjestelmä lukee ja antaa prosessorille ohjeen lukea käskynsä niistä. • Erikoistiedostot ovat esimerkiksi erilaisten oheislaitteiden abstrahointeja, tiedostonhallintaan liittyviä työkaluja (kuten luettelo vapaasta tilasta ja hakemistot) tai muita käyttöjärjestelmän työkaluja (esim. unixin putket).
Tiedosto toimii rajapintana, jonka kautta tietoa luetaan ja kirjoitetaan. On luontevaa käyttää siis tiedostoa kaikissa tilanteissa, joissa tietoa siirretään. Tietokoneen I/O-laitteet jakautuvat kolmeen luokkaan: • Ihmiskäyttöiset (näppäimistö, hiiri, näyttö) • Konekäyttöiset (kovalevy) • Kommunikointilaitteet (verkkokortti, modeemi) Jokaisella näistä on omat erityisominaisuutensa, erityisesti liittyen siihen kuka niitä hallitsee ja miten.
Kaikkiin mainittuihin laitteisiin liittyy joukko ominaisuuksia, esimerkiksi: • Tiedonsiirtonopeus (näppäimistöllä olematon, näytöllä suuri) • Tiedonsiirtoyksikkö (tavu tai lohko) • Tiedon esitystapa (liittyykö tietoon koodausta, esimerkiksi tiedonsiirron varmistamiseksi tai autentikointia varten) • Käyttötarkoitus (kommunikointi, tulostus, syöttö ja varastointi) • Käytön monimutkaisuus (yksinkertaiselle toiminnalle riittää yksinkertainen käyttöliittymä, tulostinta on helpompi ohjata kuin näyttöä) • Virhetilanteet (virheiden luonne, miten niistä ilmoitetaan, niiden seuraukset)
Ominaisuudet saattavat olla hyvin erilaisia • Käyttöjärjestelmä pyrkii kuitenkin tuottamaan mahdollisimman yhtenäisen rajapinnan • Laitteita käsitellään usein käyttäjän kannalta tiedostoina.
stdin • stdout • stderr Voidaan myös ohjata tai lukea oletuksesta poiketen. Prosessorin nopeus vs. I/O-laitteiden nopeus
Tallennustiedosto Tiedoston erikoistyyppi, ns. tavallinen tiedosto. Loogisesti jaetaan • Hakemistojärjestelmä • Tiedostojärjestelmä • Fyysinen rakenne
Tunniste, joka identifioi tiedoston yksikäsitteisesti. • Ulkoinen (symbolinen) nimi, joka on käyttäjälle ymmärrettävä ja jonka voi tyypillisesti syöttää komentoriviltä. • Tiedoston tyyppi (hakemisto, putki, symbolinen linkki tms.) • Tiedoston tila (suljettu, avattu kirjoittamista varten, avattu lukemista varten jne.) • Jaettavuus (lukua, suoritusta tai kirjoitusta varten) • Omistaja ja mahdollinen ryhmä. • Käyttäjä, prosessi, jonka hallussa tiedosto on. Jos tiedosto ei ole jaettava, se voi olla korkeintaan yhden omistajan hallussa. • Suojausasetukset eli kenellä on oikeus lukea tiedostoa, kirjoittaa siihen tai suorittaa sitä. • Pituus. • Luontiaika. • Viimeinen muutosajankohta. • Viimeinen käyttöajankohta. • Viittausten lukumäärä. Jos tiedostoon osoittaa kovia linkkejä, se poistetaan, kun ne kaikki on purettu. • Tallennuslaitteen yksityiskohdat eli varsinainen tieto siitä, mihin data on sijoitettu ja miten siihen pääsee käsiksi.
Minimaaliset perusoperaatiot tiedostonkäsittelyyn ovat: • avaa(tiedostonimi) – tiedostonimi on merkkijono, joka yksikäsitteisesti määrittelee tiedoston. Se saattaa sisältää hakemistonimen. Tämä operaatio valmistelee tiedoston lukemista tai kirjoittamista varten. Se päivittää tiedostoelementtiä tarvittavilta osin (Esim. viimeinen käyttöajankohta, käyttäjä jne). Operaatio asettaa loogisen lukupään tiedoston alkuun ja palauttaa tiedostoon kahvan, jota käytetään viitatessa tiedostoon myöhemmin. • sulje(kahva) – kaikki tiedostoon liittyvät tiedot päivitetään tiedostoelementtiin, tiedosto kirjoitetaan levylle (jos sitä on muutettu) ja siihen liittyvät resurssit vapautetaan. jatkuu …
… jatkuu • lue(kahva, puskuri, pituus) – operaatio kopioi puskuriin korkeintaan määrän ”pituus” tavua kahvan osoittamasta tiedostosta, alkaen paikasta, jossa looginen lukupää sillä hetkellä on. Jos tiedoston loppu tulee vastaan, luetaan vähemmän kuin pituus tavua. Jos yritetään lukea oltaessa tiedoston lopussa, palautetaan EOF (End Of File). Loogista lukupäätä siirretään luettujen tavujen määrän verran eteenpäin. • kirjoita(kahva, puskuri, pituus) – kuten lue, mutta kirjoittamisen suhteen. Kirjoitettava data on puskurissa. Tiedoston loppu saatetaan ylittää, jolloin tiedoston pituus kasvaa. • kelaa(kahva, sijainti) – tämä seek-operaatio muuttaa loogisen lukupään asemaa tiedostossa.
Tiedostotyypit Valintakriteereitä: • Tietoa päästään nopeasti käsittelemään • Helppo päivitettävyys • Taloudellinen tilankäyttö • Helppo ylläpidettävyys • Luotettavuus
Yleisimmät tiedostotyypit • Kasa • Peräkkäistiedosto • Indeksoitu peräkkäistiedosto • Indeksoitu tiedosto • Suora tiedosto.
Kasatiedosto • Yksinkertaisin rakenne • Kerää ja tallentaa tietoa siinä järjestyksessä kuin sitä tulee • Tietueiden rakenteen ei tarvitse olla yhdenmukainen • Taloudellinen tilan suhteen, kun tietueet ovat erilaisia • kohtuullinen nopeus hakujen suhteen • helppo lisätä tietoa
Peräkkäistiedosto • Tietueet tallennetaan samaan kiinteään muotoon -> jokainen tietue on yhtä pitkä, jokaisessa tietueessa on samat kentät samassa järjestyksessä • Kenttien nimiä ei tarvitse tallentaa • Avainkenttä, jonka mukaan tietueet järjestetään -> Päivittäminen hidasta • Hyviä ja toimivia, kun kaikki tietueet käydään läpi samanaikaisesti • Huonoja, kun käytetään tai muokataan vain yhtä tietuetta kerrallaan
Indeksoitu peräkkäistiedosto • Peräkkäistiedostoon lisätään kaksi muuta tiedostoa: indeksi ja ylivuototiedosto • indeksiin tallennetaan avaimia ja viittauksia itse peräkkäistiedostoon • ylivuototiedostoon kerätään uudet tietueet, jotta niiden lisääminen voidaan hoitaa tehokkaasti useampi kerrallaan • vanhoihin tietueisiin lisätään viittaus ylivuototiedoston tietueisiin tarpeen mukaan • Tehostaa huomattavasti ajankäyttöä suhteessa tavalliseen peräkkäistiedostoon
Indeksoitu tiedosto • Indeksoidussa tiedostossa luovutaan peräkkäistiedoston tiukasta rakenteesta, tietueiden ei tarvitse olla minkään avaimen mukaisessa järjestyksessä tai tietyn pituisia • Tietueet indeksoidaan kahdella tapaa (joilla saattaa olla tarpeen mukaan omat indeksit): kattavat indeksit (sisältää kaikki tietueet) ja osittaiset indeksit (sisältää kaikki tietueet, joista löytyy tietty kenttä) • Käytetään, kun aika on hyvin kriittinen ja kaikkia tietoja käytetään harvoin samanaikaisesti
Suora tiedosto • Käyttää hyväkseen tiedostojärjestelmän ominaisuuksia • Erittäin nopea • Vaatii kiinteämittaisen tietueen http://www.uwasa.fi/~h79423/kj/tiedostot.html
Fyysinen toteutus Vaatimukset • Suuret tiedostot hallittava tehokkaasti. • Pienet tiedostot (joita suurin osa on) toteutettava tehokkaasti. • Nopeus. • Luotettavuus. • Tiiviys. Osittain toisensa poissulkevia
Jatkuvat muistialueet • yksinkertaisesti annetaan tiedostolle joukko peräkkäisiä lohkoja, jotka riittävät tiedostoa varten • Ideaalinen tapa, kun tietoa ei enää myöhemmin muuteta ja sitä voidaan lukea siinä järjestyksessä, missä se on kirjoitettu (CD-levy)
Linkitetyt listat • Linkitetään lohkot toisiinsa antamalla lohkon i+1 osoite lohkon i lopussa. • Tiedostoelementissä (nodessa) viittaus vain ensimmäiseen lohkoon • Voidaan toteuttaa myös erillisenä tiedostona, jolloin elementissä viittaus erillisen tiedoston tauluun. Taulu sisältää viittauksia lohkoihin ja taulun kohtaan, jossa kerrotaan seuraava lohko. Lista voi olla myös kaksisuuntainen
Indeksoitu osoitus • Jokaisen tiedoston lohkoista osa on varattu tauluja varten, jotka kertovat mistä muut lohkot löytyvät. • Jos tiedostot ovat pieniä, saattaa viedä hyvinkin paljon tilaa turhaan • Pitkiä tiedostoja varten lohkoja linkitetty keskenään taulukoksi • UNIXissa monitasoinen taulukko
Käyttämätön levytila • tilaa, joka järjestelmällä on käytössä uusia (tai kasvavia) tiedostoja varten, pitää myös hallita jotenkin • luettelot usein pitkiä ja vaativat paljon tilaa • linkitetty lista on epäkäytännöllinen, kun halutaan jatkaa tiedostoa mahdollisimman lähelle sen nykyistä sijaintia • bittikartta
Hakemistot Peruskomennot: • Luettele – palauttaa listan kaikista tiedostoista ja hakemistoista, joihin hakemistossa on viite. Hakemiston luettelokäskyjä käytetään myös tiedostoelementin sisällön näyttämiseen käyttäjälle ja ohjelmille. Esimerkiksi unixin ls. • Kopioi – luo olemassaolevasta tiedostosta kaksoiskappaleen. Unixin cp. • Poista – poistaa nimetyn tiedoston hakemistosta ja (jos siihen ei viitata enää mistään hakemistosta) vapauttaa kaikki tiedostoon liittyvät resurssit, kuten tiedostoelementin ja varatut muistilohkot. Unixissa rm. • Siirry – siirtyy yhdestä hakemistosta toiseen. Suurin osa nykyaikaisista tietokoneista sisältää hierarkisen tiedostojärjestelmän eli hakemistoilla on alihakemistoja. Siirtymisoperaatio sallii käyttäjän navigoida tässä rakenteessa hakemistosta toiseen. Unixissa cd. • Luo_hakemisto – luo uuden hakemiston. Unixin mkdir. • Poista_hakemisto – Poistaa alihakemiston Unixissa rmdir.