Tartalmi kivonat
1. A processzor felépítése Utasítások szerkezete, címzési módok Utasításszámláló és utasításregiszter Az utasítás feldplgozás elemi lépései A mikroprocesszor olyan nagy banyolultságú eszköz, ami a számítógép központi egységének feladatait látja el, dekódolja és végrehajtja az utasításokat, vezérli a műveletek elvégzéséhez szükséges belső adatforgalmat és a csatlakozó perifériális berendezések működését. A mikroprocesszornak három alapvető funkcionális blokkjuk van: • regiszterek • az aritmetikai logikai egység • vezérlőegység ezeket egy belső buszrendszer köti össze A CPU általában több gyors működésű tárolót, regisztert tartalmaz a memóriából jövő adatok tárolására. Ezek gyors írható-olvasható tárak. Egy regiszter tárolókapacitása többnyire egy szó A regiszterek egy része szigórúan meghatározott feladatokhoz van rendelve, a felhasználói programok nem használhatják. Ezek a
rendszerregiszterek . Ezek mellett még általános célú regszterek is vannak adatárolási, címzési, indexelési célra. Ezeket a a felhasználói programok is látják Az utasítás készletben különböző típusú gépi utasítások lehetnek, ezek felépítésükben is eltérheznek.az utasítás szerkezete határozza meg a CPU számára, hogy a gépi utasítás mely részét hogyan kell értelmezni. Műveleti rész • • • Módosító rész címrész A műveleti rész az elvégzendő feladatot határozza meg pl. összeadás stb A címrész a műveleti végrehajtáshoz szükséges adatok helyét határozza meg. A módosító rész esetenként a műveleti rész illetve a címzés értelmezéséhez ad kiegészítő információkat. A gépi utasítások abban is különböznek egymástól, hogy az adatokra való hivatkozást milyen formában tartalmazzák. Ezeket összefoglaló néven címzési módszereknek nevezzük Mivel az utasítások címrésze nem a műveletben
résztvevő adatok pontos rekeszsorszámát az úgynevezett abszolút címét tartalmazzák, ezért a processzornak a címzési eljárásra utaló kiegészítő adatok alapján ki kell számítania. • Az abszolút címzés Az abszolút címzés esetében az utasítás címrésze, a műveletben szereplő operanduszok valódi címét az az a memóriarekesz sorszámát tartalmazza. A regiszterek abszolút címzését gyakran alkalmazzuk, az abszolút memóriacímzést viszont csak ritkán, mivel a programokat nem mindig azonos memóriacímre töltjük be, így a programutasításokban megcímzett adatok fizikai helye is megváltozik. • Relatív címzés: relatív címzés esetében a gépi utasítás címrésze az adatnak valamely alapcíméhez vagy báziscímhez viszonyított relatív címet tartalmazza. Ekkor a tényleges fizikai rekeszcímet a báziscím és a relatív cím összeadásával kapjuk. Az aalapcím lehet: ◦ egy kijelölt regiszterben, amit bázisregiszternek
nevezünk. ◦ A program kezdetének a címe ◦ az éppen végrehajtott utasítás ( ekkor a báziscímet az utasításregiszter tartalmazza ) Elmondható, hogy a relatív címzést alkalmazzuk akkor, ha biztosítani szeretnénk, hogy a programjaink tetszőleges memóriacímre betöltve is működjenek. Ekkor a bázisregiszterbe a program betöltésének kezdőcíme kerül. • Közvetlen adatcímzés: ( értékadó címzés, álcímzés, literálcímzés) A lényege, hogy ebben az esetben az utasításban maga az az elem található meg. Amellyel a műveletet végre kell hajtani. • Veremcímzés: A verem ( stack ), vagy egy regiszter a CPU-ban, vagy egy kijelölt memóriaterület a főtárban, melyből az utoljára beírt adatokat lehet először kiolvasni. LIFO (LAST IN TIME FIRST OUT ) szervezésűnek nevezzük. A verem egyik legfontosabb alkalmazása a CPU állapotának elmentése ( az állapot és az utasításszámláló regiszter tartalma ) ha egy program végrehajtását
átmenetileg fel kell függeszteni. Utasításregiszter: ( Instroduction Register = IR ) Az utasítások kezeléséhez szüksége van a CPU-nak az utasításregiszterre, amelyben a program aktuálisan végrehajtott utasítását átmenetileg tárolja. Utasításszámláló regiszter: ( Program Counter = PC ) A soron következő utasítás címét tárolja, tartalmát a program maga is módosíthatja. ( pl a program által végrehajtott elágazási utasítások esetén. ) A program az utasításkódok címeinek sorrendjében hajtódik végre. Az utasításszámláló által címzett első memóriarekesz elérésekor kihozunk a memóriából egy utasítást, melynek következtében az utasításszámláló tartalma a kihozott utasítás hosszával megnő, és így a memóriának most azt a rekeszét címzi, ahol a program szerinti következő utasításkód található. Az utasítás feldolgozás elemi lépései: 1. Az utasításszámlálóban található cím bekerül a memória
címregiszterbe Ez alapján kiolvassuk a memóriából az összeadó utasítás gépi kódját, ez a pufferelésre kerül a memória adatregiszterben. Innen a következő ütemben átkerül az utasítás regiszterbe. 2. Az utasításszámláló regiszter tartalmát megnöveljük a kiolvasott utasítás hosszával ( így ez most a következő végrehajtandó utasításra mutat ). 3. A CPU értelmezi az utasításregiszterben található utasítás kódját, megállapítja, hogy az összeadás műveletét kell végrehajtani. 4. A CPU az utasításregiszterben található címek alapján meghatározza az első összeadandó címet a memóriában, és ezt beírja a memória-címregiszterbe. 5. A CPU kiolvassa az első összeadandó értéket a memóriából, ez bekerül a memória-adatregiszterbe, majd onnan az akkumulátorba. 6. A CPU az utasításregiszterben található címek alapján meghatározza a második összedó címet a memóriában, és ezt beírja a memória-címregiszterbe.
7. A CPU kiolvassa a második összeadandót a memóriából, és ez bekerül a memória-címregiszterbe 8. A CPU műveletvégző egységében ( aritmetikai és logikai egységben – ALU ) megtörténik az összeadás és ennek eredménye képződik az akkumulátorban. 9. A művelet eredménye visszaírásra kerül a memóriába, az első összeadandó címének megfelelő helyre. ( Az első összeadandó címe átkerül a memória címregiszterbe, az eredmény a memóriaadatregiszterbe és innen kerül beírásra a memóriába ) 2. A verem fogalma és működése, a veremmutató regiszter A vermet kezelő utasítások A verem alkalmazása szubrutinok kezelésében. A szubrutinra vonatkozó utasítások A verem ( stack ), vagy egy regisztertár a CPU-ban, vagy egy kijelölt terület a főtárban, melyből az utoljára beírt adatokat lehet először kiolvasni. Az adatforgalom a bemeneti sorrenddel ellenkező kimeneti sorrendű, így például az először beírt adatokat lehet
majd utoljára kiolvasni a veremből. Az a verem legegyszerűbb megvalósítása, amikor a főtár egy részét tartalékolják veremműveletek-re. A verem megcímzése ekkor egy regiszterrel történik, ezt nevezik veremmutatónak ( STACK POINTER ) Veremtár műveletek: • Írás a verem felső részébe, ezt nevezik adatbevitelnek, vagy PUSH-nak az adatbevitel művelete azt eredményezi, hogy az akkumulátorban ( vagy más néven CPU regiszterben ) lévő adatokat beírják abba a memóriarekeszbe, amelyet a veremmutató címez meg. Ezt kővetően a veremmutató tartalma megnő ( inkrementálódik ), hogy megcímezze a következő üres tárolóterületet a verem felső részén. • olvasás a verem felső részéből, ezt nevezik „POP”-nak, vagy adatkihozatalnak. Először a veremmutató tartalmát eggyel csökkentik, hogy az a verembe utolsónak beírt adatot megcímezze, azután a veremmutató által megcímzett rekesz tartalmát továbbítják az akkumulátorba vagy más
CPU regiszterbe. Kaszkád verem: Ennél a megoldásnál a verem a CPU-ban van és korlátozott számú regiszterből áll. Itt nincs szükség veremmutató regiszterre, mivel minden esetben a legfelső részbe írják vagy onnan olvassák az adatokat. Szubrutinok: A legtöbb programban vannak olyan gyakran alkalmazott utasítás-sorozatok, amelyeket többször felhasználhatunk a program végrehajtása során, de csak egyszer tárolunk a programmemóriában. Ezeket nevezzük szubrutinnak. A vermet kezelő assembly utasítások: PUSH op a 2 byte-os operandust a stack-be írja, (az SP értéke 2-vel csökken) PUSHF a STATUS stack-be íródik. Ez az utasítás a flag-ek mentésére szolgál POP op a 2 byte-os operandus felülíródik a stack tetején lévı (WORD) szóval,az SP által címzett szó átmásolódik, majd az SP 2-vel megnő. POPF a stack tetején lévı szó felülírja a STATUS-t. Ezzel az utasítással tudjuk a flag-ek tartalmát helyreállítani Ezek az utasítások fő
haszna az, hogy a szubrutinok az általuk használt regisztereket elmenthetik, majd futásuk befejezésekor visszaállíthatják anélkül, hogy erre statikus memóriaterületet kellene igénybe vennünk. Figyelni kell a visszaállítás sorrendjére (fordított) is. Minden PUSH-nak kell lennie egy POP párjának is mert különben hibásan dolgozhat a program. Ha például egy szubrutint hívunk és utána PUSH nélkül hívunk meg egy POP-ot akkor a szubrutinhívás helyett egy ugró utasítás lesz. (Elveszik a visszatérési cím) Szubrutin: Olyan programrész amelyek a feladatban többször előforduló, ismétlődő folyamatokat takar (alprogram). Ilyenkor ezt csak egyszer írja meg az ember úgy, hogy bárhonnan elérhető és ha szükséges megfelelően paraméterezhető legyen. Olyan utasítások sorozata, melyet a program több részéről elérhetünk, és csak egyszer kerül tárolásra. Tehát az utasítássorozatok redundanciájának feloldását oldja meg. A hívás
visszatérési címe a veremben tárolódik Ez alkalmat ad az úgynevezett rekurzív szubrutinok alkalmazására, melyek önmagukat gívják meg. Ez a módszer a bonyolultabb (matematikai-rendezési) problémák feloldását segíti elı. Mivel a lokális változók is a veremben kapnak helyet, ezért tud „elszállni” a program, ha a lokális változókat felülírjuk, hiszen ilyenkor felülíródhat a visszatérési cím is, így visszatéréskor máshova ugrik a vezérlés Szubrutinhívási és visszatérő utasítások CALL op Az IP pillanatnyi értéke a (s soron következő utasítás virtuális címe) a stack-re kerül, majd IP (Instruction Pointer) utasításszámláló felülíródik az “op”-al, mely lehet direkt cím vagy tetszőleges címzési móddal elért regiszter- vagy memória operandus. Lehet rövid (szegmensen belüli) vagy hosszú (szegmensközi) szubrutinhívás. RET [konstans] Konstans megadása nélkül: A stack tetején lévő értékkel felülírja az IP
(utasításszámlálót) és így a program visszatér a szubrutin hívása utáni sorra és onnan fut tovább a program. Konstans megadásával: ugyanúgy működik mint a RET de a visszatérési cím kiolvasása után az SP-t a konstans értékével megnöveli. Ezzel a módszerrel lehet a szubrutinnak paramétereket átadni és a szubrutin végrehajtása után a paramétereket a parancs automatikusan kiveszi a stack-ből. (Így működik a C nyelv függvény paraméterátadása). A szubrutin meghívása előtt az átadni kívánt paramétereket lementi a verembe és meghívja a szubrutint. A szubrutin végrehajtása után a visszatéréskor a program az átadott paramétereket is kiveszi a veremből. Egyes megszakítások is ide sorolhatók mivel a megszakítás végrehajtása után a rendszer onnan folytatja a program végrehajtását ahol a megszakítás történt. A különbség az, hogy a szubrutinhívást a programozó előre betervezte, a megszakítás hívása nem előre
tervezett, hanem valamilyen esemény bekövetkeztének a hatására jön létre. 3. A Neumann- elvek Utasítás- és adatfolyam (SISD, SIMD, MISD és MIMD architektúrák) Adatok számítógépes ábrázolása (fixpontos, lebegőpontos, BCD, vektoros adatok, karakterek). A Neumann elvek: • a tárolt program elve: az elvégzendő műveleteket be kell vinni a gép tárolójába, azután a gép vezérlését át kell adni ennek a műveletsorozatnak, azaz a programnak. Ezt követően már a program irányítja a gépet. 1. adatbeolvasás 2. műveletek elvégzése, részeredmények tárolása 3. végeredmény kijelzés • a címezhetőség elve: az utasítások és az adatok ugyanolyan módon megcímzett (címmel sorszámmal ellátott) memóriarekeszekben helyezkednek el, azaz nincs külön hely az utasításokank és az adatoknak. A tárolt programokkal működő számítógép elvi felépítése : ◦ az adatok bevitelére és megjelenítésére önálló egységek szolgálnak ◦
vezérlőegység megléte ami a tárolt program alapján vezérli a gép működését ◦ egy önálló műveletvégző egység amely képes az összes aritmetikai és matematikai logikai művelet elvégzésére. ◦ A gép rendelkezik egy belső tárolóval, ahol az aktuális programok és adatok tárolhatóak ◦ bináris (kettes számrendszer ) alkalmazásával való adat és utasítás leírás, tárolás • a soros utasítás-végrehajtás elve: ez azt jelenti, hogy a számítógép az utasításokat szigorúan egymás után hajtja végre (control flow). Ettől eltérés csak egy állapotjelző tartalmának vizsgálta alapján lehetséges, de ez csak azt jelenti, hogy a műveletsor hajtódik végre, hiszen az utasításfolyam egy másik ponton folytatódik. Természetesen a soros utasítás végrehajtás lassúbb mint a párhuzamos, de a jóval kevesebb eszköz kell hozzá, és az elektronikai eszközök gyorsasága kompenzálja ezt a hátrányt. • • Utasításfolyam: az
utasítások egymás utáni sorozata, amelyeket egy program lefutása során hajt végre a számítógép. (az utasításfolyam nem azonos a programutasítások sorozatával pl a ciklusok utasításai a programban csak egyszer szerepelnek, az utasításfolyamban viszont annyiszor ahányszor azokat a számítógép végrehajtja). Adatfolyam: az utasításfolyam utasításai mindig meghatározott adatokra hivatkoznak, amelyekkel a műveleteket el kell végezni. Ezek egymásutániságát, amilyen sorrendben rendelkezésre kell állniuk, nevezzük adatfolyamnak. A SISD (Single Instruction Stream Single Data Srteam) típusú számítógép egyetlen utasításfolyammal egyetlen adatfolyamot dolgoz fel, amint azt az alábbi ábra mutatja: Pl. Neumann elvű gépek, a PC-k központi feldolgozó egysége (CPU) a Pentium MMX-ig A SIMD (Single Istruction Stream Multiple Data Stream) típusú számítógép egyetlen utasításfolyammal többszörös adatfolyamot dolgoz fel: Ezek a
számítógépek több párhuzamos, egyidejű működésre képes műveletvégző egységet (ALU) tartalmaznak. Vektorműveleteket képesek végrehajtani, gépi utasítás szinten (pl Pentium III CPU 3D grafikus utasításai). Két alaptípusuk van: • a közös tárolójú (Shared Memory) gépek, és • az osztott tárolóval (Distrubuted Memory) rendelkező gépek. A MISD (Multiple Instruction Stream Single Data Stream) típusú számítógép több utasításfolyammal egyetlen adatfolyamot dolgoz fel: A Gyakorlatban ilyen gépek nem léteznek. De ide sorolhatjuk a pipeline (futószalag) szervezésű processzorokat, illetve a hibatűrő architektúrákat, amelyek többszörösen végzik el a műveleteket azonos adatokon és az eredményeket hibavédelmi célból összehasonlítják. A MIMD (Multiple Instruction Stream Multiole Data Stream) számítógépek több utasításfolyammal több adatfolyamot dolgoznak fel: Ebbe a kategóriába tartoznak a multiprocesszoros
számítógépek (több vezérlőegységgel) ás a nem hagyományos, soros utasítás végrehajtás elvén működő számítógépek (adatvezérelt számítógépek, neutrális hálók). Adatok számítógépes ábrázolása: Fixpontos számábrázolás: ebben az ábrázolási formában a bináris pont helye (ami a bal oldalon található egészeket elválasztja a jobb oldalon lévő törtektől) rögzített, és a számokat többnyire kettes komplemens kódban ábrázolják. A felhasználás szempontjából két fontos jellemző van: az ábrázolandó számok pontossága és ezek nagysága. E két jellemző az alkalmazott regisztermérettől és a bináris pont helyétől függ, ha a bináris pont a regiszter bal szélén van, akkor a szám fixpontos tört, ha a regiszter jobb szélén van, akkor fixpontos egész. Nem minden szám ábrázolható egy adott regiszterméret mellett. Lebegőpontos számok: hasonló a hagyományos decimális ábrázoláshoz az általános formátum
±f x 2e , ahol f egy bináris tört, a mantissza vagy törtrész, az e pedig a 2 hatványkitevője, exponense. Három mező alkot egy lebegőpontos számot: az előjel, az exponens és a mantissza. Tehát a lebegőpontos számok számítógépes ábrázolása során 2 fixpontos számot, a mantisszát és az exponenst kell együtt kezelnünk. A lebegőpontos számok pontos tárolási formátumát pontosságuk határozza meg. Leggyakrabban az egyszeres, dupla és bővített (kiterjesztett) pontosságú lebegőpontos számokat használjuk. BCD: kódolás decimális számjegyek olyan bináris ábrázolási módszere, ahol minden decimális számjegyet helyi értékenként 4 bittel ábrázolnak. Másként: a 0-9 számjegyeket 2-es számrendszerben fejezik ki, mindegyikben 4 helyi értéket véve. A BCD számok előjelének jelzésére speciális, úgynevezett vezérlőszó szükséges. Aritmetikai műveletek esetén speciális szabályokat kell alkalmazni, ennek lényege, hogy az egyes
számjegyeknek megfelelő 4-bites egységeket összeadjuk vagy kivonjuk a 2-es számrendszer szabályai szerint de az átviteleket a 10-es számrendszer szabályai szerint kell képezni, a 4 bites egységek között. Karakterek kódolása: a számítógépben szöveg és más, nem szám jellegű adat kezelésére binárisan kódolt karaktereket alkalmazunk. Ehhez szükség van 26 kisbetű, 26 nagybetű, kb 25 speciális jel, valamint 10 decimális karakterkészletre. Ez hozzávetőleg 87 karaktert jelent, ennek ábrázolásához 7 bináris digit szükséges (27 = 128). A számítógépekben általánosan ASCII kódot (Amerikan Standart Code for Information Interchange) alkalmazunk az adatok ábrázolására. Az ASCII kódnál egy jelkombináció 8 bitből (bájtból) áll 7 bit + 1 paritásbit. (A paritásbit a karakterkódot ellenőrző, hibajelző bitje) 4. Az utasítás feldolgozás gyorsítása párhuzamosítással A pipelinig lényege, szuperskalár processzorok. Felépő
problémák és kezelésük Pipelining A számítógép fejlődéstörténetének meghatározó jellegzetessége az utasítás-végrehajtás gyorsítására való igény. Ez megoldható a gép működését meghatározó órajelfrekvencia növelésével, ennek viszont technológia korlátai vannak. Ezért kerültek előtérbe azok a módszerek, melyek a számítógép gyorsabb művelet-végrehajtását rendszertechnikai eszközökkel biztosítják. Ennek egyik legfontosabb módszere az utasítás végrehajtás szintjén az átlapolt feldolgozás, melyet pipeliningnek nevezünk. A pipelining átlapolt utasítás-végrehajtást, csővonal vagy futószalag feldolgozásnak tekinthetjük A gépi utasítások elemi lépései (előkészítés, dekódolás, operandusok címszámítása stb.) különböző hardver erőforrásokat igényelnek. Ezért ha egy utasításban egy elemi lépést végrehajtottunk és az ehhez szükséges hardver elem felszabadul, akkor azt igénybe vehetjük egy
következő utasítás elemi lépésének végrehajtására. Másként fogalmazva, egy utasítást, fázisokra bonthatunk, így egy időben, több utasítás különböző fázisai egymással párhuzamban hajthatók végre azonos órajelciklusban. A pipeline alapgondolata tehát a párhuzamosítás, annak kihasználása, hogy az utasítás feldolgozás különböző fázisait autonóm és párhuzamosan működő hardver alrendszerek hajthatják végre. Ezek utasításszinten párhuzamos működésű CPU-k, amiket ILP processzoroknak nevezünk. Szuperskalár processzorok A több végrehajtó egység párhuzamos működésével történő gyorsításnak két alapgondolata van: a műveletvégző egységek számának növelése a processzoron belül és kívül. A párhuzamosítás nem csak úgy hajtható végre, hogy a gép utasításokon belüli elemi lépéseket végrehajtó hardver egységek átlapolva működnek, hanem a végrehajtó hardver egységeket is lehet még többszörözni.
Pl. Pentium CPU, mely két fixpontos, és egy lebegőpontos művelet végrehajtó egységet tartalmaz Ezeket szuperskalár processzoroknak nevezzük, ha egy gépi ciklus esetenként több utasítást is képesek végrehajtani. Ennek természetesen alapfeltétele, hogy a CPU a műveletvégző egységhez vezető, párhuzamos működésre képes belső buszokkal rendelkezzen. Fellépő problémák és kezelésük: A Pipelining szervezésében megoldandó problémák a következők: • • • • • az utasítások elmei fázisainak megoldásához szükséges idő nagyon eltérő lehet. az utasítás soros végrehajtását a vezérlésátadó utasítások megzavarhatják. a megszakítások, kivételek kezelése is megszakíthatja a futószalag folyamatos feltöltését. hardver erőforrások igénybevétele során is előfordulhatnak ütközések pl. buszkonfliktusok „hazard” adatütközés amikor egy utasítás az őt megelőző utasítás eredményeire hivatkozik, de az még nem
készült el. A bemutatott problémákat vagy sztatikusan, a program fordítása során vagy dinamikusan, azaz futás közben a hardverrel tudjuk kezelni. • Nop (NOP = NO OPERATION) utasítások beiktatása a forditóprogramba: a memóriautasítások olvasásához szükséges többlet-időigény és a hazardok miatti utasításvárakoztatás „üres” utasítások beiktatásával oldható meg. • Utasítás átrendezés: a fordítóprogram a program tartalmi megváltoztatása nélkül átrendezi az utasítássorrendet és a memóriautasítások és a hazardok kezelése miatti várakozási időket hasznos utasításokkal tölti ki. Scoreboarding: minden regiszter könyvelésre kerül, hogy azok az utasítások, melyek egy adott regiszterre hivatkoznak benne vannak-e a pipelinban. Ha egy másik utasítás egy ilyen regiszterhez akar hozzáférni, akkor az késleltetésre kerül. • Data forwarding: ha két egymást követő utasítás számára azonos adat szükséges, akkor
az ezek közötti adatátadást CPU-n belüli áramkörök biztosítják. • Harvard architektúra: ha az adatokat és utasításokat fizikailag különálló memóriában tároljuk (pl. L1 szintű különálló adat és utasítás cache) • Vezérlésátadó utasítások kezelése: a legegyszerűbb a pipeline leállítása vagy törlése. Ennél hatékonyabb megoldás jelent a vezérlésátadás kezelésére, a spekulatív elágazásfeldolgozás. 1. Statikus esetben a fordítóprogram értékeli ki az ugrási feltételeket és meghatározza a legnagyobb valószínűséggel előforduló ugrási címeket és ennek megfelelően szervezi a pipeline-t. 2. Dinamikus esetben a program futása közben a processzor egy táblázatban vezeti az ugróutasítások címeit és ezek kimenetét, és ezt felhasználva próbálja megjósolni az elágazások lehetséges kimenetelét. • A szuperskalár processzorok esetében több speciális feladatot is meg kellett oldani, melyekkel a skalár
processzoroknál még nem találkozhattunk. • • • A párhuzamos dekódolás, elődekódolás: - mivel egy ciklus alatt több utasítást képesek végrehajtani, ilyen ütemben kell továbbítani a dekódolt utasításokat is, ezért párhuzamos utasításdekódolásra is szükség van. a szuperskalár utasításkibocsátás: - utasítás várakoztatás, regiszterátnevezés, spekulatív elágazáskezelés. - változó hosszúságú utasítások és többfajta memóriautasítás kezelés párhuzamos utasítás végrehajtás: - figyelembe kellett venni, hogy az utasítások más sorrendben fejeződhetnek be mint skalár CPU-k esetében. 5. Az aritmetikai logikai egység és regiszterei (akkumulátor, flag) Fixpontos és lebegőpontos műveletek, ezek végrehajtásának egységei. Logikai műveletek Az aritmetikai logikai egység (ALU) a CPU- n belül a számítási és logikai műveleteket végzi el. Alkalmas: • bináris összeadásra, • Bool-algebrai (logikai) műveletek
elvégzésére, • komplemensképzésre, • bitsorozatok léptetésére (bitenként jobbra, balra). Minden más aritmetikai és logikai művelet (pl. lebegőpontos számokkal végzett műveletek), amelyek elvégzése a CPU feladata, felbontható a fenti alapműveletekre. Ennek megfelelően az ALU fixpontos bináris összeadókból, komplementálókból, léptető regiszterekből és a logikai műveleteket végző részből áll. A legtöbb ALU a következő utasításokból áll: 1.Egész számú aritmetikai utasítások (összeadás, kivonás, és néha a szorzás és osztás, habár ezek sokkal költségesebbek) 2. Egyszerű logikai utasítások (ÉS, NEM, VAGY, KIZÁRÓ VAGY) 3. Bitmozgató utasítások (balra vagy jobbra mozgatnak, vagy elforgatnak szavakat speciális bitszámmal, előjellel, vagy előjel nélkül. Ezek a mozgatások képesek értelmezni a 2-vel való szorzást és osztást is) Akkumulátor: Az akkumulátor a számítógép megkülönböztetett számítási
regisztere, a műveletek operandusai, másként a műveletekben résztvevő mennyiségeket, illetve ezek eredményeit ebben a regiszterben tároljuk, ez CPU-n belül található. A műveleteket a CPU tulajdonképpen az akkumulátorban tárolt adatokon, vagyis ennek tartalmával/tartalmán végzi. Mivel itt több adat helyezhető el mint amennyire a program futásának egységnyi ideje alatt szükség lehet, gyorsabb hozzáférési időket tesz lehetővé, mintha a memóriából közvetlen hoznánk a soron következő utasítások adatait, hozzávetőlegesen az elérés ideje kb. annyi amennyi idő alatt a fény 10-30 cm távolságot tesz meg. Flag (jelzőbit): Az állapotinformációval a gép pillanatnyi állapotát jellemezzük. Ezeket az állapotokat egy regiszter bitjeinek 0-ra vagy 1-re állításával kódoljuk. Az állapotbitek értéke általában feltételes elágazó utasításokkal kérdezhető le és ettől függően változtatható meg az utasítás sorrendje A jelzőbit
olyan állapotinformáció, mely egy rendszer működési módjáról, működési feltételeiről vagy a működés közben előálló állapotokról (pl. eredmény=0, kivitel/bevitel, műveletek eredményes vagy eredménytelen végrehajtása stb.) ad felvilágosítást Különbséget tehetünk hardver vagy szoftver úton megvalósított jelzőbitek között. A jelzőbitek beállíthatók, lekérdezhetők, illetve módosíthatók. 6. A vezérlőegység feladata és jelei, vezérlési pontok Huzalozott és mikroprogranozott műveleti vezérlés. CISC és RISC processzorok Vezérlőegység feladata: A vezérlőegység (Control Unit = CU) a CPU-n belül értelmezi az utasításokat és végrehajtásuk céljából összehangoltan vezérli a számítógép többi egységének működését, tekintettel arra, hogy az események a programnak megfelelően helyes sorrendben és időben. Biztosítja, hogy a szükséges adatok a megfelelő időpontban és helyen rendelkezésre álljanak,
vezérli az áramkörök működését, kiolvassa annak a memóriarekesznek a tartalmát amely a soron következő utasítást tárolja. Az utasítás címrésze alapján értelmezi, hogy milyen címen találhatók a műveletben résztvevő adatok, vezérli ezek kiolvasását, és a megfelelő regiszterbe történő továbbítását. Az ALU-val végrehajtatja a megfelelő műveletet, biztosítja az eredmény megőrzését és beállítja az utasításszámláló új tartalmát. Vezérlőegység jelei és vezérlési pontok: A vezérlőegység működése során vezérlőjeleket ad ki a teljes számítógép irányítására. Ezek lehetnek: • a processzor belső vezérlőjelei, melyek a processzoron belüli részegységek működését irányítják például az aritmetikai egység és a processzor regiszterei közti adatátvitel. • A processzoron kívüli egységek irányítását szolgáló külső vezérlőjelek, melyek a CPU és a memória a CPU és az input/output eszközök
közötti adatátvitelt, illetve a megszakításkezelést és a sínvezérlést irányítják. Huzalozott és mikroprogramozott műveleti vezérlés: huzalozott módon azaz hardver áramkörökkel, melyek a processzorba építve irányítják a műveletvégrehajtás elemi lépéseit. Ez kombinációs és sorrendi áramkörökkel valósítható meg Ezek legtöbbször úgynevezett programozható áramkörök. • Mikroprogramozott módon, mely esetben az utasítás-végrehajtás elemi lépéseit egy mikroprogram vezérli (ez általában a firmware ROM tárolójában található). Ebben az esetben a gépi kódú utasítás műveleti jelrésze dekódoláskor egy mikroprogram lefutását kezdeményezi, mely a mikroprogram tárolóban található. Ennek a mikroprogramnak az utasításai sorban végrehajtva történik meg az utasítás elemi lépéseinek a vezérlése. E azt jelenti, hogy a művelet-végrehajtás elemi lépéseit egy mikroprogram vezérlőegység irányítja a tárolt
mikroprogram alapján. Egy számítógép működik a számítógépen belül • Ebben az esetben viszont szükséges egy mikroprogram tároló és mikropogram regiszter. Horizontális és vertikális mikroprogramozás: • • horizontális mikroprogramozás egy vezérlési mezőt és a következő mikroutasítás címét tartalmazza (ha van ilyen) ezek az áramköri megoldások programozható logikával rendelkeznek, amik működését a vezérlő bitekkel meghatározhatjuk (ÉS ill. VAGY kapuk) a vertikális mikroutasítás lényegében úgy épül fel mint egy gépi kódú utasítás. Ennek megfelelően általában mikroutasítások sorozatából áll. Mikroprogram vezérlő, mikroprogramtár és mikroutasításszámláló regiszter szükséges hozzá. CISC és RISC architektúrájú processzorok: Kezdetben a számítógépeket gépi kódban programozták, majd az assembly nyelv vált elterjedté. A programozói igények kielégítésére állandóan bővítették a CPU-k
utasításkészletét, ennek eredményeként: egyre több és bonyolultabb utasítást tartalmazott az utasításkészlet, ezek hardver megvalósítását mikroprogramvezérléssel lehetett megoldani, ez azt jelenti, hogy egy gépi utasítás végrehajtását több elemi lépésre kellett felbontani, és ezek paramétereit a csak olvasható memóriában tárolták (ROM). Így alakultak ki a komplex utasításkészletű számítógépek (Complex Instruction Set Computer). Ezek jellemzői : • bonyolult mikroprogramok, és • a „gép a gépben” jellegű működés (a mikroprogramvezérlő felfogható egy miniatűr Neumann elvű processzorként). A mikroprogramozott utasításvégrehajtás komoly korlátává vált a számítógép teljesítmény növelésének. Ezért olyan architektúrát terveztek, melynél: • csak a gyakori utasítások szerepelnek az utasításkészletben, • lehetővé válik az mikroprogramozás kiküszöbölése, azaz magas szintű programnyelvről
fordítás lényegében a korábbi mikroutasítások szintjén történik. Így jöttek létre a redukált utasításkészletű CPU-k (Reduced Instruction Set Computer). • • A CISC CPU-k tehát nagy számú utasítást tartalmazó utasításkészlettel rendelkeznek, az utasítások szerkezete bonyolult, többfajta memóriacímzési módot tesznek lehetővé, az utasítás-végrehajtás mikroprogramvezérelt. (pl Pentium CPU család) A RISC CPU-k utasításkészlete csökkentett, egyszerűsített, a memóriahozzáférés csak két utasítással: adatbetöltéssel és adatírással történhet, a műveleti vezérlés huzalozott vagy horizontális mikroprogramvezérelt. (pl SPARC, POWER PC) Jellemzőik: CISC processzorok RISC processzorok Összetett utasítások, melyek végrehajtása több gépi ciklust igényel. Egyszerű utasítások, melyek végrehajtása 1 gépi ciklust igényel. Bármely, erre alkalmas utasítás igénybe veheti a tárolót. Csak a LOAD/STORE utasítások
fordulhatnak a memóriához. A futószalag feldolgozás kismértékű. Erőteljes futószalag feldolgozás. Változó hosszúságú utasítások. Rögzített utasításhossz. Sokféle utasítás és címzési mód. Kevés utasítás és címzési mód. Bonyolult mikroprogram, egyszerű fordítóprogram. Bonyolult fordítóprogram, egyszerű mikroprogram. Kis számú regiszter. Nagy méretű regisztertár. Tárolóvédelem hardver úton. Tárolóvédelem szoftver segítségével. 7. A központi tár szerepe, áramköri megvalósítása ROM és RAM áramkörök típusai Dinamikus RAM belső felépítése. Átlapolt memóriakezelés A számítógép központi egységének főtárolója az aktuálisan az futó programfolyamatokhoz tartozó az adatok és programok tárolására szolgál. A jobboldali ágban a nem illékony (non-volatie, NV) áramkörök szerepelnek aszeint felosztva, hogy a memória tartalma hányszor írható át a felhasználó által. A maszkprogramozott
ROM (Read Only Memory) tartalmát a félvezetőgyár írja be egy technológiai lépés során, így ennek módosítására nincs lehetőség és költségét tekintve csak igen nagy darabszám mellett gazdaságos. Az egyszer írható (One Time Programmable, OTP) ROM-ok lebegő-gates konstrukciók, melyeknél azonban a tokozáson nincs ablak az UV-törléshez, s így az egyszer beírt tartalom nem törölhető. A legflexibilisebb lehetőséget értelemszerűen a többször írható ROM-ok nyújtják. Ezek közül a mágneses (MRAM) és ferromágneses (FRAM) megoldások, nem a klasszikus szilicium-technológiával készülnek. A telepes SRAM egy speciális félvezető konstrukció, ami a „szünetmentes tápegység” megvalósítása egy tokon belül. A RAM chip fölé egy kis akkumulátort szerelnek A kiszoruló típusok közé tartozik az ablakos kivitelű EPROM Az ábra alapvetően a számítástechnikában felhasznált memóriákat csoportosítja és nem tartalmazza a multimédia
speciális szervezésű memóriáit. Ezek alapvetően ugyanazon működésű cellákból épülnek fel, csak a tárolt adat felhasználásának jellegétől függően más konstrukcióval rendelkeznek (pl. soros memóriák, SAM, video RAM). Memóriák szerkezeti felépítése: A memóriák leggyakoribb formája a véletlen-hozzáférésű típus, amelynél egyetlen ciklusban bármelyik cella írható, vagy olvasható. A közel négyzetes cellamátrix elemeit a dekóderek címezik meg, amelyek közül a sordekóder az első áramköri egység a jelútban és ennélfogva késleltetési ideje közvetlen módon részét képezi a memória teljes késleltetésének. Az oszlopdekóder esetében kiolvasáskor a helyzet kedvezőbb, hiszen ennek csak a cellák kiolvasása után kell az érvényes értéket felvennie. Mint látható, az ábra szerinti alap elrendezésben címzéskor egyszerre aktiválódik az egy sorban lévő összes cella, melyek közül a számunkra érdekeseket az
oszlopdekóder továbbítja egyesével szavanként programozható szélességű adatonként, vagy átmeneti tárolás közbeiktatásával. A lábszám a memóriáknál is egy igen fontos kérdés. Könnyen belátható módon azonos cellaszám mellett az egybites szervezés a kedvezőbb. Egy másik lehetséges megoldás a multiplex címzési mód, amelynél ugyanaz a láb (pin) először egy sor, majd egy oszlop kiválasztására szolgál. Ekkor azonban (általános esetben) két további jel alkalmazására van szükség, amelyek ezen két ütem megkülönböztetésére szolgálnak. Ezek a RAS és a CAS jelek, amelyek természetesen két további kivezetést igényelnek. A kiolvasó erősítő a dinamikus memóriáknál érdemel figyelmet, mivel ott egy igen kis jel megbízható érzékelése a feladat. A memória legfontosabb egysége a cella; ennek mérete, késleltetése, zavarérzéketlensége alapvetően meghatározza a memória tulajdonságait SIMM és DIMM memóriamodulok: A
jelenleg alkalmazott memóriamodulok két típusba sorolhatók: • a SIMM 32 bites memóriamodul • a DIMM 64 bites szervezésű modul, jellemzően a Pentium gépekhez készültek ROM és RAM típusok: 1. ROM ◦ PROM: egyszer programozható ROM ◦ EPROM: az adatokat elektromos töltés formájában őrzi meg. Ibolyántúli fénnyel törölhető és újra írható. ◦ EEPROM: tárolók újraprogramozhatóságuk előtt egy elektronikus impulzussal törölhetők. Előállítása drága. 2. Fash-memória: ◦ nem „felejtő” félvezető memória, alapját az EPROM technológia szolgáltatja, de az a különbség, hogy elektronikusan törölhetők és blokkonként olvashatók, nincs szükségük tátellárásra. 3. RAM ◦ SRAM: statikus RAM az adatokat félvezető memóriában tárolják, ahol az állapot mindig fennmarad a következő írási műveletig vagy addig amég a modul tápfeszültséget kap. ▪ Aszinkron SRAM: nevének megfelelően az aszinkron SRAM működése nincs
teljesen összhangban a processzoréval, ezért a CPU esetenként várakozásra kényszerül. ▪ Szinkron SRAM: szinkron csoportos statikus RAM, ha a CPU nem túl gyors olyan ütemben szolgáltatja az adatokat, ahogy azt a CPU várja. A memóriát a CPU szinkronizálja ▪ PB SRAM: (Pipelined Burst Static RAM) esetében a memória áramkörök be/kimeneti regisztereket is tartalmaznak. E regiszterek feltöltése az első adateléréskor több időt igényel, de ezt követően a feltöltött regiszterek alapján való adattovábbítás már sokkal gyorsabb. ◦ DRAM: mátrixszervezésű azaz oszlopokból és sorokból épül fel, melyek metszéspontjában található egy memóriacella. ▪ FPR RAM: (Fsat Page Mode RAM) működésének lényege, hogy ha a DRAM áramkörök megkapják a sor és oszlopcímet, akkor címfolyamatos olvasásnál az áramkörnek elegendő megadni a következő oszlopcímet. ▪ EDO RAM: (Extended Data Output RAM) ennél a RAM-nál az adat a memória
kimenetén hosszabb ideig áll rendelkezésre egy másodlagos tároló alkalmazásával. Gyors működést tesz lehetővé. ▪ SDRAM és BEDO RAM: még gyorsabb hozzáférést biztosítanak, melyet a „burst”, azaz blokkos (csoportos) hozzáférési technika bevezetésével és a CPU és a memória működésének szinkronizálásával lehet elérni. DRAM felépítése: A statikus RAM-ok megjelenésével kapta a nevét mivel meg kellette különböztetni a két típust. A név arra utal, hogy ennek a memóriatípusnak a tartalma megsemmisül, ha nem frissítjük fel. A DRAM mátrixszervezésű azaz oszlopokból és sorokból épül fel, melyek „metszéspontjában található egy memóriacella (a memóriában az információt egy kondenzátor tárolja). A cellát megcímezni két lépcsőben lehet: • először a mátrix egy sorát címezzük meg, ezt követően • a sorokból kiválasztjuk az adott oszlophoz tartozó cellát. Ebből következőleg a DRAM áramkörnek nincs
szüksége a teljes címre hanem először a sorcímet majd az oszlopcímet kell rendelkezésére bocsátani. Ezért a processzor által megadott címet egy hardver egységgel két részre, sor és oszlopcímere kell szétválasztani. A CPU-k teljesítménye az elmúlt évtizedekben rohamosan nőtt, ezzel a memóriák nem tudtak kellő mértékben lépést tartani. Ezt a problémát az L1 és L2 cache tárolókkal próbálták megoldani, persze ez sem jelent végleges megoldást így ez egyre újabb típusok kidolgozását teszi szükségessé. Ilyen az átlapolás memóriakezelés ( Memory Interleaving) alkalmazása: a memóriát egymástól független címezhető és olvasható részekre, úgynevezett memóriabankokra osztjuk fel. Amikor a CPU a memóriát címfolyamatosan olvassa, a 0-ik memóriabankból kiolvasott adat hozzáférése alatt az 1 memóriabankban lévő következő címen lévő adat már megcímezhető. Így címfolyamatos olvasás esetén megközelítőleg
kétszeres sebességgel történhet a kiolvasás 8. Gyorsító (cache) tárak feladata és működési elve Cache tárak felépítése ás típusai Helyettesítési és adataktualizálási algoritmusok. Cache: A számítógéparchitektúrák tervezése során az egyik legfontosabb megoldandó kérdés a tárolóhierarchiában elhelyezkedő, különböző sebességű adattároló eszközök közötti adatforgalmak biztosítása, ami lehetővé teszi a folyamatos CPU működést annak várakozása nélkül. Ennek a célnak a megvalósítását teszik lehetővé: • a CPU és központi memória közti, illetve • a központi memória és a háttértárolók között elhelyezkedő átmeneti tárolók alkalmazása (cache). A cache vagy más néven gyorsító tárolók az utasítások és adatok átmeneti tárolására szolgál, viszonylag kisméretű, gyors memóriapuffere. A cache önálló vezérléssel rendelkezik ami képessé teszi a különböző bemásolási és
adat-visszaírási stratégiák, algoritmusok kezelésére. A cache tárolót közvetlenül beépíthetik a CPU-ba, vagy elhelyezhető azon kívül is. Mikroszámítógépeknél a CPU-ba épített (on-chip) cache tárolót L1 (Level 1)-nek, míg a CPU-n kívülit L2 (Level 2) hívjuk. Cache működési elve: Ha CPU a központi tár egy rekeszét olvasni akarja, akkor a gyorsító tár vezérlője ezt és még néhány rekeszt a cache tárolóba. Mivel a lokalitás elve alapján nagy valószínűséggel feltételezhető, hogy a CPU legközelebb a soron következő rekeszre lesz szüksége. Ha ez így van akkor a CPU-nak a következő olvasási művelet során már nem kell várakoznia. Az adatok bemásolása a cache-be blokkonként (a cache sorok méretének megfelelően) történik és igen rövid idő alatt (csak néhány órajel szükséges hozzá) végrehajtható. • Cache hit: ha a CPU olyan adatot igényel ami a cache-ben megtalálható akkor találatról beszélünk, ez a
toldalék „tag” alapján állapítható meg. • Cache miss: az igényelt adat nem található a cache-ben akkor tévesztésről van szó. Cache felépítése és típusai: A cache-be lemásolt főtárblokk a cache soraiban kerülnek elhelyezésre. Minden sor két részből épül fel: • a toldalék (tag) egyrészt a főtárból bemásolt blokkra vonatkozó címinformációkat tartalmazza, másrészt itt kerülnek bitenként kódolva letárolásra a cache blokk adataira vonatkozó érvényességi információk. • Az adatrész tartalmazza a bemásolt főtárblokk változatlan vagy CPU által már módisított adatait. Cache típusai: • teljes mértékben asszociatív cache: egy főtárbeli blokk a cache bármelyik sorába bemásolható, a blokk címe (sorszáma) pedig bekerül a cache toldalék részébe. Ha CPU egy adatot keres a cacheben, akkor az adat memóriacíméből képzett blokkszám asszociatív módon összehasonlításra kerül a • • cache-ben lévő
blokkok sorszámával. Az összehasonlítás nagyon gyorsan, minden sorra vonatkoztatva azonos időben történik meg. Ebben az esetben minden sorra kell egy összehasonlító áramkör ami viszont nagyon drága megoldás. Közvetlen leképzésű: ebben a tárolóban egy blokk csak a cache egy konkrét sorába kerülhet. Ez gyakorlatilag azt jelenti, hogy a főtárban egymástól azonos távolságban elhelyezkedő blokkok azonos cache sorba fognak bekerülni, ezért a különböző blokkokban lévő, de azonos sorindexű blokkban található adatok hozzáférése rendkívül lelassul, mivel ez minden esetben blokkcserét eredményez a cache-ben. A találati arány rosszabb lesz mint az asszociatív táraknál, viszont nem kell összhasonlító áramkör ezért nagyságrendekkel olcsóbb megoldás. N-utas csoport asszociatív cache: átmenet a két előző tártípus között, ennél a megoldásnál a tár több sorból álló csoportokra van osztva. Az egy csoporthoz tartozó
tárolórész önmagában teljes asszociatív tárként működik, azaz a bemásolandó adat az egy csoportot alkotó blokkok bármelyikébe bekerülhet. Annak megállapítsa viszont hogy egy cache-be írandó blokk melyik csoporthoz tartozik a közvetlen leképzésű memóriacímből képzett index-el kerül meghatározásra. Ezek a tárak rugalmasabbak mint a közvetlen leképzésűek de kevesebb asszociatív áramkört tartalmaznak, így egy jó kompromisszumot jelentenek. Helyettesítési stratégia: ha egy főtárblokkot be kell másolni a cache-be, az első eldöntendő kérdés, hogy a bemásolandó blokk adatai a cache melyik sorába kerülhet be, azaz az új blokk adataival, melyik más régebben a cache másolt blokk adatait lehet felülírni. Különböző stratégiák ismertek, ezek közül a legelterjedtebb az LRU (least recently used) stratégia, mely esetében a CPU által legrégebben használt blokk adatit kerülnek felülírása. A legrégebben használt blokk
kiválasztáshoz természetesen nyilvántartásra van szükség. Adataktualizálási stratégiák: Ha a CPU egy művelet-végrehajtás során megváltoztat egy adatot a cache-ben akkor igen rövid idő alatt a főtár tartalmát is módosítani kell, hogy a két memória tartalma azonos legyen. Ez két eljárással történhet: • közvetlen átírás vagy write through eljárásnál a gyorsítótárt írásával együtt megtörténik a főtár írása is. Ennek hatékonyságát javítja a pufferelt közvetlen írás amikor a CPU a megváltoztatandó főtárbeli adatokat egy pufferbe írja és nem várakozik annak végrehajtására . • visszaírás vagy write back: ennél az eljárásnál a gyorsítótárban módosított adat csak akkor kerül visszaírásra a főtárba, ha a cache-nek a módosított adatot tartalmazó sorát felül kell írni egy a főtárból bemásolandó újabb adatblokkal. Ez a módszer gyorsabb a közvetlen átírásnál, viszont minden cache-beli sor
esetében meg kell jegyezni, hogy az adott sor módisításra került-e. Erre a célra soronként egy kiegészítő bit szolgál. Ezt az eljátást akkor célszerű alkalmazni, ha a gyorsító tár sorait gyakran kell módosítani. 9. A virtuális tárkezelés fogalma és legfontosabb eljárásai (lapozás és szegmentálás, a virtuális cím leképzése, TLB, lapcsere stratégiák). Egy program végrehajtásához a megfelelő programrészek és az általa feldolgozott adatoknak a főtárba kell lenniük. Az aktuálisan nem futtatott programokat és a hozzájuk tartozó adatállományokat egy közvetlen elérésű háttértárolón tároljuk és csak akkor töltjük be a központi tárba, ha szükség van rájuk. A központi memória a számítástechnika egész története alatt mindig az egyik legszűkösebb erőforrás volt. Az egyre komplexebb alkalmazásokhoz egyre nagyobb méretű programokra volt szükség, a kezelt adatállományok tárolóigénye is állandóan
növekedett a fejlődés során. Különösen a multiprogramozott és a multitasking üzemmód kialakulását követően vált jellemzővé, hogy a számítógépen „egyidejűleg” sok olyan nagy memóriaigényű programfolyamatot kell futtatni, melyek együttesen nem férnek be a főtárba. A probléma megoldása során a következő szempontokat célszerű figyelembe venni: • a programok végrehajtása során legtöbbször egy korlátos memóriaterületen belül dolgoznak, amit a lokalitás elvének is nevezünk. • az egyes programrészek között igen nagy eltérések lehetnek abból s szempontból, hogy a programvégrehajtás során milyen gyakran van rájuk szükség. pl: az operációs rendszer hibakezelő, analizáló rutinjai. Ez más néven a gyakoriság elve a programvégrehajtásban A memóriakapacitás hiánya vezetett oda, hogy az „overlay” technikát kezdték alkalmazni. Alkalmazásakor csak a programrendszer általános, mindig szükséges vezérlő programja
kerül betöltésre a főtárba és emellett a főtárban lefoglalásra kerül egy tárterület, melyre a ritkábban szükséges programmodulok kerülnek betöltésre, de csak igény szerint. ( ennek nyilvántartását, méretét kezdetben a program maga végezte el, de célszerűbbnek mutatkozott ha ezt az operációs rendszer végzi el) Szegmentálás: Ha virtuális tár olyan logikai blokkokból áll, melyek mérete nem rögzített, akkor ezeket a blokkokat szegmenseknek, a virtuális tárkezelésnek ezt a formáját pedig szegmentálásnak nevezzük. A szegmensek átlapolódóan is megadhatók, azaz ugyan az adat két különböző szegmensen belül is megcímezhető. Ekkor több programfolyamat közösen használ szegmenseket. A szegmentálásnál a logikai cím a szegmens sorszámát, és a megcímzett bájtnak a szegmenskezdettől való relatív címét tartalmazza, a fizikai címet a szegmenstáblázat tartalmazza. A szegmentált tárkezelésnél az átlapolódás és a
különböző blokkméret miatt, a bemásolásnál és a háttértár kijelölt részére másolásakor, igen sok üres hely keletkezhet. Ezt fregmentációnak nevezzük Ennek időnkénti rendezésére szükség van A szegmensek betöltésére a virtuális tárból többfajta stratégia s létezik: • első szabad helyre: azaz a legelső olyan helyre aminek mérete lehetővé teszi a szegmens betöltését • következő szabad helyre: az utolsóként betöltött szegmenstől kezdve választjuk ki az első megfelelő méretű tárrészt. • legjobb helyre: az összes olyan szabad tárterület közül azt választjuk ki aminél a betöltést követően a legkevesebb felhasználatlan terület marad az adott tárhelyen belül. • legrosszabb helyre: ekkor az a cél, hogy a betöltött szegmens mellett a legtöbb szabad hely maradjon. A szegmentált virtuális tárkezelés előnye a rugalmasság (a változtatható blokkméret miatt). És az osztott felhasználás lehetősége az
átlapolható szegmensekkel. Viszont a nagyméretű szegmensek cseréje ronthatja a hatékonyságot és a memória kihasználtsága sem biztosított. Lapozás: Ha a virtuális tár rögzített méretű nem átlapolható blokkokból áll, akkor ezeket lapoknak nevezzük a virtuáli tárkezelés ezen módját pedig lapozásnak. A főtár a lapmérettel megegyező nagyságú részekre van felosztva, ezeket lapkereteknek (frame) nevezzük. A cím hasonlóan épül fel, azaz a lap sorszámát és a megcímzett bájtnak a lap kezdetétől számított címét tartalmazza. A címeket a laptáblázat tartamazza Minden programfolyamatnak saját laptáblázata van. Ha egy programfolyamat olyan lapra hivatkozik ami nincs a főtárban, akkor ez „laphiba” kivételt okoz. Ez egy megszakítást okoz és vezérlést megkapja az operációs rendszer laphiba kezelő rutinja ami betölti a szükséges lapot. Virtuális cím leképzése: A számítógépen futó programfolyamatok utasításai a
virtuális címeket, mint logikai címeket tartalmazzák. A virtuális tár blokkjai akkor kerülhetnek be a főtárba, ha valamilyen programutasításban hivatkozás történik az adott blokkban található címre és az nem található meg még a központi tárban. Ez azt jelenti, hogy a programok a virtuális tárakat úgy „látják” mintha az a központi tár lenne. A virtuális címzéssel elvileg megcímezhető memóriaterületet virtuális tárnak nevezzük. A virtuális címek mennyisége a kijelölt tár nagyságától függ. A CPU-nak működése során a valódi vagyis a fizikai címekre van szüksége, ezért a virtuális címeket át kell alakítani fizikaivá. Két dologra kell ilyenkor tekintettel lenni: • a blokkok háttértárolón lévő címét, a fizikai memóriába bemásolt blokkok sorszámát nyilván kell tartani • valamint szükség van egy olyan programra vagy hardver egységre ami nyilvántartott virtuális címeket átalakítja valódi címekké. A
címek fizikai címre történő leképzését a kezdetben még az operációs rendszer végezte, ma viszont kizárólagosan az a jellemző, hogy ezt a feladatot egy címleképzési áramköröket tartalmazó hardver egység, az MMU végzi el. Ez az egység végzi a kivételek kezelését is TLB: A TLB a leggyakrabban használt lapok lapcímfordításához szükséges adatait tartalmazza, általában a processzor és a cache tároló között helyezkedik el. Lapcsere stratégiák: A lapcsere folyamán ki kell választani azt a lapot, amelyiket feláldozzuk az új lap betöltése érdekében. A lapcsere stratégiák alapvető célja az, hogy optimális esetet közelítsék, azaz azt a lapot válasszák áldozatul, amelyikre a legkésőbb lesz szükség. Általános esetben két lépésből áll, az áldozat kimentéséből és az új lap beemeléséből. alapvetően két stratégia követhető: • igény szerinti lapozás: (demand paging) esetén csak a laphibáknál hivatkozott lapot
hozzuk be a tárba. A módszer előnye, hogy a betöltendő lap kiválasztása nagyon egyszerű, továbbá, hogy csak a biztosan szükséges lapok kerülnek be a tárba, ugyanakkor az új lapokra hivatkozás mindig laphibát okoz ami lassítja a rendszert. • Előretekintő lapozás: (anticipatory paging) ebben az esetben az operációs rendszer megpróbálja „kitalálni”, hogy a folyamatoknak a közeljövőben mely folyamatokra lesz szükségük. ◦ Optimális: megpróbálja következő használat idejét figyelembe venni. Nagyon nehézkes mivel csaknem az egész programot szimulálnia kell. ◦ Legrégebbi lap (FIFO): úgy próbálja közelíteni az optimális esetet, hogy a legrégebben a tárban lévő lapot cseréli le. Megvalósítása egy egyszerű FIFO listával történhet, hibája azonban, hogy azokat a lapokat is cseréli, amiket a folyamatok gyakran használnak. ◦ Újabb esély (SC): a FIFO algoritmus olyan változata ahol a lapokat csak akkor cseréli, ha
hivatkozás nem történik rá ◦ Legrégebben nem használt (LRU): azt a lapot választja amire a folyamatok a legrégebben hivatkoztak. ◦ Legkevésbé használt (LFU): ez az algoritmus abból indul ki, hogy a közelmúltban használt lapokat a folyamatok a közeljövőben is használni fogják. 10. Az adatrögzítés elve a mágneses háttértárolókon A merevlemez fizikai felépítése (szektor, sáv, cilinder) és logikai felépítése (klaszter, FAT, bootszektor). A merevlemezes egység teljesítményjellemzői (elérési idő, adatátviteli sebesség). Az adattárolás elve a mágnese tárolókon: Az adatrögzítés módja nagyon hasonló a közönséges magnetofonnál használt jelrögzítő technikához, avval a fontos különbséggel, hogy a számítástechnikában az adatrögzítés mindig digitális. Az informácihordozója egy hordozóanyagra felvitt vékony, mágnesezhető réteg, illetve annak mágnesezettségi szintje és iránya. A digitális jelrögzítés
miatt csak két szintet különböztetünk meg (logikai igen és a logikai nem szintjét). Mivel az adathordozó mozog (forog) így a változó mágneses tér az olvasófejekben elektromos jeleket hoz létre, amelyeket felerősítve és formálva (normalizált formában) használnak fel. A mágneslemez tárcsáira felírt adatok olvasásakor a hordozó ferritbevonata egy v sebességgel halad el a légrés előtt, és megváltoztatja az indukciót a légrésben és a fej ferromágneses anyagában is. Ilyenkor a sebességgel arányos feszültség indukálódik. A feszültség iránya függ az indukcióváltozás irányától Mivel a feszültség (amelyből vissza tudjuk állítani a felírt adatokat) csak akkor, indukálódik, ha az indukció megváltozik, ezért az adatokat is indukcióváltozások formájában kell felírni az adathordozóra. Az adatok felírás előtti átkódolását írásmódnak nevezzük. Mivel az alkalmazott írásmód befolyásolja az írássűrűséget, ezért
sokféle írásmód terjedt el a mozgó mágnese táraknál. Merevlemezek fizikai felépítése: A lemezek területét használat előtt formázni kell, azért hogy kialakuljon az a szabványos jelrögzítési struktúra (pl. szinkronjelek), amelyek a számítógépek operációs rendszerei, olvasó egységei kezelni tudnak Sávok: A lemezek felülete sávokra van osztva (track), amelyen belül kisebb egységek szektorok kerülnek kialakításra. Extra sávok: az adattárolásra szánt sávok mellett, a gyorsabb adatelérés érdekében, külön sávokat használnak az indextáblázatok kialakításához (index track) továbbá a nagyobb megbízhatóság érdekénben tartalék sávokat képeznek a meghibásodott és nem használható szektorok, sávok tartalmának átmentéséhez. A sávokon belüli szektorkezdetek jelölésére két módszer használatos: • szoft-szektoros • hard-szektoros Szektorok: Egy szektor a legkisebb írható olvasható (címezhető) adatterület,
amelyet az olvasóegység, az operációs rendszer, illetve annak részeként működő BIOS kezelni tud. A szektor a sáv egy szelete A szektor egyes részeit, valamint a szektorokat egymástól üres részek, ún. gap-ok választják el A szektorok logikai felépítése: két részre tagolt : • fejrészre: az azonosításhoz szükséges információkat tárolja • adatrészre: a tárolandó adatsort és az ellenőrzésre szolgáló kódot tartalmazza. Cilinderek: ha több lemezfelület áll rendelkezésre a tároláshoz (hajlékonylemezeknél 2, míg a merevlemezeknél 6-8 vagy több), akkor a fizikailag egymás felett elhelyezkedő sávokat együtt cilindernek (cylinder) nevezzük. FAT (File Allocation Table): A merevlemezek használatához egy logikai formázást kell végeznünk a lemezen, amely kialakítja az alkalmazni kívánt fájlrendszert, a fájlok elhelyezkedését a lemez elején létrehozott FAT tábla mutatja. A Fat hibátlansága a rendszer működésének
elengedhetetlen feltétele. Amikor egy program fájl írását vagy olvasását kéri, az operációs rendszer a kontroller segítségével az a kontroller segítségével az író/olvasó fejeket a merevlemez fálj alokációs táblája fölé mozgatja. A rendszer ennek olvasása során állapítja meg, azt a helyet, ahol a létező fájl kezdődik, vagy ahol üres hely van új állomány létrehozására. Klaszter: a logikai lemezkezelés alapegysége a több szektorból álló szektorcsoport, a klaszter (angolul cluster). A fájlok a lemezen klaszterekre vannak osztva, így az operációs rendszer írni és olvasni a merevlemezt csak klaszterként tudaj. Egy klaszterben található szektornak a száma a lemez kapacitásától függ, de mindig 2-nek valamilyen hatványa. Boot-szeltor: Minden merevlemez egy fizikai partícióból áll, ennek mérete a lemez teljes területével egyenlő. A fizikai partíciót fel kell osztani a több logikai partícióra. A logikai partíciókat úgy
látjuk, mintha azok külön merevlemezek volnának. A partíciók felhasználásával több operációs rendszer futtatására is lehetőségünk nyílik, ha ezeket külön partíciókra helyezzük el. A merevlemez első szektorában található a mester betöltő bejegyzés (MBR = Master Boot Record), amely a gép indításánál nyújt információt a betöltendő operációs rendszerről. Az MRB része a partíciós tábla, amely a lemezen található logikai partíciókat írja le. A mágneslemez hozzáférési ideje: A mágneslemez hozzáférési ideje alatt egy szektor kiolvasásának idejét értjük. Ez nyilvánvalóan csak átlagértékként értelmezhető, mivel ez nagyon függ az olvasófejnek a kiolvasás megkezdése előtti helyzetétől. Hozzáférési idő = pozicionálási idő átlaga + forgási idő + adatátviteli idő + vezérlési idő • • • pozicionálási idő: az az idő, míg az író/olvasó fej rááll a megfelelő sávra forgási idő: amíg a
megfelelő szektor az író/olvasó fej alá kerül átviteli idő: egy szektor méretének megfelelő mennyiségű adat átvitele. 11. A megszakítási rendszer (megszakítások típusai, a megszakítás kiszolgálása, vektortáblázat) és alkalmazásai. A megszakítás vezérlés tipusai A számítógépek különböző részegységei működésének összehangolásában az egyik legfontosabb szerepe a megszakítási rendszernek van. Ha nem lenne megszakítási rendszer, akkor például a CPU-nak állandóan ellenőriznie kellene, hogy a felhasználó mikor nyomott le egy billentyűt. Ez pedig igen nagy pazarlás lenne a CPU teljesítményével. A megszakítást kiváltó események és kezelésük: a számítógépes programok végrehajtása során felléphetnek olyan események, melyek kezelése csak az utasítás-végrehajtás normális menetének átmeneti felfüggesztésével lehetséges. Ezek bekövetkezhetnek: • meghatározott programhibák esetén (mikor egy program
aritmetikai műveletében 0-val akar osztani) • meghatározott műveletek befejezésekor, melyek bekövetkezésére számítani lehet, de az időpontja pontosan nem tervezhető. (mikor egy periféria jelzi, hogy befejezett egy feladatot) • szándékosan azaz program-vezérelt módon (mikor programhibák felderítése céljából a programfutást lépésenként hajtjuk végre) • teljes mértékben véletlenül és váratlanul (súlyos hardverhiba, áramkimaradás) Az utasítások szabályszerű feldolgozását megszakító eseményeknek két alapvető típusa van: • a programfutáshoz képest külső eredetű megszakítás (egy I/O eszköz adatátviteli igényt jelez) • az utasítások szabályszerű végrehajtását megakadályozó kivételek exeption, melyet a CPU egy utasítás végrehajtása során észlel. Mivel a megszakítások és kivételek fellépése a program végrehajtás szempontjából véletlenszerűen következnek be és egy befutott kérelem miatti
programfelfüggesztés ide je alatt is jöhetnek újjabb kérelmek, ezért ezeket osztályozni szükséges abból a szempontból, hogy ezeket a kérelmeket a CPU tilthatja vagy nem: • léteznek olyan események, melyek megszakítási igénye átmenetileg letiltható. Ezeket maszkolható megszakítási kérelemnek nevezzük, mivel engedélyezésük vagy tiltásuk egy regiszter bitjének beállításával történhet. • Olyan események, melyek megszakítási kérelme nem tiltható le és minden esetben ki kell szolgálni. Ezeket nem maszkolható megszakításoknak nevezzük (pl. súlyos hardverhibák) Kivételek esetében a kivételt kezelő különleges programrész lefutása után a CPU ismét megkisérli a megszakított utasítás végrehajtását. Pentium CPU-család által dedikált kivételek: • faults: (hibák) amik megengedik a az utasítás újraindítását, a kivételkezelő rutin visszatérési címe a hibát kiváltó utasításra mutat. • Traps: (csapdák) •
aborts: ami engedélyezi a kivételt kiváltó program folytatását • programozott kivételek, melyek például az INT és az IRET utasítások generálnak. A megszakítás kiszolgálása: A megszakításkiszolgálást gyakran aszinkron alprogram végrehajtásnak is nevezzük, mivel mert időben nem jósolható, hogy egy megszakítást kiváltó esemény mikor fog megtörténni. Valamint egy meghatározott típusú megszakítást mindig azonos megszakításkiszolgáló programegység (szubrutin) végrehajtását fogja eredményezni. A megszakításkérelmeket úgynevezett vektoros módon dolgozzák fel, ami azt jelenti, hogy a megszakításkérelem a megszakításkezelő rutin kezdőcímét egy vektor elemeként azonosítja a CPU számára (másként: a megszakítást vezérlő a CPU-nak a vektor egy elemét meghatározó sorszámot ad át, mely a memóriában található megszakítási vektortáblában kijelöli a kiszolgáló rutin címét) A hardver által: • az
eszközkezelő jelzi a CPU-nak a megszakításkérelmet (INT jel) • a CPU visszaigazolja az elfogadást (IACK jel) • az eszközkezelő a sínre küldi a megszakítási vektor elemének sorszámát • a CPU tárolja a küldött vektor elemének sorszámát • a CPU elmenti a verembe az utasításszámláló és az állapotregiszter tartalmát • a CPU a megszakítási vektor elemsorszáma alapján a kezelő rutin kezdőcímét betölti az utasításszámláló regiszterbe és ezzel megkezdődik annak végrehajtása az operációs rendszer által: • a megszakított program adatainak elmentése verembe • a megszakítás okának behatárolása • a kiszolgáláshoz szükséges adatok összgyüjtése • a megszakítást okozó események kezelése • a megszakított program adatainak visszatöltése • a megszakításkezelő rutin befejezésének jelzése a hardver által: • az elmentett állapot és utasításszámláló regiszter tartalmának visszatöltése és a
megszakított program folytatása. Megszakításvezérlő felépítése és működése: ez az eszköz végzi a megszakítás kiszolgálásához szükséges legfontosabb hardver feladatokat. • fogadja a megszakításkérő vezérlővonalakon (IRQ) a megszakításkérelmeket. • vizsgálja, hogy az igényelt megszakítás nincs-e maszkolással letiltva. • vizsgálja és értékeli a megszakítás prioritását • az INT (Interrupt) vezetéken közli a megszakítás kérését a CPU-val • ha az IACK (Interrupt Acknowlegment) vezetéken a CPU visszaigazolja, hogy kész a kérés fogadására, akkor a megszakításvezérlő átadja a CPU-nak a megszakításhoz tartozó megszakítás vektor címét. Elvi felépítése: Amennyiben egy számítógépben több megszakításvezérlő is megtalálható, akkor ezek legtöbbször masterslave kapcsolatban állnak egymással. 12. Az I/O adatátvitel típusai A közvetlen memória-hozzáférés (DMA) lényege és végrehajtása A
DMA-vezérlő regiszterei és működése. A mikroszámítógépek és perifériáik közti adatátvitelt három fő módszerrel oldhatjuk meg: • programozott bemeneti/kimeneti (I/O) adatátvitelnél az összes adatátvitellel kapcsolatos műveletet a számítógép programja vezérli. • megszakítással kezdeményezett I/O adatátvitelnél egy programmegszakítás előzi meg. Ekkor egy I/O eszköz kényszeríti a CPU-t, hogy félbehagyja az éppen futó program végrehajtását, majd az I/O eszköz kérését végrehajtsa. • közvetlen memória hozzáférés esetén (DMA=Direct Memory Access) közvetlen adatátvitel jön létre a memória és a bemeneti/kimeneti készülékek között a CPU igénybevétele nélkül. A közvetlen memória-hozzáférés (DMA) és vezérlője. A közvetlen memória-hozzáférés lényege, ahogy a CPU egy I/O művelet végrehajtásához szükséges információt átadja egy, a CPU-tól független működésű DMA vezérlőnek Direct Memory Access),
mely ezt követően az adatátvitelt a memória és az I/O eszköz között önállóan irányítja. Ez tulajdonképpen egy egyszerűsített CPU-ként is felfogható. Ezáltal a CPU felszabadul más feladatok végrehajtására A CPU és a DMA vezérlő egymással a kapcsolatot a megszakítási rendszeren keresztül tartja, így például a DMA vezérlő egy I/O művelet befejezését egy megszakításkérelemmel jelzi. A DMA vezérlő rangsorolja az adatátviteli igények kiszolgálását. Az adatátviteli állapot nyilvántartására a DMA egy címregisztert és egy számlálóregisztert alkalmaz, melynek tartalma minden egyes átvitt adat után aktualizálásra kerül. Ezen kívül a DMA még három további regisztert is tartalmaz: • DMA módregiszter: mely az adatátvitel irányára (memóriába írás vagy onnan történő olvasás) vonatkozó információkat tartalmazza. • DMA maszkregiszter: az egyes DMA átvitelt kérő vezérlővonalak letiltását (maszkolását)
tartalmazza. • DMA állapotregiszter: a vezérlő állapotával kapcsolatos információk tárolására szolgál (pl. meliyk vonalon érkezett a kérelem, befejeződött-e az átvitel). Működése: Miután a CPU a készülékhez tartozó, megfelelőregisztereket – mutatók, számlálók – beállította a készülékvezérlőn, vagy a DMA-vezérlőn, a készülékvezérlő a pufferből közvetlenül a memóriába vagy a memóriaterületről a saját pufferébe tölt egy (a puffer méretének megfelelően tipikusan 128 byte és 4 Kbyte közötti méretű) adatblokkot anélkül, hogy a CPU-t megzavarná a működésében. Legfeljebb buszciklust kell lopjon a CPU elöl az átvitelhez. A DMA-átvitel befejeződése után a perifériavezérlő, vagy a külön DMAvezérlő blokkonként egyetlen megszakítással jelzi a műveletet befejeződé 13. A sín (busz) feladata, logikai felépítése, típusai Sínvezérlés (szinkron, asszinkron) Master és Slave eszközök.
Buszarbitáció ( soros és párhuzamos sínfoglalás) A számítógép részegységei közötti kommunikációs kapcsolatokat (adatok, címek, valamint a gép vezérléséhez szükséges információk átvitelét) a sín vagy buszrendszer biztosítja. A sínrendszer a kapcsolatokat biztosító kommunikációs vezetékek mellett aktív és passzív elektronikai elemeket is tartalmaz. A sínrendszer fogalmába beleértjük a kommunikációs kapcsolatok szabványosított szabályait is, amit sínprotokollnak (bus protocoll) nebezünk. Logikai felépítés: az átvitt információk jellege szerint három részre osztható. • Címsin: mely a címek átvitelét biztosítja. A CPU címkészletének (pl 32 vagy 64 bites CPU-k) megfelelően általában 32 vagy 64 címvezetéket tartalmaz. • Adatsín: mely az adatok átvitelét biztosítja, szélessége általában 32 vagy 64 bit. • Vezérlősín: mely a számítógép részegységei között a vezérlőinformácíók adatátvitelét
biztosítja. Ezek lehetnek például: ◦ adatátvitel, azaz az I/O eszközöket vezérlő jelek, ◦ a megszakítási rendszerhez tartozó vezérlőjelek, ◦ a DMA vezérlőjelei, valamint ◦ a sínvezérlőjelek (pl. a sínhasználat kérése és ennek visszaigazolása), ◦ szinkronizációs jelek. Sínrendszer típusai: • belső sínrendszer, mely a processzoron belül, a processzor különböző részeit kapcsolja össze. Sebessége (órajele) megegyezik a processzoréval. • külső sínrendszer, mely a processzort köti össze a központi egység különböző részegységeivel. Sebességét a CPU órajelének osztásával határozzuk meg. A külső sínrendszer a sebessége és az összekapcsolt eszközök alapján kétfajta lehet: • helyi sín vagy local bus, mely a CPU-hoz közvetlenül kapcsolódó rendszerelemeket (memória, grafikus kártya. Stb) köti össze A helyi sínen keresztül az adatátvitel a CPU órajelével szinkronban történik és a busz adatátviteli
bit szélessége is megfelel a CPU működésének (32 bites CPU-nál 32 bit) • rendszersín vagy system bus, melyet egy sínvezérlő egység hajt meg és alapvetően az I/O eszközök csatlakozását szolgálja. • az I/O eszköz saját sínrendszere (pl. SCSI lemezcsatoló busza) • számítógéprendszerek közötti buszok (intersystem bus) Ezt az architektúrát továbbfejlesztette a k. 180 gyártó által elfogadott PCI szabvány Sínvezérlés: Az adatátvitelben résztvevő eszközöknek összehangoltan kell működniük. Ehhez megfelelő konvenciók és algoritmusok kellenek, melyek áramkörökben, elektromos jellemzőkben öltenek testet. A sínen történő adatátvitelben résztvevő eszközök együttműködésének szabályait buszprotokollnak nevezzük. Az adatátvitel vezérlésének két formája lehet: • a szinkron sínvezérlés: ebben az esetben az eseményeknek rögzített időpontjaik vannak, a sínen kommunikáló eszközök azonos órajellel
ütemezettek. Az adás-vétel mindig azonos sebességgel történik, nem kell kapcsolatfelvétel és visszacsatolás. Előnye a gyorsasága, hátránya viszont, hogy közös órajelet kell biztosítani az összes sínre kapcsolt eszköz számára. • Asszinkron sínvezérlés: esetén, az események tetszőleges időpontban bekövetkezhetnek. Ezért a sínre csatlakozó eszközök zavartalan együttműködéséhez egy kapcsolatfelvétel és vétel visszaigazolási eljárás (handshake) szükséges. Előnye, hogy nem kell azonos órajelet biztosítani az összes sínre kapcsolt eszköz számára, és nagyon eltérő sebességű eszközök kiszolgálását is lehetővé teszi. Hátránya viszont az asszinkron sínvezérlésnek, hogy a protokollba be kell építeni a relatíve bonyolult asszinkron „handshake” eljárást. Master és Slave eszközök: A sínt egy időben csak egy eszközpár használhatja. Ezek közül a kezdeményező eszköz a master, a kapcsolatban résztvevő
passzív eszköz pedig a slave eszköz. A master és slave közötti munkamegosztás lényege a következő: • • MASTER: ◦ elindít és befejez egy busztaranzakciót, ◦ címet küld. SLAVE: ◦ válaszol az igényekre és a címekre, ◦ a sínre teszi illetve fogadja az adatokat. Egyidejűleg több aktív (master) eszköz is igényelheti a sín használatát. Ekkor valamilyen eljárással el kell dönteni, hogy melyik eszköz lesz jogosult a sín használatára. Ezt az eljárást nevezzük sín arbitrációnak Ha csak egy buszrendszer van akkor ez az eszköz (legtöbbször a processzor) felügyeli a buszhasználatot, inicializálja és ellenőrzi a buszfoglalást. A slave eszközök válaszolnak az írási és olvasási igényekre A buszrendszerek megosztása a masterek között a legegyszerűbb módon időosztással történhet, amikor minden master meghatározott időszeletre megkapja a buszhasználat jogát (statikus módszer). Csak abban az esetben hatékony, ha a
masterek adatátviteli igénye kb. azonos Dinamikus buszhasználat megosztás esetén a masterek csak akkor kapják meg a sínt, ha azt igénylik. Ez esetben azt a problémát kell kezelni, hogy a buszhasználati igények azonos időpontban is jelentkezhetnek. Ennek módszerei lehetnek: • prioritások meghatározása a masterek számára (ez azzal a veszéllyel jár, hogy a magas priotitású és gyors eszköz pl. CPU mellett a többi master „nem jut szóhoz”) • egyenletes buszhasználati jog elosztás ( pl. a masterek igényei jelentkezésük időpontja szerint egy várakozó sorba lesznek besorolva). Ennek az a veszélye, hogy a fontosabb eszközök hosszú ideig várakozásra kényszerülnek. Másik fontos kérdés, hogy ha egy master lefoglalja a buszt, akkor mennyi időre kapja meg a buszhasználat jogát. A lefoglalt busz felszabadításának módszerei: • release on request: a master csak annyi időre foglalja a buszt, amíg azt másik master nem igényli. • Release
when done: a master egy tranzakcióra kapja meg a buszt. • Preemption: ha egy magasabb prioritású master jelentkezik, ez folyamatban lévő tranzakciót megszakítja. Dinamikus buszhasználat szétosztás csak akkor lehetséges, ha : • minden master jelzi a buszfoglalási igényt • csak akkorm használhatja, ha igényének visszaigazolását megkapta • a masternek jelzést kell küldenie, ha a tranzakció befejeződött. A buszarbitráció lehet: • központosított, ekkor a számítógéprendszerben csak egy arbiter van. Ez lehet önálló hardveregység, • vagy egy másik egységnek a részegysége. szétosztott, akkor több arbiter egység található a rendszerben Központosított busz arbitráció esetén a buszhasználatot igénylő masterek egy „request” jellel jelzik az igényeiket az arbiternek, mely meghatározott algoritmus szerint kiválaszt egy mastert és az igény lefoglalását a „grat” jellel igazolja vissza. Ez három eljárás alapján
lehetséges: • soros kiszolgálás: az eszközök sorba vannak kötve és sorrendjük határozza meg prioritásukat, azaz azt, hogy mikor kaphatnak jogosultságot a sín használatára. Ennek előnye az egyszerűségében van, a hátránya, hogy a kis prioritású eszközök sokáig várhatnak. • Párhuzamos kiszolgálás: esetén minden sínhasználatért folyamodó eszköz önálló kérő és engedélyező vezérlővonallal rendelkezik és a sínvezérlés prioritás szerint engedélyezi a sín igénybevételét. (egyszerű körbejáró eljárás, LRU) 14. Az I/O eszközvezérlők, interfészek feladata, regiszterei, címzése Soros és párhuzamos port és adatátvitel. Az adó és a vevő szinkronizálása Az interfész két rendszer vagy egy rendszeren belüli felületnek az a része, amelyen keresztül az adatok átvitele az igényelt illesztés biztosításával történik, amely biztosítja az egyes rendszertechnikai egységek közötti egyértelmű, rendezett és
szervezett információcserét. Az I/O eszközök és a processzorok kapcsolatát az eszközvezérlőkben található regiszterek biztosítják. Minden egyes eszközvezérlő funkcionálisan legalább a következő típusú átmeneti tárolókat tartalmazza: • parancs (command) regiszter, mely az eszközvezérlő által végrehajtandó műveletekhez szükséges információkat tárolja • állapot (status) regiszter, melyben az eszközvezérlő az I/O eszköz aktuális állapotára vonatkozó információkat tárolja (például egy merevlemezre egy blokk kiírása megkezdődött, vagy a nyomtatóból kifogyott a papír), • az adatkiírás illetve beolvasás pufferregiszterei, melyek a folyamatban lévő I/O műveletek adatit tárolják A processzor az eszközvezérlőket alapvetően két módon irányítja: • közvetlen I/O utasításokkal (miután az állapotregiszter lekérdezésével megállapította, hogy az eszköz az utasítás végrehajtására képes állapotban van), a
parancsregiszter beállításával és a pufferregiszterek írásával vagy olvasásával, • közvetett módon: amikor a címzés úgy történik, mintha az I/O eszköz tárolója a főtár része lenne (memory mapped addressing, ilyen például a grafikus memória. Az I/O eszközök címzése: A processzor az eszközöket két módon címezheti meg: • • közvetlen I/O címekkel, ekkor az I/O utasítások a processzor utasításkészletében szerepelnek (ez pl. az Intel CPU-ra jellemző közvetett módon (memory mapped addressing), mely esetben a címzés úgy történik mintha az I/O eszköz tárolója a főtár része lenne (ez a RISC processzorokra jellemző) a közvetett I/O eszköz esetén: ◦ ha az írási/olvasási cím az I/O címtartományba esik, ennek értelmezése automatikusan I/O művelet, ◦ az I/O címtartományt az operációs rendszer védi, ◦ az I/O eszközökkel a felhasználói programok az operációs rendszer közbeiktatásával kommunikálnak. A PORT
a számítógép olyan interfésze, amely a perifériális eszközökkel tart kapcsolatot. Ez biztosítja a szabványos csatlakozást a CPU és a perifériális egységek között, a rendszersín közbeiktatásával. Az I/O PORT pufferei a külső buszrendszer adatvezetékeihez csatlakoznak. Az I/O PORT nincs állandóan aktív kapcsolatban az adatvezetékekkel, mert általában azokon keresztül bonyolódik le pl. a CPU és a memóriák közti adatforgalom is A CPU az I/O eszközzel való műveletvégzés igényének megfelelő időben választja ki csak az I/O PORT-ot. Amikor a külső eszköz adatot továbbít a mikroszámítógépbe, azt az I/O puffer tárolja. Majd az adatátvitel ezt követően valósul meg Az I/O pufferk ugyan úgy címezhetőek a sín címvonalaival, mint a memóriarekeszek. Ez egyszerűen megoldható, ha a mikroszámítógépünk legnagyobb helyi értékű címvezetéke logikai 0 értékű, akkor ez memóriamodult, ha logikai 1 akkor pedig I/O puffer jelent.
I/O portok kiválasztására használnak különálló logikát is, e célból két külön vezérlővonal csatlakozik a CPU-hoz. Ekkor: • az IOSEL vezérlővonal jelszintje jelzi, hogy a címvezeték az I/O PORT puffert kiválasztó kódot tartalmazzák • az IROW vezérlővonallal az írás és olvasás műveletei különböztethetők meg. Ha logikai értéke 1, akkor akkor az I/O puffer adatot olvas, ha 0 az érték akkor ennek tartalma kerül a külső adatbuszra. A CPU kimeneti jelei vezérlik a külső eszközt, de azok csak állapotaikról tájékoztatják a CPU-t, ebből értelmezi azt, hogy melyik eszközön lehet adatátvitelt végrehajtani. A soros és párhuzamos adatátvitel: Az eszközvezérlőben a CPU és a periféria interfészek közötti adatátvitel két -féle módon történhet: • amikor a periféria interfész és a periféria a között az adatokat bitenként sorban egymás után visszük át, ezt soros adatátvitelnek nevezzük, • a periféria
interfész és a periféria között az adatokat bitcsoportonként egyszerre visszük át, ezt párhuzamos adatátvitelnek nevezzük. Az elnevezés is innen fakad, a soros működésút soros, a párhuzamost pedig párhuzamos portnak szoktuk nevezni. A párhuzamos adatátvitelnek megvan az az előnye, hogy gyorsabb a sorosnál, mivel egy lépésben egy bitcsoportot viszünk át. Ehhez viszont legalább annyi vezetéket (adatutat) és áramkört kell biztosítaniaz adatok átviteléhez, mint ahány bitből áll az átvitt bitcsoport. Soros esetben viszont szélsőséges esetben egy vezetékpár is elegendő az adatátvitel összeköttetéséhez, ami jelentősen csökkenti a költségeket, ezt figyelembe véve csak a közvetlenül a gép környezetében lévő eszközöknél alkalmaznak párhuzamos átvitelt (pl. nyomtató) Az elmúlt évek technikai fejlődése egyre nagyobb sebességű soros adatátvitel megvalósítását tette lehetővé, ilyen pl. az USB átvitel, ami mára szinte
kiszorította a párhuzamos átvitelt Az adó és a vevő szinkronizálása: az adatfolyam értelmezéséhez az szükséges, hogy az adó és a vevő azonos frekvenciájú órajelet alkalmazzon. Erre az egyik megoldás az lehet, hogy az adatok átvitelét szolgáló jelvezeték mellett még egy vezetéket alkalmazunk, melyen az órajelet is átvisszük az adó és a vevő között, ez viszont nem a leggazdaságosabb megoldás. Hatékonyabb az a megoldás mikor az átvitt bitsorozatot használjuk fel az adó és a vevő órajelének összehangolásához, szinkronba hozásához. Ez azt jelenti, hogy előírunk egy speciális bitsorozatot, amit szinkronizáló jelnek nevezünk, aminek feladata az adó és a vevő működésének szinkronizálása, az órajelképzés időbeli összehangolása. A szinkronizáláshoz megfelelő szabályrendszert is ki kell dolgozni, ez vezetett el a kommunikációs protokollok alkalmazásához, ez tartalmazza a vevő és az adó oldal szinkronizálásához
szükséges adatokat. pl: • azok az eljárások, melyekkel az adó jelzi, hogy adatokat kíván küldeni, a vevő pedig visszaigazolja, hogy képes fogadni adatokat, • az adatátvitel során fellépő hibák felismerési, illetve kijavítási szabályai. A párhuzamos átvitelnél ellenben vezérlővonalakon keresztül megoldott ez a probléma, ezért ott szerencsésebb eset áll fent. Soros példa: RS-232-C kommunikációs protokoll, ami részletesen meghatározza az adatátvitel mechanikai, villamos, funkcionális és eljárási szabályrendszerét. Dokumentációja csak több ezer oldal terjedelmű leírásban határozható meg. 15) Monitorok típusai, paraméterei, működési elve. A monitorvezérlő kártya feladata, felépítése, jellemzői (felbontás, színmélység, képmemória mérete) és működése. Minden multimédia rendszer legfontosabb kimenetei perifériája a megjelenítő egység, ami alatt egy monitor és az azt meghajtó grafikus kártya együttes
értendő. A monitoron jelenik meg a grafikus kártya által előállított számítógép kimenet. A monitor lelke a katódsugárcső, melyben elektronágyúk találhatóak. Minden elektronágyú elektronsugarat bocsát ki, mellyel bombázza a monitor falát borító foszfort. Ezek mikor sugárzás éri őket fényt bocsátanak ki. Annak érdekében, hogy a színek is megjelenítésre kerüljenek három -féle foszforanyagot alkalmaznak, a piros a kék és a zöld alapszínekhez. Minél erősebb az elektronsugár intezitása annál erősebb fényt bocsát ki a foszfor. Ebből következőleg a három típusú foszfor által kibocsátott színek keveréke adja az adott területen megjelenő színt. Különböző színek előállításához az egyes elektronsugarak intenzitását változtatni kell, ezt a számítógép videokártyájáról érkező analóg jelek vezérlik. A képernyőn az elektronsugarak egyszeri átfutása egy képkocka kirajzolása. A képkocka kirajzolása után az
elektronsugár a képernyő bal felső sarkába tér vissza és onnan kezdi el a következő képkocka kirajzolását. Napjainkban a képváltások száma másodpercenként 60-ról indul. A monitortechnika jelenkori vívmányai Plazmaképernyő A plazmaképernyők két üveglapból állnak, amelyek között egy 0,2 mm nagyságú, gázzal töltött részecskéből álló mozaik található, és ezt az egész felületet elektromos vezetőrács tartja feszültség alatt. Az egyes célozható részecskékben elektromos kisüléseknek köszönhetően a gáz ultraibolya sugarakat bocsát ki, amelyektől a részecskék foszforrétege világítani kezd. Folyadékkristályos képernyő A folyadékkristályos képernyők (liquid crystal display, LCD) üvegfelületekbe zárt szerves anyagokat, úgynevezett folyadékkristályokat használnak, amelyek molekuláris tulajdonságai a kemény kristályok tulajdonságaihoz hasonlók. Ha feszültség alá kerülnek, a folyadékkristályok az elektromos
mező irányába rendeződnek, így más optikai tulajdonságaik lesznek. Elektrolumineszcens képernyő Az elektrolumineszcens képernyőkben (ELD) olyan anyagot használnak, amelyre fotólitográfiai módszerrel egy sor vékony rétegű félvezető áramkört visznek fel. A réteg olyan anyagokból áll, amelyek kellő elektromos feszültség hatására fényt bocsát ki. A képpontok vezérlése tranzisztor áramkörökkel történik LED képernyő A LED képernyők minden képpontja három színes (RGB) LED-ből és egy fehér LED-ből (a fényesség szabályozására) áll. Ezek a fénydiódák képezik az aktív színmátrixot VGA felbontáshoz legalább 1,2 millió tranzisztor szükséges. A TFT képernyő Ma a létező legjobb képernyő hordozható számítógépek (lap-topok) számára. Az egyes képpontokat felgőzölt, átlátszó, vízszintes és függőleges vezetőpályákon irányítják. A keskenyfilm tranzisztor (TFT) minden kereszteződési pontnál ki- és
bekapcsolja az elektromos mezőt a folyadékkristályok polarizálásának érdekében, minek következtében a fényerő, a szín és az élesség lényegesen jobb lesz, mint a jóval egyszerűbb DTSN képernyőké. A TFT-ken belül is több típust különböztetünk meg, de működési elvük alapvetően nem különbözik egymástól: Az LCD-ben Egy aktív szűrő bizonyos mennyiségű fehér háttérfényt enged át. Ez minden egyes képpont piros, kék és zöld részét a fény szűrésével éri el. Ezek a kristályszerű, hosszúkás alakú molekulák természetes állapotukban a felszínnel párhuzamosan helyezkednek el, de a helyzetüket egészen precízen lehet irányítani egy – az első szűrő mögött elhelyezkedő – finoman rovátkázott felszínnel, mivel a molekulák ezeket a rovátkákat követni fogják, amikor kölcsönhatásba lépnek vele. A TFT (Thin Film Transistor) technológia belépése rendkívüli javulást eredményezett a színes panelek
képminőségében: akár 25 milliszekundumos válaszidőt is képesek voltak elérni. A TFT panelekben, egy külön tranzisztormátrixot találunk, amely az LCD – hez csatlakozik – minden egyes képpont alapszínéhez egy tranzisztor tartozik. Ezek hajtják meg a képpontokat, és megszüntetik az LCD – ék eddigi problémáit, például a lassú válaszidőt vagy a szellemképet. A TFT – ék jóval vékonyabbak, mint a klasszikus LCD – ék, így könnyebbek is. Egy 15 hüvelykes TFT monitorban 1024 x 768 x 3 darab tranzisztorra van szükség, ami több mint 2 milliót jelent, és ezek mindegyikének tökéletesnek kell lennie. Ezt a tranzisztormátrixot egyetlen, igen drága szilíciumlapon kell létrehozni. Bizonyos darabszámú hibás elem esetén az egész lap használhatatlanná válik a megjelenítés szempontjából. Ebből kifolyólag a kárba ment lapkák száma viszonylag magas, és ezért kerülnek még ma is viszonylag sokba a TFT panelek. A grafikus kártya: a
számítógépből érkező grafikus jeleket a grafikus kártya fogadja. A kártya az átvett digitális jelekből digitális-analóg átalakító segítségével analóg jeleket állít elő. A digitális-analóg áramkörök az egyes színekhez tartozó digitális jelekből a színnek megfelelő analóg jelet állítják elő, ezek vezérlik a monitorok elektronsugarainak az intenzitását. A grafikus kártyák működését a videó BIOS funkciói határozzák meg. Ezeket a funkciókat használják a programok, amikor a grafikus kártyával kapcsolatba lépnek. A grafikus kártyák alapvető jellemzői a következők: • felbontás, • megjelenítendő színek száma, • megjelenítés módja. A grafikus kártya felbontása a képernyő függőleges és vízszintes irányban megjelenítendő képpontok számát határozza meg. Minél nagyobb egy adott kártya felbontása, annál jobb minőségű a számítógép képernyőjén megjelenő kép, mert a kép kirajzolásához több
képpont kerül felhasználásra. A képpontokhoz tartozó színinformáció mennyisége határozza meg a képen megjelenő színek számát. A színek száma a színmélység. A grafikus kártya videomemóriájában tárolja a képpontok színinformációit Minél nagyobb a videomemória, annál nagyobb helyen lehet színinformációt tárolni. Egy képpont színinformációja 1, 2, 4, 8, 16, vagy 24 bit hosszú lehet. Ha a színinformáció mennyisége 1 bit akkor ez a bit csak arra használható, hogy jelezze, hogy az adott képpont megjelenjen-e vagy pedig kioltott állapotban legyen a képernyőn. A 8 bit színinformáció 256 szín, míg a 256 bit már 65 534 szín megjelenítését teszi lehetővé a 24 bit pedig már átlépi az emberi szem megkülönbözetőképességét, ezért ennek gyakorlati alkalmazása már a tudományos kutatások kategóriájába tartozik. Egy grafikus kártya általában többféle felbontást támogat. Minden felbontáshoz tartozik egy pixel szám,
ennek függvényében határozható meg a videomemória minimális mérete. 16.) Analóg és digitális hírközlési csatornák jellemzése (kapacitás. Zajok hatása), átviteli közegek. Vonalak megosztásának módszerei Digitális jelek kódolása A paritásbit és CRC Modemek feladata. ISDN, ATM, DSL technológiák A távközlés területén nagyon sokáig az analóg átvitel volt a jellemző. A jeleket valamilyen fizikai jellemzőjük időben folytonos váltakozásával vitték át (pl. feszültség) A digitális elektronika és a számítógépek gyors fejlődése során, a telefonközpontok közötti nagy sebességű trönkökön folyamatosan a digitális átvitelre tértek át. A digitális átvitel több szempont alapján is jobb az analógnál. Először is nagyon kicsi a hibaaránya Analóg áramkörök esetén erősítőket használtak a vonalon fellépő csillapítások kompenzálására, azaz a jel regenerálására. Mivel a hiba halmozódik, ezért a sok
erősítőn átmenő jelek várhatóan komolyan torzultak Ezzel szemben a digitális jelek tökéletesen helyreállíthatóak, hiszen két lehetséges értékük van, az 1 és a 0. ezért itt nem lép fel halmozódó hiba. A digitális egy másik előnye az, hogy egyetlen eszköz hatékonyabb kihasználásával, különböző típusú adatok kevert átvitelére van lehetőség (hang, zene, adat). A meglévő vonalakon is nagyobb adatátviteli sebesség érhető el. Kezdetben a szövegátvitelt valósították meg, ezért az átvitt információ egysége a bitcsoport volt, amely a szöveg karaktereit kódolta. Ezt karakterorientált átviteli eljárásnak nevezzük A hálózatok elterjedésével a szöveges jellegű információk átvitele mellett egyre nagyobb arányban volt szükség más jellegű adatok átvitelére is, így szükségessé vált egy olyan átviteli eljárás ami tetszőleges bitszámú üzenetátvitel tesz lehetővé. Az ilyen átvitelt bitorientált eljárásoknak
nevezzük A jel regenerálásához elegendő egy összehasonlításon alapuló döntést hozni. Valamint ahogyan a digitális technikai eszközök ára töretlenül esik, ugyan úgy csökken a hozzá kapcsolódó kapcsolástechnikai eszközök ára is. Zajok hatása kapacitás: A csatornán történő információátvitel során az adó megváltoztatja a csatorna fizikai közegének valamilyen tulajdonságát, ami a közegen továbbterjed és a vevő ezt az állapotváltozást érzékeli amikor egy jelet viszünk át egy fizikai csatornán, három akadállyal kell szembenéznünk: a csillapítással, sávkorlátozással, és a zajokkal. A jelek átvitele a csatornán soha sem tökéletesek Az átviteli közeg több -féle hibát torzítást vihet a jel hordozójába. Ezek az alábbiak lehetnek: • a környezet termikus vagy véletlenszerű zajai, amelyek szuperponálódnak az adatokat hordozó jelekre. Az ilyen jelek statisztikus eloszlása valamilyen általánosan ismert statisztikai
eloszlásnak fele meg, jól kezelhetőek statisztikai módszerek segítségével (egyenletes eloszlás, gauss elosztás) • környezetben jelentkező csoportos véletlenszerű hibák, zavarok. Az így keletkező nagy amplitúdójú zajok a csatornán átvitt teljes jelsorozatot megsemmisítheti. • Az átviteli közeg nemlineáris tulajdonságából adódó, különböző frekvencián különböző csillapítások formájában jelentkező torzítás. Ez egy inverz függvénnyel semlegesíthető • az átviteli közeg különböző frekvenciákon más és más sebességgel viszi át a jeleket. Ekkor a hullámdiszperzió jelenségét tapasztaljuk meg. A hírközlés gazdaságossága szempontjából nagyon fontos kérdés, hogy az információ milyen sebességgel halad át a csatornán. A maximális átviteli sebességet a csatorna kapacitásának nevezzük: A csatornán átjutó információmennyiség rendszerint nem éri el a maximumot, s így a csatorna kapacitásának egy része
kihasználatlan marad. A kapacitás és a ténylegesen átvitt információ különbségének az arányát a csatorna redundanciájának nevezzük. A jel/zaj viszony, vagy zajnívó a hasznos jel és a zaj teljesítményének az aránya. Minél nagyobb a hasznos jelek energiája, annál biztosabb a vétel. Ha nagy utcazajban kis energiával suttogunk, nagy lesz az információveszteség. Átviteli közegek: Alapvetően két módszert alkalmazhatunk, vezetékes megoldást, valamint valamilyen elektromágneses sugárzáson alapuló rendszert. A vezetékes rendszerek telepítése nehézkesebb, épületeken belül kábelcsatornákat kell használni, épületen kívül közműalagutak, árkok létrehozásával kell vezetni a kábeleket, védeni kell az időjárástól, környezeti behatásoktól, zavaroktól. Ugyanakkor az így létrehozott rendszerek lehallgatása nehézkesebb, főleg multiplexelt adatcsatornák, illetve optikai kábelek esetén. Az elektromágneses sugárzáson
alapuló rendszereknél általában bizonyos távolságokon elhelyezett adók és vevők jelentik az egyetlen beruházást. Az így kisugárzott jelet bárki foghatja a megadott határokon belül, viszont ezt le is lehet hallgatni, ezért megfelelő titkosítási eljárások használata szükséges. Típusai: • csavart érpár UTP • koaxális kábel • optikaim kábel • lézer megoldások • infravörös • rádióhullám • szort spektrumú sugárzás • műholdas átvitel. Vonalak megosztása Ahhoz, hogy információcserét valósíthassunk meg két végpont között, szükségünk van a végpontok között az összeköttetést biztosító vonalakra. Sok esetben azonban a kommunikáció jellegéből fakadóan nincs folyamatos információcsere rajta, azaz a legtöbb kapcsolatban a vonalhasználat csak időszakosan jelentkezik. Nem ésszerű tehát egy kommunikációs csatorna számára kisajátítunk egy teljes vonalat Ezek a vonalak igen jelentős költséggel épültek
meg, célszerű minél jobban kihasználni azokat. Amennyiben különválasztjuk a funkciókat, a csatornára, amelyeken az információcsere történik, és a felhasznált, tényleges, fizikailag létező összeköttetéseket biztosító vonalakra, akkor lehetőség nyílik a gazdaságosabb kihasználásra. Mivel az adó és vevő oldal számára csak a végeredmény, az információ a fontos, ezért egy vonalon több csatorna is kialakítható, a megvalósítás pedig többféleképpen is elképzelhető. Multiplexelés. A fizikai közeget több csatorna között osztjuk meg, annak érdekében, hogy a vonalat több adó és több vevő vehesse igénybe. A multiplexelés olyan eljárás, amelynek során egy adatvonalat előre meghatározott, rögzített módszer szerint elemi adatcsatornákra osztjuk fel. Minden bemenõ elemi csatornához egy kimenõ csatorna is tartozik. A mutiplexelést lehet az időtartományban és a frekvencia tartományban is elvégezni, így beszélhetünk
frekvenciaosztásos és az idõosztásos multiplexelési módszerekről, valamint illetve ezek kombinációjáról. Az üzenet és csomagkapcsolási módszerek alkalmazásával hatékony vonal kihasználás érhető el. Az átviendő információt kisebb adagokra kell bontani, a vonalon aztán egymás után átvinni, majd a darabokból újra összerakni. A csomagok folyamatos áramlása az adó és a vevő számára úgy tűnik, mint folyamatos összeköttetés. A vonalkapcsolás-nak hívott módszer a harmadik lehetőség. Az adatvezetéket a kommunikálni szándékozó felek csak a kommunikáció időtartamára kapják meg. Tehát az adatvezeték nem egy adóhoz és egy vevőhöz tartozik, hanem csak annak függvényében, hogy szükségük van-e rá, valamint más nem használja-e a vonalat. A kapcsolat a kommunikáció befejezésekor megszűnik Digitális jelek kódolása A fizikai vonalon való átvitelhez a bitek ábrázolására több lehetőség is van, amely közül a
legegyszerűbb az, mikor minden bitet, értékétől függően két feszültségszinttel ábrázoljuk. Szokásos az 1 állapot MARK-nak, a o-át SPACE-nek nevezni. Létező megoldásai: • • • • • • NRZ nullára vissza nem térő: mindig az a feszültség van a vonalon, amit az ábrázolt bit határoz meg. Ha egy bit 1-es akkor a feszültség teljes idő alatt azonos szintű, ha 0-s, akkor más szintű. Két vagy több azonos bit esetén a feszültség azonos szinten van. RZ nullára visszatérő: a nulla a nyugalmi állapot, 1 bitnél a bitidő felében felvesz egy feszültségértéket, a második felében visszatér nulla feszültségre. NRZI nullára nem visszatérő megszakadásos: a nulla bitnek nulla felel meg, az egy értékű bithez nulla vagy feszültségszint tartozik a következő szabály szerint: ha az előző egyeshez nulla szint tartozott, akkor feszültség lesz, ha az előző egyhez feszültség tartozott akkor nulla lesz a bithez rendelt
feszültség. AIM váltakozó invertálás: minden egyeshez rendelt polaritás az előző egyeshez rendelt ellentettje lesz, a nulla jelöli a nullát. Hosszú nulla sorok esetén bitbeszúrás módszert alkalmazzuk PE Manchester kódolás: ennél a jelátmenet ugrás jelképezi a biteket, de itt az ugrás irányanakm is jelentősége van pl. 0-1 átmenet egyes bitet, 1-0 átmenet nullát jelöl Mikor több azonos bit követi egymást, akkor jelnek a két bit között (félidőben) vissza kell térnie az eredeti jelszintre azért, hogy a következő bit idején ugyanolyan irányú átmenet következhessen. CDP feltételes kétfázisú jel: a nulla bitet az előző bithez tartozó jelváltás azonos iránya, míg az egy bitet az előző bithez tartozó jelváltás ellentétes iránya mutatja. A paritásbit és a CRC: Paritásvizsgálattal: Az adatátvitel során az esetleges átviteli hibák felderítését megkísérelhetjük oly módon, hogy az átviendõ adatbit-csoportot egy
paritás bittel egészítjük ki úgy, hogy az így kiegészített adatcsoportban lévõ 1 értékû bitek száma páros (páros paritás), vagy páratlan (páratlan paritás) legyen. Ilyen módon, az ADÓ oldalán mindig biztosítható, hogy az 1-es értékû bitek száma mindig páros/páratlan legyen, és a VEVÕ oldalon az egy (ill. páratlan számú) bit változása miatti hiba felderíthetõKettős hibát a módszer nem vesz észre. Paritásbitet a mágnesszalagokon kívül általában az operatív tár védelmére is használnak ECR (egyedi bithibák) CRC (Cyclic Redundancy Code) Ellenőrző összegek használatosak akkor, ha a várható hibák nem függetlenek egymástól, hanem egy adatfolyam egymást növelő bitjei sérülnek. Például egy hálózati zavar, vagy mechanikai sérülés hatására. CRC Modem Olyan eszköz, amely egy (digitális) bitsorozatot analóg átviteli csatornán történő átvitelre alkalmas analóg jellé alakít át (modulál), illetve a vett
analóg jeleket (digitális) bitsorozattá alakítja vissza (demodulál). Sebessége szerint megkülönböztetünk kis-, közepes-, és nagy sebességű modemet. Működése során a bitsorozatot ábrázoló jellel modulálja a hordozó frekvenciát, és ezt a modulált jelet kiadja az átviteli vonalra, illetve a beérkező frekvenciamodulált jelet demodulálja. A MODEM szó a MOdulátor/DEModulátor szavak összevonásából származik. ISDN Az ISDN telefon a 20. sz végén használt modern digitális telefon Az ISDN (Integrated Services Digital Network) angol rövidítés, jelentése integrált szolgáltatású digitális hálózat. A fejlett országok telefonközpontjai már digitális rendszerben működtek, a hálózat digitalizálását viszont csak hosszú idő alatt lehet megvalósítani elsősorban fényvezető kábelekkel. Egy olyan átmeneti megoldást kellett találni, mely alkalmas a digitális rendszerre hagyományos kábelekkel is. Ez volt az ISDN, mely
tulajdonképpen egy négyvezetékes összeköttetés hagyományos kábelen. A felhasználói (előfizetői) oldal egy csatlakozó dobozban végződött. Ide kellett bedugni az ISDN telefont (a hagyományos nem jó), amely csak szerkezetében tér el a régiektől. További csatlakozási lehetőség volt fax, internet és videotelefon részére Ez utóbbi használata kizárja a többi egyidejű használatát, a telefon, fax és internet szolgáltatásból egyidejűleg bármely 2 használható. A digitális fax működése is eltér a hagyományostól, a gép felismeri a karaktert (ha szöveges a dokumentum) és csak annak kódját továbbítja digitálisan. Tehát szöveg küldése vagy fogadása gyorsabb, közben ráadásul telefonálni vagy internetezni is lehet. Átkapcsolásra nincs szükség, ha fax hív, automatikusan a fax kapcsolódik. Az ISDN vonalnak 4 egymásután következő telefonszáma van, valamint különböző csengetések is beprogramozhatók. ATM Az ATM rugalmas
és testreszabható megoldást nyújt a minőségi szolgáltatások iránti egyre fokozódó igények kielégítésére olyan hálózatok esetében, amelyek többféle információtípust (adatot, hangot és valós idejű kép- és hanginformációt) is támogatnak. Az ATM segítségével mindezek az információtípusok egyetlen hálózati kapcsolaton keresztül továbbíthatók. Az ATM definíciója Aszinkron adatátviteli mód (ATM) – egymással kapcsolatban álló technológiákat, köztük a szoftvert, a hardvert és a csatlakozáshoz szükséges eszközöket jelöli. Az ATM különbözik a jelenlegi LAN- és WANtechnológiáktól, hiszen kifejezetten a nagy sebességű kommunikáció támogatására tervezték Az ATM lehetővé teszi, hogy a hálózatok a leghatékonyabban használják ki a sávszélességet mint erőforrást, miközben fenntartja a szigorú szolgáltatási követelményekkel rendelkező felhasználók és programok számára a szolgáltatás minőségét
(QoS). Az ATM alapkomponensei a végponti számítógépek, az ATM-hálózathoz csatlakoztatott számítógépek, valamint azok az ATM-kapcsolók, amelyek összekötik a végponti számítógépeket és biztosítják az adatok sikeres továbbítását. Aszinkron – a rendelkezésre álló sávszélesség nincs felosztva időzítő mechanizmus vagy óra által szinkronizált rögzített csatornákra vagy tárolóhelyekre. Az aszinkron kommunikációs módszert használó eszközök között nincs kapcsolat abban a vonatkozásban, hogy milyen sebességgel képesek küldeni és fogadni az információt. A küldő és a fogadó saját fizikai korlátaik és a hálózati információáramlás fenntartására való képességük figyelembe vételével egyeztetést végez az adatátviteli sebességet illetően. Átviteli mód – a küldő és a fogadó közötti információáramlás módját jelöli. Az ATM esetében a továbbítandó adatok strukturálása és felosztása a kis méretű,
fix hosszúságú cellákra vonatkozó koncepció alapján történik. Azzal, hogy nem a legtöbb létező hálózat esetében alkalmazott változó hosszúságú csomagküldési mechanizmust használja, az ATM biztosítja, hogy a kapcsolatok egyeztetése és kezelése során egyetlen adattípus vagy kapcsolat se sajátíthassa ki az adatátviteli útvonalat. Az ATM előnyei Az ATM használata a következő előnyökkel jár: Nagy sebességű kommunikáció Kapcsolatorientált, a telefonos hálózathoz hasonló szolgáltatás Gyors, hardver alapú átkapcsolás Egyetlen univerzális, más egységekkel együttműködni képes hálózati adatátvitel Egyetlen hálózati kapcsolat, amely megbízhatóan alkalmazható hang, kép és adat továbbítására A hálózati sávszélesség rugalmas és hatékony lefoglalása DSL Hagyományos rézdrótokon keresztüli nagysebességű adatátvitelre képes technológiák gyűjtőfogalma. A DSL technológiák a hagyományos
vonalkapcsolt telefonos megoldásokkal szemben, amelyek a hívó és a tárcsázott végpont között alakítanak ki egy áramkört, kizárólag a végállomás és a telefonközpont között építenek fel kapcsolatot, amely jóval zajmentesebb és így nagyobb sebességű kommunikációt tesz lehetővé. Ezen kívül a DSL kapcsolatokon az ISDN-hez hasonlóan már eleve digitális kommunikáció zajlik a telefonközpont és a végkészülék között, így külön modemre nincs szükség a számítógép csatlakoztatásához. A különböző DSL technológiák a legelterjedtebb szélessávú hozzáférési módok közé tartoznak a fejlett országokban. 17. A számítógép hálózatok architektúrája, az OSI-modell (rétegek, protokollok, rétegszolgáltatások). A TCP/IP protokoll (feladata, rétegei, információ-áramlás, címzés, útválasztás). A számítógép hálózatok - a megvalósításuk bonyolultsága miatt - tehát rétegekre osztódnak. Felmerül a kérdés.
Mik legyenek az egyes rétegek feladatai és azok határai hol legyenek? Több világcég megalkotta a saját elképzelései alapján a saját hálózati architektúráját, de az eltérések miatt egységesíteni kellett, amit csak nemzetközi szinten lehetett megoldani. Ez a szerep az ISO-ra (International Standards Organization -Nemzetközi Szabványügyi Szervezet) hárult. Ez a szervezet nem csak a számítástechnikában, hanem az élet más területein is igyekszik szabványokat teremteni, mint pl. a csavargyártásban A hálózatokra vonatkozó rétegmodellt 1980-ban fogalmazta meg OSI (Open System Interconnection) néven. Ez viszont nem szabvány, hanem csak egy ajánlás Mindössze csak azt mondja meg, hogy milyen rétegekre kell osztani egy hálózatot és ezen rétegeknek mi legyen a feladatuk. Nem kötelezõ betartani A megvalósított rendszerekben egyes rétegei szinte teljesen üresek, másokat tovább kellett osztani zsúfoltságuk miatt. Sok hiányossága ellenére a
mai napig alapnak tekintik a gyártók. Az OSI referencia modell szerint egy hálózatot 7 rétegre osztunk. A mai modern számítógép hálózatok tervezését strukturális módszerekkel végzik, vagyis a hálózat egyes részeit rétegekre (layer) vagy más néven szintekre (level) szervezik, melyek mindegyike az előzőre épül. Az azonos szintű egységek csak egymással kommunikálnak. E kommunikáció szabályait protokollnak nevezzük. Ezen rétegek és protokollok halmazát hálózati architektúrának nevezzük (OSI Open System Interconnection.) Szintjei: • 1. alkalmazási réteg: széles körben igényelt szolgáltatásokat tartalmaz (pl felhasználói alkalmazás pl. megírom a levelet a levelező program segítségével) • 2. megjelenítési réteg: tömörítést, rejtjelezést végezhet (pl ellátom digitális aláírással vagy titkosítom a levelemet, hogy illetéktelenek ne nézegethessék) • 3. együttműködési réteg: lehetővé teszi, hogy két PC
felhasználói kapcsolatot létesítsen egymással (p. kapcsolatba lépek azzal a számítógéppel ami majd továbbítja a levelemt Novell TCP/IP) • 4. szállítási réteg: feladata a végpontok közötti hibamentes átvitel biztosítása, sz összeköttetések felépítése és bontása, csomagok sorrendhelyes elhelyezése. (megbízható nyugtázott átvitelt kérek) • 5. hálózati réteg: a kommunikációs alhálózatok működését vezérli Feladata az útvonalválasztás a forrás és a célállomás között. • • 6. adatkapcsolati réteg: megfelelő méretűre tördeli az adatokat és előkészíti a legközelebbi megálló felé történő továbbításra (hardver adatkapcsolati réteg pl. ethernet kártya) 7. fizikai réteg: a bitek kommunikációs csatornába bocsátásáért felelős, csatlakozások elektromos és mechanikai definiálása. TCP/IP protokoll: A TCP/IP nem más mint egy protokollkészlet, amelyet arra dolgoztak ki, hogy hálózatba kapcsolt
számítógépek megoszthassák egymást között az erőforrásokat. A fejlesztés az ARPAnet köré csoportosult kutatók munkája. Valószínűleg az ARPA-net a legismertebb TCP/IP alapú hálózat A TCP/IP protokoll két alrendszerének az alábbi feladatai vannak: 1. TCP a küldő számítógépen a továbbítandó adathalmaz feldarabolása adatcsomagokra, és az adatcsomagok címzése. Az adatokat fogadó számítógépen pedig, a kapott adatcsomagok összerakása, és így az eredeti adathalmaz előállítása. 2. IP az adatcsomagok irányítása, a kommunikációban résztvevők azonosítása Szintjei: 1. Alkalmazási szint: itt vannak a felhasználói és a hálózati kapcsolatokat biztosító programok 2. Hoszt-hoszt réteg (tarnsport): az OSI modell szállítási hálózati részének felel meg A létesített és fenálló kapcsolat fenntartását biztosítja. Két rétegprotokollból áll a TCP azaz a továbbítást szabályozó eljárás, a másik az
összeköttetésmentes szállítási protokoll az UDP. 3. Hálózatok közötti (Internet): az OSI modell hálózati rétegének felel meg, ez a réteg végzi a csomagok útvonal kijelölését a hálózatok között. Ennek a rétegnek a protokollja az IP másként, az üzenetvezérlő protokoll cím meghatározó eljárása, a foglalt címet meghatározó eljárás. A rétegben előforduló események és hibák jelzésére szolgál az ICMP Internet vezérlőüzenet protokoll. 4. Hálózati elérési: (Network Interface): az OSI modell két alsó szintjének felel meg, és ez biztosítja a kapcsolatot a csomópontok között (pl. Ethernet, Token-Ring, Token-Bus, PPP) Információ áramlás: A TCP a kapcsolatban lévő gépeken futó folyamatok kommunikációját biztosítja. Fogadja a tetszőleges hosszúságú üzeneteket a felhasználói folyamattól és azokat maximum 64 kbájtos darabokra vágja szét. Ezekhez fejlécet fűz, majd ezeket a darabokat egymástól független
datagramokként küldi el. A hálózati réteg sem azt nem garantálja, hogy a datagramokat helyesen kézbesití, sem a megérkezett darabok helyes sorrendjét. A TCP feladata az, hogy időzítéseket kezelve szükség esetén újraadja őket, illetve hogy helyes sorrendben rakja azokat össze üzenetté. Minden TCP által elküldött bájtnak saját sorszáma van A sorszámtartomány 32 bit széles, vagyis elegendően nagy ahhoz, hogy egy adott bájt sorszáma egyedi legyen. Címzés: A gépek egyedi azonosítására szolgál a címzés mechanizmusa. A jelen keretek között az Ipv4-es szabvány a legelterjedtebb IP szabvány Az Ipv6-os bevezetés alatt áll. A címek 32 bitesek és három részre osztahtóak Előtag: ez azonosítja a címosztályt. A címosztály mutatja meg, hogy az előtag után hány bitet kell hálózati címként, és hány bitet kell host címként értelmezni. Network Adress: (hálózati cím) az egyes hálózatok megkülönböztetésére szolgál, valamint a
központi adminisztrációt segíti elő, azaz ne lehessen két gépnek azonos IP címe. A hálózati címet központilag kell igényelni, és központilag utalják ki sz igénylőnek. Host Adress: a 32 címbit maradékát teszi ki. Ezt szabadon állítja be a címtartomány igénylő a saját gépein Az Ipv4 öt címosztályt definiál, de tulajdonképpen csak három címosztályt használnak. • • • A osztályú címtartomány több mint 16 millió állomás címzésére alkalmas, formája A.000 legfeljebb egy óriási multi kaphat ilyet. B osztályú címtartomány több mint 65 ezer állomás címzésére alkalmas formája A.B00 ez is kitüntetett cím. C osztályú címtartományban 254 állomás címezhető meg, formája A.BC0 Útválasztás: A csomagkapcsolt rendszerekben az útválasztás (routing) azt a folyamatot jelöli, amivel kiválasztjuk az útvonalat (path), amin a csomagot továbbküldjük és az útvonal választó az a számítógép, amely ezt
végrehajtja (IMP) Az útválasztási táblák tárolják az információt az elérendő csomópontokról és azok elérési útvonalairól. Ha két gép egyazon lokális hálózaton van, akkor útvonal kiválasztás nélkül közvetlen (direkt) összeköttetés létesíthető köztük. Különböző hálózatok közötti közvetett (indirekt) útvonal kiválasztásánál először a feladónak meg kell adnia azt az útválasztót, amihez a csomagot (datagramot) küldi. Majd az útválasztó fogja (esetleg újabb útválasztókon keresztül) a cél-hálózatra továbbítani a datagramot. 18. Lokális hálózatok szabványos magvalósítása (Ethernet, vezérjeles sín, vezérjeles gyűrű): protokollok, közeg-hozzáférés módszerek, átviteli közegek, fizikai egységek. A számítógép hálózatok egyik legdinamikusabban fejlődő területe a kisebb helyi hálózatok, azaz a lokális hálózatok. Hatékonyan lehet felhasználni a rendszer erőforrásait, nem kell minden
programot és adatot egy gépen tartani a munkához, és amennyiben szükséges megoldható, hogy egy időben több munkaállomásról tudunk azonos adatokon dolgozni. A perifériák száma csökkenthető, valamint nagyon hatékony kommunikáció valósítható meg a munkatársak között. A lokális hálózati szabványok kidolgozása itt is egy „de facto” szabvánnyal indult, amelyet a XEROX cég fejlesztett ki, és nagyon gyorsan elterjedt. A szabvány kidolgozásakor a gyártásautomatizálásban érdekel képviselő fő szempontja, hogy a gyártásban részvevő robotok „real time” idejű működésben legyenek összekötve. Erre az akkori megoldások legtöbbje alkalmatlan volt, így esett a választás két már akkor is létező szabvány, az IBM által kifejlesztett vezérjeles gyűrű és vezérjeles sín megoldásaira. Ilyen módon három szabványt fogadtak el, melyekre együttesen az IEEE 802-es szabvány részeiként hivatkoznak. A szabványokat részekre
osztották: • • • • • 802.1: az interfész primitíveket írja le 802.2: az adatkapcsolati réteg felső részét, az um logikai kapcsolatvezérlés al-rétegét definiálja 802.3: az Ethernet leírása 802.4: a vezérjeles sín leíráa 802.5: a vezérjeles gyűrű leírása Az IEEE 802 tulajdonképpen az OSI modell alsó két rétegében felállított szabványeljárások együttese. Fizikai réteg: az IEEE 802 három olyan fizikai közeget szabványosított, amelyeket az architektúra fizikai rétegében használhatnak: a sodort érpár, a koaxiális kábel és az optikai kábelt. A fizikia szabvány így megadja a kábel és az átvitel típusára, a kódolás módjára és az adat sebességére vonatkozó előírásokat. A fizikai réteg felelős a két berendezés közti fizikai összeköttetés létrehozásáért megszüntetésért, valamint az átviteli közegen keresztül bitek átviteléért. Meghatározza az adatkódolást, dekódolást, vezér az eszközök
időzítését. Közeghozzáférés al-réteg: a lokális hálózatokban lévő eszközök mindegyike a közös fizikai csatornán való hozzáférésért verseng. Mivel a LAN kialakításokban ezen a szinten számos hozzáférés-vezérlési módszert használnak, ütközéses és ütközés mentest. A szabvány ezek közül a CSMA/CD, a vezérjeles gyűrűt és a vezérjeles sín hozzáférés módszerét választotta szabványául. Logikai kapcsolatvezérlési al-réteg: ez a réteg a felette álló rétegeknek nyújt szplgáltatást ugyanolyan módon, ahogy azt a hagyományos adatkapcsolati protokoll nyújtje a távolsági hálózatban. Az OSI referenciamodellt követő LAN kialakításban, a logikai kapcsolatvezérlés feletti réteg maga a hálózati réteg. Felel az állomások közötti adatblokkok cseréjéért. Ahhoz, hogy meg tudják különböztetni az ugyanazon állomás által létesített cseretípusokat, bevezették a szolgáltatás-hozzáférési pont fogalmát, ami az
adatcserében résztvevő egyedi elem azonosításáért felel. Ethernet: Az Ethernet hálózaton mielőtt egy állomás adni akar, belehallgat a csatornába. Ha a kábel foglalt, akkor az állomás addig vár, amíg az üressé nem válik, máskülönben azonnal adni kezd. Ha egy üres kábelen két vagy több állomás egyszerre kezd el adni, ütközés következik be. Minden ütközést szenvedett keretű állomásnak be kell fejeznie adását, ezután véletlenszerű ideig várnia kell, majd az egész eljárást meg kell ismernie. Az Ethernet hálózat átviteli sebessége a jelenleg még legtöbbet használt rendszerekben 10/100/1000 Mbit/s sebességű. Ez persze nem azt jelenti, hogy a hálózatnak ez minden körülmények között az átviteli sebessége, hiszen egy ilyen hálózat a lehetséges terhelésének csak 60%-án üzemeltethető ésszerűen. Az Ethernet hálózaton többféle kábeltípus használható: • vékony koaxális kábel • vastag Ethernet kábel
(erősebb külső zavarok esetén) • csavart érpár • optikai kábelekkel A jelenlegi Ethernet kábelezési technika az üvegszálas gerincvezetéket részesíti előnyben, amelyhez jelismétlőkön keresztül csavart érpárokkal csatlakoznak a számítógépek, csillag topológiát formálva. Az Ethernet rugalmasságát növelik a hubok HUB. Ezek az egyik portjukon vett keretet bit-ről bitre átmásolják a másik portjukra, mintegy meghosszabbítva ezzel az elektromos jellemzők miatt rövidre korlátozott szegmenst (marha jó:))) szóval az elektromos áram jeleinek frissítését végzik, így nagyobb távolságban is elmegy a jel). Természetesen az ütközéseket továbbra is időben kell észleni, ezért a jelterjedési idő nem lehet hosszabb mint 64 byte elküldésének ideje, így négy repeater (HUB) helyezkedhet el. A hatékonyságot BRIDGE-k közbeiktatásával fokozhatjuk, ezek csak az egyik szegmensből a másikba irányuló jeleket engedik át így jelentősen
csökken az ütközések száma, ugyanis szétválasztja a szegmensek forgalmát. Sajnos az osztott közeg IEEE 802 hátrányi egyre inkább megmutatkoznak, (amikor kedves kollégánk intezív filmletöltési akcióba kezd, majd ezzel párhuzamosan mások esetleg nagy méretű fájlok másolását végzik, akkor a hálózat elviselhetetlenül lelassul) ezen a hálózatok szegmentálásáva segíthetünk. így terjedőben vannak az olyan megoldásom ahol az egyre kisebb szegmensek felállítása a tendencia. Erre a problémára kínálnak megoldást a SWICH-ek. Ezek funkciójukban tulajdonképpen multipot bridgek-k, ám képesek nem blokkoló módon továbbítani a kereteket. A SWITCH-nek szinte mindig van egy vagy több nagy sebességű portja is melyen át egy nem Ethernet gerinchálózatra csatlakozhat, így az egyes munkaállomások egymással a switch-en keresztül kommunikálnak, a külvilággal pedig a nagy sebességű gerinchálózaton át A LAN-ok szervezésében is fejlődő
tendenciák mutatkoznak. Mivel egy porton gyakran csak egy állomás található, egy sor biztonsági funkció implementálható. Megadhatjuk pl, hogy ki kinek küldhet keretet, így az állomások bár egy LAN-on vannak, mégis leválaszthatjuk egymásról és elkülönített virtuális LAN-okba ún. VLAN-okba szervezhetjük őket. Ez nem csak a biztonságot de a hatékonyságot is növeli Adatkapcsolati protokollok: Két állomás egyirányú (szimplex), váltakozó irányú (fél-duplex) vagy egyidejű kétirányú (duplex) üzemmódban kommunikálhat egymással. Szimpelx: ez a protokoll igen egyszerűen működik. Az adatátvitel mindig csak egy irányban, az adótól a vevőhöz folyhat, csak egy irányban továbbítódnak az adatok, tehát az adó csak adhat, a vevő csak fogadhat adatokat. Nincs meghatározva az átviteli sebesség az adót követi a vevő, ez azt jelenti, hogy hálózati rétegük mindig készen áll, kerethiba nem fordulhat elő. Fél-duplex: előfordul, hogy
a vevő nem képes olyan sebességgel feldolgozni a kapott infprmációt, ahogyan azt az adó küldi, ezért valamilyen módon le kell lassítani az adót. Ez úgy lehetséges ha vevő képes nyugtát küldeni az adónak, hogy megkapta a kerete és feldolgozta azt. Tehát az adónak várnia kell, amíg valailyen nyugtát nem kap. Full-duplex: a gyakorlatban az adatátvitel kétirányú. Egyazon csatornán küldi az adó az adatkereteket és ugyan ott kapja a nyugtakereteket. A két keret megkülönböztethető egymástól a keret fejrészében elhelyezett jelző alapján, ami a keret vételekor azonosítható. Ennél a protokollnál egy időben több adatkeret is tartózkodhat a csatornán, ez a csúszóablakos protokoll. A protokollban minden egyes, az adótól kiinduló keret kap egy 0-7 közötti sorszámot. Így a sorban elküldendő keretek sorszámaiból egy aktualizált listát tart fenn az adó listáján az elküldött de még nem nyugtázott keretek szerepelnek, mikor egy
nyugta megérkezik a vételről, a listán ez törlésre kerül, majd egy újabb keret kerülhet a csatornába. Megsérült keret érkezésekor két lehetőség kínálkozik az ismételt vételre. Hibás keret érkezésekor a következő kereteket nyugtázatlanul dobja el a vevő, így kényszeríti ismételt küldésre. A másik esetben a vevő eltárolja a hibás kivételével a kereteket, viszont nyugtát nem küld róla, így az adó képes a hibás keretet ismételten a csatornára küldeni. Közeg-hozzáférési módszerek: Üzenetszórásos csatornával rendelkező hálózatok esetében ténylegesen egy kommunikációs csatorna van és ezen az egy csatornán osztozik az összes hálózatba kapcsolt számítógép. Ehhez az egy csatornához kell minden állomásnak hozzáférni, ami az adást jelenti voltaképpen mivel a vétel nem probléma, mivel minden állomás veszi a többi adását és eldönti neki szól-e Véletlenszerű átvitelvezérlés: minden állomás a csatornán
véletlenszerűen kezd el forgalmazni, ez akkor jár sikerrel, ha csak egy adó forgalmaz, ellenkező esetben ütközés történik és az adás nem lesz sikeres. Erre a problémára dolgozták kis a CSMA/CD eljárást. Ennek a módszernek a lényege, hogy mielőtt egy adó forgalmazni kezd, belehallgat a csatornába és csak akkor kezdi el munkáját ha a csatorna üres. Ha mégis egyszerre két csatorna tenné ugyan ezt akkor ütközés keletkezik, ezt viszont azzal kompenzálják, hogy ha nem sikerült az átvitel, akkor egy véletlenül választott időponton belül nem kezdenek újra forgalmazni. Osztott átvitel-vezérlés: ez a módszer kiküszöböli az ütközéseket oly módon, hogy kiosztja a forgalmazás megkezdésének jogát egy időosztás alapján, ami körbe-körben jár az egyes állomások között (CSMA/CA) Két szokásos megvalósítása: Vezérjeles sín:(Token Bus) Fizikailag a vezérjeles sín egy lineáris vagy fa elrendezésű kábel, amelyre állomások
vannak csatlakoztatva logikailag gyűrűbe szervezett módon. Mindegyik állomás ismeri a szomszédjainak címét Amikor a gyűrűt üzembe helyezik, elsőként a legmagasabb sorszámú állomás küldhet üzenetet. Ez az üzenet tulajdonképpen a vezérjel. Két értéke lehet: szabad vagy foglalt Ha egy állomás veszi a vezérjelet, és azt szabadnak találja, üzenettovábbításra van lehetősége. Ha van elküldendő üzenete, akkor a vezérjelet foglaltra állítja, és azt hozzáfűzve az üzenethez, elküldi a címzett részére. A vezérjel állomásról állomásra továbbítása egy logikai gyűrűt képez. Helyi hálózatokra vonatkozó szabványát az IEEE 8024 szabvány alatt deklarálták Vezérjeles gyűrű: (Token Ring) Az IEEE 802.5 szabványa a vezérjeles gyűrű E topológiájú hálózatok esetében a leggyakrabban használt hozzáférési módszer a vezérjel továbbításos eljárás, amelynek során egy vezérjel (token) halad körbe, állomásról
állomásra. A vezérjel egy kis üzenet, amely a gyűrű foglaltságáról ad információt Ha jelzése szabad, akkor a token-t vevő állomás elküldheti üzenetét. A token-t foglaltra állítja, és az üzenettel küldi tovább vagy kivonja a gyűrűből. Az üzenet a gyűrűn halad körben állomásról állomásra Amikor a gyűrűben az üzenet visszaér az elküldő állomáshoz, akkor kivonja az üzenetét a gyűrűből, a token-t szabadra állítja, és továbbküldi az immár szabad jelzést adó vezérjelet más állomásnak. Központosított átvitelvezérlés: ebben az esetben egy állomás irányítja a hálózatot. Ez a vezérlő berendezés meghatározza a többi állomás számára, hogy mikor van joga üzenetet küldeni, az állomások figyelik ezt a berendezést. 19.) Az operációs rendszer erőforrás-kezelőjének feladat. A holtpont és kezelésének stratégiái Biztonságos állapot. A szemafor használata a termelő-fogyasztó folyamatok esetében Az
erőforrás-kezelő a rendszermag azon része, amely az erőforrások elosztásáért felelős. Ha egy folyamat erőforrást igényel, az erőforrás-kezelő dönti el, hogy a kérés kielégíthető-e. Pozitív döntés esetén az erőforrás tulajdonjoga bejegyződik a folyamatleíró blokkba, és az erőforrás is hozzárendelődik az őt kérő folyamatokhoz. Használat után a folyamat egy újabb rendszerhívást ad melynek hatására az erőforrás-kezelő felszabadítja az erőforrást. Vannak esetek mikor a folyamat megszűnik mielőtt, felszabadulnának erőforrásai (hiba esetén). Előfordulhat, hogy az igényt nem lehet kielégíteni. Ha a folyamatnak nincs joga a választott erőforrás használatához vagy az éppen nem működőképes, az elutasítás tartós vagy végleges. A folyamat ekkor hibaüzenetet kap a rendszermagtól. Ha az igény jogos de nem áll rendelkezésre szabad erőforrás, akkor az igény várólistára kerül. Megállapíthatjuk, hogy az erőforrás
kezelő gondoskodik a számítógép erőforrásainak hatékony, gazdaságos elosztásáról, illetve az erőforrások használatáért vívott versenyhezetek kezeléséről. Holtpont: ha több folyamat egy olyan erőforrás felszabadulására vár, amit csak egy ugyancsak várakozó folyamat tudna előidézni. Ez abban az esetben fordul elő ha folyamat erőforrás hozzáférését semmilyen módon nem szabályozzuk. Mikor egy folyamat igénnyel jelentkezik kielégítjük, mikor nincs szabad erőforrás várakoztatjuk, csakhogy ez nem küszöböli ki azt az esetet amikor két folyamat kölcsönösen lefoglalva tart egy-egy a másik számára is szükséges erőforrást, így a folyamatok körkörösen egymásra várakoznak, de a lefoglalt erőforrást nem engedik el még meg nem kapják az igényelt jogot a munkájuk befejezéséhez szükséges erőforrásra. Ez az eset a túlzottan liberális megközelítésű rendszerkezelés sajátja mely engedi egyszerre több folyamat
versengését az erőforrásokért. Ez a párhuzamosságot megszüntetve megelőzhető Kiéheztetés: mikor egy folyamat az erőforrás kezelő stratégiája miatt beláthatatlan ideig nem jut erőforráshoz. Amikor megtiltjuk, egyszerre több folyamat is rendelkezzen erőforrással. Ez esetben az erőforrással rendelkező folyamat sohasem várakozik, minden igénye kielégíthető, a többiek pedig várnak, hogy befejeződjön, mert akkor ők jutnak az összes erőforráshoz. A módszer a lehetőségét is megszünteti a holtpont kialakulásának. Viszont többnyire a rendelkezésre álló erőforrások száma jóval nagyobb, mint amit egy folyamat igényel, így az erőforrások jó része kihasználatlanul áll. Ez még a kisebbik baj, a biztonságért a rendszer lelassulásával fizetünk. A másik hátrány jóval súlyosabb. Amíg az egyik folyamat használhatja az összes erőforrást, a várakozó folyamatok elszaporodhatnak a várakozási sorban. Az erőforrások
felszabadulása után az erőforrás kezelő valamilyen algoritmus alapján dönt arról, hogy melyik folyamat következik. Ha ez a stratégia nem kellően demokratikus, vannak kiemelt és háttérbe szorított folyamatok (prioritásos módszer), előfordulhat, hogy egy folyamat hiába áll sorba, mindig akad egy, amelyik megelőzi. Ilyenkor még csak megbecsülni sem lehet, hogy a hátrányos helyzetű folyamat mikor futhat. Ez kiéheztetés állapotához vezet Holtpont kezelésének stratégiái: A szélsőséges liberalizmus és a szélsőséges konzervativizmus egyaránt veszélyekkel jár. Alapvetően két -féle stratégia választható kezelésükre: • megelőzés: meg kell előzni a holtpont kialakulásának lehetőségét, • felszámolás: figyelni kell, hogy kialakult-e holtpont és ha igen fel kell számolni. Alapvetően a megelőzés kevesebb veszteséggel jár mint a kialakult holtpont megszüntetése, de nem minden esetben alkalmazható. Holtpont kialakulásához
vezető körülmények: • • • • kölcsönös kizárás van: vannak olyan erőforrások amik nem megoszthatóak, várakozás közben lekötés történik: erőforrásra várakozó folyamatok lekötve tarthatnak erőforrásokat, rablás nincs: vannak olyan erőforrások amik erőszakkal nem elvehetőek, ciklikus várakozás lehetséges: az erőforrásra várakozó folyamatok körkörösen egymásra várhatnak. I. Megelőző stratégiák: könnyű belátni, hogy ha a négy feltétel legalább egyikének kialakulását megakadályozzuk, nem alakulhat ki holtpont. A feltételek vizsgálata során az is kiderül, hogy a kölcsönös kizárás és a rabláskizárása összetevőivel nem tudunk manipulálni, mivel ezek a rendszer sajátosságai. 1. Egyetlen foglalási lehetőség (One-shot allocation): ez a stratégia a várakozás közbeni erőforrás lekötést tiltja meg azáltal, hogy a folyamatok csak egy lépésben induláskor foglalhatják le a szükséges erőforrásokat. Ha
bármelyik szükséges erőforrás hiányozna a folyamat várólistára kerül. Holtpont nem alakulhat ki mivel a futó folyamatok nem kényszerülnek várakozni, és valamivel rugalmasabb, mint a konzervatív eljárás, mivel egy időben több folyamat is futhat. Viszont az erőforrás kihasználás szempontjából pazarló, mivel mindig vannak szabad erőforrások a rendszerben. Kicsit finomított változatában a futása során többször is igényelhet erőforrást, de csak azzal a feltétellel, ha az előzőleg birtokolt összes erőforrást elengedte. 2. Rangsor szerinti foglalás (Hierarhical allocation): egy folyamat csak olyan osztályból igényelhet erőforrást, melynek sorszáma magasabb, mint a már birtokolt erőforrások osztálya. Ez a stratégia a ciklikus várakozás lehetőségének kiküszöbölésével alkalmas a holtponthelyzetek megelőzésére. Lényege, hogy az erőforrások osztályaihoz egy-egy növekvő sorszámot rendelünk úgy, hogy a leggyakrabban
használt erőforrások kapják a legkisebb sorszámokat. Ha egy folyamatnak egy folyamatnak egy osztályon belül több erőforrásra van szüksége akkor azt csak egyszerre igényelheti. Tulajdonképpen azon alapult, hogy a folyamatok csak ramgsor szerinti növekvő sorrendben igényelhetnek erőforrásokat. A stratégia hatékonyságát jelentős mértékben befolyásolja a sorszámok kiadásának módja. Ha egy folyamatnak a meglévőnél alacsonyabb sorszámú erőforrásra van szüksége, fel kell szabadítania erőforrásokat egészen addig a szintig, míg az igénylési feltételek nem teljesülnek. 3. Bankár algoritmus (Bankers algoritm): sohasem elégítünk egy igényt ha az nem biztonságos állapotot eredményezne. Ez az algoritmus úgy kerüli el a holtpont kialakulását lehetőségét, hogy a rendszert mindig biztonságos állapotban tartja. Egy állapotot csak akkor tekint biztonságosnak, ha létezik legalább egy olyan sorozat, amely szerint az összes folyamat
erőforrás igénye kielégíthető. Csak akkor működik, ha a folyamatok indulásukkor tudják, hogy a különböző erőforrásokból egyszerre maximálisan hányat fognak igényelni, és ezt az operációs rendszernek egy rendszerhívás által be is jelentik. A beérkezett erőforrás igény alapján a rendszer kiszámítja, hogy ha kielégítené ezt a kérést a rendszer biztonságos állapotban maradna-e. Csak ebben az esetben kezdi el. Ha egy folyamat visszaad erőforrásokat akkor az erőforrás kezelő végignézi a várólistán lévő folyamatokat, hogy most már kielégíthető-e biztonságosan az igényük. A módszer legnagyobb hátránya, hogy nem minden folyamat erőforrás igénye tudható előre. Valamint sok az olyan eset amikor a kért erőforrás már felszabadult de az őt igénylő folyamat mégsem kaptam meg a futási jogot mivel elképzelhető lett volna a holtpont kialakulása. Ez a rendszer túlbiztosításra tör. Bonyolult időigényes számítást
igényel II. Holtpont felszámolása: a megelőző stratégiáknak komoly elvi és gyakorlati problémái is vannak, tehát ezek csak speciális esetekben alkalmazhatóak, ezért szükséges a holtpont felszámolás stratégiáival is foglalkozni. 2. Holtpont detektálása: ehhez az operációs rendszernek folyamatosan nyilván kell tartania az erőforrások szétosztását és a ki nem elégített igényeket. Ezért időnként egy holtpont detektáló algoritmust kel futtatni. Ez az algoritmus az erőforrás foglalási gráfot ellenőrzi Mivel a minden folyamat kérelménél való lefutás nagyon számításigényes lenne, ezért csak meghatározott időintervallumokban futtatjuk le, bár így lehetnek holtpontok amik nem kerülnek detektálásra. 3. Holtpont megszüntetése: holtpont felszámoláskor mérlegelni szükséges, hogy mennyi veszteséggel jár mikor felszámoljuk azokat. ▪ Melyikkel hány erőforrást nyerünk: célszerű olyan folyamatot választani ameliyk
megszüntetése sok erőforrást szabadít fel. ▪ Hány további erőforrást igényel még: amelyik sokat igényel még, esetleg több holtpont kialakulást is előidézheti még. ▪ Mennyi a már elhasznált CPU idő: mennyi munkát veszítek el? ▪ Mennyi idő van még hátra a futásból: nem célszerű olyan folyamat választani ami már majdnem kész. ▪ Ismételhető/ nem ismételhető: nem célszerű olyan folyamatot választani aminek munkája nem ismételhető meg. ▪ Folyamat prioritása: célszerű kis prioritásút választani. ▪ Megszüntetése hány további folyamatot érint: nem olyat választunk ami több folyamattal dolgozott együtt. Tovább finomítható a módszer ha a folyamatoktól csak néhány erőforrást veszünk el. Vagy holtpontba lévők közül néhányat egy olyan korábbi állapotból folytatjuk amikor még nem volt holtpont. Ez viszont nagyon nagy tárigény lép fel Szemafor használata a termelő-fogyasztó folyamatok esetében: Közös
erőforrások azokat az erőforrásokat nevezzük, amelyeket egynél több folyamat szeretne egy időben használni. Az ilyen erőforrások vezérlésekor különösen a nem megosztható, más néven kölcsönös kizárást igénylő erőforrások esetében merülnek fel nehézségek. A kölcsönös kizárást igénylő erőforrások kezelését végző programrészeket kritikus szekciónak nevezzük, azt kell megoldani, hogy egy kritikus szekcióban mindenképpen csak egy folyamat tartózkkodhasson. Tipikus esete a termelő fogyasztó probléma, ahol is a helyzetet egy szemafor beiktatásával oldják fel. Ez a szemafor egy változó a memória olyan területén amit mind a fogyasztó, mind a termelő lát. Itt más csak egy probléma vár megoldásra, kezelni kell azt az esetet amikor a két folyamat közel azonos időben kezdi el vizsgálni a szemafor állapotát. Biztosítani kell, hogy a szemafor kiolvasása, vizsgálata és feloldása egy művelet legyen úgynevezett oszthatatlan
művelet legyen. Sok számítógép utasításkészletében találunk olyan utasítást ami ezt a műveletsort valósítja meg. Mivel a szemaforok lefoglalása és felszabadítása nagyon gyakori feladat többfolyamatos rendszerekben, ezért sok operációs rendszer ehhez támogatást nyújt, mégpedig az ún. P és V primitívek formájában a P primitív egy szemafor lefoglalását végzi, míg a V a felszabadítását méghozzá a szükséges várakozású ciklus alkalmazása mellett. Az olyan tárolók esetében ahol egy időben több adathalmaz is elhelyezhető, szükséges az úgynevezett tárolásvezérlő szemafor. Mivel tele tár esetén szükségtelen a termelő folyamatnak versenyeznie, hiszem nem tud több üzenetet küldeni a tárba, viszont a fogyasztó zavartalanul működhet. 20.) A magas, közbenső és alacsony szintű ütemezők feladata egy operációs rendszerben. A folyamatok állapotai. Ütemezési algoritmusok Egy multiprogramozott operációs rendszer
minden időpillanatban folyamatok egy csoportjának végrehajtásával foglakozik, amelyeket egyetlen fizikai processzoron futtat. A multiprogramozás foka a rendszerben egy adott pillanatban jelenlévő – tehát megkezdett de még be nem fejezett – folyamatok száma az operációs rendszer egyik alapvető feladata az erőforrás-gazdálkodás és kiosztás. Két alapvető erőforrás a CPU és a memória. Ezek kiosztása még együttműködő folyamatok esetén is általában a versengés elvén történik, hiszen a folyamatok kódjában rendszerint nem jelenik meg külön utasítás ezek lefoglalására, illetve felszabadítására. Amikor egy folyamat létrejön a rendszerben, létrejön számára egy logikai memória és egy logikai processzor, melyhez fizikai megfelelőket kell rendelni. A logikai memória létrehozása a fizikai rendszer tekintetében azt jelenti, hogy a folyamat megkapja a fizikai tár egy részét, ahova a kódja és változói, megfelelő
kezdőértékekkel betöltődnek. A processzorért csak azok a folyamatok versenghetnek, melyek következő végrehajtandó kódrésze a memóriában van. A logikai processzorok látszólag párhuzamosan működnek. Valójában az egyetlen fizikai processzor egyidejűleg egyetlen folyamat utasításait tudja végrehajtani. Ha a fizikai processzor elég gyakran átkapcsol egy folyamat egy részletének végrehajtása után egy másik folyamatra akkor egy durvább időléptékben a folyamatok futása párhuzamosnak látszik. A dolgot úgy is felfoghatjuk, hogy a rendszer legfontosabb egyedi erőforrása a fizikai processzor, amelyt egyidejűleg egyetlen folyamat használhat, és amelyhez tartozik egy várakozási sor, ahol a többi, processzorra váró folyamat tartózkodik. A processzor felszabadulásakor az operációs rendszer választja ki valamilyen algoritmussal a sorban várakozók közül azt a folyamatot, amelyik a következő időszakra megkapja a processzort. Magas szintű
ütemező: amelyik tipikus a kötegelt feldolgozást végző rendszerekben van jelen, és új jobok végrehajtásának megérkezéséről (új folyamatok indításáról) dönt. Az elvégzésre váró munkák közül a választás szempontja, hogy a rendszerben a CPU-intenzív és B/K folyamatok aránya optimális legyen (optimális job-mix fenntartása). Jó tehát, ha a rendszernek van előzetes információja egy-egy munka CPU, és B/K-igényéről. Kitüntetett szerepe van a CPU-ütemezőnek, amit általában rövid távú ütemezőnek hívnak. (a rövid illetve hosszú elnevezés a futási gyakoriságra utal). A hosszú távú ütemező általában akkor fut le, amikor egy job végrehajtása befejeződik. A rövid távú ütemező pedig biztosan lefut, amikor egy processzorlöket befejeződik. A két gyakoriság között nagyságrend különbség van Néhány rendszerben működik középtávú ütemező is, amelynek egyik szerepe a multiprogramozás fokának változtatása
jellegzetesen azokban a helyzetekben, amikor a memória válik a rendszer szűk keresztmetszetévé, illetve ez a helyzet megszűnik. A középtávú ütemező észlelve a memóriaszűkét, egyes folyamatokat felfüggeszt, memóriaterületüket a háttértárra menti és felszabadítja, átmenetileg kivonja őket az erőforrásokért folytatott versengésből. A felfüggesztett folyamatok memóriaterületét a többi folyamat használhatja. Később ha terhelés csökken, a felfüggesztett folyamatok visszatölhetők és folytathatják működésüket. A felfüggesztendő illetve a visszatöltendő folyamtok kiválasztásának szempontja is a CPUintenzív és B/K-intenzív folyamatok kiegyensúlyozása lehet, ami már nemcsak előzetes információkra, hanem a folyamatok korábbi viselkedésére is alapozhat. A középtávú ütemező akkor is felfüggeszthet folyamatot, ha az várhatóan igen hosszú várakozásra kényszerül. Folyamatok állapotai: Futásra kész (ready):
állapotban vannak azok a folyamatok, amelyeknek következő műveletét a CPU bármikor végrehajtaná. Más szóval a CPU-n kívül minden más erőforrást birtokolnak, amire működésük adott szakaszában szükségük van. Futó (running): állapotban egy multiprogramozott rendszerben egyidejűleg egyetlen folyamat lehet, amelyiknek az aktuális műveletét a CPU éppen végrehajtja. Várakozó (waiting, blocked): állapotban vannak azok a folyamatok, amelyek nem tudják használni a CPUt, mert valamilyen feltétel teljesülésére várakoznak. Ilyen feltétel lehet például egy általunk kezdeményezett B/K művelet befejeződése, együttműködő folyamatok esetén valamilyen szinkronizációs vagy kommunikációs művelet végrehajtódása. Állapotátmenetek: Futásra kész futó állapotátmenet történik, amikor az operációs rendszer CPU-ütemezője kiválasztja a folyamatot végrehajtásra. Új futó folyamat kiválasztása mindenképpen szükséges, ha az előző
folyamat befejezte működését, vagy várakozó állapotba került, hiszen ilyenkor a CPU felszabadul. Futó futásra kész állapotátmenet két ok miatt fordulhat elő: • az operációs rendszer elveszi a CPU-t a folyamattól (preemptív ütemezés). Amikor a CPU-ütemező nem érkezés sorrendben hajtja végre a futásra kész folyamatokat, hanem például prioritás szerint, akkor előfordulhat, hogy egy nálánál magasabb prioritású folyamat átlép várakozó állapotból futásra kész állapotba. Ha prioritás azonnali érvényesítése fontosabb szempont, mint a CPU munkában tartása, akkor ezzel kell folytatni. • A folyamat lemond a CPU-ról (újraütemezést kér). Együttműködő folyamatoknál mikor egy folyamat hosszú processzorlöketei közben lehetőséget ad más folyamatok futására. Futó várakozó állapotátmenet akkor következik be, ha a folyamat olyan műveletet indított, amelynek végrehajtása várhatóan hosszabb CPU tétlenséget okozna. (B/K,
üzenetfogadások, ha az üzenet még nem érkezett meg, stb.) Várakozó futásra kész állapotátmenet történik, ha a folyamat által várt esemény bekövetkezik (B/K befejeződik, Üzenet megérkezik, stb.) Processzorütemezés: A multiprogramozott operációs rendszerek alapjának a CPU-ütemezés tekinthető. A rövid távú ütemezés feladata annak eldöntése, hogy a processzort melyik futásra kész folyamat kapja meg. Két alapvető fajtáját különböztetjük meg. Preemptív ütemezésről akkor beszélünk, ha az operációs rendszer elveheti a futás jogát az éppen futó folyamattól, futásra kész állapotba teheti, és egy másiknak adhatja át. Nem preemtív ütemezésről viszont akkor van szó, ha a futás jogát nem veheti el az ütemező, hanem a folyamat egy általa kiadott utasítás hatására állapotot nem vált. Ütemezés bekövetkezése: • a futó folyamat befejeződik • egy folyamat felébred, futásra késszé válik • a futó folyamat
várakozni kényszerül • a futó folyamat önként lemond a futás jogáról Az első és a harmadik esetben mindig környezetváltás történik, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. Ütemezési algoritmusok: Legrégebben várakozó (FCFS): nem preemptív algoritmus, amely a legrégebben várakozó folyamatot választja ki futásra. Megvalósítása igen egyszerű, a futásra kész folyamatok egy várakozási sor végére fűződnek fel, az ütemező pedig mindig a sor legelején álló folyamatot kezdi futtatni. Igen nagy lehet a várakozási idő mivel egy hosszú löketű folyamat feltarthatja a sort Körbeforgó (RR: Round Robin): preemptív algoritmus, amely az időosztásos rendszerek alapjának tekinthető. Minden folyamat, amikor futni kezd, kap egy időszeletet (time slice) Ha a CPU lökete nagyobb ennél, akkor az időszelet végén az ütemező elveszi a folyamattól a processzort. És futásra kész állapotúvá tett
folyamatot a futásra kész sorba teszi. Ha a CPU löket rövidebb az időszeletnél, akkor a löket végén a rendszer folyamatait újraütemezzük, és a futó folyamat időszelete újraindul. Nehéz az időszeletek megfelelő mértékének beállítása. Túl hosszú időszelet esetén ugyanis az algoritmus átmegy FCFS algoritmusba, míg túl kicsi időszelet esetén megnő a környezetváltások száma. Ökölszabályként elmondható hogy akkor kielégítő az időszelet, ha a CPU-löketek 80-% rövidebb időtartamú ennél. Prioritásos ütemezési algoritmusok: ezek közös sajátossága, hogy a futásra kész folyamatok mindegyikéhez egy, a futás kívánatos sorrendjére utaló számot – priorítást (priority) – rendelünk. Az algoritmus pedig a futásra készek közül a legnagyobbat választja. Ezek lehetnek időben állandóak (statikus), vagy időben változóak (dinamikus) priorításúak. Legrövidebb löketidejű (SJF): nem preemptív algoritmus, amely a
futásra kész folyamatok közül a legrövidebb becsült löketidővel rendelkezőt választja futásra. Komoly problémája, hogy a löketidők általában nem ismertek. Legrövidebb határidejű (SRFT): ez az algoritmus az SJF preemptív változata, ha egy új folyamat válik futásra készé, akkor az ütemező megvizsgálja, hogy az éppen futó folyamat hátralevő löketideje, vagy az új folyamaté a kisebb, és a rövidebbet indítja el. Egy futó folyamat megszakításához és egy másik elindításához környezetváltásra is szükség van, ami szintén figyelembe kell venni. Legjobb válaszarány (HRR): a priorításos algoritmusok nagy hátránya a kiéheztetés, ennek kivédésére alkalmazzák az öregítés eljárását, ennek során a várakozó folyamatok priorítási szintjét egy beosztás alapján emeljük a várakozási sorban. Többszintű algoritmusok: Sajátossága, hogy a futásra kész folyamatok nem egy, hanem több sorban várakozhatnak. Minden sorhoz
priorítás van rendelve és az ütemező csak akkor választ ki futásra kisebb priorítású sorból folyamatot, ha nagyobb prioritású sorok üresek. Az egyes sorokon belül különböző kiválasztási algoritmusok működhetnek Statikus többszintű sorok (SMQ): ennél az algoritmusnál a folyamatokhoz statikus priorítás rendelődik, azaz minden folyamathoz elindulásakor rendelünk valamilyen priorítást, amely a folyamat élete során nem változik. (vagyis valamilyen kritérium alapján egy adott várakozási sorba soroljuk) Komoly hátránya hogy az alacsony prioritással rendelkező folyamatok nagy várakozási időkre kényszerülhetnek, kiéheznek. Visszacsatolt többszintű sorok (MFQ): az MFQ ütemezésnél a folyamatokhoz dinamikus prioritás rendelődik. Ez az ütemezés tehát dinamikus, vagyis a folyamatok a prioritás hozzárendelésüknek megfelelően dinamikusan átkerülhetnek egyik sorból a másikba. Az egyes sorokon belül általában preemtptív
algoritmusokat alkalmaz, kivéve a legkisebb prioritású sort, amelyen belül az ütemezés történhet egy egyszerű FCFS által. Az algoritmus a folyamatokat löketidejük alapján osztályokba sorolja és a rövid löketidejűeket részesíti előnyben. A folyamatok indulásukkor általában a legmagasabb prioritású sorokban kezdenek, ha azonban túllépik az időkorlátot, azaz futásukhoz nem elegendő egy időszelet, akkor az operációs rendszer csökkenti a prioritásukat és eggyel lejjebbi (kisebb prioritású ám nagyon időszelethez társított FCFS-re épülő) sorba kerül. 21.) Többfeladatos (multitasking) operációs rendszerek feladatai, felépítése. A tárvédelem feladata és megvalósítása (privilégium szintek, jogosultságok, szegmensek, deszkriptorok, kapuk). Ha egy rendszerben két (vagy több) önállóan működni képes eszköz van, akkor a munkafolyamatok párhuzamosítására is lehetőség van. A B/K műveletek alatt központi egység
hatékonyságát úgy lehet növelni, hogy a számítógép egyszerre több munkát kapott. Tehát amíg a processzor az egyik program számítási lépéseit hajtotta végre, a memória egy másik területére betöltődhetett az újabb munka illetve az előző munka eredményeinek lemezre mentése alatt a processzor már az új feladaton dolgozhatott. Egy ilyen átlapolt rendszer azonban csak akkor működik igazán hatékonyan, ha az egyszerre végrehajtott munkák együttes priféria-idő igénye pontosan megegyezik az együttes CPU idő igényekkel. Ez a feltétel azonban a legritkább esetben teljesül. Egy munkára vagy a periféria igény jellemző vagy a CPU igénye az uralkodó. Kétféle program megfelelő aránya akkor biztosítható optimálisan, ha nem csak kettő, hanem több programot tartunk a „kezünk ügyében”. A több program végrehajtása mellett szól az is, hogy munkák nemcsak a futás elején és végén igényelhetnek B/K műveleteket, hanem futások
során is, így ha az egyik program éppen töltődik a másik pedig perifériára vár a CPU ismét feladat nélkül marad. Ezért célszerűenek mutatkozott több feladat egyidejű kiszolgálása. A többféle periféria megjelenése, valamint a több feladat egyidejű kezelése komoly, minőségi változásokat követelt meg a számítógép működését vezérlő programtól, a monitor, mint kezelői felület mellett kialakultak a vezérlőprogram által ellátandó alapfunkciók, amelyeket összefoglaló néven rendszermagnak nevezünk. A kezelői felület, a burok (shell) és a Mag (kernel) együttese alkotja az operációs rendszert. Az operációs rendszernek a következő feladatokat kell ellátniuk: • eszközkezelők: a felhasználó programok elöl el kell fedniük a perifériák különbözőségét, egységes kezelő felületet kell biztosítani. • Megszakítás kezelés: alkalmas kell legyen a perifériák felől érkező kiszolgálási igények fogadására,
megfelelő ellátására. • Rendszerhívás válasz: az oprációs rendszer magjának ki kell szolgálnia a felhasználói alkalmazások erőforrások iránti igényeit úgy, hogy azok lehetőleg észre se vegyék azt, hogy nem közvezlenül használhatják azokat. • Erőforrás kezelés: az egyes eszközök közös használatából származó konfliktusokat meg kell előznie, vagy bekövetkezésük esetén fel kell oldania. • Processzor ütemezés: az operációs rendszerek ütemező funkciójának a várakozó munkák között valamilyen stratégia alapján el kell oszlatni a processzor idejét, illetve vezérelnie kell a munkák közötti átkapcsolás folyamatát • memóriakezelés: gazdálkodnia kell a memóriával, fel kell osztania azt a munkák között úgy, hogy azok egymást se zavarhassák, és az operációs rendszervben se tegyenek kárt. • Állomány és lemezkezelés: rendet kell tartania a hosszabb távra megőrzendő állományok között. • Felhasználói
felület: ennek segítségével a felhasználó közöli tudja a rendszermaggal kívánságait, illetve annak állapotáról információkat szerezhet. Tárvédelem feladata és megvalósítása: Multiprogramozott környezetben meg kell teremteni annak a feltételeit, hogy az egyes folyamatok egymás memóriaterületeit ne zavarják, még olyankor sem, ha például programhibát tartalmaznak. Vagyis ki kell alakítani egy jól működő védelmi rendszert. Azonban a folyamatok közötti szeparálás nem szabad, hogy teljesen zárt legyen, hiszen vannak olyan olyan esetek amikor több folyamat együtt akar működni, egy közös adatterületen keresztül tehát a jól működő védelmi rendszernek meg kell akadályozni az ártalmas hozzáféréseket, és ellenőrzött körülmények között biztosítania kell a folyamat-közti kommunikációt. Három szintjét különböztetjük meg: • mikor védeni kell egy folyamat logikai egységeit egymástól. • Mikor a felhasználói
folyamatokat kell védeni egymástól, de biztosítani kell közöttük az igényelt kommunikáció lehetődégét. • Mikor védeni kell az operációs rendszert a felhasználói folyamatoktól. A folyamatok logikai egységeinek védelme: Tipikus programhiba mikor több adatot töltünk a veremtárba mint amennyit kiolvasunk (stack overflowverem túlcsordulás). Hasonlóan veszélyes helyzetet okozhat, ha például egy ugróutasítás rossz címről kezdi el végrehajtani a feladatsort. Ez ellen a program logikai egységeinek szegmentálásával védekezhetünk, ahol konkrétan ki kell jelölni a program logikai egységeit. Ezt egy szegmentációs meghatározással lehetséges megvalósítani, ahol készítünk egy kódszegmenst (az utasítások számára) egy vagy több adatszegmens és egy stackszegmenst. Ennek alapján képes az operációs rendszer behatárolni, hogy az általunk definiált tartományban mozognak-e a folyamataink. Ennek nyilvántartásához készíteni kell
egy szegmensleíró táblát (segment descriptor table) amely minden egyes szegmensről tartalmazza az adatokat. Megadja a szegmens kezdőcímét, hosszát és típusát. A címek így két részből állnak össze, az első rész a szegmens nevét azaz sorszámát jelenti, míg a második rész a szegmensen belüli helyéről tájékoztat. Ezzel a módszerrel a folyamatok logikai részeit már védeni tudjuk egymástól. Az olyan programok számára pedig amik menet közben módosítják működésüket pedig a szegmensmódosító utasítás bevezetésével biztosíthatjuk. A folyamatok védelme egymástól: A szegmentálás bevezetésével jól el tudjuk különíteni a folyamatokat viszont nem megoldott az egymás közti kommunikációjuk. Ebben az esetben a különböző folyamatok leírótábláiban kijelölünk közös memóriaszegmenseket, amit mindkét kommunikálni kívánó folyamat használhat. A szegmenstábla adatait kiegészítve egy bittel azt is megadhatjuk, hogy az
adott folyamat hogyan használhatja a szegmenst. Hozzáférési jog. Mivel tulajdonképpen minden szolgáltatás amit egy gép nyújt (nyomtatás, képernyőre írás) egy szegmensen belül található meg létrehoztak egy közös, úgynevezett globális leírótáblát GDT a minden folyamathoz rendelt lokális leírótáblán felül. Az operációs rendszer védelme (prioritások): Az operációs rendszer folyamatainak célszerű speciális jogokat adni, amit más folyamatok nem kaphatnak meg (pl. tudja módosítani más folyamatok leírótábláit) ezért célszerű, ha minden folyamathoz egy-egy ún prioritási szintet rendelünk. Emellett a szegmensleíró tábla sorait is egészítsük ki egy-egy új mezővel, ami azt jelzi, hogy legalább milyen prioritási szinttel kell rendelkeznie egy folyamatnak ahhoz, hogy az adott szegmenst használja. A globális leírótáblában olyan szegmenseket sorolunk fel, amelyeket elvileg bármely folyamat használhat. Most, ha minden itt
szereplő szegmenshez egy prioritási szintet rendelünk, akkor ez úgy módosul, hogy a szegmenst a rendszerben szereplő bármely, legalább adott prioritással rendelkező folyamat használhatja, de más nem. Öszsetett memóriakezelés: a gyakorlatban a szegmentálást és a lapszervezésű virtuális tárkezelést együttesen alkalmazzák. A szegmentálást elsősorban a védelmi rendszer része, azaz segítségével azt lehet eldönteni, hogy egy adott memóriaterülethez valakinek joga van-e hozzáférni. Ha a válasz igen, akkor meg kell keresni, hogy ténylegesen hol van a keresett memóriarész. Ennek eldöntésére pedig a virtuális tárkezelés szolgál. Tehát a processzor által kiadott logikai cím először a szegmentáló egységbe kerül, majd – ha engedélyezett a memóriművelet – a szegmensfordítás kimenet lesz a lapozóegység bemenete. Végül a lapozóegység kimenete adja meg a keresett memórirekesz fiziki címét az operatív memóriában