10

Click here to load reader

P-Upravljanje I-O Sistemom 2005 06

Embed Size (px)

Citation preview

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    1

    Datum: 20.05.2006

    Predavanja

    Sadraj Predavanja

    Upravljanje I/O Sistemom

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    2

    Upravljanje I/O Sistemom

    U ranijim predavanjima smo govorili o upravljanu procesima i upravljanju memorijom. Pored ovih komponenata, kao jedna od najvanijih funkcija operativnog sistema istie se kompomenta za upravljanje input/ouput (I/O) sistemom. Kada mislimo na I/O module, mislimo na logiku komponentu, koja se brine o upravljanju I/O sistemom., t. j. kontroliranje toka podatka izmeu ureaja i bus-a. Eksterni ureaji povezani na I/O modul esto se nazivaju i periferni ureaj (periferal). Dakle, kontrola I/O ureaja predstavlja jednu od glavnih funkcija operativnog sistema, koji daje naredbe (komande) ureajima, hvata interrupt-e, te se brine o grekama. Uloga operativnog sistema je takoer da prui pojednostavjen interfejs izmeu samih ureaja i ostatka sistema,koji (interfejs) bi bio jednostavan za koritenje. Koliko god mogue, ovaj interfejs bi trebao da bude slian za sve I/O ureaje. Generalna klasifikacija eksternih ureaja Eksterne ureaje moemo klasifikovati u tri kategorije: 1. ovjeku orijentirani, itljivi od strane korisnika (monitori, tastatura, printeri) 2. Maini orijentirani, itljivi od strane maine (disk, traka) 3. Orijentirani na komunikacije sa udaljenim ureajima Externi ureaji se ne povezuju direktno na sistemski bus iz sljedeih razloga:

    - nepraktinost inkorporiranja tehika raznovrsnih externih ureaja unutar procesora - brzina transfera podataka sa eksternih ureaja je znatno manja od brzog sistem busa - eksterni ureaji esto koriste razliite formate podataka u odnosu na raunar na koji su prikljueni

    Ovo sa razlozi zbog kojih je potreban I/O modul, ije su osnovne funkcije:

    Kontrola i timing: koordinacija toka saobraaja izmeu internih resursa (glavne memorije, busa) i eksternih ureaja

    Komunikacija sa procesorom: operacije kao to su dekodiranje komandi koje

    dolaze od procesora, izmjenjivanje podatka izmeu procesora i I/O modula preko busa, itd.

    Komunikacija sa eksternim ureajem: ukljuuje odreene komande, informacije

    o statusu i podatke

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    3

    Data buffering: znaajno zbog razlika u brzinama transferiranja podatka izmeu

    memorije, procesora i eksternih ureaja. Podaci se smijetaju unutar I/O modula u oba smjera i dostavljaju destinaciji brzinom koja odgovara toj destinaciji

    Detekcija greaka: detekcija mehanikih i elektronskih poremeaja (bad sektor na

    disku, kvar printera, itd.) Prije nego krenemo dalje, poglet emo naprije neke od osnovnih principa I/O hardvera, nakon ega emo dati uvod u osnove I/O softvera.

    Principi I/O Hardvera

    Elektrotehniari posmatraju I/O u vidu ipova, ica, motora i drugih fizikih komponenata koje sainjavaju hardver. Programere, sa druge strane, zanima interface koji hardver prezentuje softveru, time podrazumijevajui: komande koje hardver prima, funkcije koje izvrava i dr. I/O ureaje moemo, takoer podijeliti i na sljedei nain:

    a) Block ureaji: - Ureaji koji storiraju informacije u blokove fiksnih veliina, svaki od kojih ima vlastitu adresu (Tipina veliina blokova iznosi od 512 byte-a do 32,768 byte-a)

    - itaju/piu svaki od blokova neovisno o ostalim blokovima - Primjeri ovakvih ureaja: trake, diskovi (npr. bez obzira gdje se ruka diska (disk arm) trenutno nalazi, mogue ju je premjestiti na drugi cilindar i onda ekati da blok koji hoemo da itamo rotira do ispod glave diska)

    b) Karakter ureaji: - alju ili primaju niz (stream) karaktera, bez panje na bilo kakvu blok strukturu - Ovi ureaji nisu adresabilni i nemaju seek operacija

    - Primjeri: printeri, network interfejsi , mievi

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    4

    Slika 1: Tipine brzine prijenosa informacija kod ureaja, mrea i baza podataka (Lit. br. 3)

    Device Controller-i (Kontroleri ureaja)

    I/O ureaji se tipino sastoje od: mehanike komponente elektronike komponente

    Elektroniku komponentu nazivamo kontroler ureaja ili adapter Kontroler je ip ili skup ipova na plug-in board-u. Izvrava komande koje prima

    od operativnog sistema (npr. itanje podataka sa nekog ureaja) Moe da se brine o vie ureaja (2, 4, 8 identinih ureaja) Obino ima konektor u koji se moe utekati kabl koji vodi do ureaja

    Posao kontrolera obino obuhvaa: 1.) Konvertiranje serijskog bit-niza (stream) u blokove 2.) Obavljanje error-korekcije, po potrebi 3.) Dostavljanje blokova glavnoj memoriji

    Radi toga to je kontrola samih ureaja veoma kompleksan zadatak, posao kontrolera je da prezentuje pojednostavljen interfejs operativnom sistemu, to on radi obino obavljajui tri gore navedene funkcije. Da vidimo kako to otprilike izgleda moemo se osvrnuti na posao disk kontrolera.

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    5

    Disk kontroler bi mogao, na primjer, primiti komandu (od OS-a) da ita sector 11,206 sa diska 2 (predpostavimo da sistem ima vie diskova). Kontroler potom treba konvertovati ovaj broj sektora (koji predstavlja linearan broj) u cilindar, sector i glavu diska. Ova konverzija moe biti dodatno komplikovana ukoliko vanjski sektori imaju vie sektora od unutarnih, kao i drugih niskih hardver detalja. Nakon toga kontroler treba da ustanovi na kojem cilindru se ruka diska trenutno nalazi, te da joj na osnovu toga poalje sekvencu pulseva da bi ju pomjerio na traeni cilindar. Nakon toga kontroler mora da eka kako bi se traeni sektor diska rotirao iznad glave, te onda pokrenuti itanje i storiranje bit-a kada ovi budu skidani sa disk drajva, pri tome uklanjajui preamble, te izraunavajui checksum (obavljajui error-korekciju). Na kraju, kontroler treba da sastavi dolazee bit-e u rijei (words) i da ih pohrani u memoriju. Izgleda prilino kompleksno zar ne? Kako bi obavljali ovakve poslove, kontroleri obino sadre ugraene mini-kompjutere, koji su programirani za obavljanje ovih operacija.

    Slika 2: Neke od standardnih komponenata personalnog kompjutera, povezanih na bus preko kontrolera (Lit. br. 3)

    Osnovne Tehnike u I/O Komunikaciji Kada se radi o I/O operacijama postoje tri osnovne tehnike koje se koriste u I/O komunikacijama:

    Programirani I/O (programmed I/O ) Prekidima-voen I/O (interrupt-driven I/O ) Direktni pristup memoriji (direct memory access - DMA)

    Direct Memory Access (DMA) Kako bi izmjenjivao podatke sa kontrolerima ureaja, CPU treba najprije da ih adresira. CPU to moe uiniti tako da podatke od I/O kontrolera trai byte po byte. Problem sa takvim pristupom je da time CPU troi puno vremena, obavljajui operacije za svaki od byte-a zasebno. Radi toga, koristi se drukija ema: DMA (t.j. direct memory access). OS moe koristiti DMA samo ukoliko hardver ima DMA kontroler (veina sistema ih ima). DMA kontroler obino ima vlastiti pristup sistemskom busu, kao to je prikazano na sljedeoj slici:

    Bus

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    6

    Slika 3: Operacija DMA transfera (Lit. br. 3) DMA kontroler sadri par registara, koji mogu biti itani i pisani od strane CPU-a. Obino se radi o memory-address registru, byte-count registru i jednom ili vie kontrolnih registara. Kontrolni registri, izmeu ostalog specifikuju smjer transfera (dali se radi o itanju sa I/O ureaja ili o pisanju na njega), I/O port, te jedinicu transfera (byte po byte ili word po word). Kako bi vam bolje predoili ulogu DMA kontrolera, najprije emo pogledati kako se obavlja itanje sa diska kada se DMA ne koristi. Primjer: itanje diska bez DMA pristupa memoriji:

    a. Najprije, kontroler ita blok sa drajva serijski: bit po bit, dok se itav blok ne uita u kontrolerov buffer

    b. Zatim, kontroler izraunava checksum kako bi verifikovao da nije dolo do greaka prilikom itanja

    c. Kontroler zatim generira interrupt d. OS (CPU) ita disk blok iz kontrolerovog buffera (byte po byte, ili word po word),

    storira ih u memoriju Kada se DMA koristi procedura je drukija. Primjer: itanje Diska sa DMA pristupom memoriji:

    a. CPU programira DMA kontroler setujui njegove registre kako bi ovaj znao ta da transferie, i gdje da transferie (korak1)

    b. CPU daje komandu disk kontroleru da ita u sa diska u buffer, kao i da potom verifikuje checksum. Kada su validni podaci u buffer-u disk kontrolera, DMA moe da zapone

    c. DMA kontroler inicira transfer tako to disk kontroleru daje naredbu za itanje (disk kontroler ne zna da je naredba stigla od DMA kontrolera a ne CPU-a) (korak 2)

    d. Transfer podatka sa disk kontrolera (njegovog buffer-a) u memoriju (korak 3)

    e. Kada se pisanje kompletira disk kontroler alje signal potvrde DMA kontroleru (preko bus-a): (korak 4)

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    7

    f. DMA kontroler nakon toga inkrementuje memorijsku adresu u svom registru, te

    dekrementuje byte-count. Ukoliko je byte-count vei od nule (svi potrebni podaci jos nisu uitani sa diska u memoriju) koraci 2, 3 i 4 se ponavljaju, sve dok byte-count ne dodje do nule (svi potrebni podaci sa diska su uitani).

    g. Tada, DMA kontroler interrupt-om obavjetava CPU da je transfer obavljen, t.j. blok diska je ve uitan u memoriju!

    U emu je razlika? Kao to smo vidjeli, koristei DMA pristu, CPU isprogramira DMA kontroler, koji onda umjesto CPU-a kontrolie disk kontroler. Ovim se oslobaa CPU, koji sada umjesto da kontrolie disk kontroler (ili neki drugi kontroler) moe da obavlja druge operacije. Dakle CPU je osloboen da obavlja druge stvari. DMA chip: kontrolie protok bit-a izmeu memorije i kontrolera, bez konstantne CPU intervencije

    Principi I/O Softvera Sada emo odstupiti od diskusije vezane za I/O hardver i pogledati neke od funcija I/O softvera. Ciljevi I/O Softvera Najprije da pogledamo neke od osnovnih ciljeva I/O sotware-a. Jedan od kljunih koncepata kod dizajniranja I/O softvera je neovisnost ureaja. Ovo znai da bi trebalo biti mogue praviti programe koji mogu pristupiti bilo kojem I/O ureaju i to bez specifikovanja ureaja unaprijed (floppy, hard drajv, ili CD-ROM). Na pr., program koji ita fajl(ove) trebao bi da bude u mogunosti da ita fajlove sa floppy diska, sa hard diska, kao i sa CD-ROMa, bez modifikovanja programa za svaki od razliitih ureaja. Drugi bitan koncept je jedinstveno imenovanje. Ovo podrazumjeva da je ime fajla ili ureaja jednostavan string ili cijeli broj, te da nije ovisan o samom ureaju. Dodatna stvar koja se tie I/O softvera je rjeavanje greki, koje bi trebale da budu uklonjene to ranije mogue (to blie hardveru). Ukoliko kontroler primjeti greku kod itanja trebao bi je pokuati sam otklonuti, a ukoliko nije u stanju, drajver istog ureaja bi trebao da otkloni greku. Na kraju, kao jo jednu vanu stvar vezanu za I/O softver moemo napomenuti i buffering. Podaci koji pristiu sa ureaja esto ne mogu biti storirani odmah u njihovu finalnu destinaciju. Umjesto toga potaci se privremeno smjetaju u dio memorije, tzv. buffer, prije nego budu proslijeeni dalje. Jedan od najbitnijih razloga za postojanje ovog mehanizma je razlika u brzini transfera podataka koju posjeduju razliiti ureaji. Primjera radi recimo da preko modema primamo fajl koji pohranjujemo na disk. Obzirom da je brzina transfera podataka koju ima modem oko 1000 puta manja od brzine transfera podataka hard diska, buffer e biti kreiran u glavnoj memoriji da akumulira podatke pristigle sa modema. Kada se buffer pun podataka pristiglih sa modema popuni, moe se u jednoj operaciji pohraniti na disk.

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    8

    Programirani I/O Najjednostavniji oblik I/O je kada CPU obavlja sav posao. Ovaj metod se naziva programirani I/O. Koristei dole prikazanu sliku, objasnit emo ovaj pristup putem jednostavnog primjera. Zamislimo proces koji eli da printa string od 8 karaktera: ABCDEFGH (da ih poalje na printer). Proces najprije skuplja string unutar buffer-a u korisnikom prostoru OS-a (user space). Korisniki proces potom rezervie printer za sebe, kada ovaj bude slobodan, te e sistemskim pozivom narediti operativnom sistemu da printa ovaj string na printer. Operativni sistem potom kopira buffer sa string-om u kernel dio operativnog sistema, odakle se string moe lake dalje obraivati. OS potom provjerava dali je printer u tom momentu slobodan. Ako nije eka dok se ne oslobodi. im printer postane slobodan, OS kopira prvi karakter string-a u printerov data registar. Odmah nakon to kopira prvi karakter na printer, operativni sistem provjerava dali je printer spreman da primi sljedei karakter (ukoliko printer nije zavrio sa prvim karakterom printer nije spreman da primi drugi). Nakon to kontroler printera procesira trenutni karakter, kontroler indicira da je zavrio sa datim karakterom. Kod programiranog pristupa CPU konstantno provjerava dali je printer (ili neki drugi ureaj) slobodan, time troei svoje dragocijeno vrijeme. Nakon to printer postane slobodan, OS printa sljedei karakter stringa, kao to se moe vidjeti na dole prikazanoj slici. Ovakva procedura se nastavlja dok se itav string ne izprinta.

    Koraci u pritanju string-a kod Programiranog I/O:

    a. String uitan u korisniki buffer prostor b. Buffer kopiran u Kernel prostor c. OS kopira karaktere na printer, karakter po karakter, ekajui da printer postane

    slobodan da primi sljedei karakter

    Slika 4: Pisanje stringa na printer koristei programirani I/O (Lit. br. 3) Dakle, kod ove tehnike, za razliku od DMA tehnike, procesor kontinuirano provjeva status I/O modula, jer sam I/O modul nee upozoriti procesora kada je gotov.

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    9

    Interruptom-Voeni I/O Interruptom voeni I/O, iako efikasniji od standardnog programiranog I/O, zahtijeva intervencije procesora za transferiranje podataka izmeu memorije i I/O modula. Svaki transfer podatka mora proi kroz procesor. Kod ove metode drajver pokree ureaj, od koga takoer zahtijeva da ga interruptom obavijesti kad ovaj (ureaj) zavri. OS tada nastavlja sa drugim poslovima sve dok ga kontroler ne obavijesti interruptom da je kompletirao dio posla. Kod primjera kojeg smo ranije navodili, koritenjem ove metode CPU bi dao naredbu printeru da printa prvi karater. Obzirom da printer nebi odmah bi u stanju da primi sljedei karakter (jer mu treba npr. 10msec da obradi prvi), CPU umjesto da eka (u petlji) 10msec, uzeo bi drugi proces i izvravao ga dok printer ne bude spreman da primi drugi karakter, itd. Ovim bi se CPU vrijeme iskoristilo puno bolje nego u programiranom I/O, iako bi CPU jo uvijek odraivao vie posla nego kog DMA tehnike.

    Logika struktura I/O funkcije U vezi upravljanja I/O ureajima, istiu se dva osnovna cilja OS-a:

    1. Efikasnost Obzirom da je veina I/O ureaja znatno sporija od procesora, I/O operacije esto predstavljaju usko grlo u raunarskom sistemu. Radi toga, jedan od glavnih ciljeva na podruju dizajniranja I/O komponenti je poboljanje performasni I/O ureaja.

    2. Openitost

    Ve smo ranije napominjali da postoji veliki broj raznovrsnih I/O ureaja, te da to oteava generalizaciju istih. Radi ovoga ide se na ustrojavanje modularnog i u osnovi hijerarhijskog ptistupa u dizajniranju I/O funkcija.

  • Fakultet informacijskih tehnologija

    [email protected]

    UOS::Predavanja Copyright by: FIT

    10

    Obrada i prijevod dijelova sljedee literature:

    1. Bajgori (2004), Operativni Sistemi: Knjiga 1 2. Silberschatz (2004), Operating System Concepts, 6th edition 3. Tanenbaum (2001), Modern Operating Systems, 2nd edition