Operációs rendszerek 2000-2001 / II. félév
Bevitel/Kivitel (I/O) (B/K) Az I/O hardver alapjai Az I/O szoftver alapjai Holtpontok RAM lemezek Lemezek Órák Terminálok
1. Az I/O hardver alapjai sok I/O eszköz programozása kapcsolódik az eszköz fizikai működéséhez
1.1. I/O eszközök blokkos eszközök karakteres eszközök az információt adott méretű blokkban tárolja, mindegyiket saját címmel az egyes blokkok írhatók és olvashatók az összes többi blokktól függetlenül pl. lemez karakteres eszközök vagy kibocsájtja vagy fogadja a karaktersorozatot nincs blokk szerkezet nem címezhető, nincs keresés pl. nyomtató, egér,...
kivételek órák: memória leképezésű képernyők nem címezhetőek blokkonként nem generálnak, nem fogadnak karaktersorozatot csak jól meghatározott időintervallumonként megszakításokat hoznak létre memória leképezésű képernyők
1.2. Eszközvezérlők I/O egységek = mechanikus + elektromos összetevők maga az eszköz eszközvezérlő (adapter) lemezvezérlő kapcsolódási felületek: IDE (Integrated Drive Electronics) SCSI (Small Computer System Interface)
Kapcsolások I kisebb szamítógépek esetén a CPU és a vezérlők közötti kapcsolat megvalósítása: egysínű (busz) CPU Memória Lemez- vezérlő Nyomtató- Egyéb vezérlők ... vezérlő-eszköz kapcsolódási felület lemezmeghajtó egységek nyomtató sínrendszer
Kapcsolások II nagy szamítógépek esetén: több sínnel speciális I/O processzorokkal (I/O csatornák) melyek átveszik a központi CPU-tól az átvitellel kapcsolatos feladatokat
CPU-val történő kapcsolat néhány regiszterrel memóriába leképezett I/O : ezek a regiszterek részét képezik a szokásos memória címzésű helyeknek speciális helyek: minden vezérlő ennek a területnek egy bizonyos részét foglalja le
IRQ I/O kapuknál a regisztereinek olvasása/írása befejezésével a vezérlő megszakítással jelez a CPU felé megszakítás ~ elektromos jelenség hardver megszakítás kérés (Interrupt ReQuest): egy bemenet a megszakítást vezérlő lapka számára
PC-n futó MS-DOS I/O vezérlők I/O címek Hardver IRQ Megszakítási vektor Óra 040-043 0 8 Billentyűzet 060-063 1 9 Merevlemez 1F0-1F7 14 118 Másodlagos RS232 2F8-2FF 3 11 Nyomtató 378-37F 7 15 Hajlékonylemez 3F0-3F7 6 14 Elsődleges RS232 3F8-3FF 4 12
1.3. Közvetlen memóriaelérés (DMA) DMA (Direct Memory Access) Lemezes olvasás DMA nélkül a vezérlő beolvassa a meghajtóból a blokkot a saját belső pufferébe kiszámolja a hibajavító kódot megszakítást idéz elő amikor az op. rendszer beindítja a futtatást, a lemez egy blokkját a vezérlő pufferéből olvassa be
Lemezes olvasás DMA-val a vezérlő beolvassa a meghajtóból a blokkot a saját belső pufferébe kiszámolja a hibajavító kódot átmásolja az első bájtot vagy szót a főtárba arra a címre, amit a DMA memóriacíme kijelöl megnöveli a DMA címet és csökkenti a számláló értékét a mozgatott bájtok számával megszakítást idéz elő amikor az OS beindítja a futtatást, nem kell a blokkot a memóriába másolni, mert az már ott van
Lemezes olvasás DMA-val számláló memória CPU lemez- vezérlő meghajtóegység DMA regiszterek puffer memóriacím sínrendszer nem minden számítógép alkalmaz DMA-t
Miért van szükség belső pufferra? ha a lemezes adatátvitel elkezdődött, a bitek állandó átviteli sebességgel jönnek ha a vezérlő az adatot közvetlenül a memóriába próbálná írni, akkor a sínt kellene használnia ha a sín épp foglalt a vezérlőnek várakoznia kellene ha azelőtt érkezik a lemezről a következő szó, hogy a vezérlő az előzőt továbbadta, akkor a vezérlőnek avalahol tárolni kell azt. de a hely korlátozott ezért sok az adminisztráció
Közéillesztés (interleaving) blokkok átugrása, mialatt a vezérlő időhöz jut, hogy átmozgasson adatot a memóriába 7 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 nincs közéillesztés egyetlen közéillesztés dupla közéillesztés
2. Az I/O szoftver alapelvei Elvárások: a szoftver rétegek sorozatából épüljön fel a hardver sajátosságait az alacsonyabb szintek rejtsék el a magasabb szintek elől standard kapcsolódási felület a felhasználó felé
2.1. Az I/O szoftver célja eszközfüggetlenség sort < input > output egységes névhasználat hibakezelés: amennyire csak lehet a hardverhez közeli szinten kell kezelni átviteli módszerek elrejtése: a szinkron (blokkolás) és aszinkron átvitel egységes kezelése megosztott/monopol eszközök használata
Az I/O szoftver rétegei 1. Megszakításkezelők (alsó szint) 2. Eszközmeghajtók 3. Eszközfüggetlen operációs rendszer szoftver 4. Felhasználói szintű szoftver (felső szint)
2.2. Megszakításkezelők “A megszakítások az élet örömtelen dolgai.” minden I/O műveletet elkezdett processzus megszakad, amíg az I/O végbemegy, és egy megszakítás megjelenik megszakítás esetén a megszakítás eljárásnak meg kell szüntetnie annak a processzusnak a blokkoltságát, amely elindította
2.3. Eszközmeghajtók Az op. rendszer egyetlen olyan része, amely tudja: hány regisztere van a vezérlőnek azokat mire használja tud a szektorokról, pályákról, cilinderekről Feladata: az eszközfüggetlen szoftvertől érkező kérések fogadása és annak biztosítása, hogy a kérés teljesítve legyen. blokkolások, hibakezelés
2.4. Eszközfüggetlen I/O szoftver Feladata: azon I/O tevékenységek végrehajtása, amelyek minden eszköznél közösek szabványos kapcsolódási felület biztosítása a felhasználó szintű szoftver részére
Az eszközfüggetlen I/O szoftver tevékenységei egységes kapcsolódási felület a megjahjtóknak eszközök megnevezése eszközök védelme eszközfüggetlen blokkméret biztosítása pufferezés tárolóhely lefoglalása blokkos eszközökön monopol módú eszközök lefoglalása és elengedése hibaüzenet
2.5. A felhasználó helyű I/O szoftver nem minden I/O szoftver fut az op. rendszerben háttértárolás (spooling) a monopol használatú eszközök számára nyomtatáskor: démon, háttérkönyvtár
3. Holtpontok holtpont előfordulhat a hardver és a szoftver erőforrásoknál egyaránt
3.1. Erőforrások sok olyan erőforrás létezik, amelyet egy időben csak egy processzus használhat léteznek megszakítható és megszakíthatattlan erőforrások holtpont: megszakíthatattlan erőforrások esetén a holtpont előfordulhat szoftver és hardver erőforrásokkal kapcsolatban is
Egy erőforrás használatával kapcsolatos tevékenységek: 1. az erőforrás kérése 2. az erőforrás használata 3. az erőforrás elengedése
3.2. A holtpont alapelvei Egy processzusokból álló halmaz holtpontban van, ha mindegyik halmazbéli processzus olyan eseményre várakozik, amit csak egy másik halmazbéli processzus okozhat.
A holtpont feltételei Coffman et. al. (1971): 4 feltétel szükséges a holtponthoz: 1. Kölcsönös kizárás feltétel. Minden egyes erőforrás vagy hozzá van rendelve pontosan egy processzushoz, vagy szabad. 2. Birtoklás és várakozás feltétel. A processzusok a már korábban kapott erőforrásokat birtokolhatják és kérhetnek új erőforrásokat.
A holtpont feltételei (folyt.) 3. Megszakíthatattlanság feltétel. Egy processzustól az előzőleg engedélyezett erőforrások nem vehetők el semmilyen módon. Az erőforrásokat az őket birtokló processzusoknak expliciten el kell engedni. 4. Ciklikus várakozás feltétel. Két vagy több processzus összetevődő ciklikus láncnak kell lennie, amelynek minden processzusa olyan erőforrásra várakozik, amit a láncban következő processzus fogva tart.
A holtpont modellje Az erőforrás hozzárendelésének gráfjai: processzus erőforrás a. b. c. Az erőforrás hozzárendelésének gráfjai: a. az erőforrás birtoklása b. egy erőforrás kérése c. holtpont
Holtpontokkal kapcsolatos stratégiák 1. A probléma teljesen figyelmen kívül hagyása. 2. Felismerés és helyreállítás. 3. Dinamikus elkerülés az erőforrások óvatos lefoglalásával. 4. Megelőzés, strukturálisan meghiúsítva a négy szükséges feltételt.
3.3. A strucc algoritmus fejünket dugjuk a homokba és tegyünk úgy, mintha egyáltalán semmi probléma nem lenne
3.4. Felismerés és helyreállítás a rendszer figyeli az erőforrásigényeket és elengedéseket ha az erőforrásgráfban kör keletkezett megszüntet egy abban levő processzust ha nem sikerült megszüntetni a holtpontot, megszüntet egy másik processzust is, stb. másik lehetőség: ha egy processzus túl sokáig foglal egy erőforrást, akkor megszünteti
3.5. A holtpont megelőzése olyan megszorításokat ró a processzusokra, hogy a holtpont eleve lehetetlen Feltétel Megközelítés Kölcsönös kizárás Háttértárolás Birtokol és várakozik Az összes erőforrásigény előzetes kérése Ciklikus várakozás Erőforrások számos elrendezése
3.6. A holtpont elkerülése Van-e olyan algoritmus, amellyel mindig elkerülhető a holtpont? Igen, de csak ha bizonyos információ előre ismert.
4. RAM lemezek A RAM lemezmeghajtóval a memória bármely része elérhető a tár egy részének lefoglalása - hagyományos lemezhasználat szimulálása nem állandó jellegű tárolás nagyon gyors elérést biztosít
4.1. Hardver és szoftver a RAM lemeznél Blokkos eszköz: tároló két parancsal: egy blokk olvasása egy blokk írása RAM lemez: a blokk a főtár egy lefoglalt részében van azonnal elérhető (nincs keresés, forgatási késés) alkalmas olyan adatok és programok tárolására, amelyeket gyakran kell elérni
Különbségek RAM lemezeket támogató rendszer: a gyökér mindig állandó helyen van a cserélhető filerendszer logikailag bekapcsolható az állományfileba => egységes filerendszer, nem a felhasználó feladata az eszközök hollétének meghatározása pl. Linux, Unix
RAM lemezeket nem támogató rendszer: minden állomány helyét a felhasználó kell meghatározza: explicit módon, pl. D:\DIR\P1 alapbeállítások segítségével (aktuális meghajtó, ...) 1-2 floppy még nem gond, de nagyobb rendszerek esetén nagyon sok eszköz lehetséges pl. DOS
A RAM lemez alapgondolata n db blokk blokk írása/olvasása: ki kell számolni a helyét az átvitel assemblyben van megírva a RAM lemezmeghajtó támogatja a memória több területének RAM-lemezként való használatát
5. Lemezek lemez hardver lemez szoftver a merevlemez és a floppy kezelése közötti különbségek
5.1. Lemez hardver A lemez szerkezete minden lemez cilinderekbe szervezett minden cilinder pályavonalakból áll minden pályavonal szektorokra van osztva
1 pályavonalon azonos számú szektor van Lehetőségek: 1 pályavonalon azonos számú szektor van a lemezt vezérlő hardver kezeli létezik olyan floppy egység, amelyik nagyobb sebességgel forgatja a lemezt, ha a fejek a kintebbi pályavonalaknál vannak IDE (Integrated Drive Electronics) a kintebbi pályákon több szektor van az op. rendszer számára minden cilinder azonos számú szektort tartalmaz a meghajtóba beépített elektronika
Átlapolt keresés egyszerre több meghajtón is lehet keresni 1 olvasás/írás + több keresés több olvasás/írás több: 1-nél több merevlemez-meghajtó esetén
a szoftver által kezelt jellemzők különbözhetnek a fizikai jellemzőktől konvertálás: a vezérlő elektronika feladata
5.2. Lemez szoftver A lemezes blokk olvasási ideje függ: a keresési időtől (cilinder) fordulási késéstől (szektor) az adatmozgatés tényleges idejétől Hibakezelés Pályavonalankénti raktározás
A lemez olvasófejét ütemező algoritmusok FCFS (First Come First Serve) SSF (Shortest Seek First) liftes algoritmus
FCFS a lemezmeghajtó a kéréseket egyesével fogadja és teljesíti nincs szükség/lehetőség optimalizálásra
111 cilindernyi elmozdulás keresési irány Pl. kérések: 11, 1, 36, 34, 9, 12 111 cilindernyi elmozdulás
Optimalizálás Táblázat: cilinderszámmal indexelve minden cilinderszámhoz létrehozza az adott kérések láncolt listáját a kérések teljesítésének optimalizálása
SSF a legközelebbi cilindert keresi meg elsőként probléma: nagyon sűrűn betöltött lemez esetén nehezen jut el a szélső cilinderekhez minimális válaszidő <--> méltányosság
SSF Pl. 11, 1, 36, 34, 9, 12 61 cilindernyi elmozdulás
Liftes algoritmus folyamatosan ugyan abban az irányban mozog, amíg van abban az irányban el nem intézett kérés, utána irányt vált egy aktuális irányt jelző bit: UP, DOWN Pl. 60 cilindernyi elmozdulás
a kérések tetszőleges halmaza esetén minden kérés teljesítésének felső korlátja: 2 * a cilinderek száma a válaszidőben kisebb a szórás, ha mindig azonos irányban mozgunk
Gyorsítótárazás (caching) egy szektor olvasására vonatkozó kérés tipikusan a szektornak és a pályavonalán levő, ezt követő bizonyos számú szektoroknak a vezérlőtábla gyorsítótárába való áthelyezést eredményez a gyorsítótáblák használatát a vezérlő dinamikusan határozza meg általában a gyorsítótáblák két részre vannak osztva: olvasás, írás több meghajtóegység esetén külön-külön táblázat a kérések számára
Hibakezelés RAM lemezek írhatók/olvashatók fizikai mozgás nélkül kevesebb a hibalehetőség Valódi lemezek esetén megnő a hibalehetőségek száma
Hibalehetőségek programozási hiba a javítókód ideiglenes hibája a javítókód tartós hibája kezelési hiba (mechanikus) a vezérlő hibája
Pályavonalankénti raktározás cilinder fordulási átvitel keresés kérés ideje pályavonalankénti gyorstárba raktározás hátrány: a CPU használat a DMA hardver helyett
5.3. Hajlékonylemezek kezelése általában csak tárolásra használjuk őket egyszerűbb szerkezet - egyszerűbb vezérlő cserélhetőség az IBM PC család minden floppy vezérlője egy szoftver meghajtóval működik
a meghajtó nem segíti a kérések újrarendezését vektorba gyűjti a kéréseket mindaddig, amíg azok egymás uténi szektorokra vonatkoznak kisebb a kérések vektora OPTIONAL jelző a kérésekre
A floppy-egység néhány sajátossága cserélhető nyitva volt-e az ajtó üres-e az egység többféle lemezformátum minden lehetséges lemezformátumra különböző meghajtóegységet használ VAGY a lemezmeghajtó a meghajtóegységet elérve megvizsgálja az abban pillanatnyilag elérhető lemez formátumát
motoros vezérlés motor ki/be kapcsolása felpörgetési idő egy kérés teljesítése után a motor még néhány másodpercig jár
6. Órák timer (időzítő) ezek tartják karban a pontos időt megakadályozzák hogy egy folyamat kisajátítsa a CPU-t az óra szoftvere általában eszközmeghajtó formában jelenik meg sem nem blokkos eszköz sem nem karakteres eszköz
6.1. Az óra hardvere Egyszerűbb órák: közvetlenül a 110/220 V-os feszültségű vezetékre kapcsolódnak megszakítást okoznak minden fázisváltásnál frekvencia: 50-60 Hz
második típusú órák: kristályoszcillátor számláló regiszter tároló regiszter
Programozható órák működése I egyszeri módban (one shot mode) amikor az óra elindul, a tárolóregiszter tartalma a számlálóba másolódik a kristály minden impulzusának hatására a számláló tartalma 1-el csökken amikor a számláló értéke eléri a 0-t, megszakítást okoz az óra megáll mindaddig, amíg azt a szoftver újra nem indítja
Programozható órák működése II ismétlődő módban (square-wave mode) minden órajelre csökken a számláló értéke amikor a számláló értéke eléri a 0-t, megszakítást okoz a tárolóregiszter tartalma a számlálóba másolódik az egesz folyamat ismétlődik a végtelenségig Periodikus megszakítások: órajelek (clock ticks)
A programozható órák frekvenciáját szoftverből is lehet állítani A programozható órachipek 2-3 független órát is tartalmazhatnak
Pontos idő valós idejű számláló a pontos idő elfelejtésének megakadályozása elemmel működtetett órák indításkor a felhasználó megkérdezése UCT (Universal Coordinated Time) 1970 január 1, déli 12 óra
6.2. Az óra szoftvere Az órameghajtó pontos teendői: a pontos idő karbantartása annak megakadályozása, hogy egy folyamat tovább fusson, mint ami számára engedélyezett a CPU használatának könyvelése (második időzítő indítása) a felhasználói programok által generált ALARM kezelése (táblázat az összes függő riasztás időpontjaival)
6.2. Az óra szoftvere Az órameghajtó pontos teendői (folyt.): felügyeleti időzítők (watchdog timer) nyújtása a rendszer többi része felé (ezeket az op. rendszer igényli) futásidő-elemzés (profiling), monitorozás és statisztikai adatok gyűjtése
Pontos idő a pontos idő nyilvántartásának három módja:
Több időzítő szimulációja egy órával
7. Terminálok minden számítógéphez csatlakozik egy vagy több terminál ezek lehetnek nagyon különbözőek a terminál meghajtó feladata a különbségek elrejtése
7.1. Terminál hardver termináltípusok
Tárcímleképezéses terminálok a video RAM-on keresztül illeszkednek a számítógéphez sorok száma: általában 480-1024 egy sorban a képpontok száma: 640-1200 (pixel)
Monokróm képernyő 1 karakter: 25 sor soronként 80 karakter 9 pixel széles 14 pixel magas 25 sor soronként 80 karakter 350*720 pixel másodpercenkénti 45-70 frissítés
Képernyőkezelés karakteres grafikus pl. 25 sor, 80 karakter/sor esetén 4000 bit RAM szükséges grafikus minden képpont külön vezérelhető színek: ( RGB - vörös, zöld, kék) 8-24 bit pl. 768*1024-es felbontás, 24-es színmélység esetén 2 Mb RAM szükséges
Billentyűzet elválasztható a képernyőtől soros v. párhuzamos porton csatlakoztatható minden billentyű leütése/elengedése esetén megszakítás jön létre nem ASCII hanem scan kódokat küld a meghajtó feladata, hogy milyen karaktert ütöttünk le
RS-232-es terminálok billentyűzet + kijelző csatlakozás a számítógéphez: soros porton keresztül 9-25 tűs csatlakozó 1 karakter elküldése bitenként történik: start bit, karakter kód, 1-2 stop bit karakter/soros átvitel konverziók: UART (Universal Asynchronous Receiver Transmitters)
papírra író (hardcopy) terminálok buta terminálok Típusok: papírra író (hardcopy) terminálok buta terminálok “üvegre író” (glass tty) intelligens terminálok megértenek bizonyos ESC szekvenciákat
X terminálok van CPU-juk Etherneten keresztül kommunikálnak a számítóképekkel
általában X Window System fut rajtuk X server “csak”, “is” X server az X terminálon fut! összegyüjti az adatokat és továbbítja a kiszolgálógéphez ablakfigyelés X kliens a gazdaszámítógépen fut!
7.2. Terminál szoftver beolvasást kezelő szoftver kiírást kezelő szoftver
Beolvasást kezelő szoftver a billentyűzetmeghajtó feladata fogadni a a billentyűzetről érkező adatokat és továbbítani azokat a felhasználói programoknak 2 alapvető szemlélet: karakterorientált (nyers) POSIX: nem kanonikus mód sororientált (feldolgozott) POSIX: kanonikus mód ASCII (American Standard Code for Information Interchange) más nyelvek számára: billentyűzettérképek, kódlapok
Pufferelés két módja van: a meghajtó egy közös pufferterületet tartalmaz a terminálhoz tartozó adatszerkezet tartalmazza a puffert, nincs közös pufferterület
Echozás a szoftver feladata a bemenő adatok megjelenítése problémák: sor hosszúság: 80 karakter tabulátorok kezelése soremelés
Kiírást kezelő szoftver pl. RS-232 esetén minden terminálhoz kapcsolódik egy kimeneti puffer az echozott adatok is a pufferbe másolódnak Problémák gördítés kurzorpozicionálás ESC szekvenciák kezelése