Busznyák János Magó Zsolt Olajos Zsolt
OPERÁCIÓS RENDSZEREK
SZÁMALK Budapest, 2002 Impresszum
Bevezető Tisztelt Tanuló / Hallgató! Üdvözöljük hallgatóink körében! Köszönjük bizalmát, hogy segítségünkkel kívánja ismereteit megszerezni. A tudásbővítés és készségfejlesztés megvalósításához sok sikert kívánunk! Ön további tanulmánya során egyre több alkalommal fog találkozni olyan tananyagokkal, melyek az önálló, irányított tanulást segítik. Ezek között is megkülönböztethetők a hagyományos önálló tanulást segítő (nyomtatott) taneszközök, továbbá egyre gyakrabban találkozhatunk elektronikus tananyagokkal (e-book). Ez utóbbi kategóriába sorolt taneszközök definiálása még nem egységes. Elektronikus tananyag kifejezést alkalmaznak a webre feltett (elektronikusan megjelentetett) jegyzetekre, példatárakra, könyvekre, CDformátumú, tanulási célra készített multimédia anyagokra éppúgy, mint olyan on-line, vagy off-line tananyagokra, melyek előre tervezett elektronikus médiumok (a tartalom és az ismeretelsajátítás módját figyelembe véve), meghatározott képzés, adott tananyagához fejlesztve. Az e-bookok fejlesztése és népszerűsége a számítógépet használók körének növekedésével is összefügg. Szakmai közösségünk egy e-book sorozat elkészítésére vállalkozott, melyből Ön most egy informatikai tantárgyhoz kapcsolódó tananyagot kapott kézhez. Kérjük, hogy pár percig még tartson ki. Ne hagyja abba ennek a bevezetőnek az olvasását, mert sohasem fogja megtudni, hogy segítségünkkel mire vállalkozik! Tisztelt Tanuló / Hallgató! Tananyagaink tartalmilag azonos szerkezetben és formai megoldással készültek. Minden anyag strukturált, fejezetekre, alfejezetekre osztott. Minden fejezet bevezetőjében eligazítást kap arról, hogy mit tárgyal az adott tananyagrész. A fejezeteket összefoglalók zárják, melyekben kiemeljük a legfontosabb. „hangsúlyos” részeket, a definíciókat megismételjük, a korában tanultakra is hivatkozva szintetizáljuk az ismereteket. Minden fejezetet Önellenőrző kérdések, feladatok zárnak, melyekre természetesen a válaszokat (megoldásokat) is megtalálhatja. Ha a tananyag gyakorlati jellegű, akkor az egyes fejezetek közül az első mindig ismeretátadás, vagy ismétlés, a második feladatokat és megoldásokat tartalmaz, ami a megértést segíti, majd a harmadik fejezet ez esetben mindig az alkalmazási készség fejlesztését célozza.
2
A tananyagokban alkalmazott jelölések, ikonok: Az elektronikus tananyagban ötféle ikont alkalmazunk, ezek jelentése valamennyi általunk fejlesztett tananyagban azonos a kövezők szerint: kiegészítő ismertanyag, mely a törzsanyagon túl az adott tárgykör, témakör magas szintű elsajátításához járul hozzá.
Nagyon fontos, a tárgykör (témakör, készség) elsajátításának elengedhetetlen feltételeként meghatározott tudás vagy készségtartalom. Terminológiai szótárra való hivatkozás. Amely kifejezések, szavak mellett ott találja ezt a jelzést, arról egy ún. belső link vezet a terminológiai szótár meghatározott részéhez, ahol megtalálja a szó vagy kifejezés magyarázatát, jelentését. A nyitottkönyv-ikon a nyomtatott szakirodalomra való hivatkozást jelenti. Ahol ilyen jelet lát, ott megtalálhatók a további szakirodalmi ajánlások is. A jelöléssel mindig arra utalnak, hogy ellenőrző, önellenőrző feladatsor vagy tesztek következnek. Az ikonok egyértelműen megmutatják Önnek, hogy minden tananyag „Törzsanyagra” és kiegészítő anyagra bontható. A „Kiegészítő anyag” szorosan kapcsolódik ugyan a témához, de adott iskolatípusban a szakmai követelmények nem írják elő kötelezően. A törzsanyag ismerete vagy az abban foglalt készségek elsajátítása azonban feltétlenül szükséges. A terminológiai szótárban megtalálja azokat a szavakat, melyek ebben az anyagrészben újnak számítottak, illetve az idegen szavak, kifejezések magyar megfelelőjét. A tananyagfejlesztők által kijelölt hangsúlyos (!) részeket feltétlenül tanulja meg, illetve gyakorolja.
3
Tisztelt Tanuló / Hallgató! Engedje meg, hogy tanulását még négy kérdés és az arra adott válaszok erejéig segítsük! Hol tanuljak? Bárhol, ahol a feltételek adottak. Iskolában, otthon, buszon esetleg vonaton. Természetesen az elektronikus tananyag is nyomtatható, így „papír” formában magával is viheti a tanuló bárhová. Ugyanakkor meg kell mondjuk, a leghatékonyabb, ha a képernyő előtt tanul, mert a „beépített” navigációs utat betartva haladhat leginkább a tanulásban (a nyomtatott tananyag nem tartalmaz linkeket, beépített segítségeket, pl. a válaszokat a kérdésekre, illetve kiegészítő anyagokat) . Mikor tanuljak? Természetesen akkor, amikor erre ideje van, illetve akkor, amikor szükséges. Erre a kérdésre azonban az igazi jó válasz, hogy ütemterv (Tanítás-tanulási útmutató) szerint. Ön közvetlenül felelős azért, hogy tanulási folyamata sikeres legyen. A tananyagfejlesztők és tanárai ebben segítenek Önnek. Elkészítették ezt a tananyagot, megfogalmazták a tanulás és készségfejlesztés sorrendjét, a tananyag-feldolgozás és értékelés menetét, így részt vállaltak az Ön tanulási folyamatában. Hogyan tanuljak? Amit feltétlenül ajánlani lehet: úgy tanuljon, ahogyan azt megtervezték az Ön számára. Fogadja el a javaslatokat, ugyanakkor az Ön jól bevált tanulási szokásait sem kell elfelejtenie. Ezek jól hasznosíthatók, ha ütemterv szerint halad és sikerül teljesítenie azt. Amennyiben nem boldogul a tananyaggal egyedül, kérhet tanácsot tanáraitól. Ne feledje: Ön a tanulás főszereplője, mi valamennyien segítjük Önt, ha kéri. Végül, de nem utolsó sorban, tegye fel önmagának a következő kérdést: Miért tanuljak? Erre a kérdésre bizonyára Ön tudja is a választ. Nyilván mielőtt jelentkezett, átgondolta, milyen előnyökkel járhat, ha elvégzi ezt a képzést. Biztosan számos dolog motiválta Önt, amikor elkezdett tanulni, és lesznek időszakok, amikor nagyon elkeseredett lesz, vagy már nem tartja annyira fontosnak azt, amire vállalkozott. Ne adja fel! A tanulás a lehető legjobb dolog, amire vállalkozhatunk, gazdagabbak leszünk általa, és értékesebb munkát végezhetünk. Jó tanulást és sok sikert kívánok a szerzők és tananyagfejlesztők nevében: Dr. Sediviné Balassa Ildikó főszerkesztő
4
Az operációs rendszerek alapjai Bemeneti teszt Ön e teszttel ellenőrizheti előzetes tudását, ismereteit a tananyaghoz kapcsolódó témakörben. Döntse el az alábbi állítások közül, melyik igaz, melyik hamis! 1. A Windows operációs rendszer karakteres felületen kezelhető a legegyszerűbben. igaz – hamis 2. A könyvtárak hierarchikus struktúrát alkotnak. igaz – hamis 3. A fájlok nevének meghatározására semmilyen megkötés nincsen. igaz – hamis 4. Perifériáknak nevezzük a számítógép azon egységeit, amelyek az adatbevitelt és kivitelt szolgálják. igaz – hamis 5. A floppy lemez kapacitása sokkal nagyobb a merevlemezénél. igaz – hamis 6. A billentyűzettől függ, hogy a számítógép milyen karaktereket tud megjeleníteni a képernyőn. igaz – hamis 7. Az információ legkisebb egysége a bit. igaz – hamis 8. A ROM tartalmát bármikor tetszőlegesen megváltoztathatjuk. igaz – hamis 9. A monitor felbontása az jelenti, hogy hány képpontot tud megjeleníteni vízszintesen és függőlegesen. igaz – hamis 10. A mátrix nyomtatók nem képesek grafikus objektumok nyomtatására. igaz – hamis
5
Bevezetés Az első részben megvizsgáljuk a számítógépek rendszerszerkezeti felépítését és azt, hogyan alakult ki a manapság is használt moduláris felépítés. (A modularitás azt jelenti, hogy az egyes hardverelemek nyomtatott áramköri paneleken vannak elhelyezve, ami lehetővé teszi az elemek cseréjét.) Áttekintjük, milyen mozgatórugói és sarkkövei voltak a kialakulásnak, és hogyan hatottak a változásokra a Neumann János által felállított szabályok. A hardverek fejlődése maga után vonta az operációs rendszerek fejlődését is, egészen az operátor (szakavatott felhasználó) személyétől kezdve a karakteres (begépelendő parancsok segítségével való kapcsolattartás a felhasználóval) felületen át a grafikus operációs rendszerek kialakulásáig. Az első részben áttekintjük ezen operációs rendszerek jellegzetességeit, külső és belső erőforrás kezelését.
A számítógépek felépítése A számítógépet felépítő hardver elemek A hardver fogalma: a számítógépet alkotó fizikai elemek összessége. A személyi számítógépet (Personal Computer, PC) hardverelemek alkotják, amelyeket modulárisan építenek össze. Ez azt teszi lehetővé, hogy az egyes részeket könnyedén kicserélhessük. A csere akkor válik szükségessé, ha bővíteni szeretnénk gépünket, vagy, ha egy modul meghibásodott. A számítógépek nagyon sok változáson mentek keresztül 1945 óta, mikor Neumann János magyar matematikus kidolgozta azokat a szabályokat, amelyek a számítógép működési elvét meghatározzák. A változások főleg a sebességben, kapacitásban szembetűnők, de a működési elv tekintetében ma is ugyanolyanok. A mai számítógépek most is az 1945ben meghatározott elvek szerint működnek. Ezt a szabályrendszert Neumann-elveknek nevezték el, melyek az alábbiakat tartalmazzák: •
Tárolt program: Az utasításokat az adatokkal azonos módon kell tárolni, egy nagy kapacitású tárolóban. Ez a memória, amely egy bájtonként címezhető tárolóegység. Ez azt jelenti, hogy részekre van osztva, mint egy fiókos szekrény. Minden fiókban 1 bájtnyi adat fér el. A fiókok megkülönböztetésére használják a címeket. Ennek rekeszei (fiókjai, az előbbi hasonlattal élve) tárolják az utasításokat és az adatokat egyaránt. Hogy mi az adat és mi az utasítás, az csak értelmezés kérdése, mert mind a kettőt ugyanabban a formában tároljuk. A memória fontos tulajdonsága, hogy írható és olvasható is lehet, ugyanakkor gyorsan kell tudnunk hozzáférni az adatokhoz. Ezt csak félvezető elemekkel lehet elérni. Ebből viszont az
6
következik, hogy az áramellátás kimaradásakor az információk elvesznek. A mágneses elven tároló memóriák (floppy, winchester, szalag stb.) megtartják adataikat energiakimaradáskor is, viszont nagyságrendekkel lassabb az írás és olvasás folyamata, azaz az adathozzáférés. A számítógép optimális működése érdekében meg kell találni a középutat a viszonylag drága, de gyors félvezető memóriák alkalmazása és az olcsó, de lassú, mágneses elven működő memóriák alkalmazása között. •
Kettes számrendszer: Az előbb említett utasításokat és adatokat numerikus formában kell tárolni. Erre legalkalmasabb a bináris (kettes) számrendszer, mert általa két számjegy segítségével írhatjuk le a számokat. Miért éppen ezt alkalmazzuk a sok számrendszer közül? Mert a matematikai és logikai műveleteket végző hardverelem (az aritmetikai-logikai egység) egyes mikro-áramköri elemei azt érzékelik, hogy van-e feszültség vagy nincs, amit 1-sel és 0-val szimbolizálhatunk.
•
Vezérlőegység: Ha az adatokat és az utasításokat egy helyen tároljuk, akkor szükség van egy olyan vezérlőegységre, amely különbséget tud tenni közöttük, és az utasításokat önműködően végre tudja hajtani.
•
Aritmetikai-logikai egység: Az előzőekből is kitűnik, hogy kell lennie a gépben egy olyan egységnek, amely a matematikai műveleteken túl képes elvégezni elemi logikai műveleteket is. (Aritmetical-Logical Unit, ALU) Napjainkban a központi vezérlő egység (Central Processing Unit, CPU) végzi el a vezérlő egység és az aritmetikai-logikai egység feladatát is. A mai számítógépek többségében egyetlen processzor, a CPU értelmezi és hajtja végre az utasításokat, aritmetikai-logikai műveleteket és vezérli az adatforgalmat a memória és a perifériák között.
•
Perifériák: Szükség van olyan bemeneti/kimeneti (input/output, I/O) egységekre, amelyek segítségével létrejöhet a kapcsolat az ember és a gép között. A perifériákat funkciójukat tekintve három részre osztjuk. Bemeneti (input), kimeneti (output) perifériákra, valamint az archiválást szolgáló perifériákra. Az első kettő a kapcsolattartást szolgálja, míg az utóbbi a hosszú távú adatmegőrzésre szolgál. Ezért az operációs rendszerek szempontjából nagyon fontos a mágneslemezek optimális kezelése.
7
A számítógép architektúrájának általános blokk-struktúrái A kezdetek: processzorcentrikus felépítés
1. ábra Processzorcentrikus számítógép vázlata
E struktúrát az jellemzi, hogy egyetlen blokk, a központi vezérlő egység koordinálja az összes többi munkáját, és hogy bármilyen irányú adatforgalom csak az aritmetikai-logikai egység regisztereinek közreműködésével mehet végbe. A CPU és az I/O blokk kapcsolatát a perifériák közvetlen kezelése jellemezte. Egy-egy adat beolvasását vagy kiküldését - röviden átvitelét egy periféria átmeneti tárolóregisztere (puffer-regisztere) és az operatív memória egy rekesze között egy-egy I/O utasítás végezte. Amikor nagyobb tömegű adat átvitelére volt szükség, a soron következő I/O utasítás végrehajtásával a központi feldolgozó egységnek várakoznia kellett a legutoljára beindított elemi I/O tevékenység befejeződéséig (míg a kérdéses periféria elő nem állította a puffer-regiszterben a következő beviendő adatot, illetve amíg fel nem dolgozta a puffer-regiszterbe legutoljára kiküldött adatot). Az első generációs gépek viszonylag alacsony CPU-sebessége miatt azonban ezek a várakozási idők még megengedhetőknek tűntek.
8
Memóriacentrikus felépítés A félvezetők alkalmazásával az elektronikus áramkörök működési sebessége jelentősen növekedett. Ennek következtében a CPU és a perifériák működési sebessége közti aránytalanság egyre nagyobb mértékűvé vált. Hogy a periférikus egységek lassú működése ne akadályozza a központi feldolgozó egység nagy elvi működési sebességének kihasználását, a CPU-t mentesíteni kellett a korábban takarékossági okokból rábízott olyan feladatok alól, mint a I/O adatátvitel pufferelése, (ez előzőleg említett puffer regiszterbe való beírása az adatoknak) és egyáltalán a teljes I/O operáció közvetlen vezérlése. Az ezeket a feladatokat átvevő új funkcionális blokkok számára azonban biztosítani kellett, hogy – a CPU-hoz hasonló módon – közvetlen kapcsolatban álljanak az operatív memóriával. Mindez csak úgy volt teljesíthető, hogy az operatív memória kapta a központi helyet a blokkstruktúrában. Így indult meg egy áttérési folyamat a memóriaközpontú számítógépre, amelyet Neumann János már 1946-ban javasolt.
2. ábra Memóriacentrikus számítógép felépítési vázlata
A lényeges különbség az előzőhöz képest, hogy az operatív memória több irányból is hozzáférhetővé vált. Ezt a lehetőséget használják ki az I/O operációk közvetlen vezérlését a CPU-tól átvállaló új funkcionális egységek: az autonóm csatorna-egységek. Ilyenek például a soros és párhuzamos adatátvitelt szolgáló egységek (egér, nyomtató), video- és hangeszközök csatornái. 9
Autonóm I/O csatornával rendelkező számítógép blokk-struktúrája Egy-egy csatornára nagyszámú, a legkülönfélébb típusú memória kapcsolódhat. A csatorna egységes, standard módon kezeli valamennyit, ezért a perifériák saját vezérlő egységeinek biztosítania kell az illeszkedést a csatorna standard előírásaihoz. Az operatív memória és a periféria közötti adatátvitelhez a szükséges pillanatokban a csatorna szintén kapcsolatot teremt az operatív memóriával. Egy-egy elemi I/O tevékenység befejeződéséről a perifériák értesítik a csatornát, amely ilyenkor továbblép a csatornaprogram végrehajtásában. A csatornaprogram befejezésekor a csatorna megszakításkérő jelet küld a CPU-nak, amely programmegszakítás segítségével veszi tudomásul az általa beindított komplex I/O tevékenység befejeződését.
3. ábra Autonóm csatornákkal rendelkező számítógép vázlata
Ez a folyamat indította el a modularizálódást. Az alapvető funkcionális blokkok modulokra bontásával és a modulok szimultán (egyidejű) vagy időben átlapolódó működtetésével ugyanis jobb gépkihasználást és nagyobb feladatátbocsátó képességet lehet elérni, nem utolsó sorban pedig a felhasználó igényeihez igazodó, modulárisan bővíthető gépkonfigurációkat lehet megvalósítani. A busz (vagy másik nevén a Sín) biztosítja az adatok cseréjét az egyes részegységek között. A funkciónak megfelelően megkülönböztetünk: • címbuszt, amelyet a processzor arra használ, hogy az adatátvitelhez egy meghatározott tárolócella vagy adatvezeték címét kijelölje; • vezérlőbuszt, amely vezérlőjeleket továbbít; • adatbuszt, amely a processzor és a számítógép más részei közötti adatforgalmat bonyolítja le.
10
A fentieket az alábbi leegyszerűsített összefoglaló blokkvázlat szemlélteti:
4. ábra Adatforgalom az egyes részek között
A Neumann-ciklus Az utasítások és adatok tehát a memóriában vannak. Ezeken kell a processzornak műveleteket végeznie. Egy feladat elvégzésére szolgáló utasítássorozat a program. A program futása során a processzor az utasításszámláló regiszterének megfelelően (ez olyan tároló egység, amely az utasítások sorrendjét tartalmazza, a hozzájuk tartozó memóriacímekkel együtt) az ott található cím alapján a memóriából utasítást hív le, értelmezi, majd végrehajtja azt, és az utasításszámlálót a következő címre állítja. A memória és a processzor együttműködésének folyamatát írja le az ún. Neumann-ciklus:
5. ábra A Neumann-ciklus
Az előzőekben láttuk, hogy nagyon fontos a perifériák vezérlése: mindezt úgy kell megoldani, hogy a processzor minél kevesebb ideig legyen ezzel a művelettel leterhelve. A perifériákkal való kommunikáció háromféleképpen mehet végbe:
11
•
Lekérdezéses átvitel (polling): a processzor folyamatosan kérdezi le a periféria állapotát, és ha érdemleges információt talál, akkor, beolvassa azt. A hátránya az, hogy a processzor folyamatosan foglalt
•
Megszakításos átvitel (Interrupt ReQuest, IRQ): a periféria a számára kijelölt megszakításkérő vonalon jelzi a processzornak az adatátviteli igényét. A processzor megszakítja addigi munkáját és kiszolgálja a perifériát. Hátránya ennek a módszernek, hogy megszakításkérelemkor a processzornak el kell mentenie minden, az adott pillanatban meglévő aktuális állapotot. A szál újrafelvételekor pedig újra be kell tölteni. Ez meglehetősen hosszú időt vesz igénybe.
•
Közvetlen memóriaátvitel (Direct Memory Access, DMA): a memória és a periféria közötti átvitel a processzortól függetlenül megy végbe, ezért a processzort nem foglalja le. Az átvitel megkezdése előtt a kezdő címet és az átadandó blokk méretét kell közölnie az autonóm-csatorna vezérlővel.
Funkcionális megközelítés Az előzőekben láttuk, hogy hogyan épül fel a számítógép, és hogy milyen problémák merülnek fel a perifériák kezelésében. Mindezeket a feladatokat vezérelni kell, ezt pedig csak szoftverrel lehet megoldani. Ennek a szoftvernek a neve: operációs rendszer. Az operációs rendszer fogalma: olyan program (programrendszer), amely a számítógépen futó összes folyamat végrehajtását vezérli (ISO szabvány szerinti megfogalmazás)! A számítógépes rendszer hardver és szoftverrétegekből felépülő, hierarchikusan strukturált rendszer. Rétegeknek nevezzük a funkciók halmazát, rétegszolgáltatásokkal és interface-ekkel (kapcsoló közegekkel). Rétegek: • alkalmazói programok: az alkalmazásfejlesztőket támogató alkalmazási szoftverekből áll össze, növeli a számítógép használati értékét. Alkalmazói programok belövését, tesztelését és indítását, futtatását segítő, további fejlesztést nem igénylő programok, melyekkel önálló alkalmazások hozhatók létre (beépített makró-futtató rendszerek); • fejlesztőeszközök: minden, ami a programfejlesztéshez szükséges. Fejlődése: gépi kód; assembly; 3GL: Fortran, ALGOL, COBOL, Pascal, C stb.; 4GL eszközök, programgenerátorok, vizuális eszközök;
12
• operációs rendszer: kiterjesztett rendszerarchitektúrát szolgáltat, használhatóvá teszi a gépet a fejlesztőeszközök és az alkalmazói rendszerek számára; • hardver: CPU – processzor(ok), memóriavezérlők, autonóm-csatornák, perifériák (maga a gép)
6. ábra A számítógépes rendszer rétegei
Az egyes rétegek között a kapcsolatokat réteg interface-ek teremtik meg. Az operációs rendszer a felsőbb szintek munkájának koordinációjában is részt vesz. Erre utal az operációs rendszer definíciójában az összes folyamat vezérlése.
13
Az operációs rendszerek fejlődése A kezdetek Az első számítógépeknek még nem volt operációs rendszere. A mai értelemben még nem is voltak igazi számítógépek, mert programozásukhoz vezetékek százait kellett átcsatlakoztatni. Nézzük kronológiai sorrendben a számítógépek fejlődését. Konrad Zuse 1941-ben fejezte be az első teljesen működőképes, szabadon programozható, programvezérlésű számítógépét, a Z3-at. Alan Turing kezdeményezte a COLOSSUS megépítését 1943-ban, Angliában. A COLOSSUS egy gyors bináris rendszerben dolgozó automata számítógép volt, és kizárólag kódok megfejtésére használták a II. világháborúban. A németek ENIGMA nevű rejtjelét is ezzel fejtették meg. 5 kHz-es órajellel dolgozott, amely azt jelenti, hogy másodpercenként 5000 műveletet végzett el. Howard Aiken fejlesztette ki a Mark I.-et 1944-ben. Ezt az IBM építette meg, és lyukkártyával lehetett programozni. Fix pontos számábrázolással dolgozott. Továbbfejlesztett változatai a Mark II. (1948) és a Mark III. (1950). John Mauchly és John Eckert a tervezői az ENIAC-nak (Electronic Numerical Integrator And Calculator). Az első teljesen elektronikus vezérlésű számítógép 220 m2 alapterületű volt. Továbbfejlesztett változata az UNIVAC (Universal Automatic Calculator) és az EDVAC (Electronic Discrete Variable Automatic Calculator) elektroncsöves technikával készült. Ez a fejlődést is jelentősen befolyásolta. Wallace Eckert építette 1947-ben a SSEC-et (Selective Sequence Electronic Calculator) az IBM megbízásából. 1954-ben az IBM bevezeti a FORTRAN programozási nyelvet. 1984. augusztus 12-én az IBM bemutatja a PC-t (Personal Computer). A számítástechnika történetéről bővebben az alábbi weboldalon olvashat: http://www.tar.hu/frameset.phtml?path=/klemand/szamtechtort/szamtechtort.htm
14
Az operációs rendszerek kialakulásának és fejlődésének folyamata Kezdetben a mechanikus programozási módszer nemcsak a felhasználónak volt kényelmetlen, hanem kihasználatlanul állt a gép az idő nagy részében. A felhasználói kör bővülésével megszületett az igény az egyszerűbb használatra. Megszületett a FORTRAN. Ez azért volt fontos lépés, mert általa olyan szoftvereket lehet írni, amely megkönnyíti a gép kezelését. Kezdetben a felhasználók kibérelték a gépet, azaz gépidőt kaptak és a rendelkezésre álló időben azt csináltak a géppel, amit tudtak. Ez volt az úgynevezett open shop módszer. Akkoriban egy programfuttatás úgy zajlott, hogy a felhasználó vitte a lyukkártyáját, a konzolírógépen begépelte a jelszavát, amivel törölte az előző adatokat. Behelyezte a FORTRAN fordítókártyáját, majd a saját programját és megnyomta a betöltés gombot. Sikerült lefordítani a programot. Ezután újabb tártörlés után elkezdődhetett a lefordított program feldolgozása, az adatok betöltése stb. Az eredményt a konzolírógép írta a papírra. Sajnos, nem mindig ment minden hibátlanul. Ilyenkor újra kellett próbálkozni. Sokszor előfordult, hogy gyakorlatlan felhasználók több órás szenvedése alig néhány másodpercnyi processzoridőt (amíg a processzor dolgozik) jelentett. Ennek elkerülése érdekében növelni kellett a felhasználók tudását, ez azonban nem ment olyan egyszerűen. Ezért egy szakavatott felhasználónak – az operátornak – adták át a programokat. Az operátor nem esett kétségbe az első hibától. Rendszerezni tudta a feladatokat; az egyes lyukkártyakötegeket egymás után hajtotta végre, ezért ezt a feldolgozásmódot kötegelt (batch) módnak nevezték. Ez a módszer a closed shop elnevezést kapta. Az operátor lassúságát és tévedéseit kiküszöbölendő létrehozták a legelső operációs rendszert. A számítógép vezérlését egy állandóan a memóriában tartózkodó programra bízták, és az operátor csak a perifériákat kezelte. Megjelentek a lyukkártyák helyett a mágnesszalagos egységek. Ettől kezdve a felhasználók egy gyenge számítógép segítségével a lyukkártyáról szalagra másolták a programjaikat az operátor pedig ezeket a szalagokat kezelték. Az 1960-as évek végére a processzorok fejlődésével, a mágnesszalagos perifériák már lassították az adatfeldolgozást. Megjelentek a mágneslemezek, amelyek intelligens adatátvitelt tettek lehetővé a DMA (közvetlen memória hozzáférés) útján. A művelet befejezése után ezt megszakítás kéréssel jelzi a központi egységnek. A következő lépés a multiprogramozás (többfeladatos rendszerek) megjelenése, amely azt jelenti: az operációs rendszer egyidőben látszólag - több programot is vezérel. A multiprogramozás megvalósítása csak akkor lehetséges, ha egy folyamat nem használja a processzort. Ez a következő esetekben lehetséges: • I/O műveletnél 15
• szoftver/hardver hiba esetén • a processz (folyamat) befejeződik, azaz vége az egyik program végrehajtásának, • a processz önként lemond a CPU-ról, és lehetővé teszi más folyamatoknak a CPU-hoz való hozzáférést • az operációs rendszer időként visszaveszi a vezérlést, a saját feladatainak ellátásához. Ekkor lehetőség nyílik más folyamatnak az elindítására, illetve befejezésére. A többféle periféria megjelenése, valamint a több feladat egyidejű kiszolgálása komoly feladatokat rótt az operációs rendszerre. Külön kell választanunk az alapfunkciókat ellátó magot (kernelt) és a shellt, amely a felhasználóval tartja a kapcsolatot. A kettőt együtt nevezzük operációs rendszernek. Interaktív rendszerek Az addigi operációs rendszerek támogatták a programok futtatását, de alig támogatták a fejlesztő eszközöket. Az interaktivitás megteremtése nem hagyta változatlanul az operációs rendszereket sem. Ezáltal újabb problémákat kellett megoldani: • Válaszidő: a beavatkozásra reagálnia kell a rendszernek, meghatározott időn belül. • Időosztás: az operációs rendszernek nem csak akkor vannak adminisztratív feladatai, amikor a program írni vagy olvasni akar, hanem akkor is, amikor a felhasználó beavatkozik. Az ő igényét is ki kell elégíteni. Tehát időről időre figyelnie kell az operációs rendszernek a folyamatokat, a rendelkezésre álló idő felosztásával • A felhasználói felületet alkalmassá kellett tenni a beavatkozások fogadására és a parancsok értelmezésére. Megjelentek a parancsértelmezők (melyek értelmezik a felhasználó által bevitt parancsot és végrehajtják azt, vagy ha nem tudják, akkor hibaüzenetet küldenek), amelyek a számítógéppel való kommunikáció alapját jelentik. Többprocesszoros rendszerek A processzorok árának csökkenése felvetette az ötletet, miért ne lehetne több processzort is beszerelni a gépbe. Ez újabb előnyökhöz vezetett, de újabb problémákat is meg kellett oldani. Nézzük ezeket: • Megnövekedett adatfeldolgozási sebesség: ugyanis a több processzor párhuzamosan tudja megoldani a feladatokat, de a műveleti sebesség nincs egyenes arányban a processzorok számával, mert több adminisztrációs és szinkronizációs feladatott kell megoldani. • Megbízhatóság növekedése: ha egy processzor meghibásodik, akkor nem omlik össze a rendszer, mivel a többi át tudja venni a feladatait, teljesítménycsökkenés árán.
16
Felhasználói felületek Az operációs rendszer egyik alapvető feladata a felhasználóval való kapcsolattartás. Az első, amivel a felhasználó találkozik, az operációs rendszer felhasználói felülete. Ez teszi lehetővé a felhasználó számára, hogy programokat indítson, illetve a programok optimális működéséhez különböző beállításokat tegyen. Ugyanaz az operációs rendszer több különböző architektúrájú gépen is futhat, sőt a különböző felhasználóknak különböző igényeik vannak. Van, aki játékok futtatására teszi alkalmassá a gépét, mások vektor-grafikus rajzoló, illetve tervező programokat használnak. A felhasználói felület tehát elfedi a felhasználó elől a hardver különbözőségét, és alkalmassá teszi a rendszert a felhasználói beavatkozásra. Erre az interaktív beavatkozásra nagy szükség van az optimális működés érdekében. Az operációs rendszerek alapvető feladatai: • Taszkok ütemezése, összehangolása A folyamatok (processzek vagy taszkok) versengenek az erőforrások használatáért. Az operációs rendszer ütemezi és adminisztrálja az egyes erőforrásokat és a versengő folyamatokat. A teljes körű ellenőrzés a operációs rendszer kezében van: azt lehet, amit megenged (várakozás + sorbaállás + adminisztrálás = ütemezés). • Erőforrások kezelése A processzor és a memória optimális kihasználása. • I/O műveletek megszervezése Az input és output műveleteket csak az operációs rendszer hajthatja végre. Az alkalmazói programok kérelmet küldenek a processzor felé. • Hibakezelés • A helyes és optimális működés biztosítása • Program- és adatvédelem biztosítása Csak akkor lehet megvalósítani, ha van a CPU-nak normál és privilegizált (kizárólag az operációs rendszer feladatait hajtja végre) üzemmódja is. Célja: megakadályozni az illetéktelen hozzáféréseket (utasítások, memóriaterület kezelése) hibás programműködés kiszűrése (regiszterkezelés, megszakításkérelem stb.) Tehát fent említett hibák bekövetkezése ellen védeni kell a CPU-t, az operatív tárat, az I/O műveleteket és a megszakításokat. • Naplózás
17
• Megszakításkezelés Bizonyos tevékenységeket csak az operációs rendszer végezhet el, alkalmazói program nem (I/O műveletek lebonyolítása, hardvereszköz állapotváltozása, hibák kiszűrése, rendszeradminisztráció lebonyolítása, ütemezése, szinkronizálások, rendszerhívás). • Monitoring Felügyelő funkciók. • Kapcsolattartás a felhasználókkal Ezen utóbbi a felhasználói felületen keresztül megy végbe, a következő feladatok elvégzésével: - programindítás, kapcsolattartás a folyamatokkal; - a rendszermag szolgáltatásainak közvetlen elérése; - a rendszermag programozói felülete; - alapvető segédprogramok.
Az operációs rendszer felépítése A többfeladatos rendszerekben (ma már gyakorlatilag minden operációs rendszer ilyen), csak úgy tudják ellátni feladatukat az operációs rendszerek, ha a hardver és a felhasználói programok közé beékelődik a felhasználói felület. Tehát minden az operációs rendszeren megy keresztül, annak felügyeletével történik. Az operációs rendszeren belül megkülönböztetjük a rendszer magját: a kernelt, és a felhasználóval kapcsolatot teremtő részt a burkot, más szóval a shellt.
Felhasználó és rendszermag Amint az előzőekben már szó volt róla, a különböző felhasználási célok különböző beállításokat igényelnek. Vizsgáljuk ezt meg az erőforrások szempontjából! Külső erőforrások Az úgynevezett nyílt rendszerek (mint például a DOS és a Windows régebbi verziói) széles lehetőségeket kínálnak az egyes hardvergyártóknak, hogy a rendszerhez jól illeszkedő eszközvezérlő programokat készítsenek, amelyek beépülhetnek a rendszermagba. Az, hogy milyen lesz a rendszermag, végérvényesen az operációs rendszer betöltődésekor dől el, mégpedig a konfigurációs állomány betöltődésekor (DOS esetében az a CONFIG.SYS, Windows esetében pedig a SYSTEM.INI fájlok segítségével). A DOS-ról bővebben az alábbi weboldalon olvashat: http://www.csucsposta.hu/dobosl/dos.htm
18
A Windows (95, 98) és fejlettebb verziói az automatikus beállítások támogatását tűzték ki célul. Az új technológia neve a Plug and play (PnP – „Csatlakoztasd és használd”). A módszer elve az, hogy a hardverelemek közös nyelven kommunikálnak az operációs rendszerrel. Az eszköz az operációs rendszer kérdéseire megfelelő választ ad, azonosítja magát. De sajnos, a közös nyelvet még nem minden hardvergyártó sajátította el, ezért nem mindig sikerül az eszközöket hiba nélkül telepíteni. Belső erőforrások Az operációs rendszerek alapvető belső erőforrásai a memóriák. Különböző felhasználási módok függvényében szükség lehet a beállítások módosítására. Az adatátvitel gyorsítására szolgáló memóriaterületek javítják a rendszer tulajdonságait. A javulás ára azonban az operációs rendszer méretének a növekedése, tehát a felhasználói folyamatok rendelkezésére álló területek csökkenése. Példaként nézzük meg a DOS memóriakezelését: A DOS operációs rendszert az Intel 8086-os processzorral rendelkező IBM PC XT számítógépre fejlesztették ki. Először ismerkedjünk meg a 8086-os processzor címzési korlátaival. A processzor a memóriát bájtonként címzi meg. Mivel a processzor 20 címvezetékkel rendelkezik, így 220 Byte=1 Megabyte (MB) memória megcímzésére volt képes. Még ezt a kis memóriát is két részre osztották, egy programok futtatására szolgáló 640 Kilobyte-os (KB), ún. konvencionális memóriarészre és 384 KB-os rendszerterületi részre. A programok fejlődésével nemcsak a programok tudása, hanem a mérete is jelentősen megnövekedett, és szűkké vált a 640 KB-os memóriahatár. A problémát az 1 MB-os címzési korlát okozza, ezért azt a módszert találták ki, hogy a 640 KB és 1 MB között még szabadon maradt területre egy 64 KB-os területre lapozzuk be az 1 MB feletti memóriát. Ez azt jelenti, hogy egyidejűleg mindig csak 64 KB-ot látunk, de ha másikra van szükségünk, egyszerűen kérjük a következő lapot. Az XT gépeken ezt még külön hardverkártyának kellett megoldania, napjainkban ezt már szoftveres úton oldják meg. Ezt a memóriabővítést EMS-nek (Expanded Memory System) nevezték el, a lapozóterületet (lapozóablakot) pedig EMS Page Frame névvel illették. Több cég is kidolgozta az EMS memóriakezelési szabványt, ezt követően nagyon sok program alkalmazta, és igényli napjainkban is az EMS memória kezelési lehetőségét. A következő lépcsőfok a 80286 processzor (AT számítógépek) megjelenése volt, amelyek 24 címvezetékkel 16 MB memória megcímzésére lettek képesek. Több szabvány is megjelent, azonban a legelterjedtebb az XMS (Extended Memory Specification) lett. Az XMS három területen biztosít több memóriát a DOS számára:
19
• Felső memóriaterület: a lehetőség 80386-os vagy fejlettebb processzoros számítógépeken érhető el. Lényege: az 1MB memória felső 384 KB-os része a hardvertől függően több, kevesebb szabad (nem okvetlenül egybefüggő) résszel rendelkezik. Ezeket a szabad memóriablokkokat (UMB - Upper Memory Block) képes a rendszer úgy kezelni, hogy ide rezidens (állandóan a memóriában tartózkodó) programokat, eszközvezérlőket tölt be. Ideális esetben az összes eszközvezérlőt betölthetjük ide a hagyományos memóriaterületről azért, hogy annak szabad területe elérje a 620 KB-ot. • Magas memóriaterület: A lehetőség 80286-os vagy fejlettebb processzoros számítógépeken érhető el. Megvalósításához szükséges az A20 címvonal, melynek engedélyezésével a processzor valós üzemmódjában látja az 1024-1088 KB memóriaterület közötti részt. Ez a 64 KB-os memóraterület a HMA (High Memory Area). Ide az UMB-től eltérően csak egy program tölthető be, leggyakrabban a DOS egy része. • Extended (kiterjesztett) memóriablokkok: A lehetőség 80286 vagy fejlettebb processzoros számítógépeken érhető el, és az 1088 KB feletti memóriaterületek használatát jelenti. A gyakorlatban ezt nevezik XMS memóriának, melynek kezelésére a programokat fel kell készíteni. Az extended memóriablokkok maximális nagysága 80286-os vagy fejlettebb processzorok esetén 4 Gigabyte (GB). Az új memóriaterületek megjelenése és kezelésük szabványosítása azonban még nem old meg minden problémát. Az új programrendszereket ma már felkészítik az XMS memória kezelésére, azok a régi programok azonban, amelyek nem elégedtek meg a 640 KB hagyományos memóriával, továbbra is az EMS meglétét igényelték. Ennek azonban az az ára, hogy az állandó lapozgatással a program futása lassabb lesz. Egyes 80286 processzort tartalmazó alaplapokat felkészítették hardver úton az EMS memória kezelésére, azonban 80386 gépektől kezdve a problémát már szoftverrel oldják meg: az XMS memória egy részét feláldozva EMS memóriává alakítják át. Az előbbi módszert EMSemulációnak nevezzük.
20
7. ábra A DOS memória kezelése az XT és AT számítógépeken
A fenti táblázatban használt rövidítések a következők: • ROM-BIOS (Read Only Memory-Basic Input Output System): a csak olvasható memóriában elhelyezett program, amely elemi szinten teszteli a számítógép input és output rendszerét; • VGA-BIOS (Video Graphics Adapter-Basic Input Output System): a videókártya tesztjét vezérő program; • Video RAM (Random Access Memory): videoinformációk betöltésére fenntartott hely.
Karakteres felhasználói felület A karakteres felületen a felhasználók parancsokat gépelnek be, amelyet az operációs rendszer értelmez, majd végrehajt. Ehhez kell egy parancsértelmező (command interpreter), amely a felhasználó által begépelt parancsokat ellenőrzi. Ha lehetséges, akkor végrehajtja, ha nem, akkor hibaüzenetet küld. A könnyebb kezelhetőség kedvéért a rendszermagot, a kernelt elfedik a felhasználó elől, mintegy burokba zárják. Ezeket a rendszerközeli programokat nevezik shell-programoknak. Működésük nem igényel az operációs rendszertől privilegizált módot. A shell alapvető feladatai: • programindítás, programkezelés 21
• egyéb, operációsrendszer-funkciók felhasználói szintű biztosítása (általános értelemben vett fájlkezelés). Programkezelés Minden esetben felhasználó indítja el a folyamatot. Lehetséges bizonyos fokig automatizálni ezt, mert a felhasználónak csak az indító fájlt kell kiválasztani, a többit, amelyre hivatkozik a program, az operációs rendszer automatikusan nyitja meg. A programokkal kapcsolatban 4 fontos feladatnak kell megfelelni: • A betölthető fájl kiválasztása: Ezek .EXE; .COM kiterjesztésű; gépi kódú állományok, amelyek közvetlenül alkalmasak a futtatásra, vagy speciális esetben .BAT kiterjesztésűek. Ez utóbbi nem hagyományos értelemben vett gépi kódú program-fájl, hanem egy szöveges állomány, mely DOS parancsokat tartalmaz. A kiterjesztés az operációs rendszert informálja a fájl típusáról. Indítása után a benne rögzített parancsokat végrehajtja az operációs rendszer, mintegy külső beavatkozás nélkül. Ez is egy lehetséges módja az automatizálásnak, amelyről fentebb volt szó. Természetesen ahhoz, hogy a kiválasztott fájl valóban be is töltődjön nevének begépelése és a parancs elfogadása után, az operációs rendszernek meg is kell találnia azt. Alapértelmezésben az operációs rendszer mindig az aktuális katalógusban keresi az indítani kívánt fájlt. Ha ott nem találja, akkor megnézi az aktuális elérési útvonalat. Az elérési útvonal meghatározza a könyvtárszerkezetben a fájl pontos helyét. A mindennapi géphasználat során felmerül az igény arra, hogy „bárhonnan” indíthassunk olyan fájlokat, amelyeket gyakran használunk, azaz egy olyan futtatható fájlt szeretnénk indítani, amelyik nem az éppen aktuális könyvtárban van. A legjobb példa erre a DOS operációs rendszer, amely tartalmaz úgynevezett belső és külső parancsokat. A belső parancsok az operációs rendszer betöltésekor a memóriába kerülnek, és ott is maradnak a számítógép kikapcsolásáig. Ez biztosítja a közvetlen és gyors elérést. A külső parancsok egy könyvtárban helyezkednek el valamelyik háttértárolón (tehát a memórián kívül, ezért külső). Azért nem helyeznek minden parancsot a memóriába, hogy ne kössön le túl sok belső erőforrást az operációs rendszer. Az könnyen belátható, hogy értelmetlenség lenne minden egyes külső parancs hívásakor belépni a parancsot tartalmazó könyvtárba. Ehelyett megadjuk az elérési útvonalát: ezt megtehetjük a parancs begépelésekor is úgy, hogy előbb begépeljük az elérési útvonalat. Igazság szerint ez sem szokványos a mindennapi géphasználatban, ehelyett olyan programkörnyezetet állítunk be, hogy a problémát át tudjuk hidalni.
22
A PATH parancs segítségével meg tudunk adni több útvonalat is, amelyet át kell néznie az operációs rendszernek, hogy megtalálja az indítani kívánt fájlt. A folyamat a következőképpen történik: az operációs rendszer megnézi, hogy a fájl az aktuális könyvtárban van-e. Ha igen, akkor elindítja, ha nem, akkor megnézi, van-e definiálva elérési út a PATH parancs segítségével. Ha igen, akkor végignézi azokat. Ha megtalálta azt a könyvtárat, amelyben az indítani kívánt fájl van, akkor elindítja. Ha nem, akkor hibaüzenetet küld. A fentiekből is kitűnik, hogy a keresési útvonalakat minden egyes gépindításkor definiálni kell. Azért, hogy ez ne terhelje minden egyes alkalommal a felhasználót, lehetőség van létrehozni egy AUTOEXEC.BAT nevű kötegelt állományt, amely olyan parancsokat tartalmaz, amelyeket minden egyes gépindításkor be kellene gépelni. Ennek a fájlnak az a specialitása, hogy a betöltési folyamat végén automatikusan betöltődik, és a benne definiált parancsok is végrehajtódnak. Tehát ide célszerű beírni a PATH parancsot is. • A program számára megfelelő környezet biztosítása: a programok futását befolyásoló tényezőket nevezzük programkörnyezetnek. Általában a környezeti beállításokat valamely automatikusan lefutó fájlban helyezzük el (AUTOEXEC.BAT, CONFIG.SYS). Az előző fejezetben leírt memóriabeállítások is azt a célt szolgálják, hogy a programoknak futásukhoz megfelelő környezetet biztosítsunk. Vannak olyan programok, amelyek kifejezetten igénylik az EMS memória jelenlétét, ezért azt emulálni kell. A programkörnyezet beállításai természetesen történhetnek paraméterek segítségével, amelyek azon állományok nevei, amelyeken műveletet kell végezni a programnak és kapcsolók segítségével, melyek a működést pontosítják. Az átirányítási információk jelzik a rendszer számára, hogy az alapértelmezett I/O periféria helyett hová kerüljenek az adatok.
Grafikus felhasználói felület A számítógépek elterjedésével mind jobban igénnyé vált az egyszerű kezelés. A felhasználóbarát programok megkönnyítették a számítógépek kezelését. Ez az igény felmerült az operációs rendszerekkel szemben is. A technikai eszközök fejlődése, a processzorok műveleti sebességének növekedése maga után vonta a multitask rendszer létrejöttét (ez látszólagosan párhuzamosan futó programok vezérlését jelenti). Igényként merült fel a különböző folyamatok nyomon követésére (egy-egy ablakban). Ez hozta maga után az ablakozó technikákat.
23
8. ábra A Windows felülete
A grafikus felület objektumai: • Minden program egy ablakban nyílik meg. Tehát minden programhoz tartozik egy ablak, amelyet szabadon lehet méretezni. Az ablakok közötti váltás teszi lehetővé, hogy az egyik vagy másik alkalmazás között válthassunk. Az ablak ikon téve azok indítását. A képernyőn egyszerre több ablak is megjelenhet, ezek részben eltakarhatják egymást. Sorrendjük is megváltozhat, valamint szabadon méretezhetők. Az alkalmazások ezekről a változásokról nem vesznek tudomást. Ezeknek a kezelése teljes egészében az ablakozó alrendszerre hárul. • A grafikus felületen az egér az egyik leggyakrabban használt beviteli eszköz. Működéséhez szoftver kell. A felhasználó az egérrel manipulál, az operációs rendszer pedig az egér pozíciójából dönti el, hogy mely ablakkal kell műveletet végeznie. Amikor a felhasználó kattint az egérrel, vagy leüt egy billentyűt, akkor azt eseménynek nevezzük. A billentyűzethez nem rendelhető pozíció, mégis egyértelművé kell tenni, hogy melyik ablakra vonatkoznak a billentyűműveletek. Ezt úgy oldják, meg, hogy az ablakok között van egy úgynevezett aktív ablak, amelyre a billentyűművelet vonatkozik. Az aktív ablak megváltoztatható egérkattintással vagy egyéb segédprogrammal. • Az esemény hatására az alkalmazás feldolgozza az üzenetet. Nagyon fontos szempont a feldolgozás során, hogy a felhasználó felé mindig legyen jelzés, mégha a számítógép hosszú időn keresztül is dolgozik (pl. homokóra alakú egérmutató). A grafikus felület kezelése meglehetősen bonyolult feladat, ezért az operációs rendszerben ezt egy alrendszer látja el. Ilyen grafikus felület például a Windows, vagy a Linux rendszerben az X-Window felület.
24
A felhasználóbarát felület jellemzői • Könnyű legyen megtanulni: ezt segítik a menürendszerek, mert a menüpont neve segítséget nyújt a felhasználónak. Egy billentyűkombinációt például tovább tart megtanulni és begyakorolni. mégis van létjogosultsága. • Jól kezelhető súgó és help (segítség) rendszere legyen. A felbukkanó segítségbuborékot ki-be lehessen kapcsolni, hogy a gyakorlottabb felhasználót ne zavarja. • Minden utasításra legyen válasz, mert nagyon elbizonytalanító, amikor nem tudjuk, hogy történik-e valami a háttérben egy-egy parancs kiadása után. • Meg lehessen szakítani elindított műveleteket, például nagyméretű fájlok, vagy könyvtárszerkezetek másolásakor. • Lehessen visszavonni a tévedésből kiadott műveleteket, minden következmény nélkül.
Összefoglalás Ebben a részben megbeszéltük a Neumann-elveket: • Tárolt program • Kettes számrendszer • Vezérlőegység • Aritmetikai-logikai egység • Input-output perifériák. Áttekintettük a számítógép architektúraváltozását a processzorcentrikus felépítéstől kezdve a memóriacentrikus felépítésig. Megvizsgáltuk a modularizálódás okát és előnyét. Definiáltuk az operációs rendszer fogalmát. Az ISO szabvány biztosítja a keretet a különböző szoftvergyártó cégek számára, hogy milyen feladatoknak is kell megfelelnie egy operációs rendszernek. Jól elkülöníthető rétegekre bontottuk a számítógépen futó programok rendszerét, amelyek között a kapcsolatot a réteg-interface-ek teremtik meg. Az operációs rendszert elhelyeztük a hardver- és a fejlesztőeszközök közé, de megállapítottuk, hogy a feladata átszövi a teljes szoftverrendszert. Nagy vonalakban áttekintettük a számítógépek fejlődésének történetét, valamint az operációs rendszerek kialakulását. A felhasználói felületek kapcsán meghatároztuk az operációs rendszerek feladatait: • Erőforrások kezelése • I/O műveletek megszervezése • Hibakezelés 25
• • • • • •
A helyes és optimális működés biztosítása Program- és adatvédelem biztosítása Naplózás Megszakításkezelés Monitoring Kapcsolattartás a felhasználókkal
Megvizsgáltuk, hogy a rendszer hogyan kezeli a külső és belső erőforrásokat, mit jelent a Plug and play technológia. Összehasonlítottuk a karakteres és grafikus felhasználói felületet, a programindítás mikéntjét, valamint összefoglaltuk a felhasználóbarát felület jellemzőit is.
Ellenőrző kérdések 1. Ismertesse a Neumann-elveket! Megoldás 2. Vázolja fel, milyen átalakulásokon ment keresztül a számítógépek architektúrája a moduláris felépítésig! Megoldás 3. Ismertesse az operációs rendszer fogalmát, feladatait, egy-egy mondattal jellemezve azokat! Megoldás 4. Ismertesse és jellemezze a Plug and play (PnP) fogalmát! Megoldás 5. Mit nevezünk külső és belső erőforráskezelésnek? Megoldás 6. Hasonlítsa össze a karakteres és grafikus felhasználói felületet! Megoldás
Jegyzet
26
Lemezkezelés Bevezetés A következő rész a háttértárolókkal kapcsolatos ismereteket tárgyalja. Szólunk a történeti érdekességekről, úgymint lyukkártya, lyukszalag, mágnesdob. Az anyag törzsét a jelenleg leginkább használatos mágneses (mágnesszalag, merevlemez, hajlékonylemez) és optikai (CD, DVD) elvű háttértárak adják. Végül a manapság nagyon gyorsan fejlődő és hatékonyan használható flash memóriákkal is megismerkedünk.
A háttértárolók története. Lyukkártya, lyukszalag A számítógépek alkalmazásának kezdeti szakaszában adathordozóként a lyukszalagot és a lyukkártyát használták. 1805-ben Joseph Marie Jacquard feltalálja a lyukkártyával vezérelt szövőgépet, amelynek használata ezután majd kétszáz évig tartott. Lyukkártyára rögzítették Charles Babbage analitikai elven működő gépének eredményeit, majd az USA népszámlálási adatait is így dolgozták fel, de így működött az első teljesen elektronikus számítógép, az ENIAC is.
9. ábra Lyukkártya
27
A lyukkártya vékony keménypapírból készül, mérete 8,3*18,7 cm, amely 80 oszlopra és 12 sorra osztott. A saroklevágás csak a hibás elhelyezést küszöböli ki, a rossz sorrendet nem (erre szolgálnak az azonosító mezők). Számjegyet az értékének megfelelő sorban elhelyezett lyukkal ábrázolnak. Betűt egy 1-9 közötti érték, és egy 0, 11, 12-ből vett érték jelez. Egyéb jeleket más kombinációkkal ábrázolódnak. A kártyaolvasóban az érzékelés általában oszloponként történik és oszloponként 8 bites, vagyis 80 bájtos pufferbe (átmeneti tárolóba) helyezi el az EBCDIC (External Binary Coded Decimal for Interchange Coding) karakterképet. Ezt egy újabb olvasó megismétli, és a központi egység csak egyező adatok esetén kapja meg a puffer tartalmát. Sebessége 6001200 kártya/min.
A mágneses jelrögzítés története A mágneses jelrögzítés történetének egy fontos alakjáról, Valdemar Poulsenről itt olvashat bővebben. Mágneses adathordozók gyártása (hordozóanyag) A mágneses jelrögzítés sok-sok látható előnye ellenére csak a huszadik század nyolcvanas éveire szorította teljesen ki a lyukkártyát. Ez annak köszönhető, hogy a megfelelő hordozóanyag csak a hatvanas évektől lett hozzáférhető. Fontosabb határpontok a mágneses jelrögzítés történetében, fejlődésében 1928. Mágneses bevonattal ellátott papírszalag 1935. Műanyag magnószalag (BASF AEG) 1951. Videomagnó (Charles Ginsburg) 1963. Hordozható kazettás magnetofon (Philips BASF kazetta) 1971. Mágneslemez (IBM) 1981. 3,5” lemez (Sony)
A mágneses jelrögzítés alapelvei Írás Az elektromos áram mágneses mezőt hoz létre, és megváltoztatja az anyagok mágnesezettségét. Az írófej mágneses indukcióvonalai a mágneses hordozóanyagokon keresztül záródnak. Olvasás Változó mágneses mezőben lévő vezetőben áram indukálódik. Hordozóanyag Műanyag fóliára, alumíniumlemezre vagy más felületre felvitt kemény mágneses anyag (például króm-dioxid). 28
Kódolási eljárások NRZI Az adatok impulzusok és szünetek segítségével kerülnek rögzítésre. Szalagos tárolóknál használatos a NRZI kódolás. Csak az 1 biteknél van fluxusváltás. FM 0,1 RLL Ha egy szünetet egy impulzus követ, akkor az adatbit pl. 0, ha kettő, akkor az adatbit 1. A frekvenciával (jelek sűrűségével) kódoljuk az adatot. Egymás után következhet két impulzus (minimális futási hossz 0), de a szünet után mindig van órajel (maximális futási hossz 1). Ebből következően az FM 0,1 RLL kódolás. Az elhelyezhető adatbitek maximális száma fele az elhelyezhető impulzusokénak. Nem lehetnek az impulzusok adott távolságnál közelebb, hogy még megkülönböztethetőek legyenek, ami korlátozza a tárolókapacitást. MFM 1,3 RLL Ha szünet után impulzus következik, az jelenti az 1-et. A 0-t pedig, ha nem volt impulzus az előző adatbit végén, akkor az impulzus után egy szünet, vagy, ha az előző adatbit végén impulzus volt, akkor két szünet. Ez biztosítja, hogy legalább 1, de maximum 3 szünet legyen. Az MFM 1,3 RLL kódolású. Ez dupla mennyiségű adat tárolását teszi lehetővé ugyanakkora helyen, mint az FM kódolás, de pontosabb időzítést követel (szünetek hosszabbak). RLL 2,7 ARLL 3,9 RLL (Advanced RLL) A bejövő hét bitkombináció lefedi az összes lehetséges értéket. Minimum kettő és maximum 7 nulla szünet lehet két impulzus között.
10. ábra Bitkombinációk
Az MFM-eljárással a tárolókapacitás 1,5-szeresét lehet így elérni, az ARLL-eljárással pedig a kétszeresét. A sávokban lévő szektorok száma így 17-ről 26-ra, illetve 34-re növelhető. A ma árusított merevlemezek kódolása RLL 2,7.
29
11. ábra Kódolási eljárások összehasonlítása - ASCII „ú”
Soros elérésű tárak Történet A mágnesdob volt első generációs számítógépek egyik jellemző tárolóeszköze, erről és ennek magyar vonatkozásairól a http://www.tar.hu/frameset.phtml?path=/klemand/szamtechtort/szamtechtort.htm és http://ujjlenyomat.budapest.hu/mill_fav/janosi.html címeken olvashatunk.
Mágnesszalag (Kazetta) Mágnesszalagokat nagyon régóta használnak archiválásra. Alapvetően soros elérésű tárolók. Az adattárolás több csatornán történik.
12. ábra Mágnesszalag
Manapság is rengeteg típusuk használatos: • steamer • cartridge • DAT kazetta
30
13. ábra DAT kazetták
Tárolási kapacitásuk több tíz Gbyte is lehet, ezért alkalmasak nagy tömegű adat tárolására archiváló programokkal együttműködve. (Megjegyzés: törekszünk a byte, Kbyte, Mbyte, Gbyte közti váltószám (1024) helyes használatára, azonban lesz néhány eset, ahol az azóta már beidegződött 1000-es formulát használjuk.)
Mágneslemezek Az adatok tárolásának módja Felületüket a használatbavétel előtt formázni kell, hogy olyan szerkezetet alakítsunk ki, amelyet az operációs rendszerek kezelni tudnak. Sávokat (track) és azon belül szektorokat alakítunk ki, többlemezes egységnél az egymás feletti szektorokat cilindernek nevezzük. A szektor címe: szektorok száma a sávon belül*(cilinder sorszáma * cilindereken lévő sávok száma + fej sorszáma) + szektor sorszáma a sávon belül.
Lemezműveletek ütemezése A lemezelérési idő három részből áll: a keresési idő, amíg a fej a megfelelő területre ér, lappangási idő, amíg a megfelelő blokkra ér, és a transzfer (olvasás/írás) időtartama. A keresési idő az ütemezési algoritmusokkal, a lappangási idő a lemez forgási sebességének növelésével csökkenthető. A fejmozgatások optimalizálása több szempontból is elengedhetetlen. Abban az esetben, ha csak egy ügyfelet kellene kiszolgálni, tökéletesen megfelelne az FCFS (First Come First Served)-metódus, de több felhasználó vagy multitasking esetén érdemes átgondolni, melyik az optimális megoldás. Ezen kívül, mivel a lemez mechanikus működésű hardveregység, a minél kevesebb fejmozgás csökkenti a lemez 31
elhasználódását, növeli élettartamát. Minél több az előre hátra-mozgás, annál nagyobb az esélye a téves beolvasásnak, amely mindenképpen okoz időveszteséget (újraolvasás). FCFS (First Come First Served) A legegyszerűbb módszer, könnyű kivitelezni. Értelmezése kétféle lehet: azt jelenti, hogy az első felhasználó, aki megkapja a lemezt addig használja, amíg a fájl hozzáférése befejeződik, vagy az egyes lemezhozzáférések kiszolgálása az érkezés sorrendjében történik. Ez utóbbi az olvasófej vad ugrálásához vezethet. SSTF (Shortest Seek Time First, Először a legrövidebb keresési idő) A gyorsabb válasz érdekében sorba rendezzük a kéréseket aszerint, hogy melyik kiszolgálása jár a legkisebb fejmozgással. Ez a módszer is elég sok fej-irányváltoztatással jár. Érdekes kérdés, hogy lehetséges-e, hogy bizonyos kérések soha ne kerüljenek végrehajtásra. Scan A scanning módszer úgy rendezi sorba a kéréseket, hogy a fej mindig egy irányba mozogjon. A fejek az első sávon kezdenek, majd haladnak befelé, ahol irányt váltanak (lift algoritmus). C-scan (Circular scan) A fejek az utolsó sávra érve visszatérnek az elejére, így mindig csak egy irányban mozognak. Look A look algoritmus ugyanaz, mint a scan vagy a c-scan, de csak a legutolsó szükséges adatig halad egy adott irányba.. Az, hogy melyik módszert választjuk, több tényezőtől függ, sokat használt lemezeknél a scan-look algoritmusok megfelelőek, mert kímélik a hardvert és „méltányosan” kezelik a kéréseket. C-look Ugyanaz, mint a look algoritmus, de a fejek az utolsó sávra érve visszatérnek az elejére, így mindig csak egy irányban mozognak.
14. ábra Az algoritmusok összehasonlítása és a fejmozgások összege
Az előfordulási idő csökkenthető szektor-sorbarendezéssel. További gyorsítási lehetőségek: • A gyakran használt adatokat scan esetén a lemez közepére célszerű tenni;
32
• redundáns (többszörös), elosztott tárolás; • tömörítés; • több példányban történő tárolás. A megbízhatóság növelhető: • rendszeres mentéssel; • egyszerre több blokk átvitelével; • a cache és a lemez szinkronizálásával.
A lemez logikai felépítése Mivel a forgási sebesség mindegyik zónában azonos, a tengelyhez közeledve ugyanannyi idő alatt kevesebb adatszektor siklik át a mágnesfej alatt, mint a szélső zónákban. A merevlemezeken a külső területen több adatszektort helyeznek el, mint a tengely közelében, hogy az adatsűrűség ugyanakkora legyen. A különböző szektorsűrűségek ilyen használatát "Zone Bit Recording"-nak (ZBR – Zónabit-rögzítés) nevezik. A formázás két részből, alacsony szintű (Low Level Format) és logikai formázásból áll. Az alacsony szintű formázásnál egyszerűen megszámozzuk a szektorokat 1-től kezdődően. A merevlemezhez fizikailag szektorszintű és sávszintű műveletekkel férhetünk hozzá. A szektorok két részből állnak, az első a szektorfej, ami a szektor azonosításához, valamint a szinkronizációhoz szükséges adatokat tárolja, a második az adatokat, illetve valamilyen ellenőrző összeget, hibajavító kódot (CRC, ECC) tartalmaz. A lemezek logikai kezelésének alapegysége a klaszter (cluster, szektorcsoport). Az operációs rendszer a lemez tartalmát csak klaszterenként tudja kezelni, a klaszterméret azonban a lemezek kapacitásának növekedésével szintén nő. Ez kis fájl-méretek esetén nagy veszteséget jelent, amit a lemez partíciókra osztásával oldhatunk meg. Elsődleges, illetve másodlagos logikai partíciókat hozhatunk létre, amelyeket úgy látunk, mintha önálló merevlemezek lennének. A DOSWindows rendszerek (FAT 16, FAT 32) csak elsődleges partícióról képesek „bootolni”. A partíciók adatait a 0. logikai szektor 0. sáv 0. fej segítségével meghatározott 1. fizikai szektor végén található partíciós tábla tartalmazza. A szektor elején található a Master Boot Record (MBR), amely a partíciós táblát értelmezi és a használatba veendő partíció betöltő szektorát ellenőrzi és indítja. Az MBR a vezérlést a számítógép indításakor lefutó ROM BIOS (Basic Input Output System) programtól kapja. Ahhoz, hogy az operációs rendszer elinduljon az adott partíción, szükség van betöltő szektorra, amely aztán a perifériavezérlő és az operációs rendszert tartalmazó fájlokat betölti.
33
A FAT (Fájl Allocation Table)-tábla tulajdonképpen egy táblázat, amely 12 bites tárolás (hajlékonylemez) esetén 2 a 12. hatványon=4096 bejegyzést, 16 bites tárolás esetén 2 a 16. hatványon=65536 bejegyzést tartalmazhat, amelyek közvetlenül hivatkoznak az adott sorszámú klaszterra. A FAT táblát egymás mögött két példányban tároljuk és ezután következnek az állományok fastruktúrájú elérésére szolgáló bejegyzések. Paraméterek: • területi sűrűség (byte/négyzethüvelyk); • forgási sebesség (fordulat/perc): az egyik legfontosabb szempont lehet a lemezek kiválasztásánál, értéke napjainkban 1200-15000 közötti; • elérési idő: több dolgot jelenthet, sávok közti elérési időt(1-4 ms), átlag elérési időt (6-10ms) stb.; • várható élettartam MTBF (Mean Time Between Failure); • cache (átmeneti tároló).
Winchester (hard disk, merevlemez) A „winchester” elnevezés a gyártó céget takarja, és Magyarországon is használatos.
15. ábra Régi, cserélhető winchester (14 inch)
A winchester számítógépbe épített, több lemezből és író-olvasó fejből álló, a környezettől pormentesen szigetelt egység.
34
16. ábra Winchester
A fej a lemez felett helyezkedik el, a lemezekkel nem érintkezik, a távolság ~0,00015 mm. A lemezek alumíniumból készülnek; mindkét oldalukra vékony kobaltréteget visznek. Részecskéinek mágneses állapota hordozza az információt. A winchesterről bővebbet az alábbi weboldalon olvashat. http://blue-byte.hu/info/hdd/info/winchester.htm
Merevlemez-csatoló típusok A merevlemez-csatolók története a nyolcvanas évek elején kezdődött, amikor kifejlesztették az ST506/412 csatolót, majd az ESDI (Enhanced Small Device Interface), illetve az IDE (Integrated Drive Electronics) csatolót (1984). Az SCSI (Small Computer System Interface) csatoló is meglehetősen régi találmány (1981), de igazán csak napjainkban nyert teret speciális tulajdonságai alapján. Az SCSI nem kizárólag merevlemezek csatlakoztatására szolgál, hanem egy komplex eszközinterface, amelynek működése párhuzamos, és hét egység (CD, merevlemez, scanner stb.) csatlakoztatható a segítségével. IDE (Integrated Drive Electronics) Legtöbbször az ATA (Advanced Technology Attachement – továbbfejlesztett csatolás) kifejezéssel azonos értelemben használják. A meghajtóra helyezték a vezérlő elektronikát, ezáltal csökken távolságuk, nő az adatátviteli sebesség. Az IDE-vezérlő önálló processzorral rendelkezik, és két IDE-egység kezelését teszi lehetővé (master-slave). A csatlakozás egy 40 eres szalagkábellel történik. Adatátviteli sebesség: 1-4 Mbyte/s. EIDE (Enhanced IDE - továbbfejlesztett IDE) 1993-ban a WESTERN DIGITAL cég bemutatta új, továbbfejlesztett EIDE-vezérlőjét, mely az addigi 16-tal szemben (DOS) 255 fejet tudott logikailag kezelni, ezáltal a kezelhető lemezméret 255*1024*63*512=7,44 Gbyte-ra nőtt. Az LBA (Logical Adressing Block – logikai címzőblokk) 35
technológia segítségével az 504 Mbyte fölötti területet külön partícióként kezeli. További gondolatokat a http://www.byte.hu/HTML/proforum/drwatson/fotim3.html címen olvashatunk ezzel kapcsolatban. UDMA (Ultra Direct Memory Access - közvetlen memóriahozzáférés) Mikor a merevlemezek teljesítménye elérte a 10 Mbyte/s-ot, kifejlesztették az UDMA/33-as szabványt (1997), amely 33 Mbyte/s átviteli sebességű adatáramlást tesz lehetővé az órajel növelése nélkül. Az Ultra DMA/66-ban (1999) a 66 Mbyte/s sebesség eléréséhez már szükség volt az órajel változtatására is, ez azonban egy új, 80 eres kábelen volt csak lehetséges. A DMA (Direct Memory Access) közvetlen memóriahozzáférést jelent a CPU-t kikerülve. SCSI A csatolót merevlemezeken kívül más olyan eszközök is használhatják, melyeket erre felkészítettek (CD, scanner, nyomtató stb.). A csatlakozás 50 pólusú szalagkábelre történik, felfűzéssel. Legfeljebb 7 eszköz kapcsolható így össze. Minden eszköz rendelkezik bemenettel és kimenettel. Az eszközökön beállítjuk címüket, az utolsó eszköz kimenetére lezáró ellenállást kell tenni. A használathoz szükséges egy kártya, amely a kommunikációt vezérli. Az adatátvitel az SCSI sínen kötött kapcsolat-felvételi protokoll szerint történik (ütközések feloldása). Az adatforgalom ütemezésének fázisai: • Szabad fázis (Bus Free Phase) A sín szabad, nincs kijelölt eszköz, nincs adatforgalom. • Sínhozzáférési fázis (Arbitration Phase) Itt veheti át az eszköz a sín vezérlését. Több kezdeményező közül a magasabb prioritású nyer (több versengő egység között mindig megállapítható a sorrend, hogy melyik jogosult a vezérlést átvenni). • Választási fázis (Selection Phase) A nyertes választ egy céleszközt, amelynek vissza kell jeleznie. • Újraválasztási fázis (Reselection Phase) A céleszköz újra felveheti a kapcsolatot a kezdeményezővel egy korábbi művelet befejezése érdekében. • Parancsfázis (Command Phase) A céleszköz megkapja az utasítást a kezdeményezőtől (összesen 40 parancs: Read, Write, Format stb.). • Adatfázis (Data Phase) Adatok küldése, fogadása. 36
• Állapotfázis (Status Phase) A kezdeményező a cél állapotáról kap információt. Ezek a következők lehetnek: - hibamentes állapot (good status): utasítás végrehajtva, várja a következőt; - állapotellenőrzés (check condition): hiba történt, melyet a kezdeményezőnek kell meghatároznia; - foglalt állapot (busy status): pillanatnyilag nem tudja feldolgozni a kérést. • Üzenetfázis (Message Phase) Egyszerű parancsok, a cél küldi a kezdeményezőnek, illetve néha fordítva.
17. ábra Winchester csatolófelületek
37
18. ábra EIDE- és SCSI-vezérlő összehasonlítása
Hajlékonylemez (floppy disc) Hasonlóan a mágnesszalaghoz, itt is vékony műanyag hordozóanyagra felvitt mágnesezhető réteg tárolja az adatokat. Manapság szinte kizárólagosan az 1,44 Mbyte kapacitású 3,5” átmérőjű floppy discet használjuk, de említsük meg a régebbi típusokat is.
19. ábra 8 inch floppy lemezek SSSD 26 sector 77 track 128 byte/sector
38
20. ábra 5,25 inch floppy egység
21. ábra 5,25 inch floppy
22. ábra 3,5 inch floppy egység
39
23. ábra 3,5 inch floppy
Történet A PC-k megjelenésekor szorította ki az addig egyeduralkodó magnetofonkazettát a mágneslemez. Kapacitása kezdetben csak 160 kbyte volt, amelyet folyamatosan fejlesztettek a későbbiekben. A következő (nem teljes körű) táblázatban e fejlődést követhetjük.
24. ábra A floppy fejlődése az „őskortól” napjainkig
A sávok az író/olvasó fejnek megfelelő koncentrikus körök (40 vagy 80), a szektorok (szélességük 0,33-0,115 mm) ezen belül „szeletelik” fel a lemezt. DOS operációs rendszerben egy szektor 512 Kbyte méretű.
25. ábra Sávok és szektorok a mágneslemezeken
Lemeztípusra vonatkozóan az SS (Single Side) egyoldalast, a DS (Double Side) kétoldalast jelöl, a sávsűrűségnél az SD (Simple Density) szimpla 40
sűrűséget, a DD (Double Density) dupla sűrűséget, a HD (High Density) nagy sűrűséget jelöl. A tpi (Track Per Inch)a hüvelykenkénti sávok számát jelöli. A lemez kapacitása pld. 80 sáv*18 szektor*512byte*2 oldal=1473560byte=1440Kbyte=~1,4 Mbyte. Fordulatszám 360/perc, jelrögzítés módja MFM, a lemez csak írás/olvasáskor forog és hozzáér a lemezhez, felülírástól mechanikusan védhető.
26. ábra Floppy részei
Egyéb eszközök A floppy egységek viszonylag kis tárolókapacitása hamar felvetette nagyobb kapacitású, gyorsabb egységek kifejlesztésének gondolatát. Az LS-120 egység egy nagyon jól használható, bár nem túl gyors eszköz. Legnagyobb előnye, hogy minden további nélkül tud kezelni normál, 1,44es floppykat. A 120 Mbyte kapacitást a lézer-vezérlésű technika teszi lehetővé.
27. ábra LS-120 lemezek
41
28. ábra ZIP-drive
29. ábra JAZ-lemezek
A ZIP-drive-ok lényegesen gyorsabbak, mint az LS-120 egység. Sem a ZIP-drive, sem a további eszközök nem terjedtek el igazán. Amennyiben az okokat keressük, bizonyára fontos tényező a CD-írók egyre csökkenő ára és természetesen az adathordozók közti árkülönbség sem kevés. A legújabb fejlemények a „direkt CD”, vagyis az újraírható CD más háttértárakhoz hasonló kezelésének lehetősége pedig lehetséges, hogy végképp határt szab ezen tárolók felhasználásának. A direkt CD-re akár fájlonként menthetünk, törölhetünk állományokat, mérete csak kicsit kisebb, mint az eredeti CD-é, és számítógépek közti kompatibilitása is valószínűleg nagyobb, mint a fent említett táraknak. A direkt CD-ről például a http://www.comptech.hu/VII16/html/20old.html címen olvashatunk.
42
Adathordozók összekapcsolásával létrehozható tárak RAID rendszerek Elsősorban olyan helyeken alkalmazzák, ahol nagyon fontos az adatbiztonság, illetve nagy tömegű adatot kell viszonylag gyorsan elérhetően tárolni. 1987-ben a Kaliforniai Egyetem kutatói publikálták először a RAID (Redundand Array of Independent/Inexpensive Discs, olcsó diszkekből készült tároló tömb) rendszert. Ez a technológia kezdetben annak köszönhetően terjedt, hogy több olcsó diszket érdemes volt egyetlen tárrá szervezni, mert a nagy tárolók ár/teljesítmény aránya sokkal kedvezőtlenebb volt. Ennek a következménye azonban a meghibásodások közt eltelt időtartam drámai csökkenése lett, amelyet a rendszer hibatűrésének kialakítása kellett, hogy kövessen. Később elsősorban az adathozzáférés gyorsítása, illetve meghibásodás esetén az adatok védelme indokolta a fejlesztést. A RAID rendszerek legújabb típusai képesek arra, hogy a meghibásodott diszket menet közben cserélhessük, illetve szerepét átvegye egy eleve beépített tartalék diszk, a rossz tápegységek is melegen (üzem közben) cserélhetők, illetve belép helyettük egy tartalék, a tömb méretét is növelhetjük, és átkonvertálhatjuk másik RAID rendszerbe. Ennek ellenére természetesen gondok is adódhatnak, amelyekről és más tárolással kapcsolatos kérdésekről részletesebben is olvashatunk a Kürt Kft. honlapján. (http://www.kurt.hu/kurtolo/ct24.htm )
RAID típusai (A számozás nem szinteket, hanem egyszerűen különböző elveket takar.) RAID0 Nem redundáns (meghibásodás esetén nincs mód az adatok visszaállítására), de mind az olvasási, mind az írási műveletek párhuzamosan zajlanak. A RAID alapelve a striping (csíkozás), az adatokat nem folytonosan tároljuk a lemezeken, hanem az egymást követő mezők mindig más diszkre kerülnek a táblázatnak megfelelően. 1. diszk 1 4 7 …
2. diszk 2 5 8
3. diszk 3 6 9
30. ábra Csíkozás (striping)
Az 1-2-3. mező egy csíkhoz tartozik, és a csíkok annyi mezőből állnak, amennyi diszket tartalmaz a rendszer. Amennyiben adatokhoz akarunk hozzáférni, a tömb valamennyi diszkjéhez egy időben hozzáférhetünk, ami jelentős sebességnövekedést eredményez, mert az író/olvasó fej mozgatása lassítja leginkább a műveletvégzést. 43
RAID1 Az adatokat egyszerűen megkétszerezi, azaz mindkét diszken tárolja, és ez meghibásodás esetén jó védelmet biztosít. RAID2 Minden csík tartalmaz ellenőrző hibajavító biteket (ECC, Error Checking and Correction), amelyet külön diszkek tárolnak. Manapság nincs gyakorlati jelentősége, mert a diszkek eleve ECC-ellenőrzöttek. RAID3 A csíkok szélessége 1 byte. Egy diszket használunk a többiből képzett paritásbit tárolására. Meghibásodás esetén a működő diszkek adataiból kizáró-vagy művelettel állítható elő a hiányzó adat. RAID4 Egy paritásdiszk+RAID0, illetve szélesebb csíkozású RAID3. Nem elterjedt a paritásdiszk okozta szűk keresztmetszet miatt (a paritásdiszket minden íráskor frissíteni kell). RAID5 A paritásbitet az összes diszken elosztva tároljuk (rotating parity). A csíkok szélessége változtatható: keskeny csíkok esetén RAID3-ra, széles csíkok esetén RAID4-re hasonlít. RAID6 Soronként és oszloponként is tárolja a paritást. Hasonlít a RAID5-re, de kétszeres meghibásodást is kezel. Jellemzően a RAID 0-1-5-1+0-5+0 megoldások terjedtek el, ahol a + jel a két módszer kombinációját jelenti.
31. ábra RAID-vezérlő
44
A rendszer megvalósítása lehet szoftveres, amely nem igényel jelentős beruházást, de terheli a rendszert, illetve RAID-vezérlő (hardveres megoldás). A RAID-rendszerek kihasználtsága a lemezek számának növelésével javul. Összes kapacitás=(diszkek száma-1)*egy diszk kapacitása: Diszkek száma 2 Kihasználtság 51%
3 4 5 … 67% 75% 80% …
32. ábra Hatékonyság
A tárolással kapcsolatban felmerülő kérdések azonban ezzel még nem merültek ki. Az adatok esetleges megsemmisülését (vírusok, egyszerre több diszk meghibásodása stb.) még így sem lehet teljesen kiküszöbölni, tehát biztonsági mentéseket így is kell végezni, például írható CD-re, vagy rövidtávon DAT kazettára. A RAID rendszer mellett alkalmazandók a különböző archiválási módszerek. A fontos adatokat illik fizikailag külön helyen tárolni, például másik épületben, esetlegesen bekövetkező katasztrófákra felkészülve (elektromos hálózat hibája vagy terrortámadás). Erre egy lehetőség, ha a tárolókat hálózatba szervezik – ilyen például a SAN (Storage Area Network).
Jukebox A jukebox hosszútávú archiválásra alkalmas berendezés. Egy tárolóhely és az író/olvasó berendezés között automatikusan mozgatja az adathordozót. CD, DVD, mágnesszalag stb. is lehet az adathordozó.
45
33. ábra Jukebox
Optikai tárolók (CD-technológia) Jellemzők Az optikai tárolók legfontosabb jellemzői a nagy tárolási sűrűség, hosszú élettartam, alacsony ár, gyors cserélhetőség, melyekkel együtt is van néhány terület, ahol a mágneses tárolók (a mai napig) még mindig előnyben vannak, például a gyorsaság és a kezelhetőség tekintetében, bár mindkét területen vannak próbálkozások (direkt CD, sebességnövelés stb.). A témával kapcsolatban részletesebben az alábbi weboldalon olvashat. http://vili.pmmf.hu/diplom/2001/gyoni/fooldal.htm Lézertechnológia: a normál fehér fény (napfény) rengeteg összetevőből áll (a szivárvány színei), melyek nem koherensek. A lézerfénynek (Light Amplification by Simulated Emission of Radiation) egy színe (összetevője) van, így fókuszálható, erősíthető. Többféle színű lézer használatos, vörös, sárga, sőt még nagyobb kapacitásúak lehetnek a kék és zöld lézert használó lemezek. A CD-k olvasása során azt használjuk ki, hogy változik a CD-ről visszavert fény erőssége.
Történet A CD-fejlesztés első lépései jelentős részben a Philips és a Sony céghez köthetők, melyek azóta is élen járnak a fejlesztésben. Főbb határpontok: • 1982. Audio CD (CD-DA, Compact Disc-Digital Audio) • 1987. CD-I (CD Interactive) • 1988. CD-ROM/XA (CD-ROM Extended Architecture – kiterjesztett felépítésű CD-ROM) • 1991. Photo CD
46
• 1993. Video CD • 1996. CD-Extra • 1990. CD-MO, CD-R, CD-RW (CD Magneto-optical, CD-Recordable, CD-ReWritable) • 1995 DVD (Digital Video/Versatile Disc)
A CD-DA (Compact Disc- Digital Audio) alapvető tulajdonságai („Vörös könyv”) A „Vörös könyv” a CD-DA szabványa, a lemezen állományokat, könyvtárakat nem találunk, az analóg jelet 44100Hz frekvencián mintavételezzük, a 16 bitnek megfelelően 65536 féle hangerőt megkülönböztetve (PCM, impulzus-kódmoduláció). Egy lemezen maximum 99 sáv lehet. A lejátszható időtartam körülbelül 74 perc, amely állítólag összefüggésbe hozható Beethoven IX. szimfóniájával.
34. ábra CD-egység
Információ tárolására csak a 25-58 mm sugarú terület használatos. Az információ a hanglemezekhez hasonlóan spirálisan helyezkedik el a CD-n, de belülről indulva. A CD felületén a spirális sávok távolsága 1,6 mikrométer, ami több mint 20.000 sáv kialakítását teszi lehetővé. Megkülönböztethetünk még a lemez felületén még egy úgynevezett bevezető (25 mm-esnél kisebb sugarú) és egy kivezető (58 mm-nél nagyobb sugarú) részt. Ezeken nem adatokat, hanem egyéb információkat tárolunk, például a bevezetőre kerül a TOC (Table of Contents, tartalomjegyzék). A CD-k olvasása állandó kerületi sebességgel történik (1,2 m/s), ennek következtében lehetséges, hogy a lyukak mérete a lemezen állandó maradjon, de a lemez fordulatszámát csökkenteni kell (CLV, állandó lineáris sebesség) a lemezen kifelé haladva.
47
35. ábra A CD fizikai felépítése
36. ábra A CD-DA keresztmetszete
A lyukak szélessége 0,6 mikrométer, mélysége 0,12 µm, a legkisebb (3T) és legnagyobb (11T) hosszúsága 0,833, illetve 3,054 µm. A lézer 780 µm hullámhosszúságú infravörös fény, amely ép felületről és a lyukakról különbözőképpen verődik vissza. A lyukakba érkező fény által megtett út éppen egyenlő a lézer hullámhosszának a felével (a törésmutató 1,55), vagyis az érkező és visszavert koherens nyalábok erősen gyengítik egymást. A lemez felületére kb. 800 µm átmérőben érkezik a fény, amely aztán a fényvisszaverő felületen csak 1µm átmérőjű (a tükröző réteg felülettől mért távolsága, a törésmutató és a beeső lézer kúpszögének függvényében), amely azt eredményezi, hogy a lemez felületének szennyeződései, kisebb hibái nem teszik olvashatatlanná a lemezt, körülbelül 0,5 mm méretig.
48
Kódolás A legfontosabb, hogy minél több adatot tudjunk a lemezen rögzíteni. A hibákat csökkenteni lehet a minimális futási hossz növelésével, illetve a maximális csökkentésével (lásd RLL-kódolás), törekedni kell a 0 és 1 egyenlő előfordulására. Az egyeseket a pit-land (lyuk-sima) átmenetek jelzik a pitek és lendek pedig, egyaránt nullát jeleznek. EFM (Eight to Fourteen Modulation, 8-14 moduláció): Azért, hogy az egymást követő 1 érték közé legalább két 0, de legfeljebb 10 kerüljön, minden byte-hoz (8 bit) hozzárendelünk egy 14 bites kódot, amely megfelel ennek a feltételnek (14 biten 267 ilyen van, melyből 256-ot használunk). Egymás után helyezve a kódokat még mindig kerülhetne két egyes egymás mellé, ezért beszúrunk közéjük 3, információt nem hordozó bitet. Az adatok blokkokra tagolódnak, melynek részei: Szinkronizáló sorozat (24+3=27 bit) Alkódbyte (14+3=17 bit) Adat+hibajavító byte-ok (12*(14+3)+4*(14+3)=272 bit) Adat+hibajavító byte-ok (12*(14+3)+4*(14+3)=272 bit) Összesen 588 bit tárolóhely/24 byte (192 bit) hasznos információ (32.7% hatékonyság). A blokkokat szektorokba szervezzük (98 db, 98*24 byte=2352 byte), a szektorokból egyszeres CD sebességen 75-öt lehet lejátszani másodpercenként, melynek következtében 2352*75=156400byte≈150Kbyte/s adódik a beolvasás sebességére. Alacsony szintű kódolás SZEKTOR Blokk1
Blokk2
…
BlokkN …
Blokk98
EGY BLOKK Szinkron Alkód bitek 14+3
Adat Hibajavító Adat Hibajavító 12*(14+3) kód 12*(14+3) kód
EGY ADATBYTE 00010001010001 === == = (= pit ) 4T 4T 2T 4T
49
Alkód: Az alkód 8 bitje 8 (P,Q,RSTUVW) alcsatornát jelent. A 98 blokk így összesen 98 bit együttes kódolási lehetőséget jelent. A P jelzi, hogy hol tartunk (bevezetés, zenei sávok, kivezetés). A Q kódolja a bevezetésben a TOC-t (tartalomjegyzék, sávok kezdete, száma), információt tárolhatunk a sávokról stb. Hibajavítás A véletlen (egyedi) hibák javítása paritásbit, CRC segítségével lehetséges, a csoportos hibák például „átszövés” segítségével javíthatók. Az audio CD-k kódolása keresztben átszőtt Reed-Solomon kódolás (CIRC, Cross Interleaved Reed-Solomon Cooding) segítségével történik. Átszövés Eredeti Átszövés Csoportos hiba Egyedivé válik
0123456789 1529630748 152963hhh8 h123h56h89
Előállítás Nagy teljesítményű lézerrel üveglemez felületébe égetjük az információt, majd vegyszerrel ezeken a helyeken létrehozzuk a „lyukakat”. Ezután több lépcsőn keresztül előállítják a negatívját (nikkelbevonatot hoznak létre), majd erről megkezdődhet a lemez fröccsöntése, amelyre kerül a tükröző anyag (Al, Au, Ag), majd a vékony lakkréteg, végül címke a feliratok számára. Fontos, hogy az információt hordozó réteg a lemez „tetejéhez” lesz így közelebb, amely feliratozásnál sérülésveszélyes.
A CD-ROM (Compact Disk-Read Only Memory) alapvető tulajdonságai A CD-ROM lemezek már állományszervezésűek, és szektortartalmuk is lényeges a működés szempontjából, új hibajavítási szintet tartalmaznak, nem csak egyszeres (150kbyte/s), hanem akár 8-24-32…-szeres lejátszás is lehetséges (a „Sárga könyv” alapján).
37. ábra Szektorok felépítése - 1. mód
38. ábra Szektorok felépítése - 2. mód (CD-ROM/XA)
50
Az 1. mód hibaérzékelése, javítása lényegesen fejlettebb, mint a CD-DAé, ami nem is véletlen, hiszen amíg egy zenei CD esetén egy kis hibával még élvezhető az eredmény, addig adat CD-k esetén bármilyen kis hiba megakadályozhatja a program futását. 4 byte szolgál hibaérzékelésre, ezen kívül 276 hibajavító byte van a szektorban. A 2. mód esetén 14% kapacitásnövekedés társul a hibajavítás elmaradásához.
CD-ROM/XA (CD-I CD-Extra Video CD Photo CD) Az adatok (számítógépes adat, hang) egy sávban helyezkedik el, ahol egymást átlapoló különálló szektorokat alkotnak. A hangot ADPCM (Adaptive Differential [Delta] Pulse Code Modulation, Adaptív Különbségi Impulzuskód Moduláció) segítségével kódoljuk, amely csak a mintavételezés eltéréseit tárolja, így az audio CD kapacitásának többszörösét használhatjuk. Szinkron 12byte
Fejléc 4byte
Alfejléc 8byte
Adat 2048 byte
Hibajavítás 280 byte
39. ábra Szektorok felépítése – 2. mód 1. formátum
Szinkron 12byte
Fejléc 4byte
Alfejléc 8byte
Adat Hibajavítás 2324 byte 4byte
40. ábra Szektorok felépítése – 2. mód 2. formátum
Az alfejléc segítségével kezeli a hang feldarabolását és az adatokkal való keverését, amely négyféle információt tartalmaz, a biztonság kedvéért kétszer tárolva. A szektor 4 hibadetektáló byte-ot is magába foglal. Típusai Photo CD CD-ROM/XA 2. mód 1. formátum („Narancssárga könyv”) Video CD („Fehér Könyv”) CD-ROM/XA 2. mód 2. formátum, 74 perc VHS felvétel tárolható CD Extra („Kék Könyv”) Az első szekcióban hangadatot a másodikban egyéb adatot tárolunk CD-I („Zöld Könyv”) CD-ROM/XA 2. mód 1. formátum adatok és 2. mód 2.formátum, video/hang tárolásra.
41. ábra Hangtárolási módok
51
A CD-MO, CD-R, CD-RW alapvető tulajdonságai („Narancssárga Könyv”) CD-MO (Magneto-optical CD) Magneto-optikai lemez, a fény mágneses mezőben megváltozó terjedési tulajdonságaira épít (CD írássűrűsége + mágneslemez gyorsasága). Többször írható, törölhető.
42. ábra Magneto-optikai lemez
A magneto-optikai lemez mágnesesen megosztott felületén áthaladó polarizált fény (a lézer fénye döntően ilyen) polarizációs síkja az áthaladáskor a mágnesezettségtől függően elcsavarodik, így résen átvezetve a fényerő mérésével megállapíthatjuk a mágnesezettséget. Íráskor csak a mágnesezettséget kell változtatni. A melegítést nagyteljesítményű lézer végzi, gerjesztőtekerccsel szinkronban.
43. ábra Magneto-optikai lemez-egység
CD-R (Recordable CD) A gyári írható CD-k egy 22188-szor körbefutó, előre elkészített spirálalakú barázdát tartalmaznak, amelyre 22,05kHz A=0,03µm amplitúdójú, 1kHz-en
52
frekvenciamodulált jelet visznek, az állandó kerületi sebesség tartásához és pozicionáláshoz. A barázdák távolsága, jellemzői hasonlóak a CDROM-hoz, de a bevezetés előtt helyezkedik el a PCA (Power Calibration Area, íróáram-hitelesítő terület) és a PMA (Program Memory Area, Program Memória Terület). A PCA-terület arra szolgál, hogy több próbaírás után segítségével meghatározzák az optimális írási teljesítményt, amely tárolásra kerül a lemezen, a PMA, a szekciók lezárásáig tárolja a TOC-ba került adatokat.
44. ábra A CD-R lemez felépítése
A CD-R lemezek írása többféle módon történhet, melyek közül leginkább a festék-polimer eljárás használatos. Nagy teljesítményű lézerrel felolvasztjuk a hordozóanyag-festék határréteget, mely ezek után kevésbé veri vissza az olvasólézer fényét (pit). CD-RW (Rewritable CD) A többször írható lemezek nem minden esetben olvashatók normál CDolvasó segítségével, mert jóval érzékenyebb eszközre van szükségük, mint a többi CD-nek. A kódoláshoz azt használjuk ki, hogy az adathordozó rétegnek hő hatására (lézer) változik a fényvisszaverő képessége. Egyik módszer fázisváltáson alapul, ahol a kristály melegítésével olvadáspont fölé vagy alá, kihűléskor amorf, vagy újra kristályos állapotba kerül, ennek megfelelően elnyeli, vagy visszaveri a fényt. Ezenkívül kétrétegű (különböző hullámhosszúságú fényre érzékeny) bevonattal ellátott lemezben külön-külön melegítve a rétegeket, deformációt hozhatunk létre, majd azt eltüntethetjük.
53
CD-írók Csoportosíthatók az írás sebessége vagy a csatolófelület szerint. Sebessége 1-szerestől indulva a ma már elavultnak számító 2-szeres, 4szeresen keresztül a jelenleg használatos 24-szeresig terjed. 16-szoros sebességgel egy CD körülbelül 5 perc alatt készül el. Az egyszeres sebesség 150 kbyte/s, ennek megfelelően a16-szoros 16 * 150 = 2400 kbyte/s ≈ 2,34 Mbyte/s. 650 Mbyte-os lemez: 2,34 Mbyte/s sebességű írása ≈ 277,33 s ≈ 4,62 perc. Az egyszeres sebességgel mindez 16 * 4,62 ≈ 73,96 perc, vagyis kb. egy és egynegyed óra. Csatolófelület szerint lehet IDE vagy SCSI. Az SCSI általában külön kártyát igényel, ami gondot okozhat (többletköltség, illetve helyfoglalás), de megbízhatóbb működést eredményez. Az IDE-írók esetén, amennyiben az adatokat szintén IDE merevlemezről olvassa, mindkét eszköz foglalja a processzort, és a gép nem tud további lemezműveletet végezni, ha mégis ez történik (elindul a képernyővédő), az tönkreteheti az írást.
45. ábra Különböző színű CD-felületek
A http://delfin.klte.hu/~nagysz/cdrgyik/ címen található nagyon hasznos olvasnivaló az írható CD-ről, amely a http://www.cdrfaq.org/ havonta frissülő angol nyelvű FAQ fordítása. További részleteket az alábbi weboldalakon találhat: http://www.comptech.hu/VII16/html/20old.html
DVD Követelmények, amelyek alapján a fejlesztést folytatták: • nagyon jó minőségű kép; • nagyon jó minőségű hang; • több nyelv opcionális használata, több különböző tartalom, több méretarány; • teljes film férjen rá egy hordozóra; • másolásvédelem (korlátozáshoz legyen köthető).
54
Első eredmények Kezdeti próbálkozás volt az MMCD (Multimédia 7,4 Gbyte), amely egyoldalas kétrétegű és az SDCD (Super Density 10 Gbyte), amely kétoldalas egyrétegű lemez. A sávok távolságát, a lyukak méretét jelentősen csökkentették. 1995-ben létrejött a DVD (Digital Video/Versatile Disk). A DVD-meghajtók kompatibilisek a CD-lemezekkel, külön olvasófejjel olvassák ezeket. Jellemzői • • • • • •
a lemez 2*0,6mm lemez összeragasztásából áll; két oldal, két réteg, maximum 17 Gbyte tárolókapacitás; továbbfejlesztett, hatékony hibajavító kód; a lyukak mérete, sávok távolsága csökkent; a hasznos adatok mennyisége nőtt; „jobb” lézer: λ=635-650 nm (λ: hullámhossz).
46. ábra DVD-CD-összehasonlítás
A DVD és a CD összehasonlítása
47. ábra CD-DVD lemez felületi különbségei
55
Rétegek és oldalak száma alapján 4 típust különböztetünk meg.
48. ábra Típusok
A sávköz 0,74µm, a hibajavítás RSPC (Reed Solomon Product Code), EMF+ kódolást (8-ról 16-ra) használ. A kétrétegű lemezek felépítése annyiban különbözik a többitől, hogy itt nem 0,4, hanem 0,44 a lyukméret, de az adatsűrűség változatlanul marad, mert az olvasás sebességét 3,49 m/s-ról 3,84 m/s-ra emelték. A kétrétegű lemezek gyártásakor lényeges, hogy a második réteget domborúra kell kialakítani, hogy összeragasztás után homorúként olvasni lehessen, vagy egy lemezre kell elhelyezni (a másik ilyenkor üres), illetve a belső réteget akár kívülről befelé is lehet olvasni (filmek).
49. ábra DVD lemezek rétegei
DVD-szektor A szektor 12 db, egyenként 172 byte sorra tagolódik, az első byte elején 12 byte fejléc, az utolsó végén 4 byte EDC hibaérzékelő található, így a 2064 méretű szektor 2048 byte „hasznos” adatot tartalmaz. A 2048 hasznos byte tárolására 4836 byte szükséges, ami 42,3% hatékonyság, lényegesen több, mint a CD esetén (32,7%). A 16 szektor alkot egy blokkot, amely tartalmaz: 16*2064=33024 szektor-byte 192*10+16*182=4832 hibajavító byte (RS) (33024+4832)/16=2366 byte átlagosan 2366*2+832/8=4836 byte (duplázódik a 8-16 kódolás miatt, és 832 szinkronbit adódik hozzá) 56
Hibajavítás A DVD RPC (Reed-Solomon Product Code) kódolást használ, átszövéssel, kétdimenziós technikával (sorok és oszlopok végére is íródik hibajavító kód). Így akár 0,6 cm-es hibákat is ki tud küszöbölni. A DVD lemezek az UDF/ISO 9660 állománykezelő rendszert alkalmazzák, az ISO 9660 rendszerre a CD kompatibilitás miatt van szükség (kivéve DVD-R, DVD-RAM) Az Universal Disk Format egy optikai tárolókhoz kifejlesztett rendszer. Fontos része a DVD-technikának a másolásvédelem és a körzeti kód (a lejátszók nem fogadják el a nem megfelelő körzeti kódú lemezeket). Jogdíjak Az üzletekben megvásárolt CD-k árában a kép-, illetve hangfelvételek magáncélú másolására tekintettel attól függetlenül, hogy jogdíjas anyagot viszünk rá vagy sem, 36 Ft/db + áfa jogdíjat kell fizetni. A szerzői jogról szóló 1999. évi LXXVI. törvény (Szjt.) 20. § (1) és (2) bekezdése alapján a 2001. január 1.-től december 31-ig terjedő időtartamra a kép-, illetve hangfelvételek magáncélú másolására, az üres kép- és hanghordozókra az alábbi szerzői jogdíjak érvényesek:
Időtartam Írható CD Minidiszk Integrált vagy változtatható kapacitású MP3 lejátszók: MP3- típusú lejátszókhoz használható kártyák:
Fizetendő jogdíj* 36,00.-Ft/db 55,00.-Ft/db 1 000,00.-Ft/1 órányi lejátszási időtartamú műtárolási kapacitás 1 000,00.-Ft/1 órányi lejátszási időtartamú műtárolási kapacitás
50. ábra Szerzői jogdíjak
A szerzői jogdíjakat 12 % ÁFA terheli Az Szjt. 20. § (2) bekezdése alapján a fenti jogdíjat az üres kép- vagy hanghordozó gyártója, külföldön gyártott kép- vagy hanghordozó esetén, pedig a jogszabály szerint vám fizetésére kötelezett személy köteles a forgalomba hozataltól, külföldön gyártott kép- vagy hanghordozó esetén pedig a vámkezelés befejezésétől számított 8 napon belül az ARTISJUS Magyar Szerzői Jogvédő Iroda Egyesülethez befizetni. http://www.artisjus.hu
57
Flash memória Első kérdésként mindjárt felvetődik, mit keres egy memóriafajta a háttértárak között. Valószínűleg már mindenki hallott erről a viszonylag új eszközről, mint digitális fényképezőgépek, palmtopok, noteszgépek, mobiltelefonok és egyéb eszközök tárolójáról. A flash memória, ellentétben a számítástechnikában használt dinamikus memóriákkal, nem fogyaszt az adatok tárolásához folyamatosan energiát. Míg a számítógép dinamikus memóriája kikapcsoláskor elveszti az adatokat, a flash memória nem. A flash technológia tulajdonképpen az EPROM (Eraseable Programable ROM – törölhető-programozható ROM) programozási és az EEPROM (Electrically Eraseable Programable ROM – elektromosan törölhető-programozható ROM) törlési technológiájának ötvözete.
51. ábra Néhány memóriatípus tulajdonságai
A flash memóriák gyors fejlődése és elterjedése elsősorban a mobiltelefonoknak és a hordozható számítógépek terjedésének köszönhető (PCMCIA-szabvány). Kialakultak beépített és cserélhető változataik, a technológia pedig kettévált. A két megoldás a lineáris flash (Intel), és a SanDisk megoldása (amely szabványos IDE-felületen keresztül teszi lehetővé az információhoz való hozzáférést) felé. A kisebb méretű eszközök (például digitális fényképezőgép) számára egy egyharmad méretnyi eszközt, a Compact Flash-t fejlesztették, melynek kezelése gyakorlatilag ugyanúgy történik, mint a nagyobb kártyáké.
52. ábra Flash kártyák
58
Napjainkban az 1 Gbyte-os kártyák fejlesztése már javában zajlik, gyakorlatilag már minden gyártó előállt a saját verziójával.
53. ábra Flash kártya és olvasó
Búcsúzóul egy kép többféle új és régebbi adathordozóval.
54. ábra Hordozható adattárolók
A témakörrel kapcsolatos további információkat az alábbi weboldalakon találhat: http://www.prog.hu/cikkek/hardware/flashmems/flash.htm http://supergamez.hu/printer.php?cid=13857
59
Összefoglalás A háttértárolókkal foglalkozó részben a terjedelmi korlátok figyelembevételével igyekeztünk az egyes témákhoz tartozó elméleti alapismereteket is megjeleníteni. Mindemellett a téma egyik fő sajátossága a folyamatos gyors fejlődés. Ez elengedhetetlenné teszi az ismeretek szinte naprakészen zajló folyamatos fejlesztését, amelyhez nagy segítséget jelenthetnek a különböző szakfolyóiratokban megjelenő cikkek, illetve a világhálón megtalálható, számos esetben nagyon jól használható anyagok.
Ellenőrző kérdések 1. Milyen háttértárolókat használtak a számítógépek alkalmazásának kezdeti szakaszában? Megoldás 2. Melyek a mágneses jelrögzítés alapelvei? Megoldás 3. Sorolja fel a különböző kódolási eljárásokat! Megoldás 4. Mit értünk a lemezfelület formázásán? Megoldás 5. Milyen módokon történhet a fejmozgatások optimalizálása? Megoldás 6. Mit takar a klaszter és a FAT elnevezés? Megoldás 7. Melyek a mágneslemezek jellemzésére szolgáló legfontosabb technikai paraméterek? Megoldás 8. Sorolja fel a merevlemez-csatoló típusokat! Hasonlítsa össze az SCSIés az IDE-csatolót! Megoldás 9. Sorolja fel a hajlékonylemezek legfontosabb jellemzőit! Megoldás 10. Mire használatosak a ZIP-drive, LS-120 egységek? Megoldás 11. Hogyan működnek a RAID-rendszerek? Megoldás 12. Mire használatos a jukebox? Megoldás 13. Milyen fontos tulajdonságai miatt használják a lézerfényt a CDtechnológiában? Megoldás 14. Melyek a CD-DA (Compact Disc- Digital Audio) alapvető tulajdonságai? Megoldás 15. Melyek a CD-ROM (Compact Disk-Read Only Memory) alapvető tulajdonságai? 60
Megoldás 16. Jellemeze a CD-ROM/XA (CD-I CD-Extra Video CD Photo CD) formátumokat! Megoldás 17. Melyek a CD-MO, CD-R, CD-RW alapvető tulajdonságai? Megoldás 18. Milyen szempontok alapján adhatjuk meg a CD-írók főbb jellemzőit? Megoldás 19. Sorolja fel a DVD-technológiával szemben támasztott legfontosabb követelményeket! Megoldás 20. Melyek a DVD alapvető tulajdonságai? Megoldás 21. Jellemezze a DVD-lemezeket rétegeik és oldalaik száma alapján! Megoldás 22. Hasonlítsa össze a CD- és DVD-lemezeket legfontosabb paramétereik alapján! Megoldás 23. Adja meg a flash memória tulajdonságait! Megoldás 24. Beszéljen a flash memória legfontosabb alkalmazási területeiről! Megoldás
Jegyzet
61
Állománykezelés Bevezetés Az előzőekben megismerkedtünk az operációs rendszer fogalmával és alapvető feladataival, valamint áttekintettük a gyakorlatban alkalmazott háttértárak tárolási szerkezetét. A következőkben megvizsgáljuk, hogy a megismert tárolási szerkezetben hogyan helyezkednek el az információk, milyen felhasználói és rendszerszintű tevékenységek szükségesek az adattároláshoz. Megismerkedünk az állománykezelés általános (konkrét operációs rendszertől független) fogalmaival, elvi módszereivel és azok gyakorlati megvalósításával. Pontosítjuk az állomány és a könyvtár fogalmát, áttekintjük a velük (rajtuk) végezhető műveleteket.
Állomány A számítógépes munka során felhasznált programok, illetve az általuk felhasznált vagy előállított adatok tartós tárolására szolgálnak a háttértárak. Ahogy azt az előzőekben megismertük, az információ tárolása az egyes háttértárakon különböző módokon történik – azonban a fizikai tárolási szerkezet (szalagos vagy lemezes, mágneses vagy optikai elvű) különbségei ellenére szükség van egy, a felhasználó (és nem a számítógép vagy a háttértár tárolási) logikáját követő azonosítási rendszerre. Állomány (fájl): 1. valamely háttértárolón elhelyezkedő adatok egyedi azonosítóval rendelkező együttese; 2. az adattárolás egysége a felhasználó szempontjából. A fenti két definíció az állományfogalom két megközelítését példázza: az első, ahogyan a számítógép, a második ahogyan a felhasználó számára megjelennek az adatok tárolásával kapcsolatos tevékenységek. Nyilvánvaló, hogy a két megközelítés között összhangot kell teremteni, és ez is (mint minden, ami a felhasználó igényeinek kiszolgálásával függ össze) az operációs rendszer feladata. Állományszervezés: az operációs rendszer azon tevékenységeinek összessége, amely a felhasználói információk háttértárolón történő elhelyezésével, azonosításával és visszakeresésével kapcsolatos. Az operációs rendszernek azt a komponensét, amely ezeket a tevékenységeket végzi, szokás állománykezelőnek is nevezni (NEM összetévesztendő a hasonló nevű segédprogramokkal!).
62
55. ábra Az állománykezelésben részt vevő komponensek
A felhasználó által megadott azonosító alapján az állománykezelő meghatározza a keresett információ fizikai helyét, és (szükség esetén az adott háttértár kezelésére szolgáló kiegészítő program – az eszközvezérlő – segítségével) utasítja a háttértár író/olvasó mechanizmusát a megfelelő művelet elvégzésére. Tekintve, hogy a számítógép és a háttértárak műveletvégzési sebessége jelentősen eltér, a gyakorlatban az állománykezelő és a hardver eszköz közé egy gyors átmeneti tárolót (puffer, „buffer”, „cache”) is beépítenek. Azt, hogy az egyes operációs rendszerek mit tekintenek „egyedi azonosítónak”, nem rögzítik szabványok, de általánosan elmondható, hogy a felhasználó valamilyen alfanumerikus karaktersorozattal hivatkozhat a tárolt adatokra – ez az állomány neve. A névhasználat szabályai (amelyek szintén operációs rendszerenként változnak) határozzák meg, hogy az állományok neve milyen hosszú lehet (hány karakterből állhat), milyen szimbólumokat tartalmazhat (általában azok a karakterek, amelyekhez az operációs rendszer valamilyen egyéb tevékenységet rendel hozzá, tiltottak), adott esetben a név felépítésére is vonatkozhatnak megkötések. Az operációs rendszertől függ az is, hogy milyen egyéb adatokat tart nyilván az egyes állományokról. A legáltalánosabban használt tulajdonságok a következők: 1. típus: mivel a tárolt információ elemzése nem az operációs rendszer feladata, de az egyes állományok tartalma alapvetően meghatározza a vele (rajta) elvégezhető műveletek körét, az operációs rendszerek általában az állomány nevét kiegészítik egy azonosítóval, ami segít annak meghatározásában, hogy milyen műveletek értelmezettek az adott adatcsoporttal. A DOS alapú operációs rendszerekben szokás ezt a típusazonosítót kiterjesztésnek is nevezni; 2. időbélyegek: az állományok használatakor más és más időpillanatokban különféle tevékenységeket végezhetünk az adatokon,
63
amelyek feljegyzése részben adminisztratív, részben biztonsági célokat szolgál. Általánosan használt időbélyeg az állomány keletkezésének időpontja (amikor az adatcsoport rögzítésre került a háttértárolón), de egyes operációs rendszerek rögzítik az állománnyal végzett műveletek (utolsó megnyitás, utolsó módosítás) időpontját is; 3. méret: az állományban tárolt információ mennyisége, általában bájtban kifejezve. Fontos tudni, hogy az állomány tartalma és a tárolásához szükséges hely nagysága általában nem azonos! 4. jellemzők (attribútumok): operációs rendszerenként változó kiegészítő információk (általában 1 biten tárolt értékek), amelyek az operációs rendszer számára hordoznak járulékos információt az egyes állományokról; 5. jogosultságok: amennyiben az operációs rendszer támogatja, megadható (korlátozható) az egyes állományokon végezhető műveletek (pl. módosítás, törlés, megnyitás, tulajdonságok megváltoztatása, stb.) köre. Elsősorban a többfelhasználós rendszerekben alkalmazott tulajdonság, amely a felhasználók azonosításának képességével együttesen szabályozott állománykezelést tesz lehetővé. Példák: DOS: az állomány neve 1-8 karakter hosszú lehet, amihez „.” (pont) után kapcsolódik az 0-3 karakter hosszú kiterjesztés. (A kiterjesztést az operációs rendszer csak a számára értelmezhető utasításokat tartalmazó, ún. parancsállományok megkülönböztetésére használja: SYS, COM, EXE, BAT). Mind a név, mind a kiterjesztés egyaránt tartalmazhat betűket, számokat és az ASCII tábla első 127 karaktere közül még néhány szimbólumot, a szóköz és \ * ? + | , : ; / < = > karakterek kivételével (ide tartozik a . is: csak a név és a kiterjesztés elválasztására szolgál, nem ismétlődhet). Az időbélyegek közül csak a létrehozás dátumát (és időpontját) használja, az egyes állományok R (csak olvasható), H (rejtett – az operációs rendszer parancsai nem vonatkoznak rá), S (rendszerállomány), A (tartalma – az utolsó archiválás óta – megváltozott) jellemzőkkel rendelkezhetnek, jogosultságokat nem kezel. A témakörrel kapcsolatban bővebbet az alábbi weboldalon olvashat: http://www.csucsposta.hu/dobosl/dos.htm Windows: az állománynévben nem (kötelezően) válik külön a név és a típusazonosító, a kettő együttes hossza 1-254 karakter lehet, kis- és nagybetű egyaránt használható, tiltott karakterek: / \ : * ? ’’ < > |. (Megjegyzendő, hogy a DOS-szal való kompatibilitás fenntartása végett minden állományhoz létezik egy ún. rövid név is, amely megfelel a DOS névhasználati szabályainak.) Az időbélyegek között a létrehozás mellett szerepel az utolsó módosítás és az utolsó hozzáférés adatai is. A jellemzők és jogosultságok megegyeznek a DOS tulajdonságaival.
64
UNIX: bármilyen szimbólum szerepelhet az állomány nevében, a kis- és nagybetűs elnevezések között van különbség, a név maximális hossza 255 karakter, a típus nem a név része (igazából a „kiterjesztés”-nek megfelelő fogalom nem is létezik a UNIX alatt, a . az névben csak akkor kap speciális szerepet, ha ez a név első karaktere), nincsenek (legalábbis az előzőkben bemutatott operációs rendszerekben értelmezett) jellemzők (viszont ide sorolható az előző operációs rendszerek által nem ismert „tulajdonos” érték), több szinten kezeli a jogosultságokat. A felhasználói munkavégzés során új állományokat hozunk létre, létező állományokkal végzünk műveleteket vagy megszüntetjük a feleslegessé vált állományokat. Az állományokkal elvégezhető műveletek alapvetően két csoportra oszthatók: az állomány tartalmával kapcsolatos és az állomány tulajdonságait meghatározó/megváltoztató műveletekre. (A későbbiekben látni fogjuk, hogy az utóbbi csoportba tartozó tevékenységek nem tekinthetők állományműveletnek.) Állományműveletek: 1. létrehozás: az állománykezelő a háttértár alkalmas (méretű) területét lefoglalja és a háttértár foglaltságát tartalmazó táblázatban (ld. később) rögzíti az állomány azonosítására szolgáló adatokat; 2. megnyitás: ahhoz, hogy a háttértárolón elhelyezkedő adatokkal műveletet végezhessünk, az állományt előbb meg kell nyitni. A megnyitás során az operációs rendszer azonosítja az állományt (logikai név – fizikai elhelyezkedés összerendelése), ellenőrzi a kijelölt művelet végrehajtásához szükséges jogosultságok meglétét és egy fájlleíró táblát (FCB – File Controll Block) hoz létre, ami tartalmazza az állomány elhelyezkedésével és kezelésével kapcsolatos információkat – lényegében ezen a struktúrán keresztül kezelhető az állomány tartalma. A megnyitott állomány tartalma és az operatív memória közötti adatmozgatási művelet (irányultságtól függően) lehet olvasás (háttértár ⇒ memória) vagy írás (háttértár ⇐ memória). Az írási műveletek között különbséget kell tenni aszerint, hogy az állomány esetleg létező előző tartalma megváltozik az írási művelet során (módosítás), vagy a kiírásra kerülő információ az állomány korábbi végétől folytatólagosan helyezkedik el (hozzáfűzés). Azt, hogy az adott állománnyal milyen műveletet fogunk az adott feldolgozási folyamat során elvégezni, megnyitáskor kell megadni: ilyen értelemben beszélhetünk az állomány megnyitási módjáról. A megnyitási mód az adott feldolgozási folyamatban meghatározza az állománnyal végezhető műveletek körét (pl. egy olvasásra megnyitott állományba történő írási parancs végrehajtását az operációs rendszer vissza fogja utasítani); 3. pozicionálás: a következő írási vagy olvasási művelet elvégzésének helyének meghatározása. Az operációs rendszer egy mutató
65
segítségével tartja nyilván, hogy a feldolgozási folyamat az állomány tartalmának mely részénél jár (természetesen ez a mutató is az FCBben található), ennek a mutatónak a beállításával történik az állománynak a következő műveletben érintett részének a kijelölése; 4. lezárás: az FCB megszüntetése, az állomány tartalmának rögzítése a háttértáron. Lezárt állománnyal állományszintű művelet nem végezhető. Az állományok kezelése során az állomány tartalmának feldolgozási módja szerint megkülönböztethetünk • szöveges vagy bináris módú (az előbbinél a tárolt információ értelmezését a feldolgozó programnak kell elvégeznie, az utóbbinál az adatok feldolgozását az állományban tárolt vezérlőjelek – tipikusan ilyen a „sor vége”-jel – segítik), pozicionálás szempontjából pedig • soros vagy közvetlen elérésű (az előbbinél a pozicionálás csak folyamatosan növekvő módon történhet, azaz az állomány egy adott bájtjának feldolgozásához az összes megelőző bájton végig kell haladnunk, míg az utóbbinál van lehetőség az állomány tetszőleges pontjának sorszám alapján történő közvetlen elérésére) állományokat. Az állományok életciklusában (létrehozás – felhasználás: olvasás, módosítás, futtatás, stb. – megszűnés) a keletkezés lényegesen gyakoribb tevékenység, mint a megszűnés, így az egyes háttértárolókon az állományok száma általában nő. Ez viszont felveti a tárolás és a visszakeresés néhány problémáját: pl. az egyértelmű azonosítás kényszere végett minden állománynak egyedi nevet kell adni, márpedig nagyszámú állomány esetén nem könnyű megjegyezni, mely neveket használtuk már fel; vagy hogy egy sok állományt tartalmazó listából a keresett állomány kiválasztása lényegesen bonyolultabb feladat. Célszerű tehát az állományok tárolását valamilyen rendszerbe foglalni.
Könyvtár A háttértáron az adatok rendszerezetten helyezkednek el – ez azonban az operációs rendszer és a háttértár tárolási szerkezetének megfelelő rendszer, amely nem követi és nem tükrözi a az egyes állományok között a felhasználó számára jelentkező összefüggéseket. Az igény tehát az, hogy az adatok a tárolási szerkezettől független logika szerint legyenek visszakereshetőek: a felhasználó számára összetartozó információk a felhasználó számára (látszólag) azonos helyen legyenek elérhetők. A helyzet tehát ugyanaz, mint az állományoknál: ugyanaz a fogalom mást jelent és másként jelenik meg a számítógép és a felhasználó számára.
66
Könyvtár (directory): 1. az operációs rendszer által használt, adminisztratív célokat szolgáló állomány, amely a felhasználói információt tartalmazó állományok logikai csoportosítását a fizikai elhelyezkedésük tárolásával teszi lehetővé; 2. a (felhasználói) állomány elhelyezkedésének logikai struktúráját tükröző bejegyzés. A könyvtárak tehát tulajdonképpen állományok (ami természetes is, hiszen az operációs rendszer számára minden, a háttértáron elhelyezkedő információ állomány), amelyek azzal a speciális tulajdonsággal rendelkeznek, hogy tartalmuk nem a felhasználó, hanem az operációs rendszer számára hordoz értelmezhető információt: azt, hogy azok az állományok, amelyek a felhasználó számára azonos helyen levőnek látszanak, hol helyezkednek el ténylegesen a háttértárolón. A fentiek szerint tehát a könyvtár nem más, mint egy nyilvántartás – ebből viszont az következik, hogy valamilyen alkalmas tárolási szerkezetet kell kialakítani. Ahhoz, hogy a már ismert adatszerkezetek (bővebben: itt) – sor, lista, tömb, verem stb. – közül kiválaszthassuk a célunknak leginkább megfelelőt, nézzük meg, milyen elvárásaink lehetnek a nyilvántartásunkkal szemben: • rugalmasság: előre nem ismert, hogy a könyvtárban hány állomány információit fogjuk tárolni – sőt ez az érték a felhasználás közben folyamatosan változik. • csoportosíthatóság: tetszőleges szempontok szerint. • gyors visszakeresés: a könyvtárak szerepe abban áll, hogy segítsenek a nagyszámú állomány között megtalálni a számunkra fontosat. A lehetséges tárolási szerkezetek közül az operációs rendszerek a hierarchikus fastruktúrát használják legelterjedtebben. Ez a struktúra egy körmentes, irányított gráffal írható le, amelynek pontosan egy kiinduló csúcspontja (gyökér) van, és minden más pontjába pontosan egy út vezet a gyökértől. Az egyes csúcsokból tetszés szerinti számú (irányított) él vezet más csúcsokhoz, azt a csúcsot, ahonnan egy él kiindul, szülőnek, ahová vezet, gyereknek (alkönyvtár) nevezzük. A gyökérnek nincs szülője és minden gyereknek pontosan egy szülője van.
67
56. ábra Hierarchikus könyvtárstruktúra
A könyvtárak névhasználatára általában az állományokkal azonos szabályok vonatkoznak (kivéve a gyökérkönyvtárat: a gyökérkönyvtár nevét nem a felhasználó, hanem az operációs rendszer határozza meg), típusuk és méretük általában nincs, az állományoktól egy attribútum különbözteti meg őket, a jogosultsági tulajdonságok (bizonyos értelemszerű megszorítások mellett) az állományokkal azonos módon értelmezhetőek a könyvtárakra is. Hasonló a helyzet a könyvtárakon értelmezett műveletek vonatkozásában is (ne feledjük: az operációs rendszer számára a könyvtár is csak állomány!), azonban két lényegi különbséget mindenképpen ki kell emelnünk a könyvtárakon és állományokon elvégezhető műveleteket vizsgálva. A könyvtárakkal a felhasználó csak közvetett módon (az operációs rendszer szolgáltatásainak igénybe vételével, ún. rendszerhívásokon keresztül) végezhet műveletet, és ezen műveletek jelentős része állományokkal kapcsolatos művelet - amelyeket a fentiekben nem soroltunk fel állományokon „értelmezett” műveletekként. Ezért a könyvtárműveleteknél csupán a különbségek kiemelésére szorítkozunk. Könyvtárakra vonatkozó műveletek: 1. létrehozás: lévén a könyvtár csak egy virtuális állomány, létrehozása nem jár tényleges helyfoglalással, csupán a szülőkönyvtár nyilvántartása bővül egy újabb bejegyzéssel; 2. megnyitás: • az állományoknál tárgyalttal azonos értelmű művelet, a könyvtárbejegyzéseket tartalmazó fizikai állomány tartalmának hozzáféréséhez szükséges, a nyitott bejegyzés-állományon értelmezett műveletek és hatásuk: 68
- olvasás: a könyvtárban tárolt állományok (és/vagy könyvtárak) adatainak lekérdezése (listázása); - írás: a könyvtár egy adott állományára (könyvtárára) vonatkozó leíró részek módosítása. Ide tartozik: állomány létrehozása (az állomány létrejöttekor készül róla egy feljegyzés a könyvtár nyilvántartásában); állományok tulajdonságainak (név, méret, stb.) megváltoztatása (mivel ezek a információk nem az állományban tárolódnak); állományok törlése (a tartalmazó könyvtár állományra vonatkozó bejegyzése módosul, nem történik meg az állomány tényleges eltávolítása a háttértárról) állomány helyének megváltoztatása (másolás: az állomány tartalma ismételten található meg a háttértár két különböző helyén; áthelyezés: az állomány logikai helyének megváltoztatása – általában nem jár az állomány fizikai helyének megváltozásával, csupán az érintett könyvtárak adminisztrációs bejegyzéseinek módosulásával); •
logikai (felhasználói) értelemben ugyanígy nevezzük egy könyvtár kiválasztását, aktuálissá tételét is (szokás könyvtárváltásnak is nevezni). Hatására azok az állományok, amelyek ebben a könyvtárban találhatóak, hozzáférhetőek: megjeleníthetők (listázhatók), feldolgozhatók. Ez a művelet helyettesíthető az elérési út (ld. később) alkalmazásával.
Kérdés: a fenti műveletekben az állomány- és a könyvtárfogalmat analóg módon használtuk, hiszen a művelet ugyanazt jelenti (al)könyvtárra vagy állományra vonatkoztatva – kivéve a törlés műveletét: a könyvtár törlése általában feltétel(ek)hez kötött művelet, a leggyakoribb ilyen feltétel az, hogy csak olyan könyvtár törölhető, amely nem szerepel az aktuális könyvtártól a gyökérkönyvtárig vezető útvonalban. Miért? Hivatkozások Elérési út: egy könyvtár helyének megadása a hierarchikus könyvtárstruktúra szerkezetének megfelelően. Az elérési út a könyvtár azonosítására szolgál. Mivel a gyökértől minden könyvtárhoz pontosan egy út vezet, ennek az útvonalnak a megadása egyértelműen azonosítja a könyvtárat. A megadás során az elérési út könyvtárait az operációs rendszer speciális szimbóluma (általában a / vagy a \) választja el egymástól. Abszolút elérési út: a gyökérkönyvtártól induló és a hivatkozott könyvtárig az összes tartalmazó könyvtárat a hierarchiában elfoglalt helyének megfelelő sorrendben megadó útvonal-leírás. Az abszolút elérési út használatával minden könyvtár (és minden állomány) egyértelműen azonosítható, azonban ez a fajta megadási mód egy összetettebb (már akár 4-6 szintű) hierarchia esetén meglehetősen kényelmetlen lehet.
69
Egyszerűbbé tehető a hivatkozás, ha a könyvtár helyét nem a gyökérhez, hanem a pillanatnyilag használt könyvtárhoz képest adjuk meg (ld. lokalitás elve: ha egy művelet egy adatra hivatkozik, akkor nagy valószínűséggel – és hamarosan – a hivatkozott adat környezetében található adatokra is szüksége lesz). Ez viszont egyrészt azt jelenti, hogy nyilván kell tartanunk az aktuálisan használt könyvtárat (szokás munkakönyvtárnak is nevezni), másrészt szükségünk lesz olyan hivatkozások bevezetésére, amelyek „visszafelé” hivatkoznak: a gyerekkönyvtárakhoz határozzák meg a szülőt. Az elterjedt hivatkozási könyvtár-szimbólumok: • „.” (1 pont) – a könyvtár saját adataira, • „..” (2 pont) – a szülőkönyvtárra mutató speciális hivatkozás. Relatív elérési út: a hivatkozott könyvtár elérését megadó leírás, amely az aktuálisan használt (munka-) könyvtártól indul. Feladat: adja meg a fenti ábrán látható struktúrában a „programozas” nevű könyvtár abszolút (feltéve, hogy az „oktatas” nevű könyvtár szülőkönyvtára a főkönyvtár) és relatív (feltéve, hogy az aktuális könyvtár a „Word” nevű) elérési útját!
Kötet A mágneslemezes háttértárak tárolási szerkezetének tanulmányozásakor láthattuk, hogy a tényleges adattárolás a blokkokban (ez lehet egy szektor vagy szektorok csoportja – cluster –, továbbiakban a különbséget figyelmen kívül hagyva egységesen „blokk”-ként hivatkozunk a háttértár legkisebb adattárolási egységére, függetlenül annak méretétől) történik. Az operációs rendszer az állomány elhelyezkedésének azonosítására az információt tartalmazó blokk sorszámát használja, ami azt jelenti, hogy az adott háttértár minden blokkjának saját sorszámmal kell rendelkeznie. Az operációs rendszerek adattárolási alrendszerében az első problémát az jelentette, amikor megjelentek olyan nagy kapacitású tárolók, amelyek adatblokkjainak száma meghaladta az operációs rendszer által megcímezhető blokkok számát. A megoldást a háttértár logikai felosztása jelentette. Partíció: a háttértár fizikailag összefüggő (folytonosan sorszámozott szektorokat tartalmazó) önálló része, amely az operációs rendszer számára önálló adattároló egységként kezelhető. (Megjegyzés: operációs rendszerenként változó, hogy az adott rendszer hány darab és mekkora méretű partíció kezelésére képes.) Az egyes partíciók az operációs rendszer számára tehát úgy jelennek meg, mintha fizikailag különálló háttértárak (újabb és újabb winchesterek) lennének. Mivel a hierarchikus fastruktúrájú könyvtárszervezési módszer 70
alkalmazása esetén egy fizikai háttértárolón csak és kizárólag egyetlen gyökérkönyvtár helyezkedhet el, kézenfekvő, hogy több gyökérkönyvtárú struktúra kialakításához a merevlemezt partíciókra kell osztani. Kötet: a háttértároló egyedi azonosítóval rendelkező része. A kötet tehát nem más, mint a fizikai háttértár egy része (vagy akár az egésze), nevesítve. Szokás meghajtónak is nevezni, azonban fontos tudni, hogy a kötet és a fizikai meghajtó közötti megfeleltetés egyáltalán nem egyértelmű: elképzelhető a háttértároló teljes kapacitásának egyetlen azonosítóhoz (egy eszköz – egy kötet, pl. hajlékony lemez) rendelése, de egy particionált winchester esetében (minden rész külön nevet kap, önálló kötetként használható) az összefüggés már egy eszköz – több kötet; fordított esetben (több meghajtó tárolási területének összevonására egyetlen logikai név alá) pedig több eszköz – egy kötet. A kötet azonosítására egyes operációs rendszerek az angol ábécé betűit használják, mások megengedik a kötetek nevesítését.
Állományszervezés Az előzőekben megismert logikai adattárolási fogalmak nyilvánvalóan nem felelnek meg a háttértár tárolási szerkezetének. Láttuk, hogy az információ állományokban, az állományok pedig a fizikai elhelyezkedéstől független könyvtárakban tárolódnak. Az egyes állományok fizikai elhelyezkedésével kapcsolatos információt az állományt tartalmazó könyvtár megfelelő bejegyzése tartalmazza.
Folytonos állomány-elhelyezési módszerek Az állományok tárolása során az operációs rendszer elsődleges feladata, hogy a háttértáron az adatok méretének megfelelő nagyságú tárolóterületet találjon. Mivel az állományok mérete általában meghaladja a háttértár blokk-méretét, ezért nem is blokk, hanem blokkok meghatározásáról van szó. A későbbi feldolgozás és adminisztráció szempontjából szerencsés, ha a tárolóterület a háttértároló egy összefüggő (folyamatos címekkel rendelkező) blokk-csoportja, hiszen ilyenkor olvasható leggyorsabban vissza az állomány tartalma és a nyilvántartásban mindössze a kezdetét kell feljegyezni. Más kérdés, hogy az állomány bővítése már alkalmasint problémákat vet fel (mi legyen, ha a következő blokk már egy másik állomány által használt?) és a törlések miatt a rendelkezésre álló hely szétdarabolódóik (töredezettség), és előfordulhat, hogy bár összességében még lenne elég hely, mégsem tudunk egy újabb állományt kiírni. Kérdés csak az, hogy hogyan határozzuk meg, hogy hová kerüljön az állomány?
71
Mivel ilyen információval nem rendelkezik, az operációs rendszer végigolvassa a háttértárat és minden blokk esetében megvizsgálja, hogy szabad vagy foglalt –gondoljunk csak bele, ha ez ténylegesen a lemez végigolvasását jelentené, mennyi időt venne igénybe? Ehelyett indulásakor az operációs rendszer készít egy táblázatot (amit a memóriában tárol és kezel), aminek minden egyes cellája a háttértár egyegy blokkjának felel meg és tartalma (mondjuk) 0 vagy 1 aszerint, hogy az adott blokk felhasználható még vagy már foglalt. Ekkor nyilvánvalóan elegendő csupán ebben a táblázatban megkeresni a megfelelő méretű szabad helyet – ez esetben természetesen az állományokon végzett műveleteknek (létrehozás, törlés) megfelelően folyamatosan aktualizálni kell ezt a leírótáblát is. További problémát okoz, ha a háttértáron több alkalmas hely is található. Ez esetben az operációs rendszer valamilyen szempont szerint választ a rendelkezésre álló helyek közül, ezt nevezzük az operációs rendszer állomány-elhelyezési stratégiájának. A legjellemzőbb stratégiák: • legelső megfelelő (First Fit): az első alkalmas méretű tartományt foglalja le. Leggyorsabb, de nem feltétlen hatékony; • legjobban illeszkedő (Best Fit): azt a tartományt használja fel, amely a legkisebb mértékben tér el az állomány méretétől. Lassú, de hatékony: a legkevesebb veszteséget eredményezi; • legrosszabbul illeszkedő (Worst Fit): az előző ellentéte, a legnagyobb eltérésű területen helyezi el az állományt – így biztosítja, hogy továbbra is (relatíve) nagy blokk-csoportok maradjanak felhasználhatóak. A gondot mindhárom esetben a széttöredezés okozza. Lényegesen jobb helykihasználás érhető el, ha az állományokat nem folyamatosan helyezzük el – ez esetben egyrészt bonyolódik az adminisztráció (nem elég azt nyilvántartani, melyik blokkban kezdődik az állomány, hanem azt is tudni kell, hogy melyikben folytatódik!), másrészt lassul az adatok visszaolvasása (az állomány részei a háttértár különböző helyein lehetnek), viszont gyakorlatilag a teljes kapacitás kihasználható és az állományok tetszés szerint bővíthetőek.
Nem folytonos állomány-elhelyezési módszerek Aszerint, hogy az állományok egymást követő részeinek nyilvántartására milyen módszert alkalmazunk, két stratégiáról beszélhetünk: • Láncolt lista: a szabad tartományok meghatározásánál használt elv alapján a lemez blokkjainak megfelelő elemszámú táblázatot hozunk létre, de most az egyes mezőkben azt tároljuk, hogy amennyiben a háttértáron az adott sorszámú blokkban egy állományhoz tartozó adatcsoport van, akkor melyik sorszámú blokk tartalmazza ugyanazon állomány következő adatcsoportját. Ezt a táblázatot nevezzük fájlelhelyezkedési táblának (File Allocation Table, FAT).
72
Az állomány első részét tartalmazó blokk sorszámát a könyvtárbejegyzésbe írjuk, az állomány utolsó blokkjának a jelölésére speciális sorszámot (0, -1) használunk. A következő ábra a láncolt elhelyezés stratégiát szemlélteti:
57. ábra Listaszerkezetű (FAT típusú) állományszervezés
A módszer előnye, hogy minden blokk kihasználható, nincs szükség a helykereső stratégiák alkalmazására (az első szabad blokktól el lehet kezdeni az állomány elhelyezését), valamint, hogy a láncolt adatstruktúrában a bővítés és a törlés műveletét egyszerű elvégezni (csak az elhelyezkedési lista megfelelő hivatkozásait kell módosítani). Hátránya a FAT szerepének kizárólagossága (ha megsérül, a háttértáron tárolt információk visszanyerése elég reménytelen feladat – ennek megelőzésére általában két példányban tárolódik), valamint hogy egy akár csak egyetlen állomány feldolgozásához is az egész táblázatot a memóriában kell tárolni (gyakorlatban az állományműveletek gyakorisága miatt a FAT folyamatosan a memóriában helyezkedik el), és az, hogy nem támogatja az állomány tartalmának közvetlen elérését (a x. adatcsoport helyének meghatározásához végig kell olvasni a tárolási listát). • Indextábla: ebben az esetben minden állomány saját fájlelhelyezkedési táblával rendelkezik. A táblázat egyes mezői sorrendben tartalmazzák az adatblokkok fizikai címét (az elhelyezkedést leíró táblázat neve az indextábla), a táblázat helyét pedig az állományhoz tartozó könyvtárbejegyzésben adjuk meg. A következő ábra az indextábla alapú állomány-elhelyezési stratégiát mutatja be:
73
58. ábra Indextábla alapú állományszervezés
A módszer előnye, hogy az indextábla esetleges sérülése csak az adott állomány elvesztését eredményezi, a mérete jelentősen kisebb a FATnál, és hogy a lehetőséget ad az állomány tartalmának közvetlen elérésére (az állomány x. adatcsoportja az indextábla x. mezőjében szereplő című blokkban található). Problémát jelent viszont, hogy az állományok maximális méretét meghatározza az indextábla mezőinek a száma (ennek kivédésére az indextáblákat láncolása szolgálhat: az indextábla utolsó mezője nem az adatállomány utolsó blokkjára, hanem a következő indextábla címére mutat – ily módon több indextábla összefűzhető), továbbá hogy míg a FAT egyben a háttértár foglaltságának nyilvántartására is alkalmas, ennék a módszernél külön kell gondoskodni a szabad és foglalt blokkok megkülönböztetéséről, és hogy az állomány tartalmának módosulása (bővülés vagy egyes közbenső adatcsoportok törlése) az indextábla újra-összeállítását igényli. Összességében látható, hogy a két dinamikus stratégia lényegében egymás tükörképe: eltérésük abból fakad, hogy az egyik megvalósításban bizonyos tevékenységeket emeltek ki, mint célokat, és ezeknek rendeltek alá más feladatokat – a másik esetben pedig pont fordítva. Az első módszer gyakorlati alkalmazására a DOS, illetve Windows alapú operációs rendszerekben láthatunk példát, a második a különböző UNIX alapú rendszerekre jellemző.
74
Összefoglalás Az operációs rendszernek az állományszervezéssel, az adatok tárolásával kapcsolatos feladatait áttekintve látható, hogy (mivel a felhasználó számára áttekinthető és kezelhető tárolási szerkezet nem felel meg a számítógép által használt adattárolási rendszernek) ezek a tevékenységek (is) a felhasználói munka megkönnyítését szolgálják. Ide tartozik a tárolt információ (felhasználói) azonosítására szolgáló (szimbolikus) hivatkozások (fájlnevek) és a feldolgozásukat támogató információk (állománytulajdonságok, jellemzők) kezelése, a tárolási szerkezet logikai (kötet, könyvtár) szintjeinek megvalósítása és megfeleltetése a fizikai tárolási rendszernek (állományszervezés). Ezen ismeretek birtokában képet alkothatunk az operációs rendszer állománykezelést támogató komponenseinek elvi működéséről és szabályairól, ami elengedhetetlen a gyakorlati feladatok megoldása során.
Ellenőrző kérdések 1. Mi az állomány? Megoldás 2. Ismertesse a megismert operációs rendszer(ek)ben a fájlnevek képzésének szabályait! Megoldás 3. Milyen állománytulajdonságokat tartanak nyilván az operációs rendszerek? Megoldás 4. Mire szolgál a fájlleíró tábla (FCB)? Megoldás 5. Mi a könyvtár? Megoldás 6. Milyen állományműveleteket ismer? Megoldás 7. Milyen könyvtárműveleteket ismer? Megoldás 8. Milyen módokon határozhatjuk meg az állományok logikai helyét? Megoldás 9. Milyen előnyei és hátrányai vannak a folytonos fájlelhelyezési módszereknek? Megoldás 10. Példán keresztül mutassa be a folytonos fájlelhelyezési módszereknél alkalmazható elhelyezési stratégiákat! Megoldás 11. Hogyan működik a láncolt lista alapú állomány-elhelyezési módszer? Megoldás 12. Milyen előnyei és hátrányai vannak az indextábla alapú fájlelhelyezési módszernek? Megoldás Jegyzet 75
Alapvető kernelfunkciók Bevezetés Ebben a részben (az operációs rendszerről tanultak lezárásaként) az operációs rendszer olyan tevékenységeivel ismerkedünk meg (vázlatosan), amelyek a felhasználó számára észrevehetetlenül (a „háttérben”) zajlanak - de ez egyáltalán nem jelenti azt, hogy ezek a feladatok kevésbé fontosak, sőt! Először a programok működésének („futásának”) menetével és a kapcsolódó alapfogalmakkal ismerkedünk meg, azután röviden áttekintjük az operációs rendszerek memóriakezeléssel kapcsolatos feladatait.
Alapfogalmak A számítógép működése során állandóan több tevékenységet hajt végre, többé-kevésbé egyszerre. Ezen tevékenységek egy része a felhasználó számára észrevétlenül zajlik, más esetben nyilvánvaló a kvázipárhuzamos működés. Feladat: gondolja végig, jelen pillanatban (miközben ezt a dokumentumot olvassa) milyen tevékenységeket folytat a számítógép? E tevékenységeknek összehangolása azonban felvet néhány problémát: 1. A mai számítógépek működésüket tekintve Neumann-elvűek, és mint ilyenek, a műveleteket sorosan hajtják végre. (Kérdés: ez miért mond ellent a fentieknek?) 2. A számítógép funkcionális egységeinek tárgyalásakor láttuk, hogy a vezérlőegység (is, de említhetnénk az adat- és címbuszokat) egyszerre csak egy feladat ellátására képes – meg kell határozni a párhuzamosan jelentkező igények kiszolgálási sorrendjét. 3. A számítógép egyes részegységei, az egyes feladatok ellátásához szükséges hardver (vagy szoftver) eszközök nem állnak korlátlan mennyiségben rendelkezésre – gondoskodni kell az egyes eszközök kiosztásáról. A fenti problémák megoldása (is) az operációs rendszer feladata, de ahhoz, hogy megfogalmazhassuk ezeket a feladatokat, pontosítanunk kell, mi mindent értünk „tevékenység” alatt. Algoritmus: valamely feladat megoldását eredményező tevékenységsorozat lépéseinek egyértelmű, meghatározott és véges megadása.. Utasítás: az algoritmus egysége, egy elemi tevékenység. Program: a számítógép által értelmezhető algoritmus.
76
Kézenfekvő lenne az általános „tevékenység” fogalom helyett használni a „program” fogalmat a fenti esetekben. Ez azonban nem lenne megfelelő: a „program” fogalma nem hordozza azt a képességet, hogy megkülönböztessük a számunkra fontos (jelen esetben éppen tevékenykedő) algoritmusokat azoktól, amelyek éppen nem csinálnak semmit (de a program fogalmának megfelelnek). Ezért van szükség egy újabb fogalom bevezetésére: Folyamat: a vizsgált számítógépes rendszerben az adott pillanatban végrehajtás alatt álló program. Egy program a működése során létrehozhat több folyamatot (részfeladatai önálló folyamatokként működnek), de ugyanaz a program működhet egyszerre több folyamatként is (többször elindítjuk). A folyamatok működésük során használják a számítógépes rendszer eszközeit. Erőforrás: a számítógépes rendszer azon összetevői, amelyek szükségesek a folyamatok működéséhez. A folyamatok működése szempontjából a két legfontosabb erőforrás a rendelkezésre álló processzoridő és a memóriaterület. A következőkben az operációs rendszer működésének azokat az elemeit tekintjük át, amelyek ezen erőforrások hatékony felhasználását biztosítják. A számítógép működése során tehát utasítás-sorozatokat, programokat hajt végre. Azok a programok, amelyek pillanatnyilag ténylegesen végrehajtás alatt állnak (a folyamatok) valamilyen erőforrást vesznek igénybe. Az éppen végrehajtás alatt álló folyamat számára a számítógép erőforrásai úgy jelennek meg, mintha egyedüli tevékenység lenne a rendszerben (virtuális gép). Azonban a folyamatok száma még a többprocesszoros rendszerekben is meghaladja a processzorok számát, így szükség van a folyamatok közötti váltásra. Ebből következik, hogy az egyes folyamatok számára nemcsak biztosítani kell a megfelelő erőforrások elérhetőségét, de gondoskodni kell az „egyedüllét illúziójának” fenntartásáról is: meg kell akadályozni, hogy az egyes folyamatok oly módon változtassák meg a futási környezetüket (pl. a memória tartalmát), hogy az kihasson más folyamatokra is és gondoskodni kell arról, hogy minden folyamat elvégezhesse a számára kijelölt feladatokat. Ehhez szükséges a folyamatok adminisztrálása: mikor kezdődött, hol tart, milyen erőforrásokat használ stb. Folyamatleíró blokk (Process Controll Block): az operációs rendszer által az egyes folyamatok jellemzésére használt adatok csoportja, amely alkalmas a folyamat azonosítására és a folyamat által használt erőforrások nyilvántartására. Tartalma operációs rendszerenként más és más lehet, általában olyan információk szerepelnek benne, mint pl. a folyamat azonosítója, a folyamat állapota, a folyamat által használt regiszterek állapota, a folyamat által használt memóriaterület címei, a folyamat által használt állományok stb.
77
Megjegyzés: van egy másik, a folyamatokhoz hasonló fogalom is: a szál. A szál és a folyamat közötti leglényegesebb különbség az, hogy a szálak által használt erőforrások kevésbé védettek, mint a folyamatok esetében: előfordulhat, hogy két szál ugyanazt a memóriaterületet használja, közösek a változóik stb. Ennek köszönhetően az egyes szálak közti váltáshoz lényegesen kevesebb információt kell összegyűjteni és eltárolni, mint a folyamatok esetében, azaz a szálak lényegesen gyorsabban válthatják egymást. Másrészt viszont a védelmi mechanizmus hiánya ellensúlyozásáról a programozónak kell gondoskodnia, ami jelentősen bonyolultabb megoldási módszerek alkalmazását igényli, mint a folyamatok esetében. A fentiek általánosan igazak minden, a számítógépen futó programra, így az operációs rendszerre is. Emlékezzünk, hogy az operációs rendszer feladatait alapvetően két nagy csoportra oszthatjuk: a felhasználóval való kapcsolattartás biztosítására és a számítógépes erőforrások kezelésére. (Kérdés: hogyan nevezzük az egyes komponenseket?) A jelen fejezetben tárgyalt feladatok (habár szorosan kötődnek a felhasználói munkavégzés folyamatához) ellátása nyilvánvalóan az operációs rendszer rendszerközeli komponensének a hatáskörébe tartoznak. Rendszermag (kernel): Az operációs rendszer folyamatainak egy olyan kitüntetett csoportja, amely a rendszer- és a felhasználó által indított folyamatok között elosztja a rendelkezésre álló erőforrásokat. Ezek a folyamatok a számítógép bekapcsolásakor jönnek létre, folyamatosan jelen vannak a rendszer működése során, létrehozzák, adminisztrálják és vezérlik a felhasználói folyamatokat. A rendszermag és a felhasználói folyamatok közötti kommunikáció rendszerhívásokon (általában a processzor egy kitüntetett utasítása) keresztül valósul meg. Az operációs rendszer a rendszerhívás hatására: 1. befejezi a jelenleg végrehajtás alatt álló utasítást 2. elmenti a jelenleg futó folyamat jellemzőit 3. a rendszerhívás típusának (értékének) megfelelő rendszerfolyamat elindul és nyilvántartásba veszi az igénylő folyamatot (elkészíti a folyamatleíró blokkot, megvizsgálja az igény jogosultságát és/vagy sürgősségét és dönt a kiszolgálásról vagy várakoztatásról) 4. a rendszerfolyamat visszajelzést küld az igénylő folyamatnak a döntéséről (esetleg engedélyezi számára a végrehajtást) 5. a félbeszakadt folyamat környezete helyreállításra kerül és az folytatódhat tovább. A rendszerhívások keletkezésük szerint különböző típusúak lehetnek: 1. kivétel: a végrehajtás alatt álló folyamat működésében bekövetkezett, a hibátlan működést befolyásoló esemény, kezelése általában a folyamat feladata (pl. 0-val osztás);
78
2. csapda: a felhasználói folyamat által okozott olyan esemény, amelynek kezelése az operációs rendszer feladata (pl. nem engedélyezett utasítás alkalmazása, más folyamat számára lefoglalt memória-területre történő hivatkozás); 3. megszakítás: a futó folyamattól független (külső) forrásból származó rendszerhívás. Megjegyzés: A rendszerhívások egyes típusaihoz az operációs rendszer általában fontossági szintet (prioritás) rendel, a magasabb prioritású kérések megszakíthatják az alacsonyabb prioritású kérések kiszolgálását. Az operációs rendszerek többségében van lehetőség bizonyos rendszerhívások időlegesen figyelmen kívül hagyására (letiltás vagy maszkolás), nyilvánvaló azonban, hogy a rendszer működésében beállt változások jelzésére szolgáló rendszerhívások nem letilthatóak (NMI: nem megszakítható/nem maszkolható megszakítás). Aszerint, hogy a folyamat által használt erőforrás valamilyen okból történő elvétele a folyamat működését hogyan befolyásolja, megkülönböztetünk • elvehető (rabolható, „preemptive”) erőforrásokat, amelyekre az jellemző, hogy elvételük esetén a folyamat végrehajtása megszakad, de az erőforrás ismételt rendelkezésre állásakor a folyamat tevékenysége hiba nélkül folytatható (emlékezzünk a folyamatleíró blokk szerepére!), és • nem elvehető („non-preemptive”) erőforrásokat, amelyek elvétele esetén a folyamat hibamentes folytatása nem lehetséges. (Feladat: mondjon példát elvehető és nem elvehető erőforrásokra!) A rendszerhívások kezelése (származásuktól és típusuktól függetlenül) lényegében azonos módon történik: 1. Rendszerhívás érkezik. 2. Az éppen végrehajtás alatt álló utasítás befejezése után a processzor megvizsgálja a kérést: • ha a jelenlegi maszkolási beállítások és prioritási szintek lehetővé teszik, végrehajtódhat, • ellenkező esetben várakoznia kell. 3. A végrehajtás alatt álló folyamat környezete elmentésre kerül. 4. Beállításra kerülnek az adott típusú rendszerhíváshoz rendelt tiltások (maszkok) és a prioritási szint. 5. A kérés helyének és típusának alapján meghatározásra kerül a kiszolgáló folyamat címe és átadódik számára a vezérlés. 6. A kiszolgáló folyamat befejeződésekor a letiltott megszakítások és a prioritási szintek visszaállítódnak. 7. A félbeszakadt folyamat környezete visszatöltődik és megkapja a vezérlést.
79
Egy számítógépes rendszer működése során tehát az operációs rendszer a felhasználói tevékenységeket meghatározó programokat (és a saját feladatait) folyamatokra bontva hajtja végre. Az egyes folyamatok időben elkülönülten, látszólag önállóan tevékenykednek, az ehhez szükséges adminisztrációs és vezérlő feladatok ellátására az operációs rendszer kernelfolyamatai szolgálnak.
Folyamatok kezelése Ahogy azt az előzőekben láthattuk, a számítógép működése során folyamatokat hajt végre. A folyamatok végrehajtása szorosan összefügg a processzorral, lévén a folyamatok minden tevékenysége a processzort utasítja valamilyen művelet elvégzésére. Azt is láthattuk, hogy ritka kivételektől eltekintve egy adott rendszerben soha nem egy folyamat végrehajtása zajlik, az egyes tevékenységek egymás közt „cserélgetik” a processzort. Nyilvánvaló, hogy a számítógép működése és a felhasználó elégedettsége szempontjából a legfontosabb, hogy az egyes folyamatok gyorsan, minél rövidebb idő alatt hajtódjanak végre, ezért a folyamatok kezelésének legfontosabb kérdése az időzítés. Ütemezés: a folyamatok működése során a rendelkezésre álló idő leghatékonyabb kihasználását célzó eljárások összessége (bővebben: itt). Ahhoz, hogy megértsük, milyen helyzetekben kell a folyamatok feldolgozását ütemeznie az operációs rendszernek, nézzük meg, milyen állapotokon megy keresztül egy program az elindításától a befejeződéséig: 1. A program a háttértárról a memóriába kerül (még nem folyamat!), és rendszerhívás segítségével jelzi igényét a processzorra és egyéb erőforrásokra. 2. A folyamatok kezeléséért felelős rendszerfolyamat érzékeli az igényt és nyilvántartásba veszi a programot (létrehozza a folyamatleíró blokkot). 3. Megfelelő feltételek (prioritás, szabad processzor stb.) teljesülése esetén elkezdődik a folyamat végrehajtása. 4. Mivel a rendszerben több folyamat is működik, a folyamat időnként kikerül a végrehajtás alól és várakozni kényszerül. Megjegyzés: Ilyenkor a felfüggesztésre kerülő folyamat folyamatleíró blokkja elmentésre, a végrehajtásra kerülő folyamat folyamatleíró blokkja betöltésre kerül – mivel a folyamatleíró blokk tartalmazza a folyamat működéséhez szükséges adatokat, azaz a folyamat „környezetét”, ezt a cserét szokás környezetváltásnak is nevezni. 5. Befejeződésekor kikerül a folyamatok közül. Ennek megfelelően a programunk működése akkor lesz a leggyorsabb, ha a programból folyamattá válási idő minimális; az egyes folyamatok közötti váltás gyorsan elvégezhető; amíg egyes folyamatok külső információra (felhasználói beavatkozás, háttértárról érkező adat, stb.) várnak, mások átvehetik tőlük a működés jogát. 80
Ezeknek a tevékenységeknek a megoldásához az operációs rendszer különböző, ütemezőnek nevezett komponenseket használ: • Főütemező (magas szintű ütemező): feladata a program betöltése a háttértárról a memóriába és a programhoz tartozó folyamat(ok) számára a folyamatleíró blokk elkészítése. • Középtávú ütemező (közbenső szintű ütemező): feladata a végrehajtásra várakozó folyamatok működésének ellenőrzése, az optimális végrehajtási időnek megfelelő végrehajtási sorrend kialakítása. • Rövid távú ütemező (alacsony szintű ütemező): feladata a futásra kész folyamatok között a processzor működési idejének szétosztása. Látható (ahogy azt már eddig is tudtuk), hogy egy számítógépes rendszerben több folyamat is tevékenykedik egyszerre. Ezek a folyamatok a végrehajtásuk szempontjából különböző állapotokban lehetnek, az azonos (logikai) állapotú folyamatokat (elég csak a folyamatleíró blokkot) célszerű együtt nyilvántartani. Tekintve, hogy a folyamatok száma nem ismert, ezért csak olyan tárolási szerkezet jöhet szóba, amelyben a tárolt adatok száma és a tárolási sorrend is könnyedén változtatható. Az ilyen jellegű feladatok megoldására alkalmas adatszerkezet a lista. Várakozási sor („queue”): A működésük azonos logikai állapotában levő folyamatok adatainak tárolására és nyilvántartására szolgáló listaszerkezetű tároló. Milyen állapotai lehetnek egy folyamatnak? 1. létrejött, 2. futásra kész, 3. végrehajtás alatt, 4. felfüggesztett (várakozik, megszakadt), 5. befejeződött. A folyamatok állapotai és az egyes ütemezők tevékenysége közötti összefüggést szemlélteti az alábbi ábra:
81
59. ábra Folyamat-állapotok és ütemezők
Mit látunk az ábrán? A végrehajtásra váró programhoz a főütemező folyamatleíró blokkot rendel, majd az immár folyamat a „Futásra kész folyamatok” várakozási sorba kerül. Innen az alacsony szintű ütemező kiveszi és átadja végrehajtásra a processzornak, azaz a folyamat „elindul”. A folyamat mindaddig futhat, amíg le nem áll magától („véget ér”), vagy az operációs rendszer le nem állítja („megszakad”). (Kérdés: milyen okai lehetnek annak, hogy az operációs rendszer leállít egy folyamatot?) Ha a folyamat azért áll le, mert „várakozik” egy külső forrásból származó adatra, akkor ez idő alatt átadhatja helyét egy másik folyamatnak (ő maga pedig átkerül a „várakozó folyamatok” sorba, a szükséges adatok megérkezésekor pedig visszakerül a „futásra kész folyamatok” közé és kezdődik az egész elölről). A középtávú ütemező folyamatosan ellenőrzi a várakozási sorok állapotát és igyekszik meghatározni, melyik legyen a következő elinduló folyamat ahhoz, hogy a rendszer a legoptimálisabban működjön. Ennek biztosítására arra is képes, hogy egyes folyamatokat kizárjon a processzoridőért történő versengésből („felfüggesztett folyamatok” sor), és csak bizonyos feltételek teljesülése esetén engedélyezze újra a működését. Annak eldöntésére, hogy az egyes ütemezők milyen szempontok alapján válasszák ki a végrehajtás alá kerülő vagy éppen a végrehajtásból kizárandó folyamatokat, különböző módszerek léteznek, amelyeket röviden ütemezési stratégiáknak nevezünk.
82
A főütemező stratégiájának a meghatározása gyakorlatilag lehetetlen feladat, hiszen az lenne az elvárás vele szemben, hogy olyan sorrendben hozza létre a végrehajtásra váró programokból a folyamatokat, hogy azok a rendszerben jelenleg működő folyamatokkal együttesen egyenlő arányban igényeljenek processzor-műveletet és külső forrásból származó adatot (ha ugyannyi ideig kell a processzornak dolgoznia, mint a folyamatok a külső adatokra várnak, akkor gyakorlatilag folyamatos lehet a processzor működése, egyetlen folyamatnak sem kell feleslegesen várakoznia). Ennek eldöntésére azonban sem az érkező, sem a már működő folyamatokra vonatkozóan nem áll rendelkezésre elég információ, ezért a főütemező általában az érkezés sorrendjében hozza létre a folyamatokat. A középtávú ütemező stratégiáját tekintve meglehetősen sokféle lehet, de a gyakorlatban (az előbb vázolthoz hasonló információ-hiány miatt) ezek az ütemezők a prioritási szintek alapján döntenek az egyes folyamatok állapot-változtatásáról. A rövidtávú ütemezővel kapcsolatban a legfontosabb elvárás a környezetváltás gyors elvégzése és a folyamatok igazságos kiszolgálása. Ezeknek az (alkalmasint szubjektív) fogalmaknak a mérése elég nehéz, ezért olyan mérhető jellemzőkkel szokás elemezni a rövidtávú ütemező hatékonyságát, mint pl.: 1. várakozási idő: a folyamat mennyi ideig nem fut; 2. átfutási idő: a folyamat érkezése és befejezése közti idő; 3. válaszidő: a folyamat rendszerbe-lépésétől az első futásig eltelt idő. A gyakorlatban számos megvalósítás létezik, de az a fentiek alapján is érzékelhető, hogy nincs „egyetlen és üdvözítő” megoldás: az egyik hatékonysági jellemző növelésére irányuló eljárás biztosan magában hordozza valamelyik másik jellemző értékének a romlását. A legegyszerűbb ütemezési algoritmusok a következők: 1. előbb jött, előbb fut („First Come First Served”): a folyamatok végrehajtási sorrendje megegyezik a várakozási sorba érkezésük sorrendjével. Előnye, hogy a lista tárolási szerkezetének megfelel a feldolgozás menete, így egyszerűen megvalósítható. Hátránya, hogy a nagyobb időigényű folyamatok feltarthatják a rövidebb folyamatokat (torlódás); 2. legrövidebb fut („Shortest Job First”): a futásra várakozó folyamatok közül az kerül sorra, amelynek a legrövidebb a processzoridő-igénye. Előnye, hogy a leggyorsabb folyamat-végrehajtást teszi lehetővé. Hátránya, hogy előfordulhatnak kizárt folyamatok (egy nagy időigényű folyamat örökösen a várakozási sor végén marad, miközben folyton érkeznek újabb, rövidebb folyamatok), valamint hogy a processzoridőigény előre ismerni kell (az esetek többségében ez nem meghatározható, csak becsülhető érték!);
83
3. körben járó („Round Robin”): minden folyamat rendelkezésére áll egy időszelet, ameddig működhet, ennek leteltével a várakozási sor végére kerül. Előnye, hogy minden folyamat azonos ideig működhet (nem fordulhat elő feltartás vagy kizárás). Hátránya, hogy a folyamatok újra-sorbaállítása miatt arányosan növekszik a környezetváltások (és adminisztrációs műveletek) száma, így nő a folyamatok végrehajtásának ideje is. A fenti algoritmusokkal együtt (vagy azok helyett) alkalmazhatóak a folyamatok prioritását alapul vevő ütemező stratégiák is. Feladat: adott 6 folyamat (F1,..F6), amelyeknek ismert a processzoridő-igényük (6, 8, 20, 4, 12, 6). Hasonlítsuk össze a különböző ütemezési stratégiákat, ha a folyamatok rendre a 0., 2., 3., 6., 14. és 20. időegységben érkeznek! (Feltesszük – bár a valóságban ez nyilván nem teljesül! –, hogy a környezetváltás nem vesz el időt.) Megoldás:
60. ábra Ütemezési stratégiák I.
A körben járó ütemező algoritmushoz a fenti táblázat nem használható, hiszen az egyes folyamatok a futási időszelet leteltével újra sorba állnak – azaz egy folyamat többször is szerepel a táblázatban. Másrészt a folyamatok ismételt belépése miatt fontos az érkezési idő folyamatos vezetése: nem vehetjük fel a táblázatba induláskor az összes folyamatot. Tegyük fel, hogy az egyes folyamatok számára rendelkezésre álló időszelet 4 egység. (Az egyes folyamatok ismétlődő példányait indexeléssel jelezzük.)
84
61. ábra Ütemezési stratégiák II.
Kérdés: ebben az esetben mi lesz a folyamatok végrehajtásának sorrendje? Vizsgálja meg az egyes algoritmusok esetében az átfutási, a várakozási és a válaszidőket is! Hasonlítsa össze az egyes algoritmusok hatékonyságát!
Memóriakezelési módszerek Az előzőekben megismerkedtünk a folyamatok működésének mechanizmusával, többfolyamatos rendszerekben alkalmazott időzítési módszerekkel. Azonban a folyamatok nem kizárólagosan a processzornak kiadott utasításokat jelentik, így a folyamatok működésének pontosabb megismeréséhez elengedhetetlen a memóriakezelés vizsgálata is. Ahogy azt már említettük, a folyamatorientált szemlélet lényege az, hogy az éppen végrehajtás alatt álló tevékenység számára a számítógép úgy jelenik meg, mintha azt kizárólagosan használná, minden erőforrás teljes
85
egészében a rendelkezésére állna. Mind az adatok, mind az utasítások az operatív tárban helyezkednek el (emlékeztető: Neumann-elvek). A valóságban azonban több folyamat végrehajtása zajlik, és minden folyamat saját adatokkal dolgozik – ez pedig több folyamat esetén azt jelentheti, hogy a rendelkezésre álló tényleges (fizikai) memóriánál nagyobb a folyamatok összes memóriaigénye. A megoldás, hogy a (memóriánál lényegesen nagyobb kapacitású) háttértár egy részét az operációs rendszer lefoglalja, és mint a fizikai memória kiegészítését használja. Valóságos tárkezelés: a számítógépben rendelkezésre álló fizikai memórián belüli műveletek. Virtuális memória: a háttértárolón elhelyezkedő, az operatív tárral azonos szerepet betöltő tárolóterület. Mivel a számítógép csak azokkal az adatokkal és utasításokkal képes műveletet végezni, amelyek az operatív tárban találhatók, ezért a virtuális tárkezelés lényege abban áll, hogy csak az éppen feldolgozás alatt álló folyamat adatai és utasításai helyezkednek el az operatív tárban, és a processzor folyamatváltásaihoz hasonlóan ezek az információk is folyamatosan cserélődnek az operatív és a virtuális memória között. Milyen problémákat kell megoldania az operációs rendszernek a tárkezeléssel kapcsolatban? 1. Kernelfolyamatok védelme: mivel a felhasználói folyamatok vezérlésére szolgálnak, a kernelfolyamatok állandóan a memóriában tartózkodnak, biztosítani kell, hogy más folyamatok ne módosíthassák az ezen folyamatok által használt adatokat. (Gondoljunk bele, mi történne, ha egy folyamat megváltoztatná a folyamatleíró blokkokat tároló memóriaterület tartalmát!) 2. Folyamatok védelme egymástól: hasonlóan belátható, hogy az sem szerencsés, ha az egyes folyamatok más folyamatok adatainak vagy utasításainak tárolására szolgáló memóriarészeket képesek módosítani. 3. Egyidejűleg több folyamat az operatív memóriában: a folyamatok gyorsabb végrehajtása érdekében (ha lehetséges) célszerű több folyamatot is az operatív memória (elkülönülő) részeiben tartani – a folyamatváltás ilyenkor csak a következő folyamat által használt memóriatartomány kiválasztását jelenti, nem kell várni a virtuális memóriába történő kiírás-visszaolvasás műveletre. 4. Rendelkezésre álló memóriánál nagyobb memóriaigényű folyamatok kezelése: akár az előbbi esetben is előfordulhat, de önállóan is jelentkezhet az a probléma, hogy a folyamat utasítás- és adatrésze nem fér el a fizikai memóriában – ilyenkor csak egy része kerül az operatív tárba (annyi, amennyi elfér, és az, amelyik éppen a végrehajtás alatt áll), a többi szükség (hivatkozás, amikor rákerül a végrehajtás menete) esetén töltődik be (az immár feleslegessé vált részek helyett).
86
5. Végrehajtás közben kialakuló memóriahivatkozások (címek) kezelése: az előző folyamatos cserélgetésnek viszont az (is lehet) a következménye, hogy előre nem meghatározható, hogy hol vannak a felhasználandó adatok vagy a következő utasítás – milyen módon határozhatjuk meg? Az operatív tár kezelésére szolgáló módszerek: • Rögzített címzés: lényege, hogy az operációs rendszer a memória rögzített (általában legkisebb sorszámú) részén helyezkedik el, a fennmaradó memóriaterület összefüggően áll a folyamatok rendelkezésére. Az operációs rendszer számára fenntartott terület végét egy határregiszter rögzítette, az ellenőrzés mindössze azt jelentette, hogy felhasználói program nem hivatkozhatott ennél a címnél kisebb címre. A programok rögzített címeket használtak (az utasítás vagy az adat a program minden futása során ugyanabban a memóriarekeszben helyezkedett el). • Áthelyezhető címzés: lényege, hogy az operációs rendszer mérete (és így az általa elfoglalt memóriaterület nagysága) nem állandó, így a folyamatok számára rendelkezésre álló memóriaterület kezdőcíme minden futásnál megváltozhatott. Következésképpen a rögzített címzés ennél a módszernél nem alkalmazható, helyette a programok relatív címek alkalmazásával hivatkoznak a tárolt információra: a program kódja nem a keresett adat memóriában elfoglalt helyét (rekeszének sorszámát, memóriacímét) tartalmazza, csupán azt, hogy az adott utasítás vagy adat a program kezdetéhez képest hol helyezkedik el. A program elindulásakor az operációs rendszer meghatározza, hogy a folyamat melyik memóriacímtől kezdődően töltődjön be, és ezt az értéket letárolja egy speciálisan erre a célra kialakított tárolóba, amit bázisregiszternek neveznek. A folyamat végrehajtása során a bázisregiszter értéke + hivatkozási (relatív!) cím képlet alapján kiszámolható a keresett információt tartalmazó memóriarekesz fizikai címe. Átlapoló („overlay”) technika: lényege, hogy a programokat logikai részekre (blokk) osztjuk, és egy időben nem a teljes program, csak a végrehajtás alatt álló kódrészt tartalmazó blokk tartózkodik az operatív memóriában, a többi a virtuálisban. Előnye, hogy lehetőséget biztosít az operatív memória méreténél nagyobb programok futtatására is. Az éppen betöltendő blokk kiválasztásához az operációs rendszer nem nyújt támogatást, ezért az aktuálisan használni kívánt modul kiválasztása a programozó feladata. Ennek érdekében a programoknak van egy vezérlő modulja, ami állandóan a memóriában tartózkodik, és eldönti, hogy mely blokkot kell betölteni.
87
Tárcsere („swapping”): lényege, hogy az egyes folyamatok közti váltáskor a teljes memória kiírásra kerül a háttértárra („swap-file”). Előnye az egyszerűsége, hátránya a nagy mennyiségű adat kiírásáravisszaolvasására fordítandó (a futási időhöz képest) hosszú idő. Optimalizálható, ha csak a legutolsó mentés óta megváltozott memóriaterületeket írjuk ki a cserefájlba, ennek az adminisztrálása viszont lényegesen bonyolultabb. Állandó partíciók: lényege, hogy az operatív memóriát egymástól független részekre osztják (partíció), amelyek mindegyike úgy viselkedik az egyes folyamatok számára, mintha teljes memória lenne. Előnye, hogy egy időben több folyamat is tartózkodhat a memóriában, így a folyamatok közti váltás nem igényel háttértár-műveletet, azaz lényegesen gyorsabb. Hátránya, hogy a partíciók mérete nehezen meghatározható: ha túl kicsi, nem fér el benne a folyamat; ha túl nagy, sok kihasználatlan hely marad az egyes partíciókon belül (amik összességében akár képesek lennének egy újabb folyamat működtetésére) – ezt nevezzük belső elaprózódásnak. A partíciók kezelése során az operációs rendszerre újabb feladatok hárulnak: partíciónként meg kell határozni (és nyilván kell tartani) a partíciók kezdőcímét (bázisregiszter!) és méretét (az optimális kihasználásra törekedve általában különböző méretű partíciókat használnak) és gondoskodni memória hatékony elosztásáról a folyamatok között. Rugalmas partíciók: lényege, hogy a partíciók mérete a folyamatok memória-igényének megfelelően kerül meghatározásra (elvben minden folyamat annyi memóriát foglal le, amennyire szüksége van – a gyakorlatban az egyszerűbb adminisztrálás végett általában nem pontosan ekkora, hanem a legközelebbi 2 hatvány méretű partíciók jönnek létre). Az operációs rendszer nyilvántartja az egyes partíciók foglaltságát, a távozó folyamatok után fennmaradt „lyukakból” választ helyet, ahová az érkező folyamat belefér. Nyilvánvaló, hogy ez a módszer gyakorlatilag kiküszöböli a belső elaprózódást (a partíciók mérete csak alig különbözik a folyamatokétól), viszont előfordulhat, hogy sok kicsi „memórialyuk” keletkezik (ezek a „lyukak” már nem részei semmilyen partíciónak, gyakorlatilag felhasználható memóriaterületek lennének, csak sajnos, nem összefüggőek), ez a külső elaprózódás. Megoldást jelent a széttagozódást csökkentő algoritmusok futtatása, melyek a memóriaterületek átcsoportosításával egymás mellé rendezik a szabad helyeket, ez azonban sebesség-csökkenéssel jár. Lapozás (paging): lényege, hogy a folyamatok által használható memóriaterületnek nem kell összefüggőnek lennie. A memóriát viszonylag kis méretű, azonos nagyságú részekre (lapok) osztva az egyes folyamatok a szabad lapok közül annyit foglalnak le, amennyire szükségük van. Így mind a belső, mind a külső elaprózódás megszüntethető: a belső
88
elég kis – a gyakorlatban 2-4 KB méretű – lapok használatával, a külső a szabad lapoknak a folyamatok közötti igény szerint elosztásával (nem lesznek kihasználhatatlan „lyukak”). Ezzel a megoldással azonban a címzési eljárás tovább bonyolódik: nem elég azt tudni, hogy a folyamat kezdeti címéhez (bázisregiszter) képest mennyivel eltolva található a keresett információ, de azt is tudni kell, hogy ez a cím hányadik logikai lapra mutat, illetve annak a lapnak a fizikai memória mely címtartománya felel meg. A probléma megoldására a laptáblák szolgálnak. Laptábla: a folyamat betöltésekor az operációs rendszer által létrehozott leíró tábla, amely a folyamat logikai lapjainak megfelelő fizikai memóriacímeket tartalmazza. Ezek után a keresett adat címének meghatározása a következőképpen történik: a keresett adat logikai címét 2 részre osztjuk: az első rész megadja a lapszámot, a második rész a lapon belüli eltolás mértékét. A lapszám alapján a laptáblából meghatározható a lap fizikai kezdőcíme, amihez a hagyományos módon hozzáadva a lapon belüli eltolást, meghatározható a keresett memóriarekesz sorszáma. Virtuális memóriakezelés: lényege, hogy a folyamatok számára az operatív memória és a virtuális memória azonos módon használható. A folyamatok ugyan továbbra is csak a valós memóriában működhetnek, de a memóriakezelés szempontjából közömbös, hogy az egyes folyamatok éppen az operatív vagy a virtuális memóriában helyezkednek el. Elve a lapozásos memóriakezelési technikán alapszik, azonban a laptáblában az egyes lapok leírását ki kell egészíteni egy jelzőbittel, amely azt mondja meg, hogy az adott lap az operatív vagy a virtuális memóriában található. Amennyiben olyan lapra érkezik hivatkozás, amely a virtuális memóriában található (ezt nevezik laphibának – ez nem jelent valódi hibát!), akkor az operatív memória valamely lapja kikerül a virtuális memóriába, a virtuális memória hivatkozott lapja pedig betöltődik az operatív tárba. A kérdés csupán az, hogy melyik legyen az a lap, amely kikerül az operatív tárból. Ennek meghatározására szolgálnak a lapcsere-stratégiák: • Optimális stratégia: azt a lapot kell kicserélni, amelyre a legtávolabbi jövőben történik hivatkozás – mivel ez nem dönthető el egy folyamat futása során, ez csak elvi stratégia. • Előbb jött, előbb megy („First In First Out” - FIFO): azt a lapot kell kicserélni, amelyik a legrégebben tartózkodik az operatív tárban. • Legrégebben használt („Last Recently Used” - LRU): azt a lapot kell kicserélni, amelyre a legrégebben történt hivatkozás.
89
• Második esély („Second Chance”): módosított FIFO, csak akkor cseréli ki a legrégebben bent levő lapot, ha a folyamat a legutolsó lapcsere óta nem használta. Ehhez az egyes lapokhoz (a laptáblában) hozzárendelünk egy újabb jelzőbitet, amelyet a lap használatakor (ha hivatkozás történik a lapra) 1-esre állítunk, és ha laphiba esetén ez a lap lenne a kicserélendő, akkor a jelzőbitet 0-ra állítva betesszük a FIFO végére (mintha most töltődött volna be), és megnézzük a következő lapot (amíg olyan lapot nem találunk, amelynek a „használt”bitje 0). • Mostanában használt („Recently Used”): módosított LRU, csak akkor cseréli ki a legrégebben használtat, ha azt a legutolsó lapcsere óta nem használták. Elve az előző módszerhez hasonlóan a lap használatának jelzésén alapszik, laphiba esetén olyan lapot választunk, amelynek „használt”-bitje 0, de lapcserekor minden operatív tárban levő lap jelzőbitjét kinullázzuk (Így előzhető meg, hogy valamely lap „örökké” a memóriában maradjon.) A lapcsere-stratégiák hatékonyságának összehasonlítására tapasztalati illetve statisztikai úton előállított lapigény-sorozatokat (referenciastringek) használnak, ugyanazon a mintasoron vizsgálva az egyes módszerek által okozott laphibák számát. Feladat: adott egy folyamat, amely 6 lapot használ, de az operációs rendszer egyidejűleg 3 lap számára biztosítja az operatív memória használatát (az operatív memóriában az egyes lapok számára rendelkezésre álló helyet keretnek nevezik). A laphibákat ! jelöli.
62. ábra Lapkezelési stratégiák
Kérdés: hasonlítsa össze a kapott eredményeket! Hogyan alakulnának a módosított lapcsere-algoritmusok használata esetén?
90
Összefoglalás Az operációs rendszer felépítésével és működésével kapcsolatos tanulmányaink befejezéseként megismerkedtünk a számítógépben zajló műveletek kezelésének fogalmaival és módszereivel. Minden tevékenység, amit a számítógép végrehajt (legyen ez rendszer szintű szolgáltatás vagy felhasználó által kiadott parancs vagy indított program) folyamatokra bomlik. Ezen folyamatok „versenyeznek” a számítógép erőforrásaiért – de a verseny szabályait és az eredményt az operációs rendszer határozza meg az ütemezési stratégiák segítségével. Láttuk, hogy a számítógép működése során a legkritikusabb erőforrás a memória, és áttekintettük a memória kezelésének alapelveit és a gyakorlatban alkalmazott módszereket.
Ellenőrző kérdések 1. Mi a különbség az algoritmus, a program és a folyamat között? Megoldás 2. Mi a folyamatleíró blokk (PCB) szerepe? Megoldás 3. Milyen rendszerhívás-típusokat különböztetünk meg? Megoldás 4. Ismertesse a rendszerhívások kezelésének menetét! Megoldás 5. Mire szolgálnak az ütemezők? Megoldás 6. Milyen állapotai lehetnek egy folyamatnak? Megoldás 7. Ismertesse egy folyamat végrehajtásának menetét! Megoldás 8. Példán keresztül mutassa be a „legrövidebb fut” (SJF) ütemezési stratégia működését! Megoldás 9. Mi a jelentősége a „virtuális memória” modellnek? Megoldás 10. Hasonlítsa össze a rögzített és az áthelyezhető memóriacímzési módszereket! Megoldás 11. Mi a belső elaprózódás és hogyan lehet kiküszöbölni? Megoldás 12. Milyen lapcsere-stratégiákat ismer? Megoldás
Jegyzet
91
Terminológiai szótár 4GL (4. Generation Language): 4. generációs nyelv. Magas szintű objektumorientált programozási nyelv Adatbusz: a processzor és a számítógép más részei közötti adatforgalom zajlik rajta Adatszerkezet: az adatok tárolásának és feldolgozásának alkalmasan megválasztott módszere. Számos ilyen módszer létezik (pl. tömb, sor, verem, lista, rekord), ezek mind az információ tárolásának módjában, mind a tárolt információra vonatkozó műveletek kezelésében különböznek. Röviden az egyes adatszerkezetek jellemzői: ADPCM: Adaptive Differential (Delta) Pulse Code Modulation, Adaptív Különbségi Impulzuskód Moduláció. Csak a mintavételezés eltéréseit tárolja, így segítségével sokkal nagyobb mennyiségű adatot írhatunk a tárolóra. Alkód: az alkód 8 bitje 8 (P,Q,RSTUVW) alcsatornát jelent. A 98 blokk így összesen 98 bit együttes kódolási lehetőséget jelent. A P jelzi, hogy hol tartunk (bevezetés, zenei sávok között, kivezetés). A Q kódolja a bevezetésben a TOC-t (tartalomjegyzék, sávok kezdete, száma), információt tárolhatunk a sávokról… ASCII (American Standard Code for Information Interchange): alfanumerikus karakterek és vezérlőjelek ábrázolására használható ábécé. Átszövés: az adatokat nem egymás után, hanem egy algoritmus segítségével „összekeverve” írjuk le. Batch: kötegelt feldolgozás. A parancsokat egy kötegben felhasználói beavatkozás nélkül hajtja végre a számítógép. Cache: átmeneti tároló. Cartridge: kis méretű lemezcsomag, kazetta. CD-MO: magneto-optikai lemez, amely a fény mágneses mezőben megváltozó terjedési tulajdonságaira épít. CD írássűrűsége + mágneslemez gyorsasága (törlés…). Többször írható, törölhető… CD-R (Recordable): gyári írható CD. CD-RW: a többször írható lemezek. Cilinder: több lemez egy más feletti sávjai.
92
Címbusz: a processzor arra használja, hogy az adatátvitelhez egy meghatározott tárolócella vagy adatvezeték címét kijelölje CIRC (Cross Interleaved Reed-Solomon Cooding): az audio CD-k kódolása keresztben átszőtt Reed-Solomon kódolás segítségével történik. C-look: lemezek fejmozgási algoritmusa. Closed shop: a gépterem zárva az egyszerű felhasználó előtt, a feladatot operátor segítségével hajtják végre. Compact Flash: kisebb méretű eszközök számára kifejlesztett flash memóriakártya. CPU (Central Processing Unit): központi egység CRC (Chiclic Redundancy Check): ellenőrző eljárás adathibák ciklikus észlelésére, akár bitenként. C-scan (Circular scan – Egyirányú pásztázás): lemezek fejmozgatási algoritmusa. A fejek az utolsó sávra érve visszatérnek az elejére, így mindig csak egy irányban mozognak. DD (Double Density – dupla sávsűrűség DMA (Direct Memory Access): közvetlen memóriahozzáférést jelent a CPU-t (Central Processing Unit, Központi Egység) kikerülve. DOS (Disk Operating System): karakteres felületű egyfelhasználós operációs rendszer DS (Double Side): kétoldalas lemeztípus EBCDIC (External Binary Coded Decimal for Interchange Coding): az ASCII- megelőző kódrendszer. ECC (Error Correction Code): CD lemezek hibajavító kódja. EEPROM (Electrically Eraseable Programable ROM): elektronikusan törölhető memória. EFM (Eight to Fourteen Modulation, 8-14 moduláció): CD-k kódolására használatos. Azért, hogy az egymást követő 1 érték közé legalább két 0, de legfeljebb10 kerüljön minden byte-hoz (8 bit) hozzárendelünk egy 14 bites kódot, amely megfelel ennek a feltételnek (14 biten 267 ilyen van, melyből 256-ot használunk). EPROM (Eraseable Programable ROM): memória.
törölhető,
programozható
93
FAQ (GYIK): Kérdések).
Frequently
Answered
Questions
(Gyakran
Ismételt
FAT (File Allocation Table): táblázat, amely 12 bites tárolás (hajlékonylemez) esetén 212=4096 bejegyzést, 16 bites tárolás esetén, 216=65536 bejegyzést tartalmazhat, amelyek közvetlenül hivatkoznak az adott sorszámú clusterra. FCFS (First Come First Served Sorrendi kiszolgálás): lemezek fejmozgatási algoritmusa. A legegyszerűbb módszer, könnyű kivitelezni. Értelmezése kétféle lehet, azt jelenti, hogy az első felhasználó, aki megkapja a lemezt, addig használja, amíg a fájl hozzáférése befejeződik, vagy az egyes lemezhozzáférések az érkezés sorrendjében vannak kiszolgálva. Fehér Könyv: Video CD szabványa Flash memória: flash memória nem fogyaszt az adatok tárolásához folyamatosan energiát. Floppy Disc (hajlékony lemez ): hasonlóan a mágnesszalaghoz, itt is vékony műanyag hordozóanyagra felvitt mágnesezhető réteg tárolja az adatokat. Manapság szinte kizárólagosan az 1,44 Mbyte kapacitású 3,5” átmérőjű lemezeket használjuk, de említsük meg a régebbi típusokat is. Fluxus: a mágneses fluxus az egységnyi felületen merőlegesen áthaladó indukcuóvonalak száma. FM (frekvenciamoduláció): kódolási módszer. Ha egy szünetet egy impulzus követ, akkor az adatbit 0, ha kettő, akkor az adatbit 1. A frekvenciával (jelek sűrűségével) kódoljuk az adatot. Megfeleltethető a 0.1 RLL kódolásnak. Gráf: véges számú pont (csúcspontok) és az egyes pontok kapcsolatát meghatározó hivatkozások (élek) alkotta halmaz. HD (High Density): nagy sávsűrűség I/O műveletek: input-output (beviteli-kiviteli) műveletek IDE (Integrated Drive Electronics-Integrált Eszköz Elektronika): legtöbbször az ATA (Advanced Technology Attachement) kifejezéssel azonos értelemben használják. A meghajtóra helyezték a vezérlő elektronikát, ezáltal csökken ezek távolsága, nő az adatátviteli sebesség. Inch: hüvelyk (mértékegység). Interaktivitás: a felhasználó beavatkozhat a folyamatokba. Interface: illesztőegység
94
Irányított gráf: a gráf éleinek azonosítására azon csúcsok elnevezéseit használjuk, amelyeket az adott él összeköt: ha az e1 él az i. és j. csúcsok között húzódik, e1(i;j)-vel jelöljük. Ha az i. és j. csúcsot összekötő él esetén különbséget teszünk e1(i;j) és az e2 (j;i) él között (azaz az él megadásakor jelöljük, hogy melyik a csúcsból indul és melyikbe tart), akkor beszélünk irányított gráfról. ISO 9660: CD-szabvány Jukebox: hosszútávú archiválásra alkalmas berendezés. Egy tároló hely és az író/olvasó berendezés között automatikusan mozgatja az adathordozót. CD, DVD, mágnesszalag stb… is lehet az adathordozó. Kék könyv: a CD-Extra szabványa Klaszter (cluster): több szektor. Koherens: két hullám koherens, ha a köztük lévő fáziskülönbség időben állandó. Körmentes: az olyan gráf, melynek bármely két csúcspontja között pontosan egy út (élsorozat) létezik. Lézer: normál fehér fény (napfény) rengeteg összetevőből áll (a szivárvány színei), melyek nem koherensek. A lézerfénynek (Light Amplification by Simulated Emission of Radiation) egy színe (összetevője) van, így fókuszálható, erősíthető. Lista: dinamikus (előre nem ismert elemszámú) adatszerkezet. A lista minden eleme a tárolt információn túl rendelkezik kiegészítő adatokkal a listában elfoglalt helyével kapcsolatban (pl. hivatkozás (mutató) az előző és/vagy következő listaelemre). A tárolt adatok a mutatókon keresztül érhetők el. Look: lemezek fejmozgatási algoritmusa. A look algoritmus ugyanaz, mint a scan vagy a c-scan, de csak a legutolsó szükséges adatig halad egy adott irányba. LS-120 egység: az LS-120 egység egy nagyon jól használható, bár nem túl gyors eszköz. Legnagyobb előnye, hogy minden további nélkül tud kezelni normál 1,44-es floppy-kat. A 120 Mbyte kapacitást a lézervezérlésű technika teszi lehetővé. Merevlemez-csatoló: a merevlemezek használatához szükséges egy olyan áramkör, amely alkalmas az eszköz vezérlésére. Ezeknek többféle típusa létezik, és merevlemez-csatolóknak hívjuk őket. MFM (módosított frekvenciamoduláció): kódolási módszer. Ha szünet után impulzus következik, az jelenti az 1-et. A 0-t pedig, ha nem volt impulzus
95
az előző adatbit végén, akkor az impulzus után egy szünet, vagy, ha az előző adatbit végén impulzus volt, akkor két szünet. Megfeleltethető a 1.3 RLL kódolásnak. MMCD (multimédia CD 7,4 Gbyte): egyoldalas, kétrétegű DVD-hez hasonló tároló. MTBF (Mean Time Between Failure): várható élettartam. Multiprogramozás: az operációs rendszer látszólag egy időben több feladatot hajt végre. Narancssárga Könyv: a CD-MO, CD-R, CD-RW szabványa. NRZI (Non Return to Zero Inverting – Nincs váltás a nullánál): kódolási módszer. Az adatok impulzusok és szünetek segítségével kerülnek rögzítésre. Szalagos tárolóknál használatos az NRZI kódolás. Csak az 1 biteknél van fluxus-váltás. Open shop: a számítástechnika hajnalán a felhasználó rendelkezésére álló gépidő. Operációs rendszer: a számítógépen futó összes folyamat végrehajtását vezérli Paritás: páros vagy páratlan tulajdonság. Paritásbit: olyan redundáns bit, amely kiolvasáskor lehetővé teszi a hibaellenőrzést. Értéke 0 vagy 1, amely attól függ, hogy a bitvektor összege páros vagy páratlan. Paritásdiszk: egy diszket használunk a többiből képzett paritásbit tárolására. PCA (Power Calibration Area, Íróáram Hitelesítő Terület): az írható CD-k bevezetése előtt elhelyezkedő terület. Arra szolgál, hogy több próbaírás után segítségével meghatározzák az optimális írási teljesítményt, amely tárolásra kerül a lemezen. PCM: impulzus-kódmoduláció. PCMCIA-szabvány (Personal Computer Memory Card International Association) Szabványos memóriakártya bővítő és egyéb periféria csatlakozó. Personal Computer (PC): személyi számítógép Pit: nagy teljesítményű lézerrel üveglemez felületébe égetjük az információt, majd vegyszerrel ezeken a helyeken létrehozzuk a „lyukakat”, ezek lesznek a pitek, a többi pedig a land.
96
Plug and play (PnP): „Csatlakoztasd és használd.” A különböző hardver elemek közös nyelven kommunikálnak az operációs rendszerrel PMA (Program Memory Area, Programmemória terület): az írható CD-k bevezetése előtt elhelyezkedő terület. A szekciók lezárásáig tárolja a TOC-ba kerül adatokat. Protokoll: egy adott tevékenység elvégzéséhez szükséges szabályok gyűjteménye. Puffer: átmeneti tároló. RAID (Redundand Array of Independient / Inexpensive Disks ): redundánsan tárolt adatokat tartalmazó, logikailag összefűzött diszktömb. Redundáns: többszörös (tárolás) RLL (Run Lenght Limited): kódolási módszer. A bejövő hét bitkombináció lefedi az összes lehetséges értéket. Minimum kettő és maximum 7 nulla szünet lehet két impulzus között. A minimumot a lemez adatsűrűsége, a maximumot pedig a vezérlő áramkör pontossága korlátozza. RSPC (Reed Solomon Product Code): CD-k, DVD-k kódolására szolgáló módszer. Sárga könyv: CD-ROM szabványa (Compact Disk-Read Only Memory) Sáv (track): koncentrikus kör a lemezoldalon. Scan (pásztázás): lemezek fejmozgatási algoritmusa. A scanning módszer úgy rendezi sorba a kéréseket, hogy a fej mindig egy irányba mozogjon. SCSI (Small Computer System Interface, Gyors Számítógép Interfész): a csatolót merevlemezeken kívül más olyan eszközök is használhatják, melyeket erre felkészítettek (CD, scanner, nyomtató …) A csatlakozás 50 pólusú szalagkábelre felfűzéssel történik. Legfeljebb 7 eszköz kapcsolható így össze. Minden eszköz bemenettel és kimenettel egyaránt rendelkezik. Minden eszközön beállítjuk annak címét, illetve az utolsó eszköz kimenetére lezáró ellenállást kell tenni. Használatához szükséges egy kártya, amely a kommunikációt vezérli. SD (Simple Density): szimpla sávsűrűség SDCD (Super Density CD 10Gbyte): kétoldalas egyrétegű DVD-hez hasonló tároló. Sor: speciális lista, feldolgozása csak az elemek bekerülési (érkezési) sorrendjében (FIFO: First In, First Out) lehetséges (pl. benzinkút).
97
SS (Single Side): egyoldalas lemeztípus SSTF (Shortest Seek Time First - Először a legrövidebb keresési idő): lemezek fejmozgatási algoritmusa. A gyorsabb válasz érdekében sorba rendezzük a kéréseket aszerint, hogy melyik kiszolgálása jár a legkisebb fejmozgással. Steamer: mágnesszalagos adatmentő/visszatöltő háttértár. Szektor (blokk): a sávon belüli körcikk. T: egy bit tárolásához szükséges hossz (vagy idő). TOC (Table of Contents): a CD tartalomjegyzéke, tartalmazza a sávok kezdetét, számát. Tömb: adott (előre ismert) elemszámú, általában azonos típusú adat tárolására alkalmas szerkezet. Az egyes elemekre sorszámukkal (index) hivatkozhatunk. A tömb bármely eleme közvetlenül elérhető (az indexén keresztül), azaz bármelyik elemmel bármikor végezhető művelet. UDF: Universal Disk Format állománykezelő rendszer
egy
optikai
tárolókhoz
kifejlesztett
UDMA (Ultra Direct Memory Access, Közvetlen Memóriahozzáférés): mikor a merevlemezek teljesítménye elérte a 10Mbyte/s-ot, kifejlesztették az UltraDMA/33-as szabványt (1997) amely 33Mbyte/s átviteli sebességű adatáramlást tesz lehetővé az órajel növelése nélkül. Verem: speciális lista, a feldolgozása a bekerüléshez képest fordított sorrendben (LIFO: Last In, First Out) történik. Vezérlőbusz: vezérlőjeleket továbbít Vörös könyv: a CD-DA tulajdonságait tartalmazza.
(Compact
Disc-
Digital
Audio)alapvető
Winchester: az elnevezés egy gyártó céget takar, Magyarországon használatos merevlemezek megjelölésére. ZIP-drive: adattároló eszköz, lényegesen gyorsabb, mint az LS-120 egység Zöld könyv: CD-I szabványa
98
Felhasznált irodalom 1. A.S. Tannenbaum – A.S. Woodhull: Operációs rendszerek. Panem Kft., Budapest, 1999. 2. Bakos Tamás-Zsadányi Pál: Operációs rendszerek I-II. Számalk Kiadó, Budapest, 1992. 3. Computer technika: CD-írók. Népszabadság 2001. június 5. 4. Csépai János: A számítástechnika alapjai. Műszaki Könyvkiadó, Budapest, 1985. 5. Csernyi László: Mikroszámítógépek. LSI Oktatóközpont, Budapest, 1994. 6. Dezsőfi Attila: Tömörítés ’99. Cesare & Cserkő Bt., Budapest, 1999. 7. Dr. Nagy Gábor: Tömörítés 2000. ComputerBooks, Budapest, 2000. 8. Dr. Sára Attila: A digitális számítógépek rendszertechnikai felépítése (egyetemi jegyzet). Tankönyvkiadó, Budapest, 1989. 9. Ila László - Sághi Balázs Panem McGraw-Hill: PC-műhely 1. Panem Kft., Budapest, 1996. 10. Ila László - Sághi Balázs Panem McGraw-Hill: PC-műhely 2. Panem Kft., Budapest, 1996. 11. Kiss Zoltán - Dr. Tamás Péter-Tóth Bertalan - Lebovitsné-Dr. Kálmán Éva: MS-DOS 6. ComputerBooks, Budapest, 1997. 12. Knapp Gábor – Adamis Gusztáv: Operációs rendszerek. LSI Oktatóközpont, Budapest, 1999. 13. Knapp Gábor-Adamis Gusztáv: Operációs rendszerek. Számalk Kiadó, Budapest, 1999. 14. Kovács Magda - Knapp Gábor - Ágoston György - BudaiAttila: Bevezetés a számítástechnikába. LSI Oktatóközpont, Budapest, 1999. 15. Markó Imre: A hardver. LSI Oktatóközpont, Budapest, 1999. 16. SH Atlasz 14: Informatika. Springer Hungária Kiadó, Budapest, 1995.
99
Felhasznált linkek 1. A flash memória http://www.prog.hu/cikkek/hardware/flashmems/flash.htm 2. A Knapp-könyv Internetes változata http://www.gdf-ri.hu/TARGY/OPRENDSZ/index.htm 3. A RAID rendszerekről http://www.cab.u-szeged.hu/local/archi/1998II/h734914/h734914.htm 4. A RAID-technológiáról http://webmester.hu/hirek/cikk.prm?id=22775&mode=print 5. Adatszerkezetek http://www.gtbbp.hu/~szabol/tetelek/programming/a.html 6. Állományszervezési módok http://www.lauder.hu/~nathas/tetelek/szobeli/H13.html 7. Artisjus Magyar Szerzői Jogvédő Iroda Egyesület http://www.artisjus.hu 8. Az operációs rendszer fogalma http://www.lauder.hu/~nathas/tetelek/szobeli/H11.html 9. Az optikai elven működő digitális adathordozókról http://vili.pmmf.hu/diplom/2001/gyoni/fooldal.htm 10. CD-írás Linux alatt http://www.linuxhogyan.hu/howto/translations/hungarian/html_single/CD-WritingHOWTO-hu.html 11. Cikk a direkt CD-ről http://www.comptech.hu/VII16/html/20old.html 12. Cikk a kezelhető lemezméretekről http://www.byte.hu/HTML/proforum/drwatson/fotim3.html 13. DOS-ismertető http://www.csucsposta.hu/dobosl/dos.htm 14. Elektronikus könyvtár http://csdl.cs.tamu.edu 15. Folyamatokhttp://www.lauder.hu/~nathas/tetelek/szobeli/H12.html 16. Informatikai összefoglaló http://miau.gau.hu/szgep/szgep1tj.html 17. Informatikai összefoglaló jegyzetek http://www.brody-ajka.sulinet.hu/_no/informatika.htm 18. Írható CD GYIK http://delfin.klte.hu/~nagysz/cdrgyik/ 19. Írható CD-k (angol) http://www.cdrfaq.org/ 20. Kérdések és válaszok az operációs rendszerekről http://gdf.freeweb.hu/bevszii.htm 21. Kürt Kft. http://www.kurt.hu/kurtolo/ct24.htm 22. Mágnesdob magyar vonatkozású érdekességei http://ujjlenyomat.budapest.hu/mill_fav/janosi.html 23. Memória-kezelési módszerek http://www.lauder.hu/~nathas/tetelek/szobeli/H16.html 100
24. On-line informatikai lexikon (angol) http://webopedia.internet.com/ 25. Operációs rendszer jegyzet http://www.iit.uni-miskolc.hu/~vadasz/GEIAL202/index.html 26. RAID rendszerek – http://www.dat.hu/raid/raid.html 27. SanDisk flash memória http://supergamez.hu/printer.php?cid=13857 28. Számítástechnika-történet http://www.tar.hu/frameset.phtml?path=/klemand/szamtechtort/szamtec htort.htm 29. UNIX áttekintés http://www.csucsposta.hu/dobosl/unix.htm 30. Ütemezési stratégiák http://www.lauder.hu/~nathas/tetelek/szobeli/H15.html 31. Winchester kézikönyv http://blue-byte.hu/info/hdd/info/winchester.htm
101
Ajánlott irodalom 1. Ila László - Sághi Balázs Panem McGraw - Hill: PC-műhely 2. Panem Kft., Budapest, 1999. 2. Knapp Gábor - Adamis Gusztáv: Operációs rendszerek. LSI Oktatóközpont, Budapest, 1999. 3. Markó Imre: A hardver. LSI Oktatóközpont, Budapest, 1999.
102
Ajánlott linkek 1. A Knapp-könyv internetes változata http://www.gdf-ri.hu/TARGY/OPRENDSZ/index.htm 2. Adatszerkezetek http://www.gtbbp.hu/~szabol/tetelek/programming/a.html 3. Állománykezelési bemutató http://www.banki.hu/szervezeti_egysegek/cra/education/OPRENDSZEREK/oprea7/in dex.htm
4. Állományszervezési módok http://www.lauder.hu/~nathas/tetelek/szobeli/H13.html 5. ARTISJUS Magyar Szerzői Jogvédő Iroda Egyesület http://www.artisjus.hu 6. Az operációs rendszer fogalma http://www.lauder.hu/~nathas/tetelek/szobeli/H11.html 7. Cikk a direkt CD-ről http://www.comptech.hu/VII16/html/20old.html 8. Cikk a kezelhető lemezméretekről http://www.byte.hu/HTML/proforum/drwatson/fotim3.html 9. DOS ismertető http://www.csucsposta.hu/dobosl/dos.htm 10. Folyamatokhttp://www.lauder.hu/~nathas/tetelek/szobeli/H12.html 11. Informatikai összefoglaló http://miau.gau.hu/szgep/szgep1tj.html 12. Informatikai összefoglaló jegyzetek http://www.brody-ajka.sulinet.hu/_no/informatika.htm 13. Írható CD GYIK http://delfin.klte.hu/~nagysz/cdrgyik/ 14. Írható CD-k (angol) http://www.cdrfaq.org/ 15. Kürt Kft http://www.kurt.hu/kurtolo/ct24.htm 16. Mágnesdob magyar vonatkozású érdekességei http://ujjlenyomat.budapest.hu/mill_fav/janosi.html 17. Memória-kezelési módszerek http://www.lauder.hu/~nathas/tetelek/szobeli/H16.html 18. On-line informatikai lexikon (angol) http://webopedia.internet.com/ 19. Operációs rendszer jegyzet http://www.iit.uni-miskolc.hu/~vadasz/GEIAL202/index.html 20. Számítástechnika-történeti könyv http://www.tar.hu/frameset.phtml?path=/klemand/szamtechtort/szamtec htort.htm 21. UNIX áttekintés http://www.csucsposta.hu/dobosl/unix.htm 22. Ütemezési stratégiák http://www.lauder.hu/~nathas/tetelek/szobeli/H15.html 23. Valdemar Poulsen életrajza (angol) http://www.amps.net/newsleter/Issue27/27_poulsen.htm 103
Jegyzet