D B. Levytiedostojen käsittely. Levytiedostojen käsittely

Samankaltaiset tiedostot
D B. Tiedostojen käsittely

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

Levymuisti. R&G Chapter 8 & Tietokannan hallinta, kevät 2006, Jan 1

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja:

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Tietokanta (database)

Luento 2: Tiedostot ja tiedon varastointi

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

Luento 9 Järjestelmän ulkoinen muisti

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

D B. Tietokannan hallinta kertaus

Yksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen

Helsingin yliopisto/tktl Tietokannan hallinta kevät Harri Laine 1 D B. Yksitasoiset talletusrakenteet

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Työasema- ja palvelinarkkitehtuurit (IC130301) Apumuistit. Kiintolevyt. 5 opintopistettä. Petri Nuutinen

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Tiedostorakenteet.

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Luento 9 Järjestelmän ulkoinen muisti

2. Tietokannan tallennusrakenteet

Sisältö SIIRRÄNTÄ. I/O-laitteiden luokittelua. Yleistä siirrännästä. Siirrännän perustekniikat. Siirtonopeuksia (teoreettisia) Kuva 11.

D B. Harvat hakemistot. Harvat hakemistot

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Stallings, Luku I/O-laitteiden luokittelua, siirtonopeuksia Siirrännän perustekniikat Siirrännän kehittyminen

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Luento 9 Järjestelmän ulkoinen muisti

Hajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Algoritmit 2. Luento 5 Ti Timo Männikkö

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Luento 9 Järjestelmän ulkoinen muisti

Tietokantajärjestelmien tulevaisuuden haasteet. Jan Lindström

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Algoritmit 2. Luento 5 Ti Timo Männikkö

2. Tietokannan tallennusrakenteet

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

HELIA 1 (15) Outi Virkki Tiedonhallinta

Stallings, Luku

Järjestelmän ulkoinen muisti I/O

Luento 9 Järjestelmän ulkoinen muisti

MP3 Manager Software for Sony Network Walkman

VÄLIMUISTITIETOISET PUSKURIT. Markus Montonen

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

CUDA. Moniydinohjelmointi Mikko Honkonen

NTÄ. Luento 8: SIIRRÄNT. Osio 3: Siirräntä ja tiedostojärjestelmä. ltö. Yleistä siirrännästä. Siirtonopeuksia (teoreettisia) Kuva 11.1.

Osio 3: Siirräntä ja tiedostojärjestelmä

Raporttiarkiston (RATKI) käyttöohjeet Ohjeet

Algoritmit 2. Luento 3 Ti Timo Männikkö

Muistihierarkia Kiintolevyt I/O:n toteutus

Algoritmit 2. Luento 6 Ke Timo Männikkö

Ulkoinen muisti ja IIO:n toteutus

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Algoritmit 2. Luento 3 Ti Timo Männikkö

Lue ohjeet huolellisesti ennen laitteen käyttöä.

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

Tietorakenteet ja algoritmit

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57.

RATKI 1.0 Käyttäjän ohje

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

Luento 6: VIRTUAALIMUISTI

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Dell Fluid Data TM solutions

Algoritmit 2. Luento 2 To Timo Männikkö

D B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

Algoritmit 2. Luento 6 To Timo Männikkö

Helsingin yliopisto /TKTL Tietokannan hallinta Harri Laine 1 D B. Harvat hakemistot. Harvat hakemistot

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Muistihierarkia Kiintolevyt I/O:n toteutus

Tehtävä 2: Tietoliikenneprotokolla

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

A TIETORAKENTEET JA ALGORITMIT

NOVAPOINT Soundings Editor 3.3

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö

2 Konekieli, aliohjelmat, keskeytykset

Kansionäkymä listasta suuriin kuvakkeisiin

Käyttöjärjestelmän rakenne

Algoritmit 1. Luento 7 Ti Timo Männikkö

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut.

Tietokoneen toiminta, K Tavoitteet (4)

HELIA 1 (11) Outi Virkki Tiedonhallinta

Transkriptio:

Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin edullisuus keskusmuistiin verrattuna, ja suuremmat tallennusvolyymit keskusmuistiakin mitataan nykyään jo gigatavuissa mutta tietokantoja jopa teratavuissa Levymuistin merkittävin huono puoli keskusmuistiin nähden on tiedon hidas saantiaika Keskusmuistissa saantiaika on kymmeniä nanosekunteja, luokkaa 10-50 ns Levymuistista saantiaika on luokkaa 5-10 millisekuntia (ms) eli 5,000,000-10,000,000 ns eli 100 000 1M hakua keskusmuistista yhtä levyhakua kohti 1 2 Ohjelmointikielissä levylle tallennettua tiedostoa käsitellään yleensä peräkkäisten tietueiden joukkona. Suorasaantitiedostossa (direct access file) tietue (record) voidaan osoittaa tiedoston sisäisen järjestysnumeron perusteella. Peräkkäissaantitiedostossa tietuetta ei voida hakea osoitteen perusteella vaan tiedostoa on käytävä läpi alusta alkaen kunnes haluttu tietue löytyy. Tiedostorakennetasolla tiedosto voidaan ajatella tietueiden joukkona. Tyypillisiä tiedostoon kohdistuvia operaatioita ovat: avaus (open) haetaan tiedoston liittyvät metatiedot (tiedostokuvaaja, file header) ja alustetaan tiedoston käsittelyyn tarvittavat tietorakenteet sulkeminen (close) tiedoston käsittelyyn varatut resurssit vapautetaan siirtyminen alkuun (reset), vuorossaolevaa tietueen osoitin siirretään tiedoston alkuun. 3 4 ensimmäisen ehdon täyttävän tietueen haku (find) ensimmäinen hakuehdon täyttävä tietue haetaan ohjelman työalueelle eri tiedostorakenteet tukevat erilaisia hakuehtoja yksinkertaisimmassa tapauksessa käytettävissä on vain haku tietueen järjestysnumeron (osoitteen) perusteella seuraavan hakuehdon täyttävän tietueen haku (find next) tietueen poisto (delete) - tietue poistetaan tiedostosta tietueen muutos (modify) jonkin tietoalkion arvon suhteen muuttunut tietue korvaa olemassaolevan tietueen tietueen lisäys (insert) tiedostoon lisätään tietue ylläpito-operaatioiden tarjonta riippuu tiedostorakenteesta. Kaikki rakenteet eivät esimerkiksi tue poisto-operaatiota, vaan koko tiedosto poistettavaa tietuetta lukuun ottamatta on kirjoitettava uusiksi ja tällä tiedostolla sitten korvattava edellinen versio. 5 6

Apumuistiin tallennettuja tietoja ei siirretä suoraan apumuistista ohjelman työtilaan vaan siirto tapahtuu puskureiden (buffer) kautta Kun ohjelma haluaa hakea tietyn tietueen on tietueen sisältävä sivu (page) haettava ensin johonkin puskuriin (buffer frame), jonka jälkeen tietue voidaan siirtää puskurista ohjelman työtilaan. Puskurien koon ja tiedoston sivukoon on vastattava toisiaan. Tiedoston käsittelyä varten on yleensä käytössä usean puskurin puskuri (buffer pool) 7 Tiedostorakennetason näkemys: tiedostossa osoitettavissa olevia tietueita Puskurinhallintatason näkemys: tietueet sijoitettu sivuille, sivuja käsitellään puskureiden kautta : puskuri 1 puskuri 2 sivun 2 kopio 4 5 6 tietueen 6 kopio ohjelman työtilassa 6 8 Tietueen haku ohjelman käyttöön, karkea algoritmi: tiedostorakenne.hae_tietue(x,muuttuja m) { y= tiedostorakenne.päättele_sivu_tietueelle(x); p= puskurinhallinta.anna_sivu(y) { q= puskurinhallinta.missä_puskurissa_on_sivu(y); jos (q==null) { // ei ole missään q= puskurinhallinta.valitse_vapaa_puskuri; puskurinhallinta.lataa_sivu(puskuriin q sivu y); puskurinhallinta.naulitse(sivu y puskuriin q); } muuten { puskurinhallinta.naulitse(sivu y puskuriin q);} palauta_osoitin_puskuriin q; } s= tiedostorakenne.päättele_sijainti(tietuelle x, puskurissa p); tiedostorakenne.siirrä(muutujaan m, puskurista p, kohdasta s); } 9 Puskurinhallinnan on tiedettävä minkä sivun kopioita puskureissa on ja mitkä puskurit ovat vapaina tiedonsiirtoa varten. Naulitsemismenettelyllä (fix, pinning) pidetään kirjaa varatuista puskureista naulitseminen kasvattaa puskuroidun sivun käyttäjälaskuria (pin counter). Kun sivun tarvitsija on käsitellyt sivun se ilmoittaa vapauttavansa puskurin (unfix), jolloin laskurin arvoa vähennetään. Kun yksikään prosessi ei enää tarvitse puskurissa olevaa sivua, on puskuri vapaa uudelleenkäyttöön. 10 Myös kirjoitukset levylle tapahtuvat puskureiden kautta. Uusi tai muuttunut tietue siirretään puskuriin. Puskuri merkitään muuttuneeksi (dirty). Kun prosessi on vapauttanut puskurin, puskurienhallinta siirtää puskurissa olevan sivun aikanaan levylle. Muutos voi kasvattaa sivun sisältöä niin, ettei se enää mahdu puskuriin. Tällöin otetaan tyypillisesti käyttöön ylivuotosivu, joka linkitetään alkuperäiseen sivuun. 11 Tietueen pituus kasvaa: puskuri 1 puskuri 2 4 5 6 sivun 2 kopio tiedosto korvaava: 6* 12

Levyn tilanne hetkellisesti erilainen kuin puskureiden puskuri 1 puskuri 2 6B sivun 4 kopio (2:n ylivuoto) puskurissa 1 sivu 4 4 5 6A sivun 2 kopio linkki jaettu 6A 6B 13 Jos puskurialtaat eivät ole prosessikohtaisia, voi usea prosessi saada edellä hahmotellussa puskurikäsittelyssä haltuunsa osoittimen samaan puskuriin ja voisi siis käsitellä puskurissa olevia tietoja. Tästä aiheutuvia samanaikaisuusongelmia hoidetaan salpojen (latch) avulla. salpoja on kahta tyyppiä lukusalpoja (read latch) ja kirjoitussalpoja (write latch) estää muilta kaiken prosessoinnin Vain yhdellä prosessilla voi olla kirjoitussalpa hallussaan 14 Sivulla voi olla useita tietueita tai olla vain osa tietueesta (tietue voi jakautua useille sivuille). Sivu on abstraktio fyysisen levyn lohko (block) käsitteestä. Joissakin järjestelmissä on mahdollista siirtää kerralla useampien lohkojen ryppäitä (cluster). Tällöin sivu vastaisi rypästä. Jos tietue jakautuu useille sivuille käytetään usein edellisen kuvan mallin mukaista ylivuotosivua 15 hae sivu lue sivu hae tietue hae seuraava poista tietue tiedostorakennetaso puskurien hallinta laiteohjain vie sivu kirjoita sivu piilottaa ylemmiltä tasoilta tiedon siitä onko sivu levyllä vai valmiina puskurissa loogisista osoitteista fyysisiin 16 Levykön rakenne Tiedostorakennetason käsittelyssä haku- operaation hakukriteerinä voi olla jonkin tietoalkion arvo. Puskuritason hakuoperaatiossa sivu haetaan loogisen sivuosoitteen perusteella Yhtä puskuria voi samanaikaisesti käsitellä vain yksi prosessori. Puskureiden ja apumuistin väliseen tiedonsiirtoon käytetään erillistä I/O- prosessoria. Täten yhdessä puskurissa olevaa tietoa pystytään käsittelemään samanaikaisesti kun toiseen puskuriin kohdistuu tiedonsiirtoa. pyöriviä levyjä Hakuvarsi ura lohko sektori luku-/kirjoituspää 17 18

Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta sadasta muutamaan tuhanteen, päällekkäiset urat muodostavat sylinterin (cylinder) Urat voivat jakautuvat sektoreihin (sector) Levyn formatoinnin yhteydessä levylle kiinnitetään urien jako lohkoihin (block). Lohkokoko on yleensä 512 tavun monikerta (kakkosen potenssi). Lohkot erotetaan toisistaan lohkovälillä, johon talletetaan lohkoon liittyvää kontrollitietoa. Lohko on pienin osoitettavissa ja siirrettävissä oleva kohde. lohkon osoite muodostuu levypinnan numerosta, uran numerosta ja uran sisäisestä lohkon numerosta 19 20 Lohkon sisällön hakemiseksi Siirretään luku/kirjoituspäät halutulle sylinterille (kaikki siirtyvät yhdessä) Odotetaan, että haluttu lohko pyörähtää luku/kirjoituspään kohdalle (pyörimisnopeus luokkaa 100 kierrosta sekunnissa) Aktivoidaan halutulla pinnalla oleva luku/kirjoituspää lukemaan dataa yleensä vain yksi pää voi olla samanaikaisesti aktiivinen I/O prosessori siirtää luetun datan hakupyynnön yhteydessä annettuun puskuriin 21 Levyltä hakemiseen kuluva aika muodostuu hakuvarren siirtoajasta eli kohdistusajasta (seek time) (sylinterille siirtyminen) aika riippuu siitä millä sylinterillä päät ovat alunperin, lyhyt siirtymä vie vähemmän aikaa, 0 levykohtainen maksimi. Usein ilmoitetaan vain keskimääräinen kohdistusaika esim. 6 ms pyörähdysviiveestä (rotational delay) riippuu alkuperäisestä kohdasta ja pyörimisnopeudesta. jos levy pyörisi 100 kierrosta sekunnissa (6000 minuutissa) olisi keskimääräinen pyörähdysviive n. 5 ms (puolet yhden kierroksen ajasta). 22 siirtoajasta (block transfer time) riippuu uran kapasiteetista, pyörimisnopeudesta ja lohkon koosta esimerkiksi jos pyörimisnopeus olisi 100 kierrosta sekunnissa levyjä olisi 6 (12 pintaa) sylintereitä 8000 ja lohkokoko 1K tavua sekä uralla 500 lohkoa niin levyn kapasiteetti olisi 1KB*500*96000 eli n 48 GB niin lohkon siirtoaika olisi (1/500)*10 ms = 20000ns (pyörähdyksen aikana siirrettävä koko urallinen) ja siirtonopeus 500KB/10ms= 50 KB/ms eli 50 MB/s Mitä lähempänä (oikeaan suuntaan) nykyistä kohtaa seuraava haettava jakso on sitä nopeampaa on haku, nopeasta hitaaseen seuraavana samalla uralla samalla sylinterillä seuraavana ei pyörähdysviivettä jossain samalla uralla tai sylinterillä läheisellä sylinterillä kaukaisella sylinterillä 23 24

Peräkkäisten saman uran ja sylinterin jaksojen siirtäminen on tehokkainta koska tällöin ei tule hakuvarren siirtoa eikä pyörähdysviivettä. Levyjen siirtonopeudet ilmoitetaan usein bitteinä sekunnissa. Voidaan antaa joko sisäinen siirtonopeus ja tehollinen siirtonopeus (formatoituna) 25