Tartalmi kivonat
GDF Államvizsga tételsor A tételek 1. A számítógépek architektúrája, az egyes egységek feladata A mikroszámítógépek négy alapvető funkcionális egysége: • Bemeneti egység: az adatok és a program beviteléhez; • Memória (tár): a műveletek elvégzéséhez szükséges adatok és programok, valamint az eredmény tárolásához; • Mikroprocesszor: a memóriából kapott adatokon a programnak megfelelően logikai és számítási műveletek végzéséhez, és az eredmények alapján a következő lépés kiválasztásához; • Kimeneti egység: az eredmény felhasználóhoz való eljuttatásához. A Neumann-elvű számítógépek legfontosabb jellemzői: • Közös tároló szolgál a végrehajtandó program utasításainak és az utasítások által feldolgozandó adatok tárolására. • A program és az adatok kódolása binárisan történik. • A vezérlő egység a tárolt program utasításait egyenként sorra véve oldja meg a kívánt feladatot. •
Egy utasításszámláló regiszter tárolja a soron következő utasítás tárolóbeli helyének címét. • Önálló aritmetikai és logikai egység (ALU) végzi a program végrehajtásához szükséges aritmetikai és logikai műveleteket. A bináris kódolás alapján minden művelet visszavezethető elemi logikai műveletekre, így az ALU ténylegesen csak logikai műveleteket végez. • Önálló egységek szolgálnak az adatok és a program bevitelére/kihozatalára. A számítógépek funkcionális egységei részletesebben: • Mikroprocesszor (CPU) Vezérlő egység (CU) Aritmetikai és logikai egység (ALU) Regiszterek • Központi tár (memória) • Másodlagos- vagy háttértárak • Perifériák (I/O) Beviteli egységek (input units) Kiviteli egységek (output units) • Sínrendszer (bus system) Címsín Adatsín Vezérlősín Központi egység (CPU) 1 A processzor vezérli a műveletek elvégzéséhez szükséges belső
adatforgalmat. A vezérlő egység irányítja a processzor és az I/O eszközök közötti adatátvitelt, valamint a tárolt program alapján a műveletek végrehajtását és az ALU működését. A processzor az utasítások feldolgozásakor az adatok átmeneti tárolására gyors működésű, általában néhány bájt kapacitású tárakat, ún. regisztereket használ Központi tár (memória) A legfontosabb erőforrás a processzor mellett. A memória tárolja a végrehajtás alatt levő programot és a feldolgozandó adatokat. A legkisebb tárolási egysége az egy bináris jel, a bit A fizikailag legkisebb egységként kezelt tárolóterület a rekesz (1 bájt). Minden rekesz címmel rendelkezik, amely alapján a t árolóhelyet a p rocesszor ki tudja választani és abban adatot tud elhelyezni vagy onnan kiolvasni. A rekeszek címét 0-val kezdődő, szigorúan növekvő sorszámok alkotják. Címezhető tartomány – megadja, hogy hány bináris értéket lehet
felhasználni a cí m értékének leírására. Szó – logikai adat-mértékegység. Az aritmetikai műveletvégzés során egy-egy számadat leírására nem elegendő egy bájt, ezért egységként 2-4-8 bájtot használ a processzor. Memória típusok RAM (írható és olvasható) dinamikus RAM (DRAM) – alacsony teljesítményigényű, tartalmát rövid idő alatt elveszti, ezért azt ciklikusan fel kell újítani. statikus RAM (SRAM) – magasabb működési sebességű, nem igényli az állandó frissítést ROM (csak olvasható) csak egyszer tölthető fel a gyártás során (ROM) a felhasználó által egyszer feltölthető (PROM) speciális módon törülhető és programozható (EPROM) A központi tár jellemzői elérési idő (access time): az az időtartam, amely a kiolvasás megkezdése és az adatnak a tároló kimenetén való megjelenése között eltelik ciklusidő (cycle time): az elérési időnél hosszabb, mert magában foglalja a
kiolvasás utáni feléledési időt (recovery time) is, amelyre egyes memóriáknak szüksége van a következő memóriához fordulást megelőzően Háttértárak A központi tár kapacitását meghaladó, nagy mennyiségű adat tárolására háttértárakat alkalmaznak (pl. merev- és hajlékonylemezek) Mágnesszalag: archiválásra szolgáló eszköz (streamer). Mágneslemez: lehet hajlékony- vagy merevlemez. Az adattárolás koncentrikus sávok (track) mentén történik. Egymás alatt elhelyezkedő sávok a cilinderek (cylinder) A sávok szektorokra vannak felbontva, amelyek egyenként általában 512 bájt hosszúságúak. 2 Optikai lemezek: nagy az elérési idő, kicsi az adatátviteli sebesség, több MB nagyságúak. (Csak olvashatók (egyszer írhatók) a CD-ROM-ok, egyszer írható optikai lemezek (WORM), újraírható CD-k (CD-RW)). Merevlemezek (hard disk): állandó sebességgel forognak és az adatok írása/olvasása a felülettől néhány mikron távolságra
lévő fej segítségével történik. Minden lemezfelülethez tartozik egy író-olvasófej. A mikroszámítógépekben kizárólagosan használt merevlemez típus a pormentesen, zárt tokban elhelyezett merevlemez, az ún. winchester lemez A nagygépek és a mikroszámítógépek esetében használnak fixen beépített merevlemezeket és cserélhető lemezeket. Hajlékonylemezek (floppy disk): mágnesezhető réteggel ellátott vékony műanyag lemezek papír vagy műanyag védőtokban elhelyezve. A lemezek írásakor/olvasásakor az író-olvasófej hozzáér a l emez felületéhez, ezért csak akkor forgatja a m eghajtó, amikor adatírás vagy olvasás zajlik. A lemez elérési ideje lényegesen nagyobb, mint a merevlemezeké A hajlékonylemez elsősorban a mikroszámítógépek adatbeviteli, -kihozatali adathordozója. A ma használt floppy lemezek mérete 5.25", illetve 35" átmérőjű és kapacitásuk 360 kB - 144 (2.88) MB között van Használnak 120 MB
kapacitású 35"-es lemezeket is Perifériák (monitor, billentyűzet, egér, nyomtató, szkenner) A számítógép külvilággal való kapcsolattartásának eszközei a perifériák. A processzor a perifériális eszközöket egy-egy vezérlő egységen (controller) keresztül éri el és irányítja. A vezérlők önálló egységként helyezkednek el a központi egységhez kapcsoltan, vagy pedig magában a perifériában találhatók és a központi egységgel egy szabványos csatlakozón keresztül tartanak kapcsolatot. A perifériák egyre több feladatot, vezérlési funkciót látnak el, saját vezérlőjük irányítása alatt. Elegendő a szabványos csatlakozási felület kialakítása a központi egység és a periféria között. A mikroszámítógépek perifériái a közös sínrendszerre (bus system) csatlakozó vezérlőkön keresztül kapcsolódnak a processzorhoz. A perifériák típusai Kijelző (monitor, display): az adatok grafikus vagy szöveges
megjelenítésére szolgál. Billentyűzet (keyboard): kisebb mennyiségű adat bevitelére, valamint a gép közvetlen vezérlésére szolgál. Nyomtató (printer), rajzgép (plotter): az eredmények papír alapú szöveges vagy grafikus megjelenítésére szolgál. Digitalizáló tábla: rajzok pontjainak egyenkénti bevitelére és digitalizálására szolgál. Szkenner (scanner): rajzok, grafikák, fényképek vagy szöveg raszteres (bittérképes) bevitelét teszi lehetővé. Egér (mouse), trackball: mutatóeszköz, melynek segítségével a grafikus képernyőn mozgatott kurzorral, rámutatással kijelölhetők a műveletek, így a program és a gép irányítása billentyűzet nélkül történhet. Fényceruza (light pen): segítségével a képernyőre látszólag közvetlenül írhatunk, amelyet a gép érzékel és feldolgoz. Ez a lehetőség különösen a tervező rendszerek esetében jelent nagy kényelmet a programok kezelésében. 3 Távközlési csatoló, modem:
amelyen keresztül a számítógép közvetlenül kapcsolódhat a távközlési hálózatokhoz (kapcsolt telefonhálózat, bérelt adatvonalak, csomagkapcsolt hálózat) és ezeken keresztül más számítógépes rendszerekhez. Hálózati csatoló: amellyel helyi számítógépes hálózathoz (LAN = Local Area Network) kapcsolható a számítógép. Sínrendszer A sínrendszer biztosítja az egyes egységek közötti szabványos és gyors adatátvitelt. a címsín az eszközök címzését szolgálja, azok címét továbbítja rajta a processzor, az adatsín a továbbítandó adatot küldi és fogadja a processzor, a vezérlősín a vezérlőjelek kiküldésére és fogadására szolgál. 4 2. I/O adatátviteli lehetőségek (soros, párhuzamos), adatvédelem I/O adatátvitel: kommunikáció a processzor és az I/O eszközök között. Párhuzamos adatátvitel Az adatszó minden bitje egyszerre kerül átvitelre. Programozott I/O: A programozott adatátvitelre az I/O
eszközök közvetlen irányítása a jellemző, a programból periféria utasítások segítségével lehet elérni a beviteli/kimeneti eszközöket. Az I/O utasításokban a perifériát meg kell címezni. Ez a cím vagy az I/O port sorszáma, vagy a memória egy tárolóhelyének a cí me. A periféria utasítások a p rocesszor egy regisztere és a periféria (regisztere) között valósítanak meg átvitelt. Az alkalmazható programozott átviteli módszerek: feltétel nélküli (direkt) programozott adatátvitel, amelyet egyszerűbb esetekben lehet alkalmazni, mint pl. kijelzők (LED-ek) beállítása, érzékelők lekérdezése; feltételes, lekérdezéses adatátvitel (polled I/O), amelyben a periféria állapotjezőinek ellenőrzése alapján és után történhet az átvitel. Amennyiben a jelzőbit nem megfelelő az átvitelhez, akkor a processzornak várakoznia kell a megfelelő állapot bekövetkeztéig (váró ciklus). Az átvitel karakterenként történik Blokkos
adatátvitelkor, amelyhez külön utasítás tartozik, a két oldalt (processzor - periféria) össze kell hangolni, szinkronizálni kell. Erre szolgál a kérés-visszaigazolás (hand shaking) szinkronizálási módszere A programozott adatátvitel nem túl előnyös, mert lassú átvitelt eredményez és a processzor idejét teljesen leköti. Az átvitelt mindig a processzor kezdeményezi Megszakításos I/O: A processzor idejét célszerű felszabadítani az átviteli feladatok alól, ezért olyan módszert kell alkalmazni, amely ezt lehetővé teszi. Ez a módszer a megszakításos adatátvitel, amelyben a periféria kezdeményezi az átvitelt. Az ilyen átvitelek lebonyolításához, az I/O portoknak regiszterekkel kell rendelkeznie. Az átvitel kezdetén, a megfelelő utasítás kiadásával, a processzor jelzi az I/O eszköz számára az átvitelre vonatkozó indítási igényét. Az I/O eszköz ezután az átvitel kezdetére alkalmas időpontot a processzor felé küldött
megszakítási kérelmével jelzi. A megszakítás kiszolgálása eredményezi az adatátvitelt. A megszakításos adatátvitel előnye a programozott I/O átvitellel szemben, hogy a processzor lényegesen kevesebb időt tölt az adatátvitel irányításával. Ugyanakkor továbbra is a processzoron keresztül zajlik az átvitel és a nagyobb sebességű eszközök esetében már nem kellően megbízható ez az eljárás. Közvetlen memória-hozzáférés (DMA): A közvetlen memória-hozzáféréses adatátvitelt a nagyobb sebességű eszközök használata esetén célszerű alkalmazni. A közvetlen memória-hozzáféréses átvitelnél, a p rocesszor által elindított DMA vezérlő önállóan irányítja az adatátvitelt a memória és a kijelölt I/O eszköz között a processzor kihagyásával. A processzor és a DMA vezérlő között a kapcsolat a megszakítási vonalak segítségével jön létre. 5 Soros adatátvitel Az adatbitek időben egymás után kerülnek
átvitelre. A párhuzamos adatátvitel mellett, amely nagyobb távolságú átvitelt nem tesz lehetővé, szükség van távoli I/O eszközök, esetleg egy másik számítógép elérésére is. Az ilyen átvitelek megvalósításának viszonylag egyszerű és megbízható formája az adatok soros átvitele. A soros adatátvitel az adatok olyan továbbítása, amelyben az adatokat bitenként, a kiegészítő ellenőrző jelekkel együtt, időben egymás után továbbítja a számítógép. Mivel a számítógépen belül az adattovábbítás párhuzamos formában történik, ezért a soros adatátvitelhez előbb szükség van egy párhuzamos-soros, illetve ilyen jelek fogadásakor, egy visszaalakító soros-párhuzamos átalakításra. A nagyobb távolságra történő adattovábbításhoz, a telefonvonalakat lehet igénybe venni, amelyek használatához a jeleket rá kell “ültetni” egy hangfrekvenciás hordozójelre. Az erre a célra szolgáló eszköz a modem A modem
(modulator/demodulator) által használt leggyakoribb modulációs eljárások a frekvencia, az amplitudó és a f ázismodulációs eljárás. Az átvitel formája, elektromos jellemzői szabályozottak. Az átvitel módját meghatározó szabályrendszert nevezik protokollnak. A soros adatátvitel lehet aszinkron és szinkron ütemezésű Aszinkron átvitel: Az aszinkron ütemezésű adatátvitelnél, a karakterek ütemezés nélkül követik egymást. A strat/srtop bitek miatt a jelsorozat eléggé redundáns, tehát információtartalom szempontjából felesleges jeleket is tartalmaz, ugyanakkor a vevő oldalon nincs szinkronizálva a vétel és emiatt nagyobb sebességű átvitel nem biztonságos. Szinkron átvitel: Szinkron adatátvitelnél az egymást követő jelek ütemezetten, szinkronizáltan követik egymást. Az adatok átvitele blokkos formában történik, amelyet kiegészítenek még szinkronizáló bitekkel is. Ezt a formát nevezik “frame”-nek, keretnek Az
átvitel egyik formája a k arakter orientált protokoll (COP= character oriented protocol), amelynek használata esetén a g rafikus adatok továbbítása körülményessé válik. Ezért azok átviteléhez a bit orientált protokollt (BOP= bit oriented protocol) használják. Ilyen, az ISO által is elfogadott bit orientált protokoll a HDLC (high-level data link protocol) protokoll. A szinkron átvitelnél a redundancia alacsonyabb, de a kapcsolódó hardver bonyolultabb. Az alkalmazható sebesség magasabb, mint az aszinkron átvitelnél. Szabványosított interfész: A párhuzamos és soros adatátvitel lebonyolításához a k imeneteket/bemeneteket (interfészeket) szabványosították. A párhuzamos csatlakozási felület szokásosan alkalmazott szabványa a C ENTRONICS ipari szabvány, amely egy- vagy kétirányú adatátvitelt is lehetővé tesz. A mikroszámítógépek környezetében használt soros csatlakozási felületetet az RS 232C szabvány írja le. Adatvédelem: 6
A tárkezelő rendszer feladatai közé tartozik a tárolt programok, adatok védelme is. Ez a következőket jelenti: • a memóriaterület védelme - a címzések helyességének ellenőrzése • a rendszerprogramok védelme a felhasználó beavatkozásaitól • a felhasználók feladatainak egymástól való védelme • a tárolt adatokhoz való hozzáférési lehetőségek ellenőrzése A programok és a felhasználói feladatok védelme: Hierarchikus védelmi rendszer A programok más rutinokat csak a saját védelmi szintjükön, vagy magasabb szinten hívhatnak. Adatokat csak saját szintjükön, vagy alacsonyabb szinten érhetnek el A szintek közötti védelmet az egyes szintek saját veremtárolója is biztosítja. A feladatok közti védelmet az egyes feladatok saját deszkriptor táblája (LDT=local descriptor table) biztosítja. A hierarchikus rendszer előnye a hardveres megvalósítás és az ebből eredő gyorsaság. Nem-hierarchikus védelmi rendszer: Minden
feladathoz (taszkhoz) egy műveleti tábla van rendelve, amely meghatározza azokat a taszk által elvégezhető műveleteket, amelyek más feladatokat érintenek. Ezt a fajta védelmet az operációs rendszer valósítja meg. Az adatok védelme: Az adatok védelme érdekében a szegmensekhez, lapokhoz adott hozzáférési jogokat szabályozza a védelmi rendszer. Ilyen jogok: olvasási jog: a tárolóhoz forduló feldolgozás adatokat olvashat ki; írási jog: a feldolgozás átírhatja a tárolóterület adatait, új adatokat írhat be, vagy törölhet onnan; végrehajtási jog: a feldolgozás a tárolóterületen található kódot futtathatja. Az elérési jogokat a szegmensekhez, lapokhoz tartozó leírók (deszkriptorok) tartalmazzák, ezért a folyamatoknak előbb a deszkriptortáblákban kell ellenőrizniük a jogosultságokat az adott tárolórészhez. 7 3. Processzorok címzési lehetőségei Közvetlen (direkt) címzés: az utasításban az operandus címe található,
ami lehet abszolút és relatív cím; Közvetett (indirekt) címzés: az utasításban megcímzett tárolóhelyen nem az operandus, hanem annak címe található; Közvetlen adatcímzés (immediate): az utasítás tartalmazza az operandust; Indexelés: a megcímzett tárolási hely címértéke folyamatosan növelhető, így egy tárolóhely sorozaton egyesével végig lehet haladni. Közvetlen címzési módok Az abszolút címzési mód esetében, az utasítás címrészében az operandus valódi, pontos címe található. A közvetlen cím vonatkozhat a m emóriára vagy a processzor valamelyik regiszterére. Ez utóbbi esetben, a regisztercím megadásához kevesebb helyre van szükség az utasításban, így az ilyen utasítás hossza kisebb, mint a memória-hivatkozásos utasításé. Memóriacímzés esetén a tároló méretétől függően 16-32 bit hosszúságú cím megadására, míg regisztercímzésnél 3-5 bit hosszúságú címrészre van csak szükség. Az abszolút
címzés használata nem mindig előnyös, mivel az így elkészült program és a kapcsolódó adatok a memóriában nem helyezhetők át, mert akkor a program összes címét módosítani kellene. Relatív címzés esetében az utasítás címrésze az operandus valamilyen alapcímhez (báziscímhez) viszonyított címét tartalmazza. Alapcímként szolgálhat: • egy kijelölt regiszterben, a báziscím-regiszterben elhelyezett érték (ez az adatmező kezdőcíme lehet); • a program kezdetének címe; • magának a végrehajtás alatt lévő utasításnak tárolóbeli helye, amelynél az alapcímet az utasításszámláló regiszter (PC) szolgáltatja. Az előbbieknek megfelelően beszélhetünk bázisrelatív, programrelatív, illetve utasításrelatív címzésről. A tárolóhely pontos címe két címérték összeadásával, a báziscím és az utasítás címrészében lévő cím összegeként adódik. Közvetett (indirekt) címzési mód Egyes processzorok esetében ez
a címzési mód lehet többszintű is, azaz az utasításban megcímzett tárolóhelyen nem az operandus címe található, hanem egy további tárolóhely címe, amely már (ha nincs újabb indirekt címzésre utaló jelzés) az operandus címét tárolja. Így, az indirekt címzésnél a pontos cím kidolgozása több lépésben történik. Az indirekt címzés történhet valamely memória tárolóhely felhasználásával vagy a processzor valamelyik regiszterének segítségével. Az ezeken a tárolóhelyeken tárolt címeket, amelyek az operandusok címei, “mutatók”-nak pointereknek nevezik. Közvetlen adatcimzés, álcimzés (immediate addressing) 8 Ennek a címzési módnak a használatakor, maga az operandus található az utasítás címrészében. A használható operandus-nagyság erősen korlátozott, az utasítás címrészének hossza szabja meg az így tárolható operandusok legnagyobb értékét. Ezt a címzési módot kisebb értékű konstansokkal való
munkához lehet felhasználni, mivel így nagyon könnyen lehet egyes regiszterekbe, tárolóhelyekre konstansokat betölteni. Indexelés Az indexelt utasításokat adatsorozatokon végzett műveletek esetében, ciklusokban tudjuk előnyösen használni. Az adatsorozat első elemének tárolási címét tartalmazza az utasítás címrésze és az indexregiszterben található az ettől való eltérés, azaz hogy hányadik elemet kell a sorozatból feldolgozni. Az indexregiszter tartalmának folyamatos növelésével (vagy csökkentésével) végig tudunk haladni az összes adaton, tárolóhelyen. Mivel egy-egy adat előkeresése után mindig növelni (vagy csökkenteni) kell az indexregiszter tartalmát, ezért alkalmaznak olyan megoldásokat is, ahol ez a n övelés automatikusan megtörténik. Ezt a lehetőséget nevezik autoindexelésnek A tárolóhely pontos címe az utasítás címrésze tartalmának (mint alapcímnek) és az indexregiszter tartalmának összeadásával jön
létre. Az indexregiszter tartalmát folyamatosan növelve végig lehet járni a teljes adatsort. 9 4. Mikroprocesszorok belső funkcionális egységei A mikroprocesszor (CPU) funkcionális egységei: • Vezérlő egység (CU) • Aritmetikai és logikai egység (ALU) • Regiszterek Vezérlő egység (CU) A processzor vezérli a műveletek elvégzéséhez szükséges belső adatforgalmat. A vezérlő egység irányítja a processzor és az I/O eszközök közötti adatátvitelt, valamint a tárolt program alapján a műveletek végrehajtását és az ALU működését. A gép vezérlése legtöbbször mikroprogram alapján történik. Aritmetikai logikai egység (ALU) Az utasításokban előírt aritmetikai vagy logikai műveleteket hajtja végre. Bináris műveletek elvégzésére alkalmas, és a kettes számrendszer alapján történő műveletvégzés mellett többnyire a decimális aritmetika szerint is képes műveleteket végrehajtani. A mikroprocesszorok aritmetikai
logikai egysége (ALU a legegyszerűbb esetben is néhány fő részegységet biztosan magában foglal. Ezek a következők: • összeadó-egység, amely két operandus összeadására szolgál; • léptető áramkörök, amelyek a regiszterek tartalmát műveletvégzés közben jobbra vagy balra léptetik, azaz tulajdonképpen osztják vagy szorozzák azt; • logikai áramkörök a logikai műveletek megoldásához; • regiszterek az adatok ideiglenes tárolására. Regiszterek Ideiglenes adattárolás céljára szolgálnak az általános vagy meghatározott célú regiszterek. Ezek a gyors működésű tárak a belső sínrendszeren tartanak kapcsolatot a processzor más egységeivel. A legfontosabb regiszterek: • Utasításszámláló regiszter (PC vagy IP): a soron következő utasítás memóriabeli címét tartalmazza; • Utasításregiszter (IR): a vezérlő egység része, amely a tárból lehívott utasítást tárolja addig, amíg a vezérlő egység az utasítás
műveleti jelrésze alapján meghatározza az elvégzendő műveletet és ennek alapján elindítja a végrehajtást vezérlő mikroprogramot; • Bázis(cím)-regiszter (BR): az operandusok címzéséhez használt regiszter; • Indexregiszter(ek) (IX) és szegmensregiszter(ek): szintén az operandusok címzését segítik elő; • Állapotregiszter(ek), vezérlő regiszter(ek) (status register, control register): egy vagy több regiszteren belül tárolnak vezérlő és ellenőrző jeleket. A műveletek végrehajtásának eredménye alapján bekövetkező állapot jellemzőit tükrözi vissza a regiszter egy-egy helyiértéke. (Pl zero, overflow, carry flag) Az állapotregiszternek lehetnek olyan bitjei, amelyek valamilyen vezérlési előírást tárolnak (pl. egy egység használatának engedélyezése/tiltása); • Veremmutató regiszter (SP): a veremtároló legfelső elemét jelöli ki. A verem LIFO szervezésű tároló (adatot csak a tetejére lehet tenni és csak onnan
lehet leszedni) és a főtárban van kialakítva. • Pufferregiszterek (buffer register): a processzor belső adat- és címsínjét választják el a külső sínrendszertől. 10 • • Adatszámláló regiszter (DC): az adatok kiolvasásakor vagy beírásakor azonosított memóriarekesz címét az adatszámláló regiszter tárolja. Akkumulátor (AC): az aritmetikai és logikai műveletek operandusait és a műveletek eredményét tárolja. 11 5. A Mikroszámítógépek tárhierarchiájának elemei, működésük módja és jellemzői a hozzáférési időkkel (regisztertár, cache-tárak, RAM-ROM típusok, háttértárak) Az adatok kellő időben és idő alatt való elérésének és elhelyezésének strukturális eszköze a tárhierarchia. A különböző tárolókezelési eljárások, a növekvő tárigény mellett, a processzor köré kiépített tárhierarchia hatékony kezelését vannak hivatva megoldani. Regiszterek: kis kapacitás (néhány 100 bájt), rövid
elérési idő (2ns) Cache: kis kapacitás (néhány 100 KB), nem túl hosszú elérési idő (4ns) Központi tár (főtár): közepes kapacitás (néhány 100 MB), hosszabb elérési idő (10ns) Háttértárak: nagy kapacitás (néhány 10 GB), hosszú elérési idő (10ms) Tömegtárolók: óriási kapacitás (TB), nagyon hosszú elérési idő (100ms) Az adatáramlás folyamatosságának biztosítására, pufferelési céllal, az egyes tárolási szintek közé kisebb kapacitású, a felhasználó számára “láthatatlan”, gyors működésű tárolók kerülnek. Ezeket a tárakat nevezik cache-táraknak A cache-tárak jellemzői Belső (on chip, 8-32 KB) és külső (off chip, 128-512 KB) cache; Az adatátvitel blokkos formában történik, azaz egyszerre több bájtot visz át a processzor. A cache-tárak együtt és külön is tárolhatják az utasításokat és az adatokat. A cache-tárban a memória egyes egymást követő rekeszeinek tartalmát tároljuk a
tárolóbeli hely címével együtt. A visszakeresés módja tartalom szerinti (asszociatív), azaz a keresett adat címét összehasonlítja a p rocesszor a cach e-ben tárolt címekkel. Ha a keresett adat a cache-ben található (cache-hit), akkor onnan veszi ki a processzor. Ha nincs a ca che-tárban (cache-miss), akkor a memóriából olvassa ki, és egyúttal berakja a cache-be is. A cache tartalmának frissítésekor a találati arány fenntartása érdekében megfelelő helyettesítési stratégiát kell alkalmazni. Biztosítani kell a cache-tár és a központi tár azonos részeinek az egyezőségét. A cache-tárak típusai Teljesen asszociatív: A beolvasott blokkok bárhova elhelyezhetőek, bármelyik sorba kerülhetnek. Az elhelyezés sorát a helyettesítési algoritmus határozza meg Közvetlen leképzésű: Egy-egy blokk csak meghatározott helyre kerülhet. Csoport asszociatív: Átmenet a teljesen asszociatív és közvetlen leképezésű cache tár
között. A cache nagyobb sorokból álló csoportokra van osztva melyek önmagukban is teljesen asszociatív tárként működnek, azaz egy csoporton belül bárhova kerülhet a blokk. Az elhelyezést a választott helyettesítési algoritmus határozza meg. Szektor leképzésű: Köztes megoldást képező, de ma már ritkábban használt cache tár. Regisztertárak A processzorban egy-egy szónyi adat tárolására több gyors működésű tár szolgál, melyek együttesen alkotják a regisztertárat. Követelmények a regisztertárakkal szemben: az adatforgalom csökkentése a memória és a processzor között (pl. lokális változók, szubrutin visszatérési címek elhelyezése); minél nagyobb méret (100-500 regiszter); 12 háromcímes elérési lehetőség, azaz egyidőben egy utasításon belül megadható két operandus és az eredmény címe is; általános felhasználási célú legyen. A regisztertárat kezelő technikákra jellemző, hogy a
regisztertárat ciklikus tárolónak tekintik, azaz a legmagasabb című regiszter után a legalacsonyabb című következik. Kezelési technikák Regiszterbank: A regisztertömb nem átlapolódó, azonos méretű részekre, ún. bankokra van felosztva, melyek mérete 2 valamely hatványa. Az aktuálisan használt bank kezdetét a bank-mutató (current bank pointer) jelöli ki. Ablaktechnika: A regisztertömb egy-egy azonos méretű de átlapolható része látható a processzor számára. A méret 2 valamely hatványa Az aktuális ablak kezdetét az ablakmutató (current window pointer) jelöli ki A szubrutinok közötti paraméterátadás megkönnyítésére használható ez a technika. Blokktechnika: A regisztertömb tetszőleges méretű átlapolható részekre van felosztva. Az aktuális blokk kezdetét a blokk-mutató (current block pointer) jelöli ki. Tárolótípusok: Írható-olvasható tárolók, amelyek általános tárolási célra használhatók.
Írható-olvasható tárak a regiszterek, a cache-tárak, a központi tár, a h áttértárak, mert ezek esetében követelmény az adatbeírási és olvasási lehetőség. Csak olvasható tárolók (ROM tárak), amelyek tartalmát a felhasználó közvetlenül nem tudja módositani. Ezek között vannak olyanok, amelyek csak a gyártás során tölthetők fel (ROM) és vannak olyanok, amelyek a felhasználó által egyszer feltölthetők (PROM = programmable ROM), illetve vannak speciális módon (ultraibolya fénnyel, vagy elektromosan) törölhető és újraprogramozható tárak (EPROM = erasable programmable ROM). Memória típusok RAM (írható és olvasható) dinamikus RAM (DRAM) – alacsony teljesítményigényű, tartalmát rövid idő alatt elveszti, ezért azt ciklikusan fel kell újítani. statikus RAM (SRAM) – magasabb működési sebességű, nem igényli az állandó frissítést ROM (csak olvasható) csak egyszer tölthető fel a gyártás során (ROM)
a felhasználó által egyszer feltölthető (PROM) speciális módon törülhető és programozható (EPROM) A központi tár jellemzői elérési idő (access time): az az időtartam, amely a kiolvasás megkezdése és az adatnak a tároló kimenetén való megjelenése között eltelik ciklusidő (cycle time): az elérési időnél hosszabb, mert magában foglalja a kiolvasás utáni feléledési időt (recovery time) is, amelyre egyes memóriáknak szüksége van a következő memóriához fordulást megelőzően Háttértárak A központi tár kapacitását meghaladó, nagy mennyiségű adat tárolására háttértárakat alkalmaznak (pl. merev- és hajlékonylemezek) 13 Mágnesszalag: archiválásra szolgáló eszköz (streamer). Mágneslemez: lehet hajlékony- vagy merevlemez. Az adattárolás koncentrikus sávok (track) mentén történik. Egymás alatt elhelyezkedő sávok a cilinderek (cylinder) A sávok szektorokra vannak felbontva, amelyek egyenként
általában 512 bájt hosszúságúak. Optikai lemezek: nagy az elérési idő, kicsi az adatátviteli sebesség, több 100 MB nagyságúak. (Csak olvashatók (egyszer írhatók) a CD-ROM-ok, egyszer írható optikai lemezek (WORM), újraírható CD-k (CD-RW)). Merevlemezek (hard disk): állandó sebességgel forognak és az adatok írása/olvasása a felülettől néhány mikron távolságra lévő fej segítségével történik. Minden lemezfelülethez tartozik egy író-olvasófej. A mikroszámítógépekben kizárólagosan használt merevlemez típus a pormentesen, zárt tokban elhelyezett merevlemez, az ún. winchester lemez A nagygépek és a mikroszámítógépek esetében használnak fixen beépített merevlemezeket és cserélhető lemezeket. Hajlékonylemezek (floppy disk): mágnesezhető réteggel ellátott vékony műanyag lemezek papír vagy műanyag védőtokban elhelyezve. A lemezek írásakor/olvasásakor az író-olvasófej hozzáér a l emez felületéhez, ezért csak
akkor forgatja a m eghajtó, amikor adatírás vagy olvasás zajlik. A lemez elérési ideje lényegesen nagyobb, mint a merevlemezeké A hajlékonylemez elsősorban a mikroszámítógépek adatbeviteli, -kihozatali adathordozója. A ma használt floppy lemezek mérete 5.25", illetve 35" átmérőjű és kapacitásuk 360 kB - 144 (2.88) MB között van Használnak 120 MB kapacitású 35"-es lemezeket is 14 6. A hálózat fogalma és célja, hálózattípusok (LAN stb), hardver és szoftver feltételek, jogosultságok A hálózat fogalma Egymással szoros kapcsolatban lévő önálló számítógépek rendszere. A hálózat célja, előnyei az erőforrások megosztása nagyobb megbízhatóságú működés költségmegtakarítás adatbázisok elérése (több pontról!) kommunikációs közeg kialakítása terhelésmegosztás Hálózattípusok Területi kiterjedés alapján: LAN (Local Area Network) - kis kiterjedésű hálózat, lokális
hálózat MAN (Metropolitan Area Network) - városi méretű hálózat WAN (Wide Area Network) - nagy-távolságú hálózat Zárt és nyílt rendszerek: zárt rendszer: egységeit csak a gyártó által ismert módon lehet hálózatba kötni nyílt rendszer: általános érvényű szabályokat illetve ajánlásokat követ Topológia alapján: bus (sin): gépek egy közös átviteli közegre csatlakoznak gyűrű: a gépek egy gyűrűre vannak felűzve fa: bármely két összekötött gép között egy és csak egy út van csillag: minden gép csak a központi géppel van összekötve teljesen összefüggő: minden gép minden géppel egyedileg össze van kötve részben összefüggő: a teljesen összefüggőből elhagyunk néhány ágat Átviteli sebesség alapján: lassú (kb 30 kbit/sec): általában telefonvonalak felhasználásával történő átvitelre jellemző (ISDN – 64, ill. 128 kbit/s) közepes sebességű (kb 1-20 Mbit/s):
ide tartozik a legtöbb lokális hálózat (Ethernet - 10 Mbit/sec, Token Ring - 16 Mbit/sec) nagy sebességű (50 Mbit/sec felett) Átviteli módszer alapján: alapsávú (baseband): modulálatlan jeleket továbbit, tehát az átviteli közegben haladó jel frekvenciája közel azonos a bitsorozat frekvenciájával (LAN-okra jellemző) szélessávú (broadband): az adatátvitel modulált, tehát a vivő frekvenciája jóval nagyobb, mint a bitsorozat frekvenciája (pl. kábeltévé) Kommunikáció iránya alapján: simplex (egyirányú): egyik állomás csak adó a másik csak vevő félduplex (váltakozó irányú): mindkét irányú átvitel megengedett, de egyidőben csak az egyik irány élhet duplex (kétirányú): mindkét állomás egyszerre adhat és vehet 15 Kapcsolási technika alapján: vonalkapcsolt: két kommunikáló állomás között állandó kapcsolat épül ki (pl. telefon) üzenetkapcsolt: két állomás között az átvivő
hálózat tárolva továbbító egységekből áll, ezek továbbítják az üzenetet egy címinformáció alapján, az üzenet hossza nem korlátozott. csomagkapcsolt: hasonló az üzenetkapcsolthoz, csak a csomag mérete korlátozott, ezért a hosszabb üzeneteket szét kell tördelni (pl. Ethernet) Két változata létezik: összeköttetés nélküli és virtuális összeköttetéses. Közeghozzáférési mód alapján: véletlen átvitelvezérlés: egyik állomásnak sincs engedélyre szüksége az üzenettovábbításhoz, adás előtt csak az átvivő közeg szabad voltát ellenőrzi. osztott átvitelvezérlés: csak egy állomásnak van joga adni, de ez a jog az állomások között körbe jár. Az állomások között egy vezérjel jár körbe, akinél ez van, az adhat (token ring vagy token bus). központosított átvitelvezérlés egy kitüntetett állomás foglalkozik az átviteli jogok kiadásával. A hálózat hardver feltételei A hálózathoz szükség van
legalább kettő, vagy ennél több számítógépre. Ebből egy a szerver szerepét tölti be. A második és a többi számítógép lesz a munkaállomás Ahhoz, hogy ezek a gépek összeköttetésben legyenek egymással, szükség van még vezetékekre, és gépenként egy hálózati kártyára, ami a számítógépek közötti összeköttetést létrehozza. A hálózat szoftver feltételei Egyenrangú hálózatoknál a k apcsolatban álló gépek kliensként és szerverként is működhetnek, az operációs rendszerbe vannak beépítve a hálózati szolgáltatások. Kliens-szerver hálózatoknál a szerveren hálózati operációs rendszert kell futtatni (pl. Novell NetWare, Windows NT/2000/XP), ami kiszolgálja a kliensektől érkező kéréseket. A szerver feladata a fájlok tárolása és védelme és a hálózati nyomtatás lehetőségének biztosítása. A klienseken bármilyen kompatíbilis operációs rendszer futhat Az alkalmazói programok a kliens gépeken futnak.
Felhasználói jogok a hálózatban FILE SCAN - KERESÉSI JOG: A felhasználó látja az alkönyvtárban lévő fájlokat, így keresni is tud közöttük. (R) READ - OLVASÁSI JOG: A felhasználónak joga van az alkönyvtárban lévő fájlokat olvasásra megnyitni, azok tartalmát olvasni, és olvasás után lezárni. WRITE - IRÁSI JOG: A felhasználó az általa megnyitott fájlba írhat, az ott lévő adatokat módosíthatja az adott alkönyvtárban. (C) CREATE - LÉTREHOZÁSI JOG: Az alkönyvtárban új fájlokat hozhat létre a felhasználó. ERASE -TÖRLÉSI JOG: Az adott alkönyvtárban lévő fájlokat törölheti a felhasználó. MODIFY - MÓDOSÍTÁSI JOG: Az alkönyvtárban lévő fájlokat a felhasználó átnevezheti, attribútumait módosíthatja. 16 (A) ACCESS CONTROL - HOZZÁFÉRÉS ELLENŐRZÉSE: Ezen joggal rendelkező felhasználónak joga van, az alkönyvtárak és az állományok attribútumait megváltoztatni, azokhoz való hozzáférési jogokat a
felhasználók számára adni és elvenni. (S) SUPERVISOR - RENDSZERGAZDAI JOG: Minden joga megvan a felhasználónak az adott könyvtárban és annak alkönyvtáraiban. Ez a legmagasabb jog egy könyvtárban 17 7. A hálózat hardver és szoftver elemei A hálózat hardver elemei A hálózathoz szükség van legalább kettő, vagy ennél több számítógépre. Ebből egy a szerver szerepét tölti be. A második és a többi számítógép lesz a munkaállomás Ahhoz, hogy ezek a gépek összeköttetésben legyenek egymással, szükség van még vezetékekre, és gépenként egy hálózati kártyára, ami a számítógépek közötti összeköttetést létrehozza. Átviteli közegek Koaxiális kábel Középen általában tömör rézhuzal található, ezt veszi körül egy szigetelőréteg, majd erre jön az árnyékolás. Jellemzője a hullámimpedancia (a jelvisszaverődés megakadályozását biztosítja). Lehet alapsávú és szélessávú átvitelre is használni Előnye:
nagy sávszélesség, nagy távolság, zajérzéketlenség. Hátránya lehallgathatósága, valamint a kiépítési struktúrájából adódó sérülékenysége és nehézkes szerelhetősége. Sodort érpár Két szigetelt, egymással összecsavart rézhuzalból áll. Lehet árnyékolatlan (UTP), illetve árnyékolt (STP) felépítésű. Előnye könnyű szerelhetősége, strukturáltsága, egyszerű bővíthetősége. Hátránya zajérzékenysége, limitált sávszélessége valamint lehallgathatósága A strukturált kábelezési rendszerek alapeleme. Sávszélessége függ a minőségétől, jelenleg 5 osztályba sorolják. Optikai kábel Az információkat egy üvegszálban haladó fénysugár megléte vagy hiánya hordozza. A fény a szál belsejének és külsejének eltérő törésmutatója miatt nem tud kilépni. A belső nagyobb törésmutatójú üveget (core) ugyanis egy kisebb törésmutatójú héj veszi körül (cladding), így teljes visszaverődés jön létre.
Alaptípusa a multimódusú (több hullámhosszon rezgő), step indexű (lépcsős törésmutatójú) szál, amelynek viszonylag nagy a jeltorzulása. Megoldás a torzulás kiküszöbölésére a fokozatos törésmutató-átmenetű szál (gradded index) vagy a távközlési vállalatok által használt lézerrel táplált egymódusú kábel. Előnyei: érzéketlen az elektromágneses zavarokra, nincs földpotenciál probléma, nagy sávszélesség, erősítés nélkül igen nagy távra vihető, nem hallgatható le. Hátránya: drága, nehéz javítani Infravörös, lézer, mikrohullámú, rádióhullámú, műholdas átvitel Általában speciális igények kielégítésére szolgáló megoldások. Strukturált kábelezés Minden munkahelyhez külön fali csatlakozó tartozik, mely tartalmazza a telefon és a számítógép csatlakozást. A fali csatlakozót a g épekkel, illetve a t elefonkészülékekkel ún patch kábel köti össze. A fali csatlakozókat sodort érpáras kábelen
keresztül egy közös helyiségbe vezetjük. Itt egy nagy elosztóra kerülnek, ennek patch panel a neve. Így kialakul egy csillagstruktúrájú végponti hálózat, ahol a központi patch panel minden csatlakozójának egy munkahely felel meg. 18 A közös helyiségben kerülnek elhelyezésre az aktív elemek. Ezek a telefonközpont, a szerverek és a hálózatösszekötő elemek. Ezeket az aktív elemeket szintén patch kábelekkel kötjük össze a patch panel megfelelő pontjával. A hálózat szoftver elemei Host-terminál alapú hálózatok A hálózat magját egy vagy több, egymással összeköttetésben lévő központi számítógép (host) alkotja. Itt futtatja az operációs rendszer a felhasználói programokat és működésének egyik integrált része a hálózatkezelés. A központi gépekhez intelligencia nélküli terminálok csatlakoznak, amelyeknek egyetlen feladata a billentyűzetről kapott adatok továbbítása és a képernyő adatok fogadása. A
terminálok csatlakozhatnak közvetlenül soros vonalon, telefonon keresztül modemmel, egy LAN hálózattal terminál csoportvezérlők segítségével. Tipikus képviselői: IBM nagyszámítógép rendszerek, DEC számítógép rendszerek (VMS operációs rendszer. Egyenrangú (peer to peer) hálózatok A hálózatban lévő bármelyik gép lehet hálózatot kiszolgáló és alkalmazást futtató gép is egyben. Induláskor a gép felajánlja az általunk konfigurált hardware eszközeit a hálózat részére (saját nyomtatót, winchestert, CD-t). Megteheti természetesen azt is, hogy semmit nem ajánl fel. A többiek által a hálózat részére biztosított eszközökből pedig a szükségeseket beépítheti a saját rendszerébe. Ezek a r endszerek kis LAN-ok kialakítására alkalmasak, ahol kevés gép van és a hálózati forgalom is minimális. Védelmi rendszerük egyszerű A hálózat kiszolgálása mellett a felhasználói programokat is futtatniuk kell, ez néha sebesség
gondokkal jár. Tipikus képviselői: a Windows alapú hálózatok. Kliens-szerver alapú hálózatok A szerver feladata a mindenki által elérni kívánt fájlok tárolása, ezek hatékony védelme és a hálózati nyomtatás. Itt fut a hálózati operációs rendszer, amely mindezt megvalósítja Az alkalmazói programok a kliens gépeken futnak, melyeken szinte tetszőleges operációs rendszer lehet. Ha adatra van szükségük, illetve nyomtatni szeretnének, akkor a szerverhez fordulnak. Tipikus képviselői: Novell NetWare és Windows NT/2000. 19 8. A számítógép be- és kiviteli eszközeinek (input-output perifériák) típusa és ezek feladatai és működésük elve (egér, billentyűzet, floppy, optikai lemez, szkenner, digitalizáló tábla, digitális fényképezőgép, és videó, nyomtató, plotter, adatmentő eszközök) Billentyűzet A billentyűzet a mikroszámítógép közvetlen irányítására, kisebb mennyiségű adat bevitelére használható. A 101/102
gombos változatnál külön számbillentyűzet van a numerikus adatok könnyebb bevitelére. A billentyűzet működése: A billentyűzet saját vezérlővel rendelkezik, amely nem csak adatokat tud küldeni az alaplapon lévő billentyűzet illesztő felé, hanem parancsokat is tud fogadni. A billentyűzet megszakítási rutin valamelyik billentyű lenyomásakor annak billentyűkódját átküldi a billentyűzet pufferbe. A lenyomott billentyű azonosítására egy sorszám szolgál és nem a karakter ASCII kódja, mivel ugyanahhoz a billentyűhöz több karakter is tartozik. Minden billentyűlenyomáskor a vezérlő 2 bájtot küld át a pufferbe. Azoknál a billentyűkombinációknál, amelyekhez ASCII kód rendelhető, az átküldött bájtok közül az egyik az ASCII kódot, a másik a billentyűkódot tartalmazza. Azoknál a kombinációknál, amelyek valamely funkcióbillentyűhöz tartoznak, az átküldött bájtok közül az első 0 értéket, a második a billentyűkódot
foglalja magában. Tetszőleges ASCII kódérték (a 0 kivételével) bevihető az ALT billentyű lenyomásával és vele egyidőben a számbillentyűzeten a decimális kódérték bebillentyűzésével. A billentyűzet BIOS szintű kezelése: A billentyűzetvezérlő az átküldött ASCII kódokat és billentyűkódokat egy 32 bájtos, ciklikus kezelésű pufferben helyezi el. A puffer kezdetét és végét jelző mutatók folyamatosan körbejárnak, azaz ha elérik a puffer végét, akkor az elejére ugranak. A pufferből a BIOS 16hos megszakításvektorának segítségével lehet kiolvasni az adatokat Egér Az egér a legelterjedtebb mutatóeszköz. Az alábbi típusait különböztetjük meg: • mechanikus vezérlésű egérnél két, egymásra merőleges görgőrendszer mozgását érzékeli a berendezés, és ennek jeleit továbbítja a gép soros portja felé. • optikai vezérlésű egér esetében, egy hálózatos rajzolatú egéralátéten mozgatva az egeret, egy LED
fényének a visszaverődését érzékeli a berendezés. • az opto-mechanikai vezérlésű egér működése hasonló a mechanikus megoldásúéhoz, azzal a különbséggel, hogy az egér elmozdulásával együtt elforduló hasított korongon fényt átbocsátva, az így kapott fényimpulzusokat érzékeli a berendezés. Az egér és a processzor közötti kapcsolat a soros porton keresztül jön létre. Bizonyos időközönként a soros bemeneten keresztül 3 vagy 5 bájtot küld az egér érzékelője. A három bájt tartalma: 1. bájt - az utolsó 100ms alatti x-irányú elmozdulás előjeles értéke 2. bájt - az utolsó 100ms alatti y-irányú elmozdulás előjeles értéke 3. bájt - az egér billentyűinek helyzete, állapota Az egér kezelése a 33h-as BIOS megszakítási rutinon keresztül történik. 20 Nyomtatók A leggyakoribb nyomtatók az alábbi csoportokba sorolhatók: • karakternyomtatók (teljes karaktert nyomtatók, mátrixnyomtatók), amelyek egy-egy
karaktert kiírva a nyomtatófejet egy pozícióval jobbra, vagy balra viszik; • sornyomtatók, amelyek egyszerre egy teljes sor összes karakterét kiírják; • grafikus nyomtatók, amelyeknél pontonként történik a nyomtatás. Karakternyomtatók A margarétakerekes nyomtatók esetében, a karakterek képei egy forgó, hasított tárcsa (olyan, mint a m argaréta virág) szélén helyezkednek el. A forgó tárcsa mögött elektromágnessel működtetett kalapács helyezkedik el, amely a szükséges időpontban a tárcsa valamelyik szirmát az előtte lévő papírhoz nyomja. A betűt tartalmazó tárcsa és a papír között található a festékszalag. A margarétakerekes nyomtatók igen jó minőségű kiírást eredményeznek, különösen karbonszalag alkalmazásával. Mátrixnyomtatók A nyomtatófejben, egy oszlopban 9, vagy 24 nyomtatótű található, amelyek egyenként vezérlehetők. A karakterek alakját egy 5*7-es, 911-es, vagy 1823-as pontmátrix pontjaival
rajzolja ki a nyomtató, egyidőben mindig csak egy oszlop pontjait nyomtatva. Az egy sorba irható pontok (dot) száma adja a felbontás és így a nyomtatás finomságát. Tintasugaras nyomtatók A tintasugaras (ink-jet), buborék (bubble-jet) sugaras nyomtatók igen jó minőségű nyomtatási képet eredményeznek, szinte zajtalanul és alacsonyabb áron, mint a lézernyomtatók. A nyomtatási kép több tucat fúvókán keresztül kilövellt, porlasztott apró tintacsepp hatására alakul ki a papíron. A nyomtatóval jó minőségű grafikus nyomtatás is elérhető, akár színesben is. Lézernyomtatók A lézernyomtatók működési elve hasonlít az elektrosztatikus elvű másolók működéséhez. A nyomtatóban egy kb. 1000 V-ra feltöltött, fényérzékeny bevonattal rendelkező forgó henger van. A forgó henger felületét a felbontási finomságnak megfelelő sűrűséggel, az alkotója mentén végigpásztázza egy lézersugár, amit a nyomtatandó kép jelével
modulálnak. Ahol fénysugár éri a hengert, ott a fénysugár erősségének megfelelő mértékben a henger felülete elveszti a töltését. A forgó henger felülete elhalad a finom festékport tartalmazó kazetta előtt, amelyből a töltéssel arányos mennyiségben festékpor tapad a henger felületére. A papír fűtött hengerek között halad át, amelyek a f estékanyagot “ráégetik” a p apírra. A forgó henger felületét a nyomtatás után letisztítják és így alkalmas lesz a következő lap nyomtatására. Optikai lemezek: nagy az elérési idő, kicsi az adatátviteli sebesség, több MB nagyságúak. (Csak olvashatók (egyszer írhatók) a CD-ROM-ok és DVD-ROM-ok, egyszer írható optikai lemezek (WORM), újraírható CD-k és DVD-k (CD-RW és DVD-RW)). Hajlékonylemezek (floppy disk): mágnesezhető réteggel ellátott vékony műanyag lemezek papír vagy műanyag védőtokban elhelyezve. A lemezek írásakor/olvasásakor az író-olvasófej hozzáér a l
emez felületéhez, ezért csak akkor forgatja a m eghajtó, amikor adatírás vagy olvasás zajlik. A lemez elérési ideje lényegesen nagyobb, mint a merevlemezeké A hajlékonylemez elsősorban a mikroszámítógépek adatbeviteli, -kihozatali adathordozója. A ma használt floppy lemezek mérete 5.25", illetve 35" átmérőjű és kapacitásuk 360 kB - 144 (2.88) MB között van Használnak 120 MB kapacitású 35"-es lemezeket is 21 Digitalizáló tábla: rajzok pontjainak egyenkénti bevitelére és digitalizálására szolgál. Szkenner (scanner): rajzok, grafikák, fényképek vagy szöveg raszteres (bittérképes) bevitelét teszi lehetővé. Fényceruza (light pen): segítségével a képernyőre látszólag közvetlenül írhatunk, amelyet a gép érzékel és feldolgoz. Ez a lehetőség különösen a tervező rendszerek esetében jelent nagy kényelmet a programok kezelésében. Távközlési csatoló, modem: amelyen keresztül a számítógép
közvetlenül kapcsolódhat a távközlési hálózatokhoz (kapcsolt telefonhálózat, bérelt adatvonalak, csomagkapcsolt hálózat) és ezeken keresztül más számítógépes rendszerekhez. Hálózati csatoló: amellyel helyi számítógépes hálózathoz (LAN = Local Area Network) kapcsolható a számítógép. Rajzgép (plotter): az eredmények szöveges vagy grafikus megjelenítésére használatosak nyomtatott formában. A nagyméretű papírlapokkal dolgozó építészek vagy más tervezők számára a p lotter (rajzgép) jelenti a m egoldást. A plotter karja a s zámítógép utasításának megfelelően emeli fel a tollat és az utasítást követve rajzol egyenes vonalakat és íveket. Amikor más színre van szükség, a kar leteszi a tollat és felveszi a más színűt. A legnagyobb plotterek tintasugaras elven működnek és nagyon nagy méretű papírlapra is képesek rajzolni. Digitális fényképezőgép és videokamera: A digitális fényképezőgépek ugyanazt
valósítják meg, mint a normál fényképezőgépek, csak ehhez nincs szükségük filmre. Az ilyen készülékek ugyanis a látott képet azonnal digitális képpé alakítják át, amelyet közvetlenül a számítógépbe képesek továbbítani. A fényképezés után össze kell kötni a fényképezőgépet a számítógéppel, majd letölteni a kész képet és a kép azonnal megtekinthető a számítógép képernyőjén. Adatmentő eszközök Szalagos meghajtók, ZIP drive, 120 MB kapacitású hajlékonylemez, CD és DVD író stb. 22 9. A számítógép sínrendszerének feladata és logikai felépítése, a mikroszámítógépek PCI sínen alapuló architektúrája (a belső, a helyi és a rendszersín feladata és a csatlakoztatható eszközök, sínvezérlés, sínfoglalás) A mikroszámítógép sínrendszere (buszrendszere) egy több tucat vezetékből álló vezetékrendszer, amelyen az adatok, vezérlőjelek, eszközcímek meghatározott módon vihetők át. A
buszrendszer szabályozott módon köti össze a gép különböző részeit. A gép különböző egységei egymás számára, csak ezen keresztül továbbíthatnak adatokat, vezérlő jeleket. Mivel minden eszköz ugyanarra a sínrendszerre kapcsolódik, az átvitel létrehozásakor: • meg kell oldani az adatátvitelben résztvevő eszközök kijelölését, • meg kell határozni az adatátvitel irányát, • meg kell oldani a kapcsolatban résztvevő eszközök működésének összehangolását. Belső sínrendszer: a processzoron belüli egységek összekötésére Külső sínrendszer: a processzor és az azon kívül lévő egységek összekötésére A belső sínrendszer kialakítását az elérni kívánt teljesítmény szabja meg. Nagyobb teljesítményű processzorok esetében, az átvitel gyorsítása érdekében, 3-sines rendszer kialakítása a célszerű, amelynél a címsín mellett, külön adatain van írásra és olvasásra. Ezzel a közel egyidejű írás és
olvasás megoldható. Egyszerűbb megoldást ad a 2-sines (adat és címsín) rendszer, amely általánosan elterjedt megoldás a processzorok körében. A közös adat és címsín használata csak a nagyon egyszerű, célfeladatokra használt processzoroknál alkalmazott. A külső sínrendszer az összekapcsolt területek alapján lehet: • helyi sin (local bus), amely a processzorhoz közvetlenül kapcsolódó részt jelenti, tehát a processzor hajtja meg; • rendszersín (system bus), amely a processzort köti össze - egy buszmeghajtó közbeiktatásával – a gép egyéb részeivel, elsősorban az I/O eszközökkel; • memóriasín (memory bus), amely nem minden esetben képez önálló részt, de nagyobb rendszernél célszerű leválasztani a rendszersínről a memória területét. A sínrendszer tartalmilag három részre osztható: • címsín, amely az eszközök címzését szolgálja, azok címét továbbítja rajta a processzor, szélessége 32 (esetleg 64) bitnek
megfelelően ugyanennyi vezeték; • adatsín, amelyen keresztül a továbbítandó adatot küldi, vagy fogadja a processzor. Az adatsín szélessége többnyire 32 (vagy 64) bit, illetve ugyanennyi vezeték; • vezérlősín, amelynek vezetékeit a processzor a vezérlőjelek kiküldésére, vagy azok fogadására használja fel. A vezérlőjelek száma változó, általában 10-15 körül van minimálisan. A sínt egyidőben csak egy eszközpár használhatja. A busz használatát valamelyik eszköz kezdeményezi, amelyet aktív eszköznek (master) neveznek, szemben a k apcsolatban résztvevő másik, passzív eszközzel (slave), amely csak fogadja és végrehajtja az aktív eszköztől származó vezérléseket. A mikroszámítógépeknél a busz irányítását megszerző eszköz a processzor, vagy valamelyik DMA-t alkalmazó I/O eszköz lehet. Sínvezérlés 23 A sínrendszerek a vezérlés szempontjából két csoportra oszthatók: • szinkron ütemezésű buszok, amelyek
saját órajellel rendelkeznek és ezek ütemei szabják meg a buszon zajló folyamatok, műveletek időbeli lefutását; • aszinkron ütemezésű buszok, amelyek saját órajellel nem rendelkeznek és a folyamatok és műveletek lefutását, az egymást követő elemi lépések befejezése szabályozza. Minden busztevékenységhez meghatározott időtartam, ütemszám szükséges. Azt az időtartamot, amely egy adatátviteli folyamat lefutásához - egy következő tevékenység megindítási lehetőségéig - kell, buszciklusnak (bus cycle) nevezzük. Mind a szinkron, mind az aszinkron működési mód mellett az összekapcsolt eszközöknek összehangolt módon kell működniük. Sínfoglalás (bus arbitration) Az adatátvitelek lebonyolításához egyidőben több aktív eszköz (master) is igényelheti a busz használatát. Ilyenkor valamilyen eljárással el kell dönteni, hogy melyik eszköz kapja meg először a sínhasználat jogát. A sín iránti igények kiszolgálása
két módon történhet: párhuzamos kiszolgálási mód alkalmazásakor minden eszköz önálló sínkérő és sínengedélyező vezetékkel rendelkezik. A beérkező igényeket a vezérlő logika sorolja, dekódolja és a legmagasabb prioritású eszköz számára engedélyezi a sín használatát. soros kiszolgálási mód alkalmazásakor az eszközök sorba vannak kötve és a lánc mentén az elhelyezkedésük szabja meg, hogy mikor kaphatják meg a sín használatát. Amelyik eszköz a legközelebb van a vezérlőhöz, annak a prioritása a legmagasabb. A soros rendszerben a processzor szokásosan a legalacsonyabb prioritású azért, hogy minden eszköz megkapja az eszközt, ha igényli. A soros kiszolgálás egyik változata a lekérdezéses (polling) rendszer, amelynél a vezérlő logika sorra lekérdezi az eszközöket a buszfoglalás iránti igényükről. Itt a lekérdezés sorrendje adja a soros láncot. A PCI (Peripheral Component Interconnect) sínrendszer jellemzői
• négy új megszakítás alaplapi eszközökhöz és a sínbe helyezhető perifériákhoz • 32-64 bites átvitel • 33-66 MHz-es órajel • 133-532 MB/s adatátviteli sebesség • 5 és 3,3 V-os tápellátás • A Plug and Play technológia támogatása 24 10. Az INTEL mikroprocesszorok regiszterei (csoportosítás, felsorolás, felhasználás), a FLAG regiszter Ideiglenes adattárolás céljára szolgálnak az általános vagy meghatározott célú regiszterek. Ezek a gyors működésű tárak a belső sínrendszeren tartanak kapcsolatot a processzor más egységeivel. A legfontosabb regiszterek: • Utasításszámláló regiszter (PC vagy IP): a soron következő utasítás memóriabeli címét tartalmazza; • Utasításregiszter (IR): a vezérlő egység része, amely a tárból lehívott utasítást tárolja addig, amíg a vezérlő egység az utasítás műveleti jelrésze alapján meghatározza az elvégzendő műveletet és ennek alapján elindítja a
végrehajtást vezérlő mikroprogramot; • Bázis(cím)-regiszter (BR): az operandusok címzéséhez használt regiszter; • Indexregiszter(ek) (IX) és szegmensregiszter(ek): szintén az operandusok címzését segítik elő; • Állapotregiszter(ek), vezérlő regiszter(ek) (flag register, status register, control register): egy vagy több regiszteren belül tárolnak vezérlő és ellenőrző jeleket. A műveletek végrehajtásának eredménye alapján bekövetkező állapot jellemzőit tükrözi vissza a regiszter egy-egy helyiértéke. (Pl zero, overflow, carry flag) Az állapotregiszternek lehetnek olyan bitjei, amelyek valamilyen vezérlési előírást tárolnak (pl. egy egység használatának engedélyezése/tiltása); • Veremmutató regiszter (SP): a veremtároló legfelső elemét jelöli ki. A verem LIFO szervezésű tároló (adatot csak a tetejére lehet tenni és csak onnan lehet leszedni) és a főtárban van kialakítva. • Pufferregiszterek (buffer register):
a processzor belső adat- és címsínjét választják el a külső sínrendszertől. • Adatszámláló regiszter (DC): az adatok kiolvasásakor vagy beírásakor azonosított memóriarekesz címét az adatszámláló regiszter tárolja. • Akkumulátor (AC): az aritmetikai és logikai műveletek operandusait és a műveletek eredményét tárolja. A felhasználói programok szempontjából három kategóriába soroljuk a regisztereket: • A rendszerregiszterek a felhasználói programok számára nem elérhetők (pl. IR) • A speciális célú regiszterek a felhasználói programokban csak meghatározott utasításokban szerepelhetnek (pl. az állapotregiszterek) • Az általános célú regiszterek bárhol felhasználhatók a programban (pl. AC) 25 11. A verem (stack) fogalma és működése, a veremmutató regiszter, a vermet kezelő assembly utasítások, a szubrutin fogalma, célja, a s zubrutinra vonatkozó assembly parancsok A verem LIFO szervezésű tárolóhely.
Adatokat csak a verem tetejére lehet tenni és csak onnan lehet kiolvasni. A veremmutató (SP) a verem legfelső elemét jelöli ki Ha egy adat bekerül a verembe (PUSH), akkor a veremmutató értéke eggyel csökken, ha kiveszünk belőle egy elemet (POP), akkor a veremmutató értéke eggyel nő. A verem adatok ideiglenes tárolására és szubrutin híváskor a visszatérési cím mentésére szolgál. A vermet kezelő assembly utasítások PUSH Adatbevitel (írás a v erembe): a v eremmutató által megcímzett rekeszbe bekerül az adat valamelyik regiszterből, a veremmutató értéke eggyel csökken, hogy megcímezze a következő üres rekeszt a verem tetején. POP Adatkihozatal: a veremmutató értéke eggyel nő, hogy megcímezze a verembe utolsónak beírt adatot, ezután a veremmutató által kijelölt rekesz tartalma az egyik regiszterbe töltődik. Az adatkihozatal művelet végén a verem-mutató ismét megcímzi a verem felső részén lévő első szabad
memóriarekeszt, ugyanis azt tételezzük fel, hogy ha egy adatot kiolvasunk a verem felső részéből, akkor az adattároló-hely kiürül. Ezen utasítások fő haszna az, hogy a szubrutinok az általuk használt regiszterek tartalmát elmenthetik, majd futásuk befejezésekor visszaállíthatják anélkül, hogy erre statikus memóriaterületet kellene igénybe venniük. Szubrutin Szubrutinnak nevezzük azt a programrészletet, melyet a program futása során többször, több helyről meghívunk. Szubrutint a program tetszőleges részén a CALL utasítással hívhatunk meg. A szubrutin végén a RET utasítás áll A szubrutinhívást feltétel nélküli ugrásnak is fel lehet fogni. A szubrutinra vonatkozó assembly parancsok CALL Szubrutinhívás: a CALL utáni utasítás offset címe a verembe kerül. RET Visszatérés a szubrutinból: a visszatérési cím az utasításszámláló regiszterbe kerül, a programvégrehajtás a szubrutinhívást követő utasításnál
folytatódik. 26 12. Az IBM PC gépek megszakítási rendszere (vektortáblázat, NMI, IRQ, INT) A folyamatok közben igen gyakran következnek be olyan események amelyek a feldolgozás szempontjából váratlanok. Ezeket az eseményeket úgy kell kezelni, hogy a feldolgozás egészét a lehető legkevésbé zavarja. Az eseményeket a következőképpen csoportosítjuk: • szinkron (várható) események - meghatározható helyen, időpontban ugyanott keletkeznek pl. túlcsordulás, nullával való osztás • aszinkron várható események - program futása során várható, de időpontjuk szempontjából ismeretlen, váratlan események pl. adatbeolvasás, DMA adatátvitel • aszinkron váratlan események - időpontjuk ismeretlen. Például: áramkimaradás, hardverhiba. Kiváltójuk lehet: • a program - valamilyen futás közbeni hibával (osztás nullával, túlcsordulás stb.) Ezek szinkron események, kezelésére a processzor egy kiszolgáló rutint indít el; • a
hardver - pl. valamelyik periféria kezdeményezi a p rogram futásának ideiglenes felfüggesztését az adatátvitel lebonyolításának idejére. Ezek aszinkron események Az ilyen események kezelésére szolgál a megszakítási rendszer. A megszakítási kérelem egy jelzés a p rocesszornak valamely esemény bekövetkeztéről. A megszakítás a futó folyamat felfüggesztése a megszakítási kérelem hatására, annak kiértékelésére, kiszolgálására. A kiszolgálásra egy hardver-szoftver együttes szolgál, amely együttesen végzi el a s zükséges tevékenységeket. Ez a megszakítási kérelem kiszolgálása Egyes eszközök esetében a megszakítás lehetősége engedélyezhető vagy tiltható. Az engedélyezés vagy tiltás egy regiszter bitjeinek a b eállításával történik. Ezt nevezzük maszkolásnak. Vannak maszkolható (kiszolgálásuk letiltható) és nem maszkolható (nem tiltható le, ezek mindig érvényre jutnak) megszakítások. Két forrása lehet a
m egszakítási kérelemnek: szoftver és a h ardver. A szoftver megszakítási kérelmek programból lettek kezdeményezve, ezek nem maszkolhatóak. A hardver megszakítási kérelmek többsége maszkolható, de vannak nem maszkolhatóak is, például valamilyen hardverhiba esetén (pl. RAM paritáshiba) (NMI - Non Maskable Interrupt - nem maszkolható megszakítás). A megszakítási kérelem keletkezési helyének megállapítására két fő rendszer alkalmazható: szoftver és hardver úton történő megállapítás lehetősége. Szoftver módszer: egy rutin sorra megvizsgálja a megszakítási. kérelem szempontjából szóbajöhető eszközök állapotjelzőjét, és ahol igény van a megszakításra, ott elindítja a megfelelő kiszolgáló programot. Ezt nevezik lekérdezéses megszakításnak Hardver módszer: egy megszakítás-vezérlő szabályozza a beérkező kérelmek kiszolgálását. A mikroszámítógépek megszakítási vezérlői egy vagy több megszakítási
vezetékkel rendelkeznek. Ezt a módszert alkalmazzák az IBM PC-knél is 27 Egy megszakítási vonal esetén a k eletkezési hely meghatározása történhet szoftver úton, lekérdezéses módszerrel. A hardver úton történő meghatározás sorosan történik A visszaigazoló jel a kiszolgálást kérő eszköztől már nem halad tovább. Több megszakítási vonal esetén minden eszköz saját megszakítást kérő vezetékkel rendelkezik, ezzel a kérelem helye egyértelműen megállapítható. A vektoros módszer alkalmazása a legáltalánosabban használt forma. A megszakítást kérő eszköz a kiszolgáló rutin kezdőcímét határozza meg az alábbi módon: • A megszakítást kérő eszköz egy sorszámot ad át a processzornak, amely sorszám a kiszolgáló rutinok kezdőcímeit tartalmazó táblázatban kijelöli a megfelelő kiszolgáló rutin kezdőcímét. A rutinok kezdőcímeit tartalmazó táblázatot megszakítási vektortáblának nevezzük. Az INTEL
processzorok alaphelyzetben kétszintű megszakítási rendszerrel rendelkeznek: egy maszkolható (INT) és nem maszkolható (NMI) megszakítási vonallal. Mivel ez a két megszakítási lehetőség a gyakorlati felhasználásban nem elegendő, ezért külön megszakításvezérlőt használnak amely 8 (illetve 2 darab vezérlő esetén 15) megszakítási kérelmet tud feldolgozni. A megszakítás bemenetek sorrendje egyúttal prioritási sorrendet is jelent A processzorok valós üzemmódban a vektortábla, míg védett üzemmódban a megszakítási rutinok deszkriptorait tartalmazó megszakítási deszkriptortábla (IDT) alapján dolgozzák fel a megszakítási kérelmet. A megszakítások típusai prioritás szerint: NMI – nem maszkolható megszakítás: nem tiltható le, kritikus eseményt jelez IRQ – interrupt request: letiltható hardver megszakítás, külső eszközök kezdeményezik INT – szoftver megszakítás: a programban kiadott ’INT sorszám’ utasítással a
megszakítást kiszolgáló rutinra ugorhatunk (amit a hardver egység hív IRQ-val) 28 13. A mikroszámítógépek csatolói (az interfész fogalma, a soros és párhuzamos port és működése, a háttértár csatolók: SCSI és EIDE, a DMA adatátvitel) Az interfész a hardvereszközök közötti csatlakozást valósítja meg. Megadja a csatlakozási pontokat, a jelek fizikai és logikai jellemzőit és időbeli lefolyását. Párhuzamos adatátvitel Az adatszó minden bitje egyszerre kerül átvitelre. Programozott I/O: A programozott adatátvitelre az I/O eszközök közvetlen irányítása a jellemző, a programból periféria utasítások segítségével lehet elérni a beviteli/kimeneti eszközöket. Az I/O utasításokban a p erifériát meg kell címezni. Ez a cí m vagy az I/O port sorszáma, vagy a memória egy tárolóhelyének a cí me. A periféria utasítások a p rocesszor egy regisztere és a periféria (regisztere) között valósítanak meg átvitelt. Az
alkalmazható programozott átviteli módszerek: feltétel nélküli (direkt) programozott adatátvitel, amelyet egyszerűbb esetekben lehet alkalmazni, mint pl. kijelzők (LED-ek) beállítása, érzékelők lekérdezése; feltételes, lekérdezéses adatátvitel (polled I/O), amelyben a periféria állapotjezőinek ellenőrzése alapján és után történhet az átvitel. Amennyiben a jelzőbit nem megfelelő az átvitelhez, akkor a processzornak várakoznia kell a megfelelő állapot bekövetkeztéig (váró ciklus). Az átvitel karakterenként történik Blokkos adatátvitelkor, amelyhez külön utasítás tartozik, a két oldalt (processzor - periféria) össze kell hangolni, szinkronizálni kell. Erre szolgál a kérés-visszaigazolás (hand shaking) szinkronizálási módszere A programozott adatátvitel nem túl előnyös, mert lassú átvitelt eredményez és a processzor idejét teljesen leköti. Az átvitelt mindig a processzor kezdeményezi Megszakításos I/O: A
processzor idejét célszerű felszabadítani az átviteli feladatok alól, ezért olyan módszert kell alkalmazni, amely ezt lehetővé teszi. Ez a módszer a megszakításos adatátvitel, amelyben a periféria kezdeményezi az átvitelt. Az ilyen átvitelek lebonyolításához, az I/O portoknak regiszterekkel kell rendelkeznie. A megszakításos adatátvitel előnye a programozott I/O átvitellel szemben, hogy a processzor lényegesen kevesebb időt tölt az adatátvitel irányításával. Ugyanakkor továbbra is a processzoron keresztül zajlik az átvitel és a nagyobb sebességű eszközök esetében már nem kellően megbízható ez az eljárás. Közvetlen memória-hozzáférés (DMA): A közvetlen memória-hozzáféréses adatátvitelt a n agyobb sebességű eszközök használata esetén célszerű alkalmazni. A közvetlen memória-hozzáféréses átvitelnél, a p rocesszor által elindított DMA vezérlő önállóan irányítja az adatátvitelt a memória és a kijelölt
I/O eszköz között a processzor kihagyásával. A processzor és a DMA vezérlő között a kapcsolat a megszakítási vonalak segítségével jön létre. Soros adatátvitel 29 Az adatbitek időben egymás után kerülnek átvitelre. A soros adatátvitel az adatok olyan továbbítása, amelyben az adatokat bitenként, a kiegészítő ellenőrző jelekkel együtt, időben egymás után továbbítja a számítógép. Mivel a számítógépen belül az adattovábbítás párhuzamos formában történik, ezért a soros adatátvitelhez előbb szükség van egy párhuzamos-soros, illetve ilyen jelek fogadásakor, egy visszaalakító soros-párhuzamos átalakításra. A soros adatátvitel lehet aszinkron és szinkron ütemezésű. Aszinkron átvitel: Az aszinkron ütemezésű adatátvitelnél, a karakterek ütemezés nélkül követik egymást. A strat/srtop bitek miatt a jelsorozat eléggé redundáns, tehát információtartalom szempontjából felesleges jeleket is tartalmaz,
ugyanakkor a vevő oldalon nincs szinkronizálva a vétel és emiatt nagyobb sebességű átvitel nem biztonságos. Szinkron átvitel: Szinkron adatátvitelnél az egymást követő jelek ütemezetten, szinkronizáltan követik egymást. Az adatok átvitele blokkos formában történik, amelyet kiegészítenek még szinkronizáló bitekkel is. Ezt a formát nevezik “frame”-nek, keretnek Az átvitel egyik formája a k arakter orientált protokoll (COP= character oriented protocol), amelynek használata esetén a g rafikus adatok továbbítása körülményessé válik. Ezért azok átviteléhez a bit orientált protokollt (BOP= bit oriented protocol) használják. Ilyen, az ISO által is elfogadott bit orientált protokoll a HDLC (high-level data link protocol) protokoll. A szinkron átvitelnél a redundancia alacsonyabb, de a kapcsolódó hardver bonyolultabb. Az alkalmazható sebesség magasabb, mint az aszinkron átvitelnél. Szabványosított interfész: A párhuzamos és soros
adatátvitel lebonyolításához a k imeneteket/bemeneteket (interfészeket) szabványosították. A párhuzamos csatlakozási felület szokásosan alkalmazott szabványa a C ENTRONICS ipari szabvány, amely egy- vagy kétirányú adatátvitelt is lehetővé tesz. A mikroszámítógépek környezetében használt soros csatlakozási felületetet az RS 232C szabvány írja le. Háttértár csatolók SCSI (Small Computer Systems Interface): nagy adatátviteli sebességet igénylő hardvereszközök (merevlemez, CD-író stb.) csatlakoztatásához használható A csatlakoztatott eszközök (max. 7 db) egy 50 pólusú szalagkábelre vannak felfűzve, az a kábelt egy ellenállás zárja le, amit általában az eszközön lévő jumperrel lehet aktiválni. Az egyes eszközök a címük alapján azonosíthatóak az adatátvitel szempontjából. A címeket is jumpereléssel lehet megadni. A csatoló használatához egy csatolókártyára van szükség, ami az adatátvitelt vezérli. Az SCSI
csatolóval működő eszközök és a csatolókártya meglehetősen drága. EIDE (Enhanced IDE): A legelterjedtebb háttértár csatoló az IDE (Integrated Device Equipment) a kezelhető terület nagyságát 504 MB-ra korlátozta, mivel a maximálisan 16 fejjel rendelkező egységeket tudta kezelni. A merevlemezek kapacitása a 90-es évek közepére 30 jóval túllépte ezt az értéket, így 1993-ban a Western Digital kifejlesztette az EIDE csatolót, amivel a kezelhető fejek száma 255-re, a terület pedig 8,4 GB-ra nőtt. A megoldást az ún. LBA (Logical Addressing Block) módszer jelenti Az LBA-t támogató merevlemezeknek a BIOS lekérdezi a méretüket, majd ezt az értéket logikai blokkok számára alakítja át és cilinder-fej-szektor formában adja át az operációs rendszernek. 31 14. A virtuális tárkezelés fogalma és legfontosabb eljárásai (lapozás és szegmentálás, a virtuális cím leképezése, a vezérlőegységek és cache-tárak= MMU, TLB, a
lapcsere stratégiái=LRU) A virtuális tárkezelés használata esetén egy egységnek tekintjük a k özponti tárat és a merevlemez területét, ez képezi a virtuális címtartományt. Ez azért hasznos, mert a központi tár területe véges és nem mindig elegendő programok párhuzamos futtatásához (a végrehajtás alatt álló programrésznek és a feldolgozandó adatoknak mindenképpen a főtárban kell lenniük), ugyanakkor a futtatás során nem kell minden programrészt a központi tárba tölteni, ha szükségünk van egy részre, azt a lassabb tárból behívhatjuk a főtárba. A virtuális címtartomány bármely részében elhelyezkedő blokkot a feldolgozáshoz a központi tár területére kell átvinni. Az átvitt blokk mérete lehet változó (szegmens) és lehet rögzített (lap). A végrehajtáshoz a p rocesszornak ismernie kell az eredeti virtuális cím valódi helyét a központi tárban, a valós címtartományban. A címleképzés az alábbi képlet
alapján történik: valós cím = átvitt blokk fizikai kezdőcíme + relatív cím A tárkezelő rendszer (MMU) feladata a virtuális, logikai címek átalakítása valós, fizikai címekké. Szegmentálás A szegmens olyan adatblokk, melynek mérete nem rögzített. A szegmens fizikai kezdőcímét a szegmenstáblázat tartalmazza, ebből lehet kikeresni a konkrét szegmens főtárbeli kezdőcímét. A fizikai cím a szegmens fizikai kezdőcíme + relatív cím összefüggéssel meghatározható. Az átlapolódó és nem egyforma hosszú szegmensek miatt idővel igen sok üres, nem használt hely keletkezik a k özponti tárban. Ezek felszámolására és összefüggő foglalt, illetve szabad helyek kialakításához időnként szükséges a memória átrendezése. Ezt a műveletet nevezik szemétgyűjtésnek (garbage collection). A szegmensek főtárba való betöltésére az alábbi stratégiákat alkalmazzák: • első szabad hely keresése - a memória kezdetétől keresi a
megfelelő helyet • következő szabad hely keresése – a legutóbb betöltött szegmens elhelyezésétől kezdi a keresést • legjobb hely - a szegmenst betöltve a lehető legkevesebb hely marad szabadon • legrosszabb hely - az előző ellentéte, a lehető legnagyobb hely maradjon szabadon. A szegmentálás előnye a rugalmasság (változtatható blokkméret) és az osztott felhasználás lehetősége (átlapolódás). Hátránya, hogy a nagyméretű szegmensek cseréje ronthatja a hatékonyságot. Lapozás A lapok olyan adatblokkok, amelyek mérete azonos és rögzített (általában 4 K B). A lapok nem átlapolhatók és meghatározott, a lappal megegyező méretű helyekre kerülhetnek a főtárban. Ezek a lapkeretek (frame) A címszámítás módja: logikai cím = lap logikai sorszáma + relatív cím 32 fizikai cím = lapkeret fizikai kezdőcíme + relatív cím A lap fizikai (főtárbeli) kezdőcíme a logikai sorszám alapján a laptáblázatból kerül
meghatározásra. Lapváltásnál nem okoz gondot az elaprózódó tárterület, mert a lapok csak a lapkeretek helyére kerülhetnek, és így a legfeljebb a n em használt lapkeretek üresek. Ha nincs üres lapkeret, akkor valamilyen módszerrel ki kell választani a kiürítendő lapkeretet. Lapbetöltés Új lap betöltésére a felmerülő igény esetében kerül sor (ha nincs meg a hivatkozott lap a főtárban, azaz laphiba történt). Az igény felmerülése a lapváltási eljárást indítja el, amely betölti a memóriába a kívánt lapot. Ilyenkor az utasítás végrehajtását fel kell függeszteni, és később visszatérni rá. Két módszer van erre: • az utasítás folytatása - az állapotjelzőket el kell menteni, folytatáskor visszatölteni. • az utasítás újrakezdése - a felfüggesztett utasítás mikroprogramját elölről indítja. Egyszerűbb megoldás. Lapcsere stratégiák • véletlenszerű választás • legrégebben bent lévő lap cseréje (FIFO)
• legrégebbi nem használt lap cseréje • adott idő alatt nem használt lap cseréje • legkevésbé használt lapok cseréje (LRU) Translation Lookaside Buffer (TLB) A TLB a leggyakrabban használt lapok lapcímfordításhoz szükséges adatait tartalmazza. Lapcímfordító cache-tárnak is nevezik, mert teljesen asszociatív vagy csoport asszociatív cacheként működik. Ha lapváltáskor a lapdeszkriptor a TLB-ben van, akkor a virtuális lapcímet a fizikai címmel helyettesíti és a védelmi jelzőket a processzornak adja át. Ha az adott lapdeszkriptor nincs a TLB-ben, akkor a tárkezelő rendszer a laptáblázat segítségével állítja elő a fizikai címet és aktualizálja a TLB-t. Szegmentált virtuális tárkezelés lapozással A szegmentáláson belül alkalmazzák a l apozásos virtuális tárkezelést, azaz a virtuális tár szegmensei lapokból épülnek fel. Ezt a módszert használják védett üzemmódban az Intel processzorok. 33 15. Monitorok és
vezérlőkártyák legfontosabb minőségi és teljesítmény jellemzői és kapcsolatuk a s zámítógépes képfeldolgozás követelményeivel (felbontás, színmélység, frissítési frekvencia, pixelméret, a grafikus kártya processzora és a képmemória, a mozgókép megjelenítés mértékegysége=frame/sec) Monitorok A képernyő tartalmát egy elektronsugár rajzolja fel a fénykibocsátó réteggel bevont felületre a képernyő bal felső sarkától kezdődően jobbra és lefelé haladva, párhuzamos sávokra bontott részekben. Egy teljes képernyő kirajzolása 1/50 sec-ig tart A képernyő végigpásztázásában kétféle eljárást alkalmaznak: • folytonos, egymást követő soronkénti pásztázás (non-interlacing), amely kevésbé finom felbontást, de gyakoribb képfrissítést eredményez; • váltott soros, minden második soronként pásztázás (interlacing), amely finomabb felbontást, de alacsonyabb frissítési frekvenciát eredményez. A váltott soros
pásztázásnál félképenként 1/50 sec szükséges, így a teljes kép kirajzolása 1/25 sec alatt történik. Jellemző értékek Képcsőméret: 14’’-21’’ (1 col = 25,4 mm) Képpontok távolsága: 0,28-0,25 mm Képfrissítési frekvencia: 75-100 MHz Felbontás: 640x480 – 1600x1280 képpont Színmélység: 16-32 bit Kártyatípusok MDA (Monochrome Display Adapter): csak karakteres megjelenítés fejete-fehérben HGC (Hercules Graphics Card): karakteres és grafikus megjelenítés fekete-fehérben CGA (Color Graphics Adapter): karakteres és grafikus megjelenítés színesben (16 szín kis felbontás mellett) EGA (Enhanced Graphics Adapter): színes megjelenítés nagyobb felbontás mellett (16 szín) MCGA (Multi Color Graphics Adapter): színes megjelenítés 256 színnel A VGA és az SVGA kártya A VGA (Video Graphics Array) és az SVGA (Super VGA) kártyák igen széles körben elterjedtek. Ezek a k ártyák már képesek a n agy felbontású színes megjelenítésre Az
SVGA (Super Video Graphics Array) vezérlőkártya a VGA (Video Graphics Array) továbbfejlesztett változata. Az SVGA 16 millió színárnyalatot is meg tud jeleníteni Karakteres módban 25, 30, 43, 60 sor és soronként 80 vagy 132 karakter jeleníthető meg. Grafikus módban 640x480, 800x600, 1024x768, 1280x1024 képpontos felbontás használható 16, 256, 32768 vagy 16 millió színárnyalat felhasználásával. Videómemória: a megfelelő felbontás és színmélység megjelenítéséhez használt memória, jellemző mérete 8-64 MB; Egyszerre írható és olvasható VRAM-ot szoktak a kártyákba építeni. Grafikus kártya processzora: a gyorsítókártyák jellemző tartozéka, 3D megjelenítésnél a vektorgrafikus adatok raszteres adatokká való konvertálására szolgál 34 Mozgókép lejátszása: hardveresen vagy szoftveresen gyorsítható, az előbbi gyorsabb (pl. MPEG-2 dekóder kártya használatával), 25-30 frame/sec a minimum a jó minőségű filmhez. 35
16. Az adatrögzítés elve a mágneslemeztárolókon, a mágneslemez felépítése (szektor, sáv, cilinder, cluster, FAT és boot szektor fogalma), a mágneslemezek teljesítményjellemzői (elérési idő, adatátviteli sebesség) Hajlékonylemez Az adatok tárolására a vékony műanyag hordozóra felvitt mágnesezhető réteg szolgál, melyet merev tokban helyeznek el. Az adatok a lemez felületén levő koncentrikus körök, sávok (track) mentén helyezkednek el. A sávok szektorokra vannak felosztva A szektor az a legkisebb egység, amit az operációs rendszer vagy a BIOS egyszerre tud írni/olvasni. Az egymás felett elhelyezkedő sávok alkotják a cilindert. A szektorok és sávok metszéspontjában alakul ki a blokk, a tipikus blokkméret 512 KB. A meghajtóba helyezett lemezt a berendezés 360 fordulat/perc fordulatszámmal forgatja, és az olvasófej a l emez felületéhez hozzáérve írja/olvassa a t árolt adatokat. A lemez behelyezésének pillanatában a h ardver
érzékeli azt, és egy-két fordulat segítségével felméri annak állapotát. A folyamatos forgatás csak akkor indul be, ha a felhasználó az adott meghajtót használni kívánja. Emiatt ez a lemezfajta eléggé lassú A lemez tartalma a felülírástól mechanikusan védhető (eltolható műanyag retesz). Merevlemez A 6-15 mágnesezhető réteggel ellátott könnyűfém lemezt a hermetikusan zárt védőburkolatában a meghajtó 5400-7200 fordulat/perc sebességgel forgatja. Az állandó forgás miatt a fejek nem érnek hozzá a lemezekhez, hanem a keletkező légpárna miatt pár mikron távolságra vannak azok felületétől (ezek a repülő fejek). Teljesítményjellemzők Fejmozgási idő: az az idő, amíg a fej eléri a kívánt blokkot tartalmazó sávot. Elfordulási idő: a kiválasztott blokkot tartalmazó szektor fej alá kerülésének ideje. Ez a két tényező adja meg az elérési időt. (5-10ms) Adatátviteli sebesség: egységnyi idő alatt beolvasott/kiírt
adatmennyiség (33-100MB/s) Fizikai szintű megvalósítás Az információ hordozója egy nem mágnesezhető alapanyagon lévő vékony mágnesezhető réteg, illetve annak mágnesezettségi iránya és szintje. A digitális jelrögzítés miatt a két mágnesezettségi szintet használnak (párhuzamos és merőleges). A két mágnesezettségi jelszint között átmenet akkor következik be, ha a rögzítendő jelsorozatban 1-es szerepel. A merevlemezeknél az adathordozó mozog és így a változó mágneses tér az olvasófejekben elektromos jeleket hoz létre, amelyeket felerősítve és formálva használnak fel. A leggyakrabban alkalmazott jelrögzítési módszer az NRZI (no return to zero impulse). Adattárolás előtt a lemezek felületét formázni kell, hogy kialakuljon a szabványos jelrögzítési forma. A szinkronizáció (a jelsorozat mintavételezéséhez szinkron jeleket kell biztosítani) mellett a s ávok kezdetét is jelezni kell az olvasó rendszer számára. Ennek
végrehajtására kétféle módszer használatos: szoft-szektoros (minden szektort valamilyen egységes jelsorozat vezet be) és hard-szektoros (a szektorok kezdetét valamilyen fizikai jel határozza meg).A szektorok két részből állnak: fejrész (melyben az azonosításhoz szükséges információk vannak) és adatrész (melyben maga a tárolandó adatsor található). FAT (File Allocation Table) 36 A lemezek állománykezelési táblázata szolgál arra, hogy az operációs rendszer nyilvántartsa, és nyomon kövesse azt, hogy a lemez mely szektorai szabadok, vagy foglaltak. A foglaltság nyilvántartása nem szektoronként történik, hanem nagyobb egységenként, klaszerenként (cluster) Egy-egy klaszter kettő valamely hatványának megfelelő darabszámú szektort foglal magában (pl.: HDD-nél ez 4-32 szektor/klaszter) A FAT-ban egy-egy klaszetrhez tartozó adatokat 12, vagy 16 bit hosszúságú mezőkön tárolja a rendszer. A FAT mezőinek tartalma: 0. mező – a
mező 1 bájtja a lemez azonosító kódját, a maradék rész egyesket tartalmaz 1. mező – csupa egyest tartalmaz Betöltő szektor (boot sector) A betöltő szektor az ún. rendszerlemezek 0 logikai sorszámú szektora, amely az operációs rendszer betöltését hajtja végre a gép indítása után. A gép indulásakor a ROM tárolóban elhelyezett és automatikusan elinduló ellenőrző program a gép egységeinek ellenőrzése után a merevlemez, vagy a hajlékonylemezes meghajtóban levő lemez 0. szektorát tölti be a memóriába és átugratja a végrehajtást a szektor első bájtjára, azaz az ott elhelyezett utasításra. A szektorban tárolt betöltő program ezután betölti az operációs rendszer szükséges részeit a memóriába. 37 17. Az analóg és digitális hírközlési csatornák jellemzése (kapacitás, zajok hatása, csatornaközegek fajtái) A villamos hírközlő rendszer alapfeladata az, hogy információt továbbítson térben és időben egy
adott pontból (a forrásból) a felhasználói célpontig (nyelőig). Általában a forrás által létrehozott üzenet nem elektromos jellegű. Ezért szükség van egy átalakítóra, amely a n em elektromos jellegű üzenetből időben változó villamos jelet, ún. üzenetjelet hoz létre A küldetési végponton egy másik átalakító visszaalakítja az elektromos üzenetjelet a kívánt formájú üzenetté. Az információforrás és a nyelő egymástól rendszerint térben el van választva. A csatorna biztosítja villamos összeköttetést a két pont között. A csatorna megjelenítési formája a legkülönbözőbb lehet: szabad térben mikrohullámú összeköttetés, egy huzalpár vagy egy optikai kábel. A csatorna típusától függetlenül az átviteli csatorna általában rontja az átvitt jel villamos paramétereit. Ezek egyrészt a tökéletlen átvitel következtében fellépő torzítások formájában jelentkeznek, másrészt nemkívánatos villamos zavarok
(zajok), interferenciák alakjában lépnek fel. A villamos hírközlés két alapvető problémáját a jel torzítása és a zaj képezi. Mind az adó, mind a vevő tervezésénél gondosan ügyelnek arra, hogy a célállomáson, az információnyelőben a vett üzenet lehetőleg minél inkább egyezzék meg a küldött üzenettel. Az adó az üzenetjelet a csatorna bemenetére csatolja. Habár néhány esetben az is lehetséges, hogy a bemeneti átalakító közvetlenül csatlakozzék a csatornára, az a jellemző, hogy a csatorna bemenetére valamilyen módon formált jelet kell adni, hogy az jó hatásfokkal továbbítható legyen. Az adó által végrehajtott jelfeldolgozási módok legfontosabbja az erősítés, a szűrés és a moduláció. Ezek közül is kiemelkedik fontosságban a moduláció Ez egy olyan eljárás, amelyben egy alkalmasan választott vivőhullámmal a továbbítandó jel tulajdonságát úgy változtatják meg, hogy az jól illeszkedjék az átviteli
csatorna tulajdonságaihoz. A moduláció lényegében a vivőhullám hullámalakjának olyan szisztematikus megváltoztatása, amelynél az üzenetjellel arányosan például a vivő amplitúdója, fázisa vagy frekvenciája változik. Egy hírközlő rendszerben a moduláció célja az, hogy az üzenetjel jellemzőit illesszük a csatorna jellemzőihez, hogy csökkentsük a zaj és az interferencia hatását, hogy ugyanazon a csatornán egyidejűleg több jelet is továbbítsunk, vagy úrrá legyünk bizonyos berendezésekből származó korlátokon. Egy hírközlő rendszer sikere nagymértékben az alkalmazott modulációtól függ. A vevő fő funkciója az, hogy kitermelje a csatorna kimenetén vett, leromlott paraméterű átvitt jelből a bemeneti üzenetjelet. A vevő ezt a feladatot a moduláció inverz műveletével, a demoduláció alkalmazásával oldja meg. A zaj és egyéb zavarok, torzítások miatt a vevő általában nem tudja tökéletesen rekonstruálni a küldött
üzenetjelet. A demoduláláson túl a vevő rendszerint biztosít erősítést és szűrési lehetőségeket is. A modulációs eljáráson, illetve az információforrás kimenő üzenetének formáján alapulva a hírközlési rendszereket három fő csoportra oszthatjuk: Analóg hírközlő rendszerek, amelyeket analóg információk analóg modulációval való továbbítására terveztek; Digitális hírközlő rendszerek, amelyeket digitális információk digitális modulációval való továbbítására terveztek; Hibrid hírközlő rendszerek, amelyeket analóg jellegű üzenetjelek mintavételezett és kvantált értékeinek digitális modulációval való átvitelére terveztek. Az egyes hírközlő 38 rendszereket feloszthatjuk a vivő frekvenciája vagy a hírközlő csatorna tulajdonsága alapján is. Egy digitális hírközlő rendszer elemei A digitális kommunikációs rendszerek fő célja az, hogy egy digitális forrásból érkező üzenetet (szimbólumok egy
sorozatát) továbbítsanak egy adott célállomásra olyan gyorsan és pontosan, ahogy az csak lehetséges. A forrás és a végpont fizikailag távol helyezkedik el egymástól és az összeköttetést a hírközlő csatorna biztosítja. A csatorna a bemenetén elektromos/elektromágneses jelet kap, míg a kimenetén ennek egy torzított verziója jelenik meg, mivel az átviteli csatorna nem ideális. A torzításokon túlmenően az információt hordozó jelhez még előre ki nem számíthatóan változó villamos jel, azaz zaj is adódik hozzá, amelynek forrása lehet ember által keltett zavar, de lehet természetes forrású is. A jeltorzulás és a z aj az átvitt információban hibákat hoz létre és korlátozza az információ átviteli sebességét a forrástól a nyelőig. Egy digitális átviteli rendszer jellemzésére gyakran használják fel mérőszámul a helytelen dekódolású üzenetszimbólumok darabszámát. A kóder, a modulátor, a demodulátor és a dekóder
fő feladata, hogy megküzdjön a csatorna információromboló hatásával, és hogy biztosítsa a maximális információátviteli sebességet és pontosságot. 39 18. A számítógépek utasításkészlete, az utasítások szerkezete, az adatok címzési módjai az utasításokban (abszolút címzés, relatív címzés, közvetlen adatcímzés, indexelt címzés) Utasításszerkezet A három fő rész: • műveleti kód, amely meghatározza a processzor számára, hogy milyen műveletet kell végrehajtani; • operandus hivatkozások, amely azt adja meg, hogy milyen adatokkal kell a műveletet végrehajtani (az operandusok címe); • kiegészítő, módosító rész, amelyben olyan kiegészítő információk adhatóak meg, melyek a műveleti jelrész és az operandus hivatkozások pontos értelmezéséhez szükségesek. Utasításkészlet Egy processzor utasításkészletén azoknak az elemi szintű gépi kódú utasításoknak az összességét értjük, melyek
végrehajtására a processzor hardver szinten képes. Az utasításkészletre jellemző a rendelkezésre álló utasítások száma és tartalma, a kezelhető feltételek száma, és az, hogy milyen hatékonyan támogatja a p rogramok írását, fordítását és ellenőrizhetőségét. A CISC processzorokra a hosszabb (változó hosszúságú) és bonyolultabb utasítások a jellemzőek, míg a RISC processzorok kevesebb és egyszerűbb (rögzített hosszúságú) utasítást használnak. Közvetlen (direkt) címzés: az utasításban az operandus címe található, ami lehet abszolút és relatív cím; Közvetett (indirekt) címzés: az utasításban megcímzett tárolóhelyen nem az operandus, hanem annak címe található; Közvetlen adatcímzés (immediate): az utasítás tartalmazza az operandust; Indexelés: a megcímzett tárolási hely címértéke folyamatosan növelhető, így egy tárolóhely sorozaton egyesével végig lehet haladni. Közvetlen címzési módok Az
abszolút címzési mód esetében, az utasítás címrészében az operandus valódi, pontos címe található. A közvetlen cím vonatkozhat a m emóriára vagy a processzor valamelyik regiszterére. Ez utóbbi esetben, a regisztercím megadásához kevesebb helyre van szükség az utasításban, így az ilyen utasítás hossza kisebb, mint a memória-hivatkozásos utasításé. Memóriacímzés esetén a tároló méretétől függően 16-32 bit hosszúságú cím megadására, míg regisztercímzésnél 3-5 bit hosszúságú címrészre van csak szükség. Az abszolút címzés használata nem mindig előnyös, mivel az így elkészült program és a kapcsolódó adatok a memóriában nem helyezhetők át, mert akkor a program összes címét módosítani kellene. Relatív címzés esetében az utasítás címrésze az operandus valamilyen alapcímhez (báziscímhez) viszonyított címét tartalmazza. Alapcímként szolgálhat: • egy kijelölt regiszterben, a
báziscím-regiszterben elhelyezett érték (ez az adatmező kezdőcíme lehet); • a program kezdetének címe; 40 • magának a végrehajtás alatt lévő utasításnak tárolóbeli helye, amelynél az alapcímet az utasításszámláló regiszter (PC) szolgáltatja. Az előbbieknek megfelelően beszélhetünk bázisrelatív, programrelatív, illetve utasításrelatív címzésről. A tárolóhely pontos címe két címérték összeadásával, a báziscím és az utasítás címrészében lévő cím összegeként adódik. Közvetett (indirekt) címzési mód Egyes processzorok esetében ez a címzési mód lehet többszintű is, azaz az utasításban megcímzett tárolóhelyen nem az operandus címe található, hanem egy további tárolóhely címe, amely már (ha nincs újabb indirekt címzésre utaló jelzés) az operandus címét tárolja. Így, az indirekt címzésnél a pontos cím kidolgozása több lépésben történik. Az indirekt címzés történhet valamely
memória tárolóhely felhasználásával vagy a processzor valamelyik regiszterének segítségével. Az ezeken a tárolóhelyeken tárolt címeket, amelyek az operandusok címei, “mutatók”-nak pointereknek nevezik. Közvetlen adatcimzés, álcimzés (immediate addressing) Ennek a címzési módnak a használatakor, maga az operandus található az utasítás címrészében. A használható operandus-nagyság erősen korlátozott, az utasítás címrészének hossza szabja meg az így tárolható operandusok legnagyobb értékét. Ezt a címzési módot kisebb értékű konstansokkal való munkához lehet felhasználni, mivel így nagyon könnyen lehet egyes regiszterekbe, tárolóhelyekre konstansokat betölteni. Indexelés Az indexelt utasításokat adatsorozatokon végzett műveletek esetében, ciklusokban tudjuk előnyösen használni. Az adatsorozat első elemének tárolási címét tartalmazza az utasítás címrésze és az indexregiszterben található az ettől való
eltérés, azaz hogy hányadik elemet kell a sorozatból feldolgozni. Az indexregiszter tartalmának folyamatos növelésével (vagy csökkentésével) végig tudunk haladni az összes adaton, tárolóhelyen. Mivel egy-egy adat előkeresése után mindig növelni (vagy csökkenteni) kell az indexregiszter tartalmát, ezért alkalmaznak olyan megoldásokat is, ahol ez a n övelés automatikusan megtörténik. Ezt a lehetőséget nevezik autoindexelésnek A tárolóhely pontos címe az utasítás címrésze tartalmának (mint alapcímnek) és az indexregiszter tartalmának összeadásával jön létre. Az indexregiszter tartalmát folyamatosan növelve végig lehet járni a teljes adatsort. 41 19. A számítógépes adattárolás formái és szabványai (a numerikus és szöveges adatok tárolására vonatkozó legfontosabb formák és szabványok) A Neumann elvű számítógépeknél mind a programokat, mind az adatokat ugyanabban a tárolóban helyezzük el. A tárolt jelsorozat
értelmezésétől függ csak, hogy a tárolóhely tartalmát utasításnak vagy adatnak kell-e tekinteni. Számok írásmódja Fixpontos: a kisebb, kevesebb számjegyből álló számok írásához Lebegőpontos: hatványkitevős írásmód a nagy és a kis számok leírására • a mantissza egy tetszőleges fixpontos írásmódú szám; • a karakterisztika (a hatványkitevő) egy fixpontos egész szám; • a radix a számrendszer alapszáma Normalizált: a számok normálalakban való ábrázolása Numerikus adatok tárolása Fixpontos, a szám kettes számrendszerbeli együtthatóit kell elhelyezni a r endelkezésre álló véges (2 - 4 bájt) hosszúságú rekeszbe. A kettedes pontnak a helye minden gépnél rögzített Ez lehet vagy a legnagyobb helyiértékű bit előtt, ebben az esetben mint törtszámot értelmezi a gép; vagy lehet a legalacsonyabb helyiértékű bit után, ez esetben egész számként értelmezi a gép. Lebegőpontos tárolási formák. Mivel a
számrendszer alapszáma rögzített (ez általában 2), ezért ezt nem kell tárolni, elég csak a mantisszát és a karakterisztikát tárolni fixpontos tört (mantissza) illetve fixpontos egész (karakterisztika) számként. Az együttes felhasznált tárterület 4 - 6 - 8 bájt. Tízes számrendszer szerinti tárolás Ebben a kódrendszerben a tízes számrendszerbeli számok számjegyeit egyenként konvertáljuk át az alkalmazott bináris kódba. Mivel csak tízféle számjegyet használunk, ábrázolásukhoz elegendő 4 bit is. Legáltalánosabban használt kód a BCD (Binary Coded Decimal, binárisan kódolt decimális) kód. Alfanumerikus adatok tárolása Ha az adatokkal nem kívánunk aritmetikai műveleteket végezni, a numerikus adatok kódolására használt módszerek nem alkalmasak a nagy tömegű adatok kezelésére. Alfanumerikus (betű, számjegy, speciális jelek) adatok tárolására az ASCII (American Standard Code for Information Interchange), illetve az IBM
nagygépeknél használt EBCDIC (Extended Binary Coded Decimal Interchange Code) kódrendszert használják. Egyéb adattárolási módok Az eddig ismertetett formák jellemzője, hogy magából a tárolt jelsorozatból nem lehet következtetni annak tartalmára, azaz, arra, hogy milyen típusú adatot képvisel. Mivel ez nem mindig előnyös, alkalmaznak olyan tárolási formákat is, amelyek az adatot képviselő bitek mellett további kiegészítő részeket is tárolnak az adat típusának a jelölésére. Ezt a formát nevezik öndefiniáló adatformának. 42 20. Az IBM PC-k operációs rendszerei (DOS, Windows, UNIX összehasonlítása) Az ISO megfogalmazása szerint az operációs rendszer "olyan programrendszer, amely a számítógépes rendszerben a p rogramok végrehajtását vezérli: így például ütemezi a programok végrehajtását, elosztja az erőforrásokat, biztosítja a felhasználó és a számítógépes rendszer közötti kommunikációt." 1. A
DOS operációs rendszer A PC-DOS / MS-DOS páros a Microsoft cég terméke, a 80-as évek legelterjedtebb operációs rendszere volt. Egyfelhasználós, monoprogramozott interaktív rendszer, röviden csak DOSnak nevezzük A PC-DOS az eredeti IBM PC-k operációs rendszere volt A parancsértelmező (COMMAND.COM) kétféle parancsot kezel belső és külső parancsokat A belső parancsokat a rendszerállományok (IO.SYS és MSDOSSYS) tartalmazzák, ezek mindig a memóriában vannak. A külső parancsok valójában a háttértárolón található futtatható állományokban vannak, innen töltődnek be futtatáskor a memóriába. A fájlok megnevezésénél figyelembe kell venni, hogy az érvényes szabályoknak megfelelően a név maximálisan 8 karakterből állhat, melyet a maximum 3 karakteres kiterjesztés követ. A kiterjesztés utalhat a f ájl típusára (EXE, COM, BAT, SYS, TXT stb). A név megadásánál szempont az is, hogy a név karakterei csak az angol ABC betűi,
számjegyek, valamint néhány speciális karakter lehet ( , #, & stb). Nincs különbség a kis és nagybetűk közt A DOS állományok lehetnek tehát futtatható -, szöveges - valamint adat állományok. Az állományok bájtokat tartalmaznak, tárolásuk is bájtokban, bájttömbökben történik, függetlenül attól, hogy milyen típusú állományról beszélünk. A különbség azok értelmezésénél adódik A szöveges állományok sorokat tartalmaznak, a sorok karakterekből és sorvégjelből állnak, ami a CR/LF karakterekből áll (Carriage Return - Line Feed). A nem szöveges állományokat nevezik még bináris állományoknak. (a futtathatók lehetnek binárisak is (EXE, COM) de lehetnek szövegesek is (BAT)). A bináris állományok szintén bájtok sorozatából állnak, ezek viszont nincsenek sorokra tagolva a CR/LF sorvégjellel. Értelmezésük a rendszertől, a programoktól függ. A BAT kiterjesztésű futtatható állományok is lényegében szöveges
állományok, melyeknek sorai különféle DOS parancsokat valamint csak ilyen állományokban használható utasításokat tartalmaznak, melyeket a parancsértelmező sorra elolvas és végrehajtja azokat, mintha parancssorból olvasná be őket. A DOS-ban az állományok egy könyvtárstruktúra (más néven katalógusrendszer) szerint helyezkednek el. Létezik egy kiinduló katalógus, melyet főkatalógusnak, gyökérkönyvtárnak (root) neveznek. Ebből indulnak ki a további alkatalógusok, alkönyvtárak A fájlok ezekben a katalógusokban találhatóak, ugyanakkor a katalógusok tartalmazhatnak további alkatalógusokat is. Ezért a katalógusrendszer egy fastrukturához hasonlít A katalógusok megnevezésénél ugyanazok a szabályok érvényesek mint a f ájloknál. A katalógusoknak is lehet egy max. 3 karakteres kiterjeszést adni, de ezt szinte sehol sem használják. A könyvtárszerkezet használatával jár az is, hogy a fájlok azonosításához meg kell adni az őt
tartalmazó könyvtár azonosítóját, elérési útvonalát is. Így a gyökérkönyvtár jele a fordított perjel (). A gyökérből kiindulva kell a katalógusneveket egymásután megadni, 43 ahogy következnek, ezeket szintén a jel választja el egymástól. Ezt nevezzük elérési útvonalnak. Nem mindig szükséges megadni a teljes (abszolút) útvonalat, elég csak az aktuális katalógusból kiindulva megadni azt. A szülőkönyvtár az a k atalógus, amelyhez az aktuális katalógus tartozik. Ennek a j ele a két pont (.) Ezt is lehet használni az útvonal megadásokban 2. A WINDOWS operációs rendszer A DOS - hoz hasonlóan a Windows is a Microsoft cég terméke. A Windows operációs rendszer nagyban támaszkodik a DOS-ra, tulajdonképpen arra épül rá. Kivételt a legújabb változatai, a Windows 9x és Me képeznek, ezeknek már nincs szükségük a DOS-ra. Ami a Windowsokban közös, az az egységes grafikus felhasználói felület A Windowsban a programokhoz
lehet rendelni ún. i konokat, melyekre az egérrel rákattintva futtatható az az adott program. A Windows már többfeladatos, multitaszkos operácós rendszer, egyszerre több alkalmazás is futtatható, más - más ablakban. A Windows NT a Microsoft hálózati operációs rendszere, alkalmazásával több gép összekapcsolható, így megosztva az erőforrásokat. A fájl és könyvtárstruktúra a Windows régebbi változataiban megegyezik a DOS-ban használt struktúrával, csak a megjelenítése történik grafikusan. Viszont a Windows 95-ben már lényeges változásokat eszközöltek ezen a t éren. A fájlok elnevezésénél max 255 karakter használható. A rendszer támogatja a hardvereszközök automatikus felismerését és beállítását (Plug & Play). 3. A UNIX operációs rendszer A UNIX többfelhasználós - többfeladatos, időosztásos operációs rendszer. Ez azt jelenti, hogy alatta egyidőben több felhasználó is dolgozhat, és minden felhasználó több
programot is futtathat egyidőben. A felhasználók ún terminálokon keresztül csatlakoznak a rendszerre, az összeköttetés megvalósítására számos módszer létezik. Minden felhasználónak van bejelentkezési neve és jelszava, a bejelentkezési név (login név) különbözteti meg őket egymástól. A jelszó a védelem szempontjából nagyon fontos A UNIX-ban az állományrendszernek van egy kiinduló katalógusa, amit gyökérkatalógusnak, neveznek. A DOS is ezt a struktúrát örökölte A gyökérből indulnak ki a további alkatalógusok, melyek szintén tartalmazhatnak újabb alkatalógusokat és állományokat. A katalógus-neveket egymástól a perjel ( / ) választja el. A UNIX minden állományhoz és katalógushoz hozzáférési jogokat rendel, ezzel (is) biztosítva az adatok és a rendszer védelmét. A fájlrendszer a UNIX legalapvetőbb része. "A UNIX-ban minden fájl!" Ha túlzásnak is tűnik ez a kijelentés, azért így igaz. A fájl az adatok
tárolására szolgáló alapvető adatobjektum a UNIX alatt. Teljesen strukturálatlan, nincs sem rögzített, sem változó hosszúságú mezőkre, rekordokra bontva, 44 nincs megszabott hosszúsága, semmilyen más korlátja nincs, a végét nem jelzi semmilyen speciális karakter - akkor van vége, amikor már nincs mit olvasni belőle. A fájl tehát egyszerűen bájtok (karakterek) sorozata. A fájlok elnevezésénél 128 karaktert használhatunk, a kis és nagybetűk közt különbséget kell tenni. Itt is kerülni kell néhány speciális karaktert: $ * ? # stb. A UNIX fájloknak három fő típusa van: • Közönséges o adat o végrehajtható o bináris o shell-script • Speciális • Katalógus A shell-scriptek ugyanazok a UNIX-ban mint a DOS-ban a BAT kiterjesztésű batch fájlok. Sorai végrehajtható parancsokat tartalmaznak. A bináris - amint a neve is mutatja - a futtatható programok bináris kódját tartalmazza. A speciális fájlokon keresztül lehet
elérni a különböző perifériákat, terminálok, billentyűzet, monitor, diszkek, hálózati egységek stb. Tehát lényegében nem is a képernyőre írunk, hanem egy fájlba, és a rendszer dolga, hogy a fájl tartalma a monitorra kerüljön. A katalógusok fájlok egy másik típusa. Ez azt jelenti, hogy a UNIX-ban a katalógusok is fájlokban találhatóak. Annyi a különbség, hogy ezen fájloknak a kezelésére külön parancsok szolgálnak. 45 21. Az utasítás-feldolgozás gyorsítása párhuzamosítással, a S IMD és MIMD architektúra, a pipelining lényege, szuperskalár mikroprocesszorok SISD (Single Instruction Stream Single Data Stream), azaz egyetlen utasításfolyam és egyetlen adatfolyam feldolgozása. Az ilyen gépek egy vezérlő egységgel és egy aritmetikai egységgel rendelkeznek, egyidőben egyetlen utasítás végrehajtására alkalmasak. Ebbe a csoportba tartoznak a hagyományos Neumann elvű számítógépek. MIMD (Multiple Istructtion Stream
Multiple Data Stream), azaz több utasításfolyam és több adatfolyam feldolgozása. Ebbe a csoportba tartoznak a különböző multiprocesszoros számítógépek. A folyamatok párhuzamosítási lehetősége azok részfázisokra való bonthatóságából adódik. A folyamatot olyan lépésekre kell bontani., amelyek mindegyike önálló részt képez, más és más erőforráshoz kapcsolódik. Így amint felszabadul valamelyik erőforrás, azt a másik folyamat hasonló feladatot elvégző fázisa igénybe veheti. Az egyik fázis eredménye a következő fázis induló adatát képezi. Ez az átlapolódó megoldás azt eredményezi, hogy egy-egy feldolgozási folyamat végrehajtási időtartama ugyan nem változik, de ugyanannyi idő alatt lényegesen több folyamat fejezhető be. Gyakorlatilag az elemi fázisok végrehajtási idejének megfelelő időközönként fejeződik be egy-egy folyamat. Ezt az átlapolt feldolgozási módszert nevezik pipelining (adatcsatornás,
futószalag) feldolgozásnak. Az ilyen módon átlapolt folyamatok feldolgozásához tartozó egységek működtetése kétféle módon történhet: Aszinkron ütemezéssel, amely esetben az egymást követő fokozatok jelzik egymásnak elemi feldolgozási lépésük elkészültét, illetve azt, hogy készek fogadni a következő utasítást az arra az egységre előirt feladat elvégzéséhez; Szinkron ütemezéssel, amelynél az egyes fokozatok azonos időben kezdik feldolgozási lépéseiket, a feldolgozási folyamat ütemezését mindig a legtöbb időt igénybe vevő egység szabja meg. A párhuzamosítás nemcsak úgy történhet, hogy a gépi utasításokon belüli elemi lépéseket végrehajtó hardver egységek átlapolva működnek, hanem úgy is, hogy megtöbbszörözzük a végrehajtó egységeket. A több művelet-végrehajtó egységet tartalmazó, egy gépi ciklus alatt több utasítást is feldolgozni képes processzorokat szuperskalár processzoroknak nevezzük. 46
22. A félvezető technológiák fejlődésének gazdasági hatásai a számítógépiparra Fő fejlesztési irányok a félvezető technikában: az integráltsági fok növelése, a vonalvastagság csökkentése, szeletátmérő növelése, az egyes technológiai műveletek, fotolitográfia, az elektronsugaras litográfia felforrasztás, a mérés, a hibaanalízis, stb. automatizálása, rendszertechnikai egyszerűsítések, fejlesztések, új megoldások, felhasználói igényre készülő áramkörök kidolgozása, új (GaAs) technológiai eljárások kidolgozása. Az integráltsági fok növekedésével egyre inkább a szilárd anyagon belüli szerkezet kialakításából ás nem alkatrész-összeszerelésből áll egy digitális technikai berendezés elektronikai része. Az integrált áramkörök, funkcionális egységek belső felépítése, konstrukciója is egyre tökéletesebbé válik, mert nemzetközi versenyt kell minden áramkörnek kiállnia a p iacok megszerzése
érdekében. A technikai fejlesztések a g yorsasági stb paraméterek javítása mellett továbbra is elsősorban az integráltsági fok növelésére irányulnak. Az utóbbi 30 évben a technológiai fejlődés igen látványos eredményeket produkált. Az integrált áramkörök előállításának az ára ez alatt az idő alatt - az általános inflációs tendenciák közepette - kb. 10 nagyságrenddel csökkent Ugyanakkor a műszaki paraméterek (megbízhatóság, teljesítmény-felvétel, méret) 5 - 10 nagyságrenddel javultak Jobb minőségű készülék utáni kereslet és az eladási ár nő, ugyanakkor csökken az üzembe helyezési, garanciális ás szerviz költség. A chipek bonyolultsága évente megduplázódik a méretek csökkenése miatt egyre növekszik a funkcionális egységek teljesítménye, amit a chipenkénti bitszámmal vagy az 1 cm2-en elhelyezett tranzisztorok számával mérnek Az IC jelentségének korai felismerése utal az USA kezdeti
tőkebefektetéseinek nagysága, amikor akkor a stratégiai űrkutatási szempontoknak megfelelően állami támogatással is párosult, és így óriási előnyhöz jutottak, tekintettel a szintugrások gyakoriságára (5 - 6 év). A befektetések nagyságára utal az a tény is, hogy a gazdasági siker biztosítása az IC gyártásban ma már a n yugat európai cégeknek csaknem elérhetetlen feladatot jelent és egyre elérhetetlenebbé válik. A versenyben lehetőségei vannak Japánnak és egyes ázsiai országoknak. Hozzájárul ehhez az USA által diktált árak nyomán kialakult iparpolitikai helyzet, amivel a piacon való egyeduralmat igyekszenek megtartani, ami természetesen a s zámítógép piac feletti egyeduralmat is jelent. A fejlődési folyamat vizsgálatához a gazdasági mozgások időbeli és térbeli törvényszerűségeket kell felderíteni. A gazdasági változások gyakorlatában folyamatos és szakaszos mozgási formákat különböztetnek meg. Folyamatos
változásnak tekinthető például az egyes technológiák aprólékos állandó jellegű fejlesztése a részmegoldások tökéletesítése. Szakaszos, ugrásszerű emelkedést váltanak ki az olyan nagysikerű találmányok, mint a tranzisztor, integrált áramkör stb. 47 23. A mikroelektronikai kutatási eredmények hatása az elektronikai iparra (paraméterek, ár, megbízhatóság, teljesítményfelvétel, méret univerzalitás) Mikroelektronikáról az 1960-as évek elejétől beszélhetünk. Azt, hogy a mikroszámítógépek társunkká válhattak a munkában, tanulásban, szórakozásban, a mikroelektronikai eredményeknek köszönhetjük. Mikroelektronikáról azóta beszélhetünk, amióta nem egyenként állítják elő az alkatrészeket és utólagosan forrasztják össze azokat, hanem a hozzájuk tartozó vezetőpályákkal néhány mm2 nagyságú szilícium egykristályban - egyetlen technológiai folyamattal készülnek el. Az utóbbi 30 é vben a technológiai
fejlődés igen látványos eredményeket produkált. Az integrált áramkörök előállításának az ára ez alatt az idő alatt - az általános inflációs tendenciák közepette - kb. 10 nagyságrenddel csökkent Ugyanakkor a műszaki paraméterek (megbízhatóság, teljesítményfelvétel, méret) 5 - 10 nagyságrenddel javultak Jobb minőségű készülék utáni kereslet és az eladási ár nő, ugyanakkor csökken az üzembe helyezési, garanciális ás szerviz költség. Ezzel a technikai fejlődéssel és áreséssel nyílt meg a lehetőség arra, hogy a mikroszámítógépek, amelyek ma már okosabbak, mint a 20 - 30 évvel előtti, milliós értéket képviselő számítógép-óriások, bejussanak a legtöbb munkahelyre. A mikroprocesszor a tranzisztor után a legizgalmasabb műszaki újdonság. Nemcsak a digitális elektronikát forradalmasítja, hanem igen nagy és egyre növekvő mértékben befolyásolja az élet minden területét. A mikro a kis fizikai méretre
utal, kis fogyasztás, nagy megbízhatóság, alacsony ár, ami a félvezető technológiák fejlődésének eredménye. A processzorok a digitális rendszerek, számítógépek központi egységei. A mikroprocesszor olyan nagy integráltsági fokú félvezető eszköz, amely egy digitális számítógép központi egységének a feladatait végzi el. A mikroszámítógépek alkalmazási területét behatárolják a szóhosszúság, utasításkészlet, ciklusidő, a funkcionális egységek, az ár stb. adatok Mikroszámítógépek előállítására csak akkor nyílt lehetőség, amikor a szilícium alapú monolitikus technológiák fejlesztésénél elért eredmények lehetővé tették minimálisan 2000 kapuáramkör megvalósítását egy chipben. A világpiacot meghatározó cégek éppen a példátlan tudományos technikai fejlődés eredményeként fajlagos áraikat folyamatosan és igen jelentősen csökkentették. Jelenleg a mikroszámítógépek iránt mutatkozó kereslet
ugrásszerű növekedése miatt az árak csökkenése lelassul, ami jelzi, hogy hamarosan új típusok jelennek meg a piacon. 48 B tételek 1. Az algoritmus és program fogalma, jellemzői Algoritmusleíró eszközök Moduláris programozás. A program fejlesztésének fázisai Magas szintű, alacsony szintű programozási nyelvek. Szintaktika, szemantika Algoritmus: Azon utasítások halmaza, melyek egy feladat megoldásához vezetnek. Program: A számítógép által érthető nyelven megírt algoritmus. • • • • • • • • • • • Jellemzők Az algoritmus lépésekből (elemi tevékenységekből, utasításokból) áll. Az algoritmus végrehajtása lépésenként történik. Az algoritmus által leirt és a végrehajtás során megtett lépések sorozatát folyamatnak nevezzük. Minden lépésnek egyértelműen végrehajthatónak kell lennie. Az algoritmus leírásában a végrehajtót (számítógép esetén ez a processzort jelenti) minden lehetséges esetre
előre fel kell készíteni. Egy algoritmusban hivatkozhatunk összetett lépésekre is. A végrehajtásnak mindig van tárgya. Ezeket a tárgyakat a programozásban adatoknak nevezzük. Az adatoknak tulajdonságai vannak Az adatoknak csak azon tulajdonságait vesszük figyelembe, amelyek a f eladat végrehajtásához szükségesek. Ezt a v álogatási eljárást absztrakciónak nevezzük. A végrehajtatandó instrukciónak valamilyen célja van. Az algoritmusnak vannak bemenő (input) adatai, melyeket felhasznál. Az algoritmusnak legalább egy kimenő (output) adatot produkálnia kell. Az algoritmusnak véges számú lépésekben megoldhatónak kell lennie. Az algoritmus legyen hatékony. Az instrukciók legyenek könnyen követhetőek, pontosak, egyszerűek, és azokat minél rövidebb idő alatt végre lehessen hajtani. Az algoritmust úgy kell megtervezni, hogy elronthatatlan legyen. A program legyen felhasználóbarát. Algoritmusleíró eszközök: Pl. Folyamatábra,
struktogram, Jackson-féle jelölés, pszeudokód Moduláris programozás A program tervezésének alapja a feladat részekre, modulokra bontása. A moduláris programozás azt ezt megvalósító programozási módszer. Az egyes moduloknak egyértelmű céljuk van és jól definiáltan csatlakoznak környezetükhöz. A módszer irányelvei: • Oszd meg és uralkodj!: a modulok felelősek feladatuk elvégzéséért, egymás működésébe nem szólhatnak bele; • Adatok (információ) elrejtése: az egyes programrészek csak a saját adataikon dolgozzanak, csak a kész adatokat adják át egymásnak; • Döntések elhalasztása: ha kevés az információ, halasszuk el a döntéshozatalt; • Döntések kimondása: ha meghoztunk egy döntést, fogalmazzuk meg azonnal. Tervezési irányok: • Felülről lefelé (top-down): a megoldást felülről lefelé, fokozatosan finomítjuk és így a kis feladatokat csak a végső fázisokban oldjuk meg; • Alulról felfelé (bottom-up): kész
feladatokból építkezünk (pl. megoldott részfeladatok felhasználásával vagy rutingyűjtemény vásárlásával). Ez nagy programozói tapasztalatot igényel. 49 A programfejlesztés fázisai Analízis tervezés kódolástesztelés Analizis Az analízis során felmérjük a helyzetet, mire van szükség, mik a lehetőségek. Itt kell eldönteni, hogy a feladat egyáltalán megvalósítható-e, mik a célok, meg kell becsülni az időt és a költségeket. Feladatspecifikáció vagy rendszerterv készítése Tervezés A programtervezés feladata, hogy az analízis során összegyűjtött információkat és adatokat alapul véve logikailag véglegesen kialakítsa az adatstruktúrákat és az adatokon manipuláló algoritmusokat. Kódolás Az implementáció első szakasza a programterv kódolása egy adott programnyelven. A kódolási szakasz dokumentációja a forrásprogram. Ez akkor jó, ha pontosan a programterv alapján készül, áttekinthető és egyértelmű
megjegyzéssekkel van kiegészítve. Tesztelés Teszteléskor a következőkre kell figyelni: • Pontosan úgy működik a program ahogy az feladat leírásában szerepelt? • Nem lehet elrontani? • Elég hatékony? • Biztonságos a használata? • Felhasználóbarát? Dokumentálás A fejlesztés során készülő dokumentációk összessége a fejlesztői dokumentáció, mely az alábbiakból áll • Feladatspecifikáció • Programterv • Forrásprogram • Kész program • Tesztadatok listája Magas szintű és alacsony szintű programozási nyelvek Alacsony szintű nyelvek (gépi kód, Assembly) • processzorfüggő • az ilyen nyelven írt program nem hordozható • sok munkával jár a programírás Magas szintű nyelvek (C, C++, Java, Pascal stb.) • közel áll az emberi nyelvhez • könnyebb programozás • egy magas szintű utasítás több száz gépi kódú utasításnak felel meg • hordozható programok készíthetőek • fordítóprogram (compiler)
szükséges a forrásprogram gépi kódra való átalakításához 50 Szintaktika, szemantika Szintaktikai hibának nevezzük azt a hibát, amelyet a fordítóprogram nem tud értelmezni. Az ilyen hiba elgépelésből vagy a programnyelv nem elég alapos ismeretéből adódhat. A szemantikai hiba a program helytelen működését okozó logikai hibát jelenti, ez akár a helytelen analizálásból, tervezésből is adódhat és kijavítása nem könnyű feladat. 51 2. A típus és változó fogalma Adattípusok osztályozása Kifejezés, a k ifejezés kiértékelése. Utasítás Eljárások, függvények, paraméterátadás Lokális és globális változók, érvényességi kör, a változó életciklusa. Változó Az egyes adatoknak kijelölt memóriaterület aktuális értéke a program futása során állandóan változhat. Az ilyen névvel azonosított memóriaterületet változónak nevezzük Típus A változókat tulajdonságaik szerint több típusba sorolhatjuk. A
típus leszűkíti, meghatározza a változókhoz hozzárendelhető értékek halmazát. A Pascalban minden változónak van valamilyen típusa. Ezek között a típusok között vannak a rendszerbe beépített típusok, valamint mi is létrehozhatunk típusokat a típusdeklarációs részben. Egy típus akkor ismert egy változó szempontjából, ha azt a változó deklarálása előtt már deklaráltuk, illetve ha a típus standard. Standard adattípusok A Pascalban az alábbi adattípusokat különböztetjük meg: • egyszerű o sorszámozott típusok egészek (INTEGER) • Byte: 0-255; 1 bájt (előjel nélküli) • Word: 0-65.535; 2 bájt (előjel nélküli) • ShortInt: -128-127; 1 bájt (előjeles) • Integer: -32.768-32767; 2 bájt (előjeles) • LongInt: -2.147483648-2147483647; 4 bájt (előjeles) logikai (BOOLEAN): True(1) / False(0); 1 bájt karakter (CHAR): ASCII karakter; 1 bájt felsorolt intervallum o valós típusok Real: 6 bájt
Single: 4 bájt Double: 8 bájt Extended: 10 bájt Comp: 8 bájt • karakterlánc (STRING): max. 255 ASCII karakter, max 256 bájt • strukturált o tömb (ARRAY): egyező típusú elemek sorfolytonos tárolása o rekord (RECORD): adatszerkezetek tárolása o objektum (OBJECT): az osztály megvalósítása Pascalban (OO) o halmaz (SET OF): sorszámozott típusú elemek tárolása; max. 256 elem o állomány típusok szöveges (TEXT): soros szervezés, szekvenciális elérés típusos (FILE OF): egységes típusú és méretű komponensek, szekvenciális / direkt elérés típusnélküli (FILE): komponensméret megadható, szekvenciális vagy direkt elérés, alacsony szintű I/O • mutató 52 • o típusos (^alaptípus): egy 4 bájtos memóriacímre mutat (ez a változó helye, melynek típusa az alaptípus) o típusnélküli (POINTER): egy 4 bájtos memóriacímre mutat. A mutatott változónak nincs típusa. eljárás o eljárás (PROCEDURE) o
függvény (FUNCTION) Kifejezés Egy kifejezés operandusokból, és operátorokból áll (a+5 ahol az „a” és az „5” operandus, a „+” operator) A kifejezés állhat egyetlen operandusból is, és bármelyik operandus lehet egy újabb kifejezés. Vannak egy-, ill kétoperandusú műveletek Műveletek prioritása: • Legmagasabb prioritása a + és - előjelnek van, valamint a NOT műveletnek, ezek egyoprandusú műveletek. • Másodsorban a szorzó műveletek értékéledőnek ki: (* / DIV, MOD AND SHL SHR) • Ezek után következnek az összeadó műveletek: (+ - OR XOR) • Legkisebb prioritása a hasonlító műveleteknek van: (= <> < <= > >=) Az egy csoportban felsorolt műveletek egyenrangúak, ugyanaz a prioritásuk. Egyenlő prioritás esetén mindig balról jobbra értékelődik ki a kifejezés. A zárójel mindent felborít, először mindig a zárójeles kifejezések értékelődnek ki. Utasítás Az utasítás a programnyelv olyan
értelmezhető eleme, amely műveletek leírására vagy kijelölésére alkalmas, és a n yelven belül rendszerint önálló egységet képez. Egy utasítás tipikusan a következő információkat tartalmazza: a) milyen műveletet kell elvégeznie a processzornak, b} hol vannak a művelet operandusai az utasításban, a tárban, ill. annak melyik rekeszében vagy melyik regiszterben, c) hova keli elhelyezni a művelet eredményét. A programutasítások tartalmuk szerint is csoportosíthatók: pl. logikai-, vezérlő-, adatátviteli-, ugróutasítások Eljárások, függvények Az eljárás tevékenységek (utasítások) összessége, melyet meghívhatunk az eljárás nevére való hivatkozással. Eljárást akkor írunk, ha: • egy-egy hasonló feladatot többször akarunk elvégezni a programban, • a program átláthatóbbá válik ettől. Előnyök: • Módosításkor, javításkor csak egy helyen kell belenyúlni a programba, • Az általános célú eljárásokat később
újra fel lehet használni. A függvény sokban hasonlít az eljáráshoz, a különbség csak annyi, hogy a függvény mindig visszaad egy értéket. A függvényhivatkozás maga jelenti az értéket, ezt általában kifejezésekben használjuk. Paraméterátadás, -átvétel Cím szerinti paraméterátadáson azt értjük, hogy a paraméterek a külső, ill. belső blokkokban fizikailag ugyanazokat a v áltozókat tárolják, a t árban is ugyanazon a cí men 53 találhatók. Így az alprogramban az ezeken a változókon végrehajtott bármilyen művelet megváltoztatja a h ívó programban is e v áltozók értékét. Az ilyen típusú paraméterátadás deklarálásakor a paraméter előtt a ‘var’ szó áll. A paraméterátadás másik módja az érték szerinti paraméterátadás. Ez azt jelenti, hogy az aktuális (az eljáráshívás során megadott) és a formális (az eljárás fejrészében felsorolt) paraméterek külön helyet foglalnak a tárban, más változókat
jelentenek. Ezek a változók az adott eljárásban lokálisak, tehát értékeik megváltozása nincs hatással az aktuális paraméterekre, amelyek az alprogram aktivizálása után is megtartják az eredeti értéküket. Lokális és globális változók A programszinten deklarált konstansok és változók globálisak, ezeket a p rogram bármely részéből el lehet érni, életciklusuk a program végrehajtásának befejezéséig tart. Ezzel szemben az eljárásokban deklarált változók lokálisak, ezeket csak az adott eljárásból lehet elérni, életciklusuk az eljárásból való visszatéréskor ér véget. A lokális változók alkalmazásával valósítható meg az adatok elrejtésének elve. 54 3. Vezérlőszerkezetek: szekvencia, szelekció, iteráció Strukturált program Strukturált tervezés. A tervezés lépései Szekvencia (összetett utasítás) A szekvencia egy utasításcsoportot (összetett utasítást) jelent, melyen belül az utasítások egymás után
(szekvenciálisan) kerülnek végrehajtásra. A főprogram is egy összetett utasításnak tekinthető. Szelekció A szelekció a program végrehajtását egy feltételtől függően elágaztatja, felkészítve így a programot a lehetséges esetek kezelésére. Az egyágú szelekció (IF.THEN) a megadott feltétel teljesülése esetén végrehajt egy utasítást (vagy utasítássorozatot), egyéb esetben pedig kikerüli a feltételes részt és folytatja a program szekvenciális végrehajtását. A kétágú szelekció (IF.THENELSE) azt jelenti, hogy ha teljesül a megadott feltétel, akkor a hozzá kapcsolódó tevékenységet kell végrehajtani, egyébként egy másikat. Az elágazás után pedig folytatódik a program szekvenciális végrehajtása. Többágú szelekció (IF.THENELSE IF és CASE) esetén a feltételek közül legfeljebb egy teljesülhet, ha az egyik teljesül, a többi már szóba sem jöhet, tehát a feltételek egymástól függenek. Iteráció Az iteráció az
utasítások ismételt végrehajtását jelenti. Elöltesztelő ciklus (WHILE.DO) esetén a program még a ciklusba való belépés előtt megvizsgálja a b elépési feltételt, és ha ez teljesül, a ci klusmag végrehajtódik. A ciklusmag ismételten végrehajtódik, amíg a belépési feltétel teljesül. Ha a feltétel nem teljesül, akkor a vezérlés a ciklus utáni utasításra kerül. Hátultesztelő ciklus (REPEAT.UNTIL) esetén a ciklus magja egyszer mindenképpen végrehajtódik, majd a ciklus végén történik egy feltételvizsgálat, ami eldönti, kiléphetünk-e a ciklusból, vagy nem. Növekményes ciklus (FOR) esetén a ciklusmagot a ciklusfeltételben meghatározott számszor hajtjuk végre. A számot egy kezdő- és egy végértékkel adjuk meg, a ciklus a megadott intervallumon belül egy ciklusváltozót léptet, s ha ez eléri a végértéket, a ciklus befejeződik. A FOR tehát egy elöltesztelő ciklus, ahol előre lehet tudni a végrehajtások számát.
Strukturált program: Az olyan programot, amely kizárólag szekvenciákból, szelekciókból és iterációkból építkezik, strukturált programnak nevezzük. A strukturált programozás Dijkstra holland professzor nevéhez fűződik. Strukturált tervezés: A strukturált tervezés lényege, hogy a programot felülről lefelé, funkcionálisan egyre kisebb lépésekre (modulokra, rutinokra) bontjuk. • • A tervezés lépései A belső adatszerkezet felállítása A feladatspecifikáció alapján történik a program belső, globális adatszerkezeteinek megtervezése. Csak a lényegi adatokat kell meghatározni A programszerkezet felállítása Meghatározunk egy szerkezetet, mely tartalmazza a program lényegi struktúráit, különös tekintettel a s zelekciókra és iterációkra. Itt még nem törekszünk részletességre, az elemi tevékenységeket csak később határozzuk meg. 55 • A feltételek és tevékenységek meghatározása Először összegyűjtjük a
feltételeket, majd a tevékenységeket és feltesszük azokat a programszerkezetre. 56 4. Egyszerű algoritmusok: adatok feldolgozása végjelig, megszámlálás, összegzés, átlagszámítás, minimum- és maximum-kiválasztás, menükészítés, keresés, rendezés, karbantartás Adatok feldolgozása végjelig A beolvasást addig végezzük, amíg a f elhasználó nem üti be a m egadott végjelet, magát a végjelet már nem dolgozzuk fel a ciklusban. A beolvasásnál vizsgálni kell, hogy nem a végjelet ütötte-e be a felhasználó. Az a legcélszerűbb, ha a beolvasás a ciklus végén, közvetlenül a ciklusfeltétel vizsgálata előtt történik (előolvasás), mert akkor nem kell kétszer ellenőrizni a beolvasott adatot. Megszámlálás Ebben a feladattípusban egy sorozat valamilyen adott tulajdonsággal rendelkező elemeit számoljuk meg. Az általános algoritmus előre ismert, illetve ismeretlen elemszámok esetén a következő: Összesen := 0 Ciklus I=1-től
N-ig Ha az I. elem a megadott tulajdonságú, akkor Összesen := összesen+1 Ciklus vége Összesen := 0 Hozzáférés az első elemhez Ciklus, amíg van elem Ha az elem a megadott tulajdonságú, akkor Összesen := összesen+1 Hozzáférés a következő elemhez Ciklus vége Összegzés Az olyan feladatokat, melyben egy sorozat elemeit valamilyen módon gyűjteni kell, összegzéses feladatoknak nevezzük. Általános algoritmusa N elem, ill ismeretlen elemszám esetén a következő: Összeg := 0 Ciklus I=1-től N-ig Összeg := összeg + I. elem Ciklus vége Összeg := 0 Hozzáférés az első elemhez Ciklus, amíg van elem Összeg := összeg + elem Hozzáférés a következő elemhez Ciklus vége 57 Átlagszámítás Az átlag kiszámításánál egyszerre két dolgot is csinálunk: összegzünk és közben számlálunk. Végül a két gyűjtött érték hányadosát képezzük, de csak akkor, ha volt átlagolandó adat. Ellenkező esetben nullával osztanánk, ami futási
hibát eredményez. N := 0; Osszeg := 0; Write(‘Szám: ’); ReadLn(Szam); While Szam <> Vegjel Do Begin Inc (N); Osszeg := Osszeg + Szam; Write(‘Szám: ’); ReadLn(Szam); End; If N > 0 Then Writeln(‘Átlag: ’, Osszeg/N:8:2) Else Writeln(‘Nincs beolvasott szám’); Minimum- és maximum-kiválasztás E feladatcsoportban egy sorozat legkisebb, ill. legnagyobb elemét kell meghatároznunk Maximum kiválasztásnál az algoritmus lényege, hogy a sorozat elemeit sorban megvizsgálva mindig megjegyezzük az addigi maximális elemet. Ha egy annál nagyobb elem érkezik, akkor a megjegyzett elemet ezzel kicseréljük. Induló értékként olyan adatot kell megadnunk, amelynél a beolvasott elemek biztosan nagyobbak. Ez vagy az első elem, vagy egy annyira kicsi elem, amely biztosan kisebb az összes lehetséges elemnél. A feldolgozás végén (amennyiben a sorozatnak volt legalább egy eleme) a megjegyzett elem az összes szám maximuma lesz. Ugyanez az algoritmus
használható a minimális elem keresésére, de itt a hasonlítás fordítva történik, és nagy induló értékre van szükség. Ha tudjuk előre a sorozat elemeinek a számát és ez nem nulla, akkor az algoritmus a következőképpen néz ki: Max := 1. elem MaxI := 1 Ciklus I=2-től N-ig Ha az I. elem > Max, akkor Max := I. elem MaxI := I Ciklus vége Ki: ’Maximális elem értéke: ’,Max Ki: ’Maximális elem indexe: ’,MaxI Menükészítés Amikor menüt készítünk, választási lehetőségeket kínálunk fel a felhasználónak, majd várjuk az erre való reagálását. A lehetőségeket ismételten felkínáljuk egészen addig, amíg a felhasználó úgy dönt, nem akar több lehetőséget igénybe venni, vissza akar lépni a program egy előző szintjére, vagy be akarja fejezni a programot. Ha a felhasználó nem a kilépést választotta, akkor válogatni kell a programrészek között a f elhasználó válaszának megfelelően. A menükészítés egy tipikusan
hátultesztelős feladat Ciklus 58 A felkínált lehetőségek megjelenítése Választás bekérése Válogatás az esetek között a választás alapján mígnem Választás = Vége Ciklus vége Keresés E feladatcsoportban egy sorozat elemei között egy adott tulajdonságú elemet keresünk. Az algoritmus eldönti, hogy van-e ilyen elem a sorozatban. Általános algoritmusa ismeretlen elemszám esetén a következő: Megvan := Hamis I := 0 Kísérlet az I+1. elem elérésére Ciklus, amíg Van elem és Megvan = Hamis I := I+1 Megvan := I. elem az adott tulajdonságú Ha Megvan = Hamis, akkor Kísérlet az I+1. elem elérésére Ciklus vége Rendezés Minimum-kiválasztásos rendezés Először megkeressük a tömb legkisebb elemét és kicseréljük az első elemmel, majd a tömb 2. elemétől kezdve újra megkeressük a legkisebb elemet és kicseréljük a második elemmel, ezt addig csináljuk, amíg az utolsó előtti helyre be nem kerül a megfelelő elem. Ciklus I=1-től
TömbElemszáma-1-ig MinIndex := I Ciklus J=I+1-től TömbElemszáma-ig Ha Tömb[J] < Tömb[MinIndex], akkor MinIndex := J Elágazás vége Ciklus vége Ha I <> MinIndex, akkor Temp := Tömb[I] Tömb[I] := Tömb[MinIndex] Tömb[MinIndex] := Temp Elágazás vége Ciklus vége Beszúrásos rendezés A beszúrásos rendezés hasonlít arra a módszerre, ahogy az ember leosztás után elrendezi kezében a kártyákat. Feltételezzük, hogy van egy szigorú rend, mely szerint a kártyákat sorba kell rakni. Felvesszük az első kártyát Majd felvesszük a másodikat, és a helyére tesszük Aztán felvesszük a harmadikat, helyére tesszük, és így tovább. Minden esetben megkeressük a kérdéses kártyának a helyét a már rendezett sorban, és oda beszúrjuk. Buborékos rendezés 59 Összehasonlítjuk a tömb első két elemét, és ha az első nagyobb a másodiknál, akkor kicseréljük őket. Ezután a többi szomszédos elemmel is végigcsináljuk ezt az
összehasonlítást. A legnagyobb elem, mint egy buborék, felszáll a tömb tetejére A következő menetben már csak a maradék elemeket kell végignézni. Minden egyes menetben figyelnünk kell, hogy a tömb nem rendezett-e már, ha rendezett, akkor befejezzük a rendezést. Indexvektoros rendezés A rendezendő tömb elemeit nem mozgatjuk, hanem a tömbhöz egy indexvektort rendelünk, melyben a tömb elemeire mutató indexek a tömb rendezettségének megfelelően követik egymást. Az indexvektor minden indexéhez a tömb pontosan egy eleme tartozik, az index erre az elemre mutat. Rendezetlen tömb karbantartása • Felvitel: Az új elemet – ha még nincs ilyen a tömbben – a tömb végére tesszük. A nyilvántartásban szereplő elemek számát eggyel növeljük. • Törlés: Megkeressük a törlendő elem helyét a tömbben. Az elemet úgy töröljük, hogy az utolsó elemet erre az elemre rámásoljuk. A nyilvántartásban szereplő elemek számát eggyel
csökkentjük. • Módosítás: Ha van ilyen elem, akkor annak értékét felülírjuk. Rendezett tömb karbantartása A tömböt állandóan rendben tartjuk: új elemet mindig úgy viszünk fel, hogy azt azonnal a rendezettség szerinti helyére tesszük, már meglévő elemet pedig úgy törlünk ki, hogy a rendezettség megmaradjon. • Felvitel: Megkeressük az új elem helyét a tömbben. Az elemeket onnan kezdve eggyel feltoljuk, és az így keletkezett üres helyre beszúrjuk az új elemet. A nyilvántartásban szereplő elemek számát eggyel növeljük. • Törlés: Megkeressük a törlendő elem helyét a tömbben, majd az elemeket onnan kezdve eggyel lejjebb másoljuk. A nyilvántartásban szereplő elemek számát eggyel csökkentjük • Módosítás: Ha van ilyen elem, akkor annak értékét felülírjuk. 60 5. Az állomány fogalma Állományok fajtái, felépítésük, feldolgozásuk Állományok szervezése: fizikai és logikai rendezettség, hozzáférési
módok. Karbantartási műveletek Fizikai állománynak nevezzük a másodlagos tárolón elhelyezett adatok önálló névvel ellátott halmazát. Ez az önálló név a lemezen az állományspecifikáció A logikai állomány egyed-előfordulások önálló névvel ellátott halmaza, mely olyan tulajdonságtípusok előfordulásait tartalmazza, mely egy adott feladat szempontjából lényeges. A lemezre való fizikai írás és olvasás egysége a fizikai rekord (blokk). A fizikai állomány fizikai rekordokból áll. A fizikai rekord általában több logikai rekordot tartalmaz, ezek számát a blokkolási tényező adja meg. A logikai rekord az egyed-előfordulásokat írja le A logikai rekord adattételekből (elemi adatok) és adatcsoportokból (logikailag összetartozó adatok) áll. • • • Turbo Pascal állományok Típusos állomány: Direkt szervezésű állomány. A kiírás, ill beolvasás egysége a komponens. A komponensek egyforma típusúak, mely típus az
állományra jellemző A komponens hosszát a típus határozza meg. A komponensek sorszámozva vannak 0-tól Akármelyik elemre közvetlenül pozícionálhatunk, de szekvenciálisan, a komponensek fizikai sorrendjében is feldolgozhatjuk a típusos állományt. Típusnélküli állomány: Direkt szervezésű állomány. Abban különbözik a típusos állománytól, hogy itt a komponensek hosszúsága tetszőlegesen megadható, azt nem a típus határozza meg. Szöveges állomány: Soros szervezésű állomány. A szöveges állomány sorokból áll A sorokat, melyek karakterekből állnak, a sor vége (CR/LF) jel zárja le. A kiírt, ill beolvasott adatok változó hosszúságúak, azok fizikai címét nem lehet sorszám alapján megállapítani. Állományok szervezése Soros szervezés: A logikai rekordazonosító és a t árolási cím között nincs kapcsolat. Az állományban lévő adatokat csak a fizikai tárolás sorrendjében tudjuk felvinni, ill. elérni Direkt szervezés:
A logikai rendszerazonosító és a f izikai cím között kölcsönösen egyértelmű megfeleltetés van. Az állomány akármelyik elemét közvetlenül el tudjuk érni, azt írhatjuk és olvashatjuk. A rekord címét elvileg bármelyik címzési móddal (abszolút, relatív, logikai) megadhatjuk, de a s zoftverek többsége a logikai címzést támogatja. Véletlen szervezés: A rekordok azonosítói általában nem képezhetők egy jól meghatározott algoritmus szerint – azok legtöbbször véletlenszerűek. Vannak azonban olyan esetek, ahol az azonosítók szórása nem túl nagy, és lehet egy olyan algoritmus találni, mely a l ogikai rekordokat aránylag egyenletesen „teríti”. Ha az algoritmusunk egy második logikai rekordot véletlenül ugyanarra a helyre képezne le, akkor megfelelő korrekciós algoritmusokat vethetünk be, illetve a s zóban forgó rekordokat ún. túlcsordulási területre tehetjük. Az ilyen állományokat véletlen szervezésű állományoknak
nevezzük. A logikai rekordnak megfelelő fizikai rekordban természetesen jelezni kell, hogy ennek a rekordnak van még szinonimája, mely a túlcsordulási területen található. Indexelt szekvenciális szervezés: A legtöbb feladat kapcsán a rekordokat el szeretnénk érni, vagyis egy adott azonosítójú rekordra minél kevesebb energia befektetésével rá szeretnénk pozícionálni. Általános felhasználói igény továbbá a r ekordok valamilyen logikai sorrend szerinti elérése. A direkt vagy véletlen szervezés csak bizonyos 61 kulcseloszlások esetén gazdaságos, és a megfelelő sorrend is nehezen állítható elő. Mesterséges sorrendet a következő módon lehet például felállítani: • Az állományt rendezzük. • A rekordokat indexekkel (mutatókkal) egészítjük ki, ahol a rekord mindig a logikailag őt követő rekordra mutat. Egy rekordnak elvileg egyszerre több mutatója is lehet, és így többféle logikai sorrend is felállítható. • A
rekordok azonosítóit kigyűjtjük, és egy külön állományban vagy egyéb helyen tároljuk. Az azonosítókhoz szorosan hozzátartozik az „anyarekord” állománybeli indexe, vagyis relatív sorszáma. E sorszám szerint a logikai rekordok direkt módon elérhetők. Így egy rekord keresésekor az azonosítót először az indexállományban, ill indextáblában keressük, és a megtalált azonosító melletti sorszám alapján a l ogikai rekord feldolgozható. Fizikai és logikai rendezettség A fizikai rendezettség a fizikai rekordok rendezettségét jelenti, amit általában sok lemezművelettel lehet csak elérni. Ez csak kis méretű állományok esetében gazdaságos Érdemesebb a memóriába beolvasott komponenseket rendezni és utána kiírni őket az állományba, ill. egy indextömböt kezelni, ahol a r ekordok fizikai tárolás szerinti sorszámát hozzárendeljük a logikai sorrend szerint elfoglalt helyükhöz. Ez utóbbit nevezzük logikai rendezettségnek.
Hozzáférési módok: • Soros hozzáférés: A rekordok elérése a fizikai tárolás sorrendjében történik. • Szekvenciális hozzáférés: A rekordok elérése egy logikai sorrend szerint történik. A szekvenciális feldogozhatóságot elérhetjük az állomány megfelelő szervezésével vagy valamilyen szoftver eszközzel, mint például rendezéssel. • Közvetlen hozzáférés: A megadott rekordhoz közvetlenül hozzáférünk anélkül, hogy rekordokat sorban be kellene olvasnunk. A rekordokhoz való közvetlen hozzáférést szintén szervezéssel biztosíthatjuk. Karbantartási műveletek: • Új rekord felvitele • Meglévő rekord törlése • Meglévő rekord módosítása 62 6. A program és az adatok elhelyezkedése a memóriában Statikus és dinamikus változók, tárolásuk, hozzáférésük. A mutató fogalma A dinamikus listák fajtái, karbantartásuk Modul (egység). A memória felosztása AT extended memória ROM BIOS terület Installálható
ROM terület Videopufferek területe DOS átmeneti része Átmeneti programterület DOS rezidens része ROM BIOS adatterület Megszakítási vektortábla • • • • • • • A megszakítási vektortábla a hardver, ill. szoftver megszakítási rutinok címét tartalmazza. ROM BIOS adatterület: Rendszerterület, mely a hardver vezérléséhez szükséges adatokat tartalmazza. DOS rezidens része: Itt vannak a DOS alaprutinjai, melyek indításkor betöltődnek a tárba, és az operációs rendszer futása alatt is ott maradnak. Átmeneti programterület: Ez a terület a 640 KB legnagyobb része, ide kerülnek a felhasználói programok. Ide töltődik be a Turbo Pascal keretrendszer, és ide kerül az általunk írt, lefordított program is futtatható állapotban. Videopufferek: A rendszer a képernyőmemória tartalmat kivetíti a monitorra. Az installálható ROM területet és a ROM BIOS területet szintén a rendszer foglalja. Extended memória: Az 1 MB feletti rész,
melyet a processzor csak védett üzemmódban tud elérni. A program és az adatok elhelyezkedése az átmeneti programterületen PSP: Program Segment Prefix. Ez egy 256 bájtos memóriaterület, melyet az operációs rendszer állit elő az EXE állomány betöltésekor. Kódszegmens: A program jól elkülöníthető programrészekből áll, egy Turbo Pascal programnak mindig van egy főprogramja, mely különböző modulokat (unit) használ. Minden unit lefordított kódja egy külön szegmens, melyet egymás után helyeznek el a tárban: legelöl a főprogram kódszegmense, melyet a programhoz szerkesztett unitok kódszegmensei követnek. Egy kódszegmens mérete max 64 KB, a programban használt unitok száma elvileg korlátlan. A program futásakor a ve zérlés mindig más kódszegmensben van, az aktuális kódszegmens szegmenscímét a processzor CS (Code Segment) regisztere tartalmazza. Adatszegmens: Az adatszegmens egy közös, állandó adatterület. A főprogram és az
összes unit ezt az adatterületet használja statikus (az egész program futása során létező) adatainak tárolására. Az adatszegmens tartalmazza tehát a gl obális változókat és az összes típusos állandót. Mérete max 64 KB lehet Az adatszegmens szegmenscímét a processzor DS (Data Segment) regisztere tartalmazza, mely a p rogram futása során szintén állandó. 63 Veremszegmens: A veremszegmenst a rendszer adatok ideiglenes tárolására használja, ide kerülnek az eljárások és függvények lokális változói, paraméterei és visszatérési címei. A verem szegmenscíme és mérete a futás során állandó A szegmenscímet a processzor SS (Stack Segment) regisztere tartalmazza. Átfedési puffer: Ez a terület csak akkor része a programunknak, ha átfedési (overlay) technikát alkalmazunk – egyébként a verem után közvetlenül a heap következik. Az overlay technikát nagy programok esetén szokás használni. Lényege a következő: nem tartjuk
bent egyszerre a t árban a teljes lefordított programot, hanem annak csak az éppen futó részeit – a futó programrészek átfedik egymást. Heap: A heap egy dinamikus (állandóan változó) adattároló, jelentése halom, rakás. A program futása közben dinamikus változókat lehet itt létrehozni, ill. megszüntetni A teljes heap bármekkora lehet, de egy dinamikus változó mérete itt sem lehet több 64 KBnál. A heap veremszerűen működik, felfelé növekszik Statikus és dinamikus változók, a mutató A statikus változók a program fordításakor kapnak helyet a memóriában és annak befejezésekor szabadul fel a helyük. A dinamikus változókat ezzel szemben a program futása során hozzuk létre, ill. szüntetünk meg A létrehozott változóra mutatóval hivatkozunk, mely mutató egy 4 b ájtos memóriacímet tartalmaz: a mutatott változó fizikai címét. Kétféle mutató létezik: • Típusos: a mutatott változónak jól meghatározott típusa van; •
Típus nélküli: a mutató által mutatott memóriaterületre nem jellemző a típus. Mutatókkal nem csak dinamikus változókra lehet mutatni, hanem bármely memóriaterületre, például egy statikus változóra. A mutatókat értékadással át lehet irányítani egyik memóriacímről a másikra. Tárolás A statikus változók globális változók esetén az adat-, lokális változók esetén pedig a veremszegmensben kapnak helyet. A dinamikus változók pedig a heapbe kerülnek Dinamikus lista A lista elemeit szükség szerint hozzuk létre, illetve szüntetjük meg. A dinamikus lista a memóriából annyi helyet foglal, amennyire éppen szüksége van, átengedve ezzel a felesleges memóriahelyeket más tárolószerkezetek számára. A dinamikus lista elemei a heapben vannak, azokra mutatókkal lehet hivatkozni. Minden listaelem tartalmaz egy ilyen mutatót, mely a következő listaelemre mutat. Rendezett lista: a lista elemei valamilyen szempont szerint jól meghatározott
sorrendben követik egymást. Kétirányú (szimmetrikus) lista: a lista oda-vissza mutatókkal van felszerelve, és így az elemek előre és visszafelé is feldolgozhatók. Cirkuláris (zárt) lista: a lista utolsó eleme az első elemre mutat, vagyis annak mutatója nem a végjel. A cirkuláris lista mutatói körbeérnek Multilista: a lista elemei újabb listák kiinduló pontjai. 64 • • Karbantartás Új elem felvitele: először lefoglaljuk az új elem számára a helyet, majd kitöltjük az adatokat és felfűzzük az elemet a listára. Meglévő elem törlése: először a törölt elemet lekapcsoljuk a listáról, majd felszabadítjuk a memóriaterületet. Modul (egység) A modul (unit, egység) a főprogramhoz hozzászerkeszthető tárgykód. A unitok használatának előnyei: támogatja a moduláris programozás elvét (adatok elrejtése), áttekinthetőbbé teszi a főprogramot, a nem publikus programrészeket elrejti, segítségével kikerülhető a 64 KB-os
méretkorlátozás. 65 7. Adatszerkezetek rendszerezése Tömb, verem, sor, fa, tábla Konstrukciós és szelekciós műveletek. Absztrakt társzerkezetek Az adatszerkezet egymással kapcsolatban álló adatok, objektumok összessége. A kapcsolatokban részt vevő struktúraelemeket csomóponti adatoknak nevezzük. Asszociatív adatszerkezetek A struktúraelemek közötti kapcsolatokat az elemek azonos tulajdonságértékei létesítik. Az elemeket e tulajdonságok alapján csoportosítjuk. A kapcsolatok az asszociatív (csoportosítható) adatszerkezetekben a leglazábbak. Asszociatív adatszerkezet memóriában a tömb, a ritka a mátrix és a különböző táblák, külső tárolóeszközön pedig a direkt szervezésű állomány. Szekvenciális adatszerkezetek Az egyes struktúraelemek egymás után helyezkednek el. Mindig van egy kezdő elem, és minden elemet a struktúra egy jól meghatározott eleme követ. A kapcsolat egy-egy jellegű: minden elem csak egy helyről
látható, és minden elem csak egy elemet lát. A memóriában megvalósítható szekvenciális adatszerkezetek a jelsorozat, a verem és a sor, külső tárolóeszközön ilyenek a szekvenciális és láncolt adatállományok. Hierarchikus adatszerkezetek A struktúraelemek hierarchikusan egymás alá vannak rendelve. A kapcsolatok jellege egysok: minden csomópont csak egy helyről látható, egy csomópontból viszont sok csomópont látható. A hierarchikus adatszerkezeteket a belső tárban fának, a külső tárolókon hierarchiaállománynak nevezik. Hálós adatszerkezetek Hálós adatszerkezetek esetén bármelyik csomópont bármelyik csomóponttal kapcsolatban állhat. A kapcsolatok sok-sok típusúak A hálós adatszerkezeteket a belső tárban irányított gráfnak, ill. hálózatnak, a külső tárolókon sémának nevezik Tömb A tömb, mint adatszerkezet lehet általános tömb és ritka mátrix. Mindkettő lehet egy-, két-, ill. többdimenziós A tömb lényege, hogy
elemeit indexeken keresztül érjük el. A tömb használatának hátránya, hogy méretét előre meg kell adni és az indexhatárok dimenziónként kötöttek. Az általános tömbök leképezése mindig vektorra történik. Ritka mátrixnak nevezzük az olyan többdimenziós tömböt, ahol a tömb nagy része kihasználatlan. A ritka mátrix vektorra való leképezése gazdaságtalan, ezért ilyen esetekben a listát használjuk. Verem A verem (stack) egy szekvenciális adatszerkezet, melynek mindig csak a legutoljára betett elemét lehet látni, illetve kivenni (LIFO). Megvalósítása legtöbb esetben vektor segítségével történik. Ekkor az elemszámot természetesen maximalizáljuk Kell egy mutató, mely a mindenkori verem tetejére illetve az első szabad helyre mutat. A veremről meg kell tudni állapítani, hogy az üres, vagy tele van, hiszen üres veremből nincs értelme kivenni, tele verembe pedig nincs értelme betenni elemet. Műveletek: • PUSH – elem betétele
a verembe, mindig a tetejére 66 • POP – elem kivétele a veremből, mindig a legfelsőt • TOP – a legfelső elem lekérdezése, a verem változatlan marad Az elemek sorrendjét a legkönnyebben verem alkalmazásával fordíthatjuk meg. Ugyanígy nagyon jól használható a verem különböző visszatérési utak megjegyzésére is. Sor A sor (queue) egy szekvenciális adatszerkezet, melyből mindig a legelsőnek betett elemet lehet kivenni (FIFO). Tárolása vektorban és listában egyaránt megvalósítható Műveletek: • PUT – elem betétele a sorba, mindig a sor végére • GET – elem eltávolítása a sorból, mindig a sor elejéről • FIRST – az első elem lekérdezése, a sor változatlan marad Sorokkal tipikusan olyan feladatok oldhatók meg, melyekben az elemek feldolgozása érkezési sorrendben történik. Sorként működnek a pufferek, mint például a billentyűzet- vagy a nyomtatópuffer. Fa A fa (tree) egy hierarchikus adatszerkezet, mely véges
számú csomópontból áll, és igazak rá a következők: • Két csomópont között a kapcsolat egyirányú, az egyik a kezdőpont, a másik a végpont. • Van a fának egy kitüntetett csomópontja, mely nem lehet végpont. Ez a fa gyökere • Az összes többi csomópont pontosan egyszer végpont. Tábla A tábla egy asszociatív adatszerkezet, melynek elemei kulcs és adat párok, ahol a k ulcsok egyediek, és bármely elem a kulcsán keresztül érhető el. A táblával kapcsolatos műveletek központi kérdése az adott kulcshoz tartozó adatok minél rövidebb idő alatt történő megkeresése, és a t ábla karbantartása. A tábla tárolása vektorban és listában is megvalósítható. A táblára érvényes szabályok két csoportra bonthatók: • A logikai szabályok minden táblára igazak fizikai megvalósítástól függetlenül (pl. ugyanaz a kulcs nem vehető fel kétszer). • A fizikai szabályok az adott tábla fizikai megvalósításának korlátai (pl. nem
vihető fel több adat, ha a tábla betelt). Műveletek: keresés, beszúrás, törlés és szekvenciális elérés Konstrukciós és szelekciós műveletek Az egyes adatszerkezetekre az elemek közötti kapcsolatokon túl jellemző a rajtuk értelmezett műveletek halmaza. A műveleteknek lényegében két fő csoportja van: • Konstrukciós műveletek: Az adatszerkezetet létrehozó és továbbépítő mechanizmusok. • Szelekciós műveletek: Az adatszerkezeteket lebontó, megszüntető, valamint az adatelemek elérését biztosító mechanizmusok. Minden adatszerkezethez a k onstrukciós és szelekciós műveletek meghatározott készlete tartozik. Absztrakt társzerkezetek A vektor egy olyan fizikai tároló, melyben a tárolt objektumok közvetlenül egymás után helyezkednek el. A vektor elemei indexeléssel közvetlenül címezhetők A vektornak nagy előnye, hogy elemei direkt módon elérhetők és kezelése rendkívül egyszerű (magas szintű nyelvekben egydimenziós
tömbként valósítjuk meg). A vektor hátránya, hogy méretét a 67 deklaráláskor meg kell adni és az adatok karbantartásával járó átrendezések sok időt vesznek igénybe. A lista elemei fizikailag teljesen véletlenszerűen helyezkednek el a tárolóban, az elemek sorrendjét mutatókkal állítjuk fel. A lista legnagyobb előnye abban áll, hogy átrendezés esetén nem kell óriási adatmennyiségeket mozgatni, azt néhány mutató átirányításával elintézhetjük. A lista legnagyobb hátránya, hogy elemei nem címezhetők közvetlenül, azok csak szekvenciálisan érhetők el. 68 8. Objektumorientált alapfogalmak Osztály, példány Az objektum jellemzői Objektum inicializálása, megszüntetése. Üzenetküldés Bezárás, az információ elrejtése Kód újrafelhasználása. Osztály Az osztály (típus) egy minta, mely alapján objektum példányokat lehet létrehozni. Példány, objektum Az osztályból létrehozott objektum előfordulás
(objektum). Az objektum adatok (attribútumok) és metódusok (műveletek) összessége. Az objektum felelős feladatai elvégzéséért. Az objektum jellemzői • Az objektumnak mindig van egy állapota – az adatok pillanatnyi értékei. Egy feladat elvégzése után az objektum állapota megváltozhat. • Az objektumok egyértelműen azonosíthatók, és azonosságuk független a tárolt értékektől. Két objektum akkor sem azonos, ha állapotuk megegyezik. Objektum inicializálása, megszüntetése Az inicializálás az objektum kezdeti adatainak megadását és a működéshez szükséges kezdeti tevékenységek végrehajtását jelenti. Az objektum létrehozása a s zükséges memóriaterület lefoglalásával jár, melyet az objektum megszüntetéskor fel kell szabadítani. Üzenetküldés Az objektumok üzeneteken keresztül szólítják meg egymást. Az üzenet egy kívülről elérhető metódus hívása. A kliens objektum üzenetküldésen keresztül kéri meg a szerver
objektumot valamely feladat elvégzésére. Az üzenetet a megszólítandó objektum azonosítójával minősítjük. Bezárás, az információ elrejtése A bezárás (egységbezárás) az adatok és metódusok összezárását jelenti. Az információ elrejtése azt jelenti, hogy az objektum zárt és sérthetetlen, azt csak az interfészen keresztül lehet elérni. A külvilág számára felesleges információk rejtve maradnak Kód újrafelhasználása Programfejlesztésnél egy már megírt kód (osztály) felhasználása. Ez az alapja a szoftverkomponensekből történő programfejlesztésnek. Az objektumok létrehozása is egyfajta kód újrafelhasználást jelent, hiszen ugyanazt az osztályt többször használjuk. 69 9. Objektumok, illetve osztályok közötti kapcsolatok Objektumdiagram, együttműködési diagram, osztálydiagram, osztályleírás. Objektumorientált tervezés, UML jelölés. Objektumok közötti kapcsolatok • Ismeretségi (használati) kapcsolat:
két objektum ismeretségi kapcsolatban van egymással, ha azok léte egymástól független, és legalább az egyik ismeri, ill. használja a másikat • Tartalmazási (egész-rész) kapcsolat: két objektum tartalmazási kapcsolatban van egymással, ha az egyik objektum fizikailag tartalmazza vagy birtokolja a másik objektumot. Az egész objektum tartalmazza a rész objektumot, az egész objektum megszűnése maga után vonja részének megszűnését. A tartalmazási kapcsolat erősebb, mint az ismeretségi. Osztályok közötti kapcsolatok • Egy-egy kapcsolat: az egyik osztály egy példánya a m ásik osztály legfeljebb egy példányával áll kapcsolatban. A másik osztályra ugyanez vonatkozik • Egy-sok kapcsolat: az egyik osztály egy példánya, a másik osztály sok példányával állhat kapcsolatban. A másik osztály egy példánya viszont legfeljebb egy példánnyal állhat kapcsolatban az egyik osztályból. • Sok-sok kapcsolat: a sok-sok kapcsolatban mindkét
osztály akármelyik példánya a másik osztály sok példányával állhat kapcsolatban. Objektumdiagram, együttműködési diagram • Objektumdiagram: objektumokat és azok kapcsolatait ábrázoló diagram. • Együttműködési diagram: olyan objektumdiagram, melyen az üzeneteket is feltüntetjük. Az együttműködési diagram az objektumoknak küldött üzenetek futását követi nyomon. Az üzeneteket sorszámozhatjuk, amely alapján az üzenet végrehajtása nyomon követhető. Osztálydiagram Egy statikus modell, mely a rendszerben előforduló összes osztályt és azok kapcsolatait ábrázolja. Az osztálydiagramon minden osztály pontosan egyszer szerepel Osztályleírás Az osztálydiagramban szereplő osztályok téglalapjaiban csak a legfontosabb információk férnek el. Ezért minden olyan osztályt, amely a feladatra nézve specifikus (azaz nekünk kell megalkotni) valahol részletesebben ki kell fejteni. Az osztályleírás (az osztály dokumentációja) a
következőket tartalmazza: • Osztály neve • Feladatleírás • Közvetlen ős • Objektumok száma • Kapcsolatok • Adatok • Metódusok Objektumorientált tervezés A tervezés az analízis egyenes folytatása az ott készült dokumentációk bővítése. A tervezés dokumentációi a következők: • Objektumdiagram, együttműködési diagram 70 • Osztálydiagram • Osztályleírás A diagramok sokkal részletesebbe válnak, megjelennek az implementációs hardver- és szoftverfüggő objektumok. A programterv egyes részeit párhuzamosan készítjük A diagramokat a használati esetek alapján folyamatosan szárazon teszteljük. Kódolni egy osztályt csak akkor szabad, annak feladata és környezetével való kapcsolata teljesen letisztult. UML jelölés Unified Modeling Language (Egyesített modellező nyelv): a három legnagyobb objektumorientált rendszerfejlesztési módszertan (OMT – Rumbaugh; Booch; OOSE – Jacobson) egyesítése (1997-ben jelent
meg). Az UML egy folyamatosan fejlődő és szabványos jelölésrendszert alkalmaz. A jelölésrendszer részleges leírása megtalálható Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai c. könyvében (297304 o) 71 10. Öröklődés az objektumorientált szoftverfejlesztésben Adatok és metódusok védelme. Virtuális metódus, futás alatti kötés Üzenetek nyomkövetése Polimorfizmus Típuskényszerítés. Öröklődés, örökítés Egy már meglévő osztály továbbfejlesztése. A már meglévő osztály az ős osztály, a továbbfejlesztett osztály pedig az utód osztály. Az utód osztály az ős osztály specializálása. Az ős osztályból úgy származtatunk újabb osztályt, hogy az ős osztály tulajdonságaihoz (adatok), ill. képességeihez (metódusok) újabbakat adunk, vagy a meglévőket felülírjuk. Egyszeres öröklés: egy osztálynak csak egy őse lehet. Többszörös öröklés: egy osztálynak több őse is lehet.
Osztályhierarchia-diagram Az öröklés is egyfajta kapcsolat két osztály között. A csak öröklési kapcsolatokat ábrázoló osztálydiagramot osztályhierarchia-diagramnak nevezzük. Adatok és metódusok védelme Egy jól programozott osztály adatai és metódusai csak együtt képesek jól dolgozni, ezeket nem szabad kívülről átírni. Az ilyen adatok és metódusok elérésének korlátozását a hozzáférési mód (láthatóság) helyes megválasztásával érhetjük el. Háromféle láthatóság létezik: • Public: bárhonnan elérhető – akár objektumból, akár öröklésen keresztül • Protected: hozzáférés csak öröklésen keresztül • Private: az osztály privát deklarációja, csak az osztály saját metódusai férhetnek hozzá Virtuális metódus Olyan metódus, melynek címét a program futási időben oldja fel. A virtuális metódusokkal elérjük, hogy mindig az aktuális objektum osztályának a m etódusa fog végrehajtódni. Virtuális
Metódusok Táblázata (VMT) Minden egyes, virtuális metódusokat tartalmazó osztályhoz tartozik egy VMT. A virtuális metódusok címét a program futáskor ebből a táblázatból veszi. A VMT-t a fordító építi fel, a programozó nem fér hozzá direkt módon. VMT mező: az objektum egy mezője, mely az osztály VMT-jének (relatív) címét tartalmazza (mérete 2 bájt). A VMT felépítése • Méret mező: az osztály adatainak mérete (az ős adatokkal együtt) + 2 bájt a VMT mező. • Ellenőrző mező: A méret mező (-1) szerese. Így Méret + Ellenőrző mező = 0 Az ellenőrzés abban áll, hogy a program megnézi: valóban egy igazi VMT-re mutat-e a VMT mező. Ha igen, akkor a mutatott Méret és Ellenőrző méret egyike sem 0, összegük viszont 0. • Virtuális metódusok címei: 72 • • Öröklés esetén a hasonló nevű virtuális metódusok címei a VMT ugyanazon relatív címén helyezkednek el. Az újonnan deklarált metódusok a deklarálás
sorrendjében kerülnek be a táblába. A virtuális metódusokkal rendelkező osztályok objektumait konstruktorral inicializálni kell. A konstruktor egy speciális metódus, amely az objektum VMT mezőjének értéked ad. A VMT mező az objektum osztályának megfelelő VMT-re fog mutatni Futás alatti kötés (dinamikus kötés) Egy metódus futási időben való hozzákötése a program kódjához (nem fordítási időben, hanem később). Polimorfizmus (többalakúság) Ugyanarra az üzenetre különböző objektumok különbözőképpen reagálhatnak. Az üzenet küldőjének nem kell ismernie a fogadó objektum osztályát. Típuskényszerítés (type cast) Egy változóra vagy típusra (objektumra vagy osztályra) egy idegen típus "ráhúzása". 73 11. Objektumok, illetve osztályok közötti kapcsolatok megvalósítása A konténer fogalma. A lista mint konténer Iterátor Kapcsolatok megvalósítása A kliens objektumnak mindig ismernie kel la szerver
objektumot, csak így tudja megszólítani. A kapcsolatot nyelvi szinten úgy lehet megvalósítani, hogy a k liens objektumban felveszünk egy szerverre vonatkozó hivatkozást. Ez lehet egy példányváltozó, vagy egy metódus lokális változója vagy formális paramétere. Tartalmazási kapcsolat esetén a kliens fizikailag tartalmazhatja a szervert, ekkor tehát nyugodtan felvehetünk a kliens osztályában egy (szerver) objektum típusú változót. Ismeretségi kapcsolat esetén a kliens nem birtokolhatja a szervert, mert akkor azt más nem használhatná. Ekkor a kliensből egy mutatót irányítunk a szerverre Az egy-sok kapcsolatot megvalósíthatjuk akár külön változókkal, akár tömbbel, listával. Ez utóbbi akkor hasznos, ha a kapcsolat foka nem határolható be. A konténer fogalma A konténer objektum más objektumok egy kollekcióját (csoportját) tárolja, és azokon különböző eléréseket, karbantartási műveleteket biztosit. A konténert mesterségesen a
kapcsolódó objektumok közzé kell iktatni. Ahhoz, hogy a kliens különböző karbantartási és keresési műveleteket hajtson végre a kapcsolódó objektumokon, valamilyen módon fizikailag hozzá kell őket „kötözni”. A kliens nem mutathat külön minden egyes szerverre, hiszen a szerverek száma elvileg végtelen lehet. Legyen a kliens objektumnak egy konténere (tárolója), melybe akárhány szerver objektum betehető. Amelyik szervernek a kliens üzenni akar, annak a mutatóját egyszerűen elkéri a konténertől. A lista mint konténer A konténert úgy kell megalkotni, hogy újrafelhasználható legyen. A konténerbe különböző osztályokhoz tartozó objektumokat is bele szeretnénk tenni. Közös mutatóval csak a közös őssel rendelkező objektumokra mutathatunk, tehát szükségünk van egy semleges ősre, amely tartalmazza azt a minimumot, ami a lista kezeléséhez feltétlenül szükséges. Az objektumok felfűzésének egyik feltétele, hogy a résztvevő
objektumok mindegyike mutassa az őt követő objektumot, ezt a mutatót tehát mindenképpen tartalmaznia kell a közös ősnek. Ezen kívül néhány alapmetódussal is rendelkezik az ősosztály az elemek kezeléséhez. Iterátor Gyakori, hogy a konténer elemein egyszerűen végig kell menni úgy hogy közben mindegyik objektumot ugyanarra a feladatra kell megkérni. Ilyenkor felesleges az iteráció teljes ciklusát lépegetésekkel, feltételekkel együtt többször leírni. Az iterátor feladata, hogy a paraméterként kapott eljárást a lista mindegyik elemével végrehajtassa. 74 12. Az objektumorientált szoftverfejlesztés fázisai, jellemzői Objektumok főbb sztereotípusai (határ, kontroll, egyed, konténer). Komponensek Az alkalmazói program felépítése. OO szoftverfejlesztési eszközök Az OO fejlesztés fázisai • Analízis: a feladat feltárása. Az analízis dokumentációi: • Feladatspecifikáció: a feladat megfogalmazása • Képernyő- és
listatervek: a felhasználói felület terve • Használati esetek: esetek, eseménysorok, melyekre a rendszert használni lehet • Adatszótár: a rendszer fejlesztése során feltárt fogalmak magyarázó szótára • Objektum- és együttműködési diagramok, durva osztálydiagram • Tervezés: az analízis egyenes folytatása az ott készült dokumentációk bővítése. A tervezés dokumentációi a következők: • Objektumdiagramok, együttműködési diagramok (részletesebb és több) • Osztálydiagram (részletesebb) • Osztályleírás • Kódolás, tesztelés: az osztálydiagram osztályait csomagjait kódoljuk, és folyamatosan teszteljük. A tesztelés elsősorban az analízis során feltárt esetek kipróbálásával történik. Objektumok főbb sztereotípusai • Határ (interfész) objektum: a külvilággal kapcsolatot teremtő objektum (pl. menü, ablak, nyomógomb stb.) • Kontroll objektum: vezérlést, számolást végrehajtó objektum. (pl egy
folyamatvezérlő vagy egy statisztikai adatgyűjtő objektum) • Egyed objektum: a rendszer lényegi részeit alkotó objektumok. Az egyed objektum egy valós világbeli személy, dolog, hely, fogalom, vagy esemény. • Konténer objektum: tipikusan implementációs objektum, hiszen a különböző kapcsolatok megvalósítására szolgál. Ha a k apcsolat foka jól behatárolható, akkor statikus adatszerkezetek is használhatók (pl. tömb) Ha a kapcsolat foka változó, akkor valamilyen dinamikus szerkezetet kell használnunk (pl. lista) Az adatbázisok saját konténerrel rendelkeznek. Komponensek A szoftverfejlesztés akkor hatékony, ha meglévő szoftverelemekből (szoftverkomponens, újrafelhasználható kód) építkezünk. A komponensek szabványos szoftver építőelemek (forrás, bináris vagy futtatható kód), melyeket alkalmazások fejlesztéséhez használnak. Komponensek lehetnek például osztályok, vagy azok egy csoportja: • Interfész osztályok – például a
nyomógomb, a listadoboz, a menü vagy a párbeszédablak; • Konténer osztályok – például a lista, tömb, fa, halmaz vagy a szótár. A jó komponens jellemzői: • használata drasztikusan csökkenti a fejlesztési időt és növeli a minőséget • szabványos, újrafelhasználható • általános, rugalmas • hatékony, megbízható, elronthatatlan • jól dokumentált • használatához nem kell ismerni a pontos működését 75 A komponensek (osztályok) gyűjteményét osztálykönyvtárnak (komponenskönyvtárnak) nevezzük. Az alkalmazói program felépítése Az alkalmazói program egy olyan program, amelyet egy adott számítógépes környezetben, kifejezetten egy speciális feladat elvégzésére készítettek. Egy tipikus alkalmazói program a következő elemeket tartalmazza: • Felhasználói felület: az alkalmazás azon része, mely az ember-gép kapcsolatot biztosítja. Részei: menü, ablakkezelés, súgó • Eseményvezérelt programozás: az
esemény egy olyan történés, amely megváltoztathatja valamely objektum állapotát. Az eseményvezérelt programozás olyan programozás, amely egy eseménybegyűjtő és szétosztó mechanizmuson alapul. Az objektumok a hozzájuk érkezett eseményeket eseménykezelő metódusokkal lekezelik. • Adatbázis-kezelés: a program futását túlélő objektumokat perzisztens objektumoknak nevezzük. Ezen objektumok tárolását és kezelését az adatbáziskezelő végzi Funkciók: központi adattárolás, több felhasználó kiszolgálása, integritás, helyreállítás, adatvédelem, lekérdezések biztosítása. • Kivételezés: a kivétel egy esemény vagy feltétel, melynek bekövetkezése megszakítja a program normál futását. A kivétel objektum tárolja azt az információt, hogy milyen kivétel történt, és hol. A kivételes eseményt a p rogram átadja az ún kivételkezelőnek, amely azt lekezeli. A kivételkezelő a kivételes (általában hiba) esemény
bekövetkezése esetén megpróbálja a programot megmenteni az összeomlástól: vagy elhárítja a hibát, vagy visszaállítja a rendszert egy előző, stabil állapotba. • Szemétgyűjtés: a h ivatkozatlan dinamikus változók automatikus kitakarítása a memóriából. OO szoftverfejlesztési eszközök A vizuális fejlesztőeszközök segítségével a fejlesztő a program nagy részét nem forráskód írásával készíti, hanem interaktív módon, a fejlesztőrendszer eszköztára által felkínált vizuális elemek kiválasztásával, azok tulajdonságainak beállításával. A forráskód vázát a fejlesztőeszköz generálja, a fejlesztő pedig kiegészíti. Elterjedt (Java, C++, Pascal és Smalltalk alapú) vizuális fejlesztőeszközök: JBuilder (Borland), JDeveloper (Oracle), Visual C++ (Microsoft), Delphi (Borland), IBM Visual Age for Smalltalk 76 13. A 4GL eszközök osztály- és objektummodellje A fontosabb osztályok és metódusok funkcionális
bemutatása. A 4GL eszközök működése azon a tényen alapul, hogy a szoftverrendszerek nem elszigetelt módon működnek, hanem feladataik végrehajtása közben folyamatos párbeszédet folytatnak a környezetükkel. A környezet két részre bontható: Emberi környezet: A kezelő, akivel a rendszer a kezelői felületen keresztül tartja a kapcsolatot. Gépi környezet: Külső számítógépes rendszerek, amelyekből beérkező információk vagy események a rendszer működését befolyásolják. Ezekkel a kommunikációs felületen keresztül tartja a rendszer a kapcsolatot. A szoftverrendszer harmadik komponense az alkalmazáslogika, mely a rendszer magjaként a feladatspecifikus műveletek végrehajtására szolgáló algoritmusokat foglalja magába. A 4GL eszközök a kezelői felület létrehozására speciális szerkesztőket, ún. látványtervezőket (layout editor, dialog editor) alkalmaznak, melyek segítségével a kezelői felület elemei egyszerűen
megrajzolhatók, elrendezhetők, és tulajdonságaik könnyedén beállíthatók. A kommunikációs felület létrehozása kissé más jellegű feladat, ugyanis míg a kezelő tipikusan ember (és az emberek sok szempontból eléggé hasonlítanak egymásra), a rendszer környezete nagyon sokféle lehet. Ezért a 4GL eszközök vagy előre definiált környezetet tételeznek föl (pl. relációs adatbázis-kezelő rendszerek), és az adott környezettel való kapcsolattartásra alkalmas elemeket eleve tartalmazzák, vagy pedig nyílt rendszerként működnek, és képesek különböző, szabványos interfészeken keresztül kommunikálni (pl. ODBC, JDBC, különböző hálózati protokollok). Akármelyik eset áll is fönn, a 4GL rendszerek a kommunikációs felület implementálására általában nem tartalmaznak külön eszközöket, legföljebb lehetővé teszik az előre definiált kommunikációs felület viselkedésének a megváltoztatását. Az alkalmazáslogika
implementálására magas szintű, gyakran objektumorientált programozási nyelv szolgál. Nagyon sokféle nyelvre alapulnak 4GL környezetek Így például a Borland Delphi az Object Pascal-ra, a Visual Basic és az Oracle Power Objects a Basic-re, az Oracle Forms a PL/SQL-re, a Visual C++ a C++-ra, a Borland JBuilder a Java-ra. Kezelői felület A 4GL eszközök a kezelői felületnek az űrlapokon megjelenő objektumait osztálykönyvtárakban tárolják, melyek a fejlesztő számára eszköztárak (toolbox, toolbar) formájában jelennek meg a 4GL eszköz felületén. Az eszköztár ikonos nyomógombok csoportja, melyen belül minden nyomógomb egy-egy adott megjelenítő objektumféleség létrehozására szolgál. Az objektumok tulajdonságokkal és metódusokkal rendelkeznek. Minden létrehozott megjelenítő elemhez tartozik egy adatlap (property sheet), melynek segítségével az objektum tulajdonságai beállíthatók, ezáltal pedig az egyes objektumok (ezen keresztül az
alkalmazás) viselkedése tág határok között befolyásolható. Az adatlap külön ablakban jelenik meg, melynek fő komponense az adott objektum tulajdonságaira vonatkozó, tulajdonság-érték párokból álló lista. A tulajdonságok értéke magán az adatlapon belül megváltoztatható 77 A megjelenítő objektumokat az alkalmazás információfeldolgozási sémájához való kapcsolatuk alapján két csoportba sorolhatjuk: • Passzív objektumok: Tartalmuk, megjelenésük, és általában állapotuk is állandó. Kezelői eseményekre nem reagálnak, és adatokat nem jelenítenek meg. Ebbe a csoportba tartoznak az egyszerű geometriai alakzatok (egyenes, kör, ellipszis, négyszög, sokszög, szabadkézi vonal), a feliratok és a statikus ábrák (pl. cégjelzés, háttérképek) • Aktív objektumok: Az alkalmazás információfeldolgozási folyamatának szerves részét képezik. Tartalmuk időben változó, és az általuk megjelenített adatokat az
alkalmazáslogika képzi, vagy közvetlenül a környezetből származnak. Ha egy aktív objektum e mellett kezelői beavatkozásokra is reagál, kezelőszervnek (control) nevezik. Kommunikációs felület A kommunikációs felületen keresztül tartja a rendszerünk a kapcsolatot a gépi környezettel. A kommunikációs felület tehát egyfajta adatcserét és szinkronizációt biztosít külső alkalmazásokkal. Az adatbázis-kezelőkhöz fejlesztett adatmegjelenítő, adatbeviteli/adatmódosító alkalmazások fejlesztése a 4GL alkalmazásfejlesztő eszközök egyik legelterjedtebb felhasználási területe. A kommunikációs felületnek ilyen esetekben a következőket kell lehetővé tennie: • Az adatbázis kapcsolat felvétele és lebontása: Első lépésként mindig ki kell jelölnünk azt az adatbázist, amelyikkel kommunikálni akarunk. Ezzel az adatbázissal ki kell építeni egy (többnyire hálózati) kapcsolatot Az adatokkal való műveletek elvégzése után a
kapcsolatot le kell bontani. • SQL utasítások összeállítása és elküldése: A kezelői felületen megjelenő kezelőszerveken keresztül a felhasználó módosíthat különböző adatokat, újakat vihet be, meglévőket törölhet, vagy lekérdezési feltételeket fogalmazhat meg. A kezelőszervek állapota alapján a 4GL eszköz adott parancsra automatikusan összeállítja a megfelelő (SELECT, INSERT, UPDATE vagy DELETE) utasítás szövegét, és az utasítást végrehajtatja az adatbázis-kezelővel. • Eredmények visszaolvasása: A 4GL eszköz automatikusan beolvassa a SELECT utasítás végrehajtásakor eredményül kapott rekordokat, és az esetleges hibaüzeneteket. Mindezt automatikusan megjeleníti a kezelői felületen a felhasználó számára. • A kezelői felületen keresztül megváltoztatott vagy bevitt adatok visszaírása: Ha a kezelő egy adatelemet megváltoztat, töröl, vagy éppen újat visz be, a módosításokat előbb utóbb be kell vinni az
adatbázisba is. Mindez DML (Data Manipulation Language) utasítások automatikus megfogalmazását és végrehajtatását teszi szükségessé. Mivel a DML utasításokból már tranzakciók keletkeznek, a 4GL eszköz feladata a tranzakciók lezárása, esetleges visszagörgetése, mentési pontok elhelyezése, egyszóval maga a tranzakció-kezelés is. Alkalmazáslogika Az alkalmazáslogika valósítja meg az alkalmazásunk procedurális belső működését. A végrehajtandó tevékenységeket két általános csoportba sorolhatjuk: • Eseménykezelés: A kezelői felületről és a kommunikációs felületről érkező események kiszolgálásával kapcsolatos tevékenységek. A felületen megjelenő előredefiniált elemek száma bármely 4GL környezetben adott, és így definiálható azon események köre, melyek ezekhez a felületi elemekhez kapcsolódnak. • Alkalmazásspecifikus tevékenységek: Olyan egyedi, általunk megírt kódrészletek, melyek az alkalmazás
igényeinknek megfelelő működését eredményezik. 78 Az alkalmazásspecifikus tevékenységeket a megfelelő objektumok megfelelő metódusainak törzsében elhelyezett - gyakran mindössze néhány soros - kódrészletekkel valósítjuk meg. 79 14. Az eseményvezérelt programozás megvalósítása a 4GL eszközökben Az esemény egy olyan történés, amely megváltoztathatja valamely objektum állapotát. Esemény lehet egy • Jel: egy objektum a másik objektumnak egyértelmű jelet küld. • Hívás: egy objektum meghívja egy másik objektum egy operációját. • Őrfeltétel: egy előre kijelölt feltétel igazzá válik. • Idő: a kijelölt idő letelik vagy elérkezik. A felhasználó is kiválthat eseményeket, pl. a billentyűzet vagy az egér kezelésével Ezek tipikusan jelek. Az eseményvezérelt programozás lényegében az jelenti, hogy a program futása során események keletkeznek, melyeket egy kontroll objektum fogad, és megfelelő szabályok
szerint szétoszt a program objektumai között. Az egyes objektumok előre be vannak tanítva, hogy egy adott esemény érkezésekor hogyan reagáljanak. A reakció lehet egy feladat végrehajtása, vagy e gy újabb esemény kiváltása is. Az objektum lekezeli az eseményt, amely egy eseménykezelő metódus feladata. Ahhoz hogy egy objektum fogadjon egy eseményt, két feltételnek kell teljesülnie: • Az objektum be legyen tanítva az esemény fogadására. • Az objektumhoz eljusson az esemény. A mechanizmusban az egér által kiváltott jelet általában az az objektum (ablak) kapja meg, amelyiken kattintottak, a billentyűleütést pedig az, amelyik éppen a fókuszban van. A Delphi környezetben az ablakok adatait a programozó vizuálisan adja meg, az eseménykezelő metódusok pedig egérkattintásra automatikusan generálodnak – csak az eseménykezelő metódus belsejét kell a programozónak ténylegesen megírni. 80 15. Az űrlapok (ablakok) tervezésének
menete A legfontosabb vezérlőelemek funkcionális bemutatása 4GL-ben. A grafikus felhasználói interfész (GUI) Ahogy az interfész általánosságban objektumok közötti kapcsolódási felületet jelent, úgy a felhasználói interfész a felhasználó és az objektumok közötti interaktivitás eszköze. Szinte minden objektum rendelkezik valamilyen felhasználói interfész felülettel (pl. telefon nyomógombjai, autó kormánykereke és pedáljai, stb.) Egy termék sikere manapság jelentős mértékben azon múlik, hogy milyen könnyen használható és mennyire barátságos a felhasználói interfésze. Egy számítógép esetében a felhasználói interfész azoknak a hardver és szoftver eszközöknek a kollekciója, amelyek információt szolgáltatnak a felhasználónak, és lehetővé teszik számára a kommunikációt a számítógéppel. Az interfész legfontosabb hardver komponensei közé tartozik a billentyűzet, az egér és a monitorképernyő. A szoftver
komponensek a képernyőképekből, valamint a vizuális és hanginformációkból állnak. A grafikus felhasználói interfész komponensei Ablak (Window) Az ablak egy olyan objektum, amely egy objektumnak valamilyen nézetét mutatja. Maga az ablak komplex (aggregációs) objektumként többfajta objektumból áll. Az ablak részei: keret, címsor, menüsor, eszközsor, állapotsor, gördítősáv(ok) stb. Az elsődleges ablak (primary window, application window) az elsődleges objektumok megjelenítésére szolgál. Egy elsődleges ablak több részre osztható, hogy az alternatív nézetek számára is legyen hely. Egy alkalmazásnak egy vagy több elsődleges ablaka lehet A másodlagos ablakok (secondary window, dialog box) a nevükből adódóan a másodlagos objektumok megjelenítésére szolgálnak. Ilyen másodlagos objektum például egy szövegszerkesztési alkalmazásban a font objektum vagy a fájl objektum. Az ezekkel kapcsolatos információk dialógus ablakban
jeleníthetők meg, ill. vihetők be Menü (Menu) Az „objektum-tevékenység” (object-action) típusú logika a leggyakoribb az alkalmazás és a felhasználó kölcsönhatásában. Ez azt jelenti, hogy a felhasználó elsőként mindig egy objektumot választ ki, amellyel aztán valamilyen tevékenységet hajt végre. Ennél a modellnél az elsődleges ablakban megjelenő objektumokra vonatkozó tevékenységek az ablakhoz rendelt menüben vannak felsorolva. A menü segítségével tud a felhasználó a lehetséges opciók közül egyet kiválasztani. A felhasználói interfész szabványok négyféle menüt különböztetnek meg: vízszintes főmenü (menu bar), legördülő menük (pull-down menük), kaszkád menü és az előugró menük (pop-up menu). Egérkurzor (Pointer) A pointer az egér relatív helyét mutatja a képernyőn. Miután a pointer alakja is információt nyújthat a felhasználónak, a különböző interfész szabványok ki is használják ezt. Az
alapértelmezésbeli pointeralak a nyíl, amely a különféle objektumok kiválasztását segíti. A nyíl csúcspontja az ún. forrópont (hot spot), így az egérgomb kattintásakor ennek a pozíciója a döntő. Rövidebb, folyamatindikátort nem igénylő műveleteknél a pointer alakja homokórára vált. Ez jelzi azt, hogy az alkalmazás egyelőre nem képes felhasználói esemény fogadására Az egérvonszolásos (drag & drop) technika alkalmazásakor fontos szerepet kap a pointer 81 alakja, hiszen ezzel érzékelheti a f elhasználó, hogy felemelt egy objektumot, és ezzel tudathatjuk vele, hogy hová engedjük a vonszolt objektumot ledobni. Billentyű kurzor (Cursor) A billentyű kurzor a billentyűzeten történő adatbegépelés aktuális pozícióját jelöli. A kurzor csak akkor jelenik meg, ha az éppen aktuális objektum képes a billentyűzetről érkező adatok fogadására. A felhasználói interfész szabvány kétféle kurzort különböztet meg: • A
sáv kurzor (selection cursor) a m enük, táblázatok és a különféle gombok (nyomógomb, jelölőnégyzet, rádiógomb) esetén a megfelelő vizuális jellel azt érzékelteti, hogy az adott aggregációs vagy konténer objektum mely tagobjektuma az aktuális. Egy menünél az aktuális menüpont eltérő háttérszínnel jelenik meg A táblázatban is színkiemelés jelöli az aktuális cellát. • A szövegkurzor (text cursor) akkor jelenik meg, ha az aktuális képernyőelem billentyűs adatbevitelre alkalmas. A szövegkurzor alapértelmezésbeli alakja a függőleges vonal, amely a szövegbeillesztéses/beszúrásos (insert) módnak felel meg. Szövegcserés/felülírásos (replace) módra áttérve a k urzor alakja konvencionálisan tömör fekete téglalappá alakul. Képernyővezérlő elem (Control) A képernyővezérlő elemek jelentik azt az alapvető eszközt, amellyel információt jeleníthetünk meg a képernyőn, illetve fogadhatjuk a felhasználói adatokat. A
leggyakoribb képernyővezérlő elemek a következők: • Címke (Label): A címke statikus szövegek megjelenítésére szolgáló képernyőelem. Tipikusan adatbeviteli mezők előtt szerepel, hogy vizuálisan jelölje, hogy milyen célt szolgál az adott mező. • Adatbeviteli mező (Edit, TextBox): Az adatbeviteli mezők adatmegjelenítésre és felhasználói adatbevitelre szolgálnak. Vannak rendszerek, amelyek különbséget tesznek az egysoros (Single Line Edit) és a többsoros (Multi Line Edit) változat között. • Listadoboz (ListBox): A listadoboz tulajdonképpen egy konténer objektum tagobjektumait vagy egy attribútum lehetséges értékeit mutatja. Mivel a választék általában nagyobb a listadoboz függőleges méreténél, ezért függőleges gördítősáv tartozik hozzá. Vízszintes gördítősáv csak akkor szükséges, ha a választékelemek hosszabbak a listadoboz méreténél. • Legördülő listadoboz (Drop-Down List Box): A legördülő listadoboz
csak annyiban különbözik a sima listadoboztól, hogy helytakarékosabb, mivel alapállapotában csak egyetlen sort foglal el a képernyőn. Ebben a sorban mindig a listadoboz aktuális eleme jelenik meg. A tényleges választék a listadoboz jobboldalán lévő nyíl lenyomására jön fel a képernyőre. • Kombinált doboz (Combo Box): A kombinált doboz tulajdonképpen egy legördülő listadoboz és egy adatbeviteli mező házasságaként jött létre. Külsőre ugyanolyan, mint egy legördülő listadoboz, de a kombinált doboznál a felhasználó adatot is begépelhet. • Jelölőnégyzet (CheckBox): A jelölőnégyzet olyan adatmezőknél használatos, amelyek csak kétféle értéket vehetnek fel. A logikai HAMIS állapotnak az üres, míg az IGAZ állapotnak az "x"-szel vagy a pipával kitöltött jelölőnégyzet felel meg. • Rádiógomb-csoport (RadioButtonGroup): A rádiógomb-csoport használata esetén egyszerre csak egyetlen rádiógombot lehet
bejelölni. A rádiógomb-csoport a listadoboz jó alternatívája lehet abban az esetben, ha nem nagy számú, előre rögzített lehetőségből kell a felhasználónak választania. 82 • • • • • • Nyomógomb (PushButton, Command Button): A nyomógomb megnyomásával egy tevékenység hajtható végre. A nyomógomb felirata vizuálisan jelzi a felhasználó számára, hogy mi az a funkció, amit elvégez. Eszközgomb (ToolButton): Az eszközgombok tulajdonképpen grafikus feliratú nyomógombok, amelyek tipikusan az eszközsoron (toolbar) vagy önálló eszközpalettán (tool palette) helyezkednek el. Az eszközsoron lévő eszközgombok a leggyakrabban használt menüpont-funkciók kényelmesebb elérését szolgálják. A sima menüfunkciókhoz indítógombos eszközgomb, a pipával jelölt ki-bekapcsolásos funkciókhoz kétállású eszközgomb tartozik. Eszközpaletta (Tool Palette): Egymást kölcsönösen kizáró lehetőségek közötti választásra
szolgálnak az eszközgombokból vagy egyéb ikonokból felépített eszközpaletták. Tipikusan színek, alakzatok, minták kiválasztásánál alkalmazzuk Gördítőgomb (Spin Button): A felhasználó két, nyilat ábrázoló nyomógomb segítségével tudja felfelé, illetve lefelé léptetni a mező értékét a soron következő attribútumérték irányába. Numerikus mező esetén a léptetés általában egy fix értéket ad hozzá a mezőhöz, vagy von le a mezőből. Önálló gördítősáv (Scrollbar, Dial, Slider, Scale, Progress Indicator): Speciális adatmezők folyamatos attribútumértékének állítására szolgálnak a különféle típusú vízszintes, illetve függőleges gördítősávok. Hosszabb feldolgozási folyamatoknál jut szerephez az ún. folyamatindikátor (Progress Indicator) A gördítősávokhoz hasonlóan a folyamatindikátor is rendelkezhet csúszkával. Ikon, bitkép, vonalas ábra: Az ikonok általában kisméretű grafikus bitképek, amelyek
objektumokat jelképeznek a képernyőn. A kisebb-nagyobb méretű bitképek és a vonalas ábrák egy része felhasználói események fogadására is képes, más részük pusztán díszítőelem. A képernyőelemek elrendezése Az objektumorientált tervezés során létrejött minden osztályt külön ablakba kell helyezni úgy, hogy az elsődlegesnek ítélt osztálybeli objektumok elsődleges ablakokba, a kiegészítő objektumok pedig másodlagos ablakokba kerüljenek. Az aggregációs és a konténer osztály objektumai is külön ablakban jelenjenek meg. Az egyes objektumokban a felhasználó keresési sorrendjének megfelelően kell elrendezni a képernyőelemeket. Az elrendezés általában feleljen meg a valós világbeli objektum elrendezéseinek. Ha nincs valós világbeli analógia, akkor abból kell kiindulni, hogy a felhasználó felülről lefelé és balról jobbra fogja átpásztázni a képernyőt. Az egyes menüpontok és nyomógombok elhelyezése is a
végrehajtási prioritás szerint történjen. Egy dialógusablak esetén például az ablak belsejében a nyomógomboknak vagy a képernyő jobboldalán felülről-lefelé vagy a képernyő alján balról-jobbra adott sorrendben kell elhelyezkedniük. Üzenetek A felhasználónak szóló üzenetek megtervezése is kellő körültekintést kíván meg. Célszerű olyan rövid, maximum 3 soros üzeneteket terveznünk, amelyekből a probléma és a megoldás is kiderül. 83 16. Az adattáblák (SQL-táblák) képernyős megjelenítésének és az adatok módosításának technikája 4GL-ben. Delphiben az adatbázis-kezelést támogató komponenseket két fő kategóriába sorolhatjuk: • Az adatelérési komponensek adatbázisok (TDatabase), táblák (TTable), lekérdezések (TQuery), tárolt eljárások (TStoredProc) stb. kezelését teszik lehetővé • Az adatmegjelenítési komponensek csupán megjelenítési célokra kifejlesztett komponensek, amelyek az adathozzáférést
biztosító komponensekhez kapcsolódnak az adatforrásukon keresztül, így ezek pillanatnyi állapotát tükrözik. Az adatmegjelenítési komponensek a felhasználói felület elemei. Azt mutatják, amit a hozzájuk kapcsolt adathozzáférési komponenstől kapnak. Helyük azon az űrlapon van, amelyen az adatokat meg akarjuk jeleníteni. Mindannyian rendelkeznek egy DataSource jellemzővel, amelyen keresztül kapcsolódnak az adatmodul valamely adatforrásához. Ennek az adatforrásnak a tartalma jelenik meg, íráskor pedig ezt módosítjuk. Az adathozzáférési komponensek egymáshoz is kapcsolódhatnak, így együttesen alkotják az alkalmazás adatelérési és alkalmazás logikáját (business logic). Ide építhetünk be számított mezőket, valamint további adatellenőrzéseket, adatszűréseket. Ezeket az elemeket egy ún adatmodulon (DataModule) helyezzük el. Ez tervezési időben egy külön ablakban jelenik meg, futás közben viszont láthatatlan. Szerepét – az
adatokhoz való hozzáférés biztosítását – a háttérből látja el. SQL a Delphiben Az SQL utasítások három kategóriába sorolhatók: • DDL (Data D efinition Language) utasítások, melyekkel az adatbázis szerkezetét módosíthatjuk (táblákat, nézeteket hozhatunk létre, módosíthatunk és törölhetünk): CREATE TABLE, CREATE VIEW, CREATE INDEX, DROP TABLE stb. • DML (Data Manipulation Language) utasítások, melyekkel az adatbázis adatait kezelhetjük (adatok felvitele, módosítása, törlése, lekérdezése és szűrése): SELECT, INSERT, UPDATE, DELETE stb. • DCL (Data Control Language) utasítások, melyekkel egyéb adatbázis-kezelési feladatokat láthatunk el (tranzakciók kezelése, jogosultságok beállítása, adatbázis karbantartása, mentése stb.): BEGIN TRANSACTION, COMMIT, ROLLBACK, GRANT, REVOKE stb. Az SQL utasításokat Delphiben a TQuery komponens segítségével adhatjuk meg, végrehajtásukat pedig a BDE (Borland Database Engine)
irányítja. Ha a parancs szerveren lévő adatokra vonatkozik, a BDE az adatbázis-szerver felé továbbítja az utasítást. A szerver hajtja végre az utasítást. Ha nem szerverhez intézzük az utasítást, akkor azt a B DE hajtja végre. Ha egy lekérdezést (SELECT) hajtunk végre, akkor az eredményt a TQuery komponens fogja tartalmazni. Az adatok egy - a TQuery-re irányított - TDataSource komponens és a megfelelő megjelenítési komponensek segítségével jeleníthetők meg. A TDatabase komponens egy konkrét adatbázis elérését biztosítja. Tervezési időben nem kell egyetlen TDatabase példányt sem elhelyeznünk az adatmodulon, ezt az alkalmazásunk indításakor automatikusan megteszi a rendszer. Az adatbázis-szerverekhez való 84 csatlakozáshoz szükség van egy database objektumra, ez biztosítja az utat az adatbázis felé, felelős a jelszó bekéréséért és metódusaival tranzakció-kezelést tudunk lebonyolítani. A TTable komponens biztosítja egy
fizikai tábla, vagy egy nézet (view) adatainak elérését. Ha adatainkat több táblából szeretnénk összeválogatni, akkor a TQuery komponenst használjuk, ha pedig az adatok egy tárolt eljárás végrehajtásából keletkeznek, akkor ezek Delphiből a TStoredProc komponens segítségével érhetők el. Az adatok módosítása Mindig csak az aktuális rekordot tudjuk módosítani, azt is csak akkor, ha az adathalmaz szerkeszthető. Egy rekord mezőértékének tárolása előtt meg kell győződnünk arról, hogy a tábla szerkeszthető (dsEdit) állapotban van-e, ha még nincs, akkor át kell állítani. A módosítások mentése a Post metódus hatására következik be Delphiben automatikusan lementődnek a változtatások egy másik rekordba való átlépéskor. Ha a módosításokat vissza szeretnénk vonni, akkor ezt a P ost metódus meghívása előtt megtehetjük a Cancel metódus segítségével. Ha már mentettünk, akkor a visszavonás csak akkor működik, ha a
módosító művelet egy még nem véglegesített tranzakció része. Ekkor az adatbázis-komponens RollBack metódusa visszaállítja a tranzakció elkezdése előtti állapotot. 85 17. Menütervezés 4GL eszközökkel Az „objektum-tevékenység” (object-action) típusú logika a leggyakoribb az alkalmazás és a felhasználó kölcsönhatásában. Ez azt jelenti, hogy a felhasználó elsőként mindig egy objektumot választ ki, amellyel aztán valamilyen tevékenységet hajt végre. Ennél a modellnél az elsődleges ablakban megjelenő objektumokra vonatkozó tevékenységek az ablakhoz rendelt menüben vannak felsorolva. A menü segítségével tud a felhasználó a lehetséges opciók közül egyet kiválasztani. A felhasználói interfész szabványok négyféle menüt különböztetnek meg: • A vízszintes főmenü (menu bar) az ablak tetején a címsor alatt helyezkedik el. Minden egyes főmenütételhez egy-egy komplett legördülő almenü tartozik. A főmenüpont
konvenció szerint egyetlen szóból áll. A főmenüpont nevének valamelyik betűje, mely aláhúzással van jelölve, mnemonikus rövidítésként funkcionál. Az Alt billentyű és az adott betű leütésével is megjeleníthető az adott főmenüpont almenüje. • A legördülő menük (pull-down menu) akkor jelennek meg, ha a felhasználó kiválaszt egy főmenüpontot a vízszintes menüsorból. A függőleges legördülő menüválaszték minden egyes menüpontjához vagy újabb menü (ún. kaszkád menü), vagy valamilyen végrehajtódó funkció tartozhat. A legördülő menük menüpontjai több szóból állhatnak. A mnemonikus rövidítés mellett gyorsítóbillentyű is rendelhető az egyes menüpontokhoz, melynek segítségével a menü aktivizálása nélkül is elindítható az adott funkció. A gyorsítóbillentyű kódja a menüszöveg jobb oldalán jelenik meg • A kaszkád menüre akkor van szükség, ha valamelyik legördülő menüponthoz további
menüválaszték tartozik. Ilyenkor az adott menüpont jobbszélén egy kis fekete háromszögnyíl jelenik meg vizuális jelként. • Az előugró menük (pop-up menu) szabadon lebegő menüként általában az aktuális objektumra vonatkozó műveletválasztékot tartalmazzák. Az előugró menük elhelyezkedése és összetétele mindig az aktuális objektum típusától és képernyőhelyétől függ. A felhasználó az előugró menüket úgy tudja aktivizálni, hogy egy képernyőobjektumon az egér jobb gombjával kattint. A menükészítésre vonatkozó előírások • Egy menü ne tartalmazzon 10-nél több menüpontot. • Az olyan menüpontoknál, amelyek funkciója valamilyen ki-be kapcsolást végez, a menüszöveg előtti pipa jelzi az aktuális állapotot. • Az összefüggő menüpontoknál, melyekből csak egyet lehet egyszerre aktivizálni, a menüpont előtti kis tömör fekete pont jelöli az éppen kiválasztott menüpontot. • Ha egy adott menüpont
aktivizálásakor a végrehajtandó művelet valamilyen felhasználói dialógussal indít, akkor ezt a menüszöveg végén három pont jelöli. • A logikailag összetartozó menüpontokat célszerű egy csoportba tenni, és az ilyen – maximum 4-5 tételt tartalmazó – csoportok közé szeparátorsorokat helyerzni. • Egy adott alkalmazás mindenkori állapotától függ, hogy az adott pillanatban mely funkciók használhatók, és melyek nem. Az éppen nem használható menüpontok állapotát leszürkítéssel kell jelezni. • A menüpontok elrendezésénél követni kell az elterjedt rendszerek menüszerkezetét, vagy például a M icrosoft ide vonatkozó ajánlásait, hogy a f elhasználó számára ismerősnek tűnjön az alkalmazás. A 4GL eszközök tartalmaznak egy menüszerkesztőt (Menu Editor, Menu Designer), melynek segítségével könnyen és gyorsan készíthetünk a fenti előírásoknak megfelelő menüket. 86 18. Adatbázis modellek Az adatmodell
alapelemei Az adatmodellek típusai és főbb jellemzőik. Az adatmodell adatbázisok szerkezetének leírására, megadására szolgál. Az adatmodellek kialakulása • A formalista megközelítés képviselői gráfokkal, diagramokkal kísérelték meg ábrázolni az adatok közötti kapcsolatot. Ezen alapul a hálós, ill hierarchikus adatmodell • A szemantikai megközelítés szerint a modellt szavak segítségével lehet leírni. Ez a modell zsákutcának bizonyult. • A matematikai jellegű modellekben az adatok közötti kapcsolatot matematikai struktúrák felhasználásával írják le. E modellfajta legismertebb képviselője Codd relációs adatmodellje (1970). Az adatmodell alapelemei • Egyed (egyedtípus): Minden olyan dolog (objektum), ami minden más dologtól (objektumtól) megkülönböztethető, és amiről adatokat tárolunk. • Tulajdonság (attribútum, tulajdonságtípus): Az egyed egy jellemzője, ami megadja, meghatározza az egyed egy részletét. •
Kapcsolat (kapcsolattípus): Az egyedek közötti viszony. A kapcsolat mindig valóságos objektumok közötti viszonyt fejez ki. A kapcsolat fajtái: • Egy-egy típusú (1:1) kapcsolat: az egyik egyedhalmaz mindegyik eleméhez a m ásik egyedhalmaz pontosan egy eleme kapcsolódik. • Egy-több (1:N) kapcsolat: az egyik egyedhalmaz mindegyik eleméhez a m ásik egyedhalmaz több eleme is kapcsolódhat. • Több-több (N:M) kapcsolat: az egyik egyedhalmaz mindegyik eleméhez a m ásik egyedhalmaz több eleme kapcsolódhat, és ez fordítva is igaz. Kardinalitás: az egyed maximális (minimális) kardinalitási száma a kapcsolatban azt adja meg, hogy az egyed egy előfordulásához a másik egyedből maximálisan (minimálisan) hány előfordulás kapcsolódhat. Az adatmodell fogalma Az adatmodell egyedek, tulajdonságok és kapcsolatok halmaza, amely absztrakt módon tükrözi a valós objektumoknak, azok jellemzőinek (tulajdonságainak) és viszonyainak elvont kategóriáit. Az
adatmodellek típusai • A hálós adatmodell szerkezetét gráffal adjuk meg. Ebben a gráfban a csomópontok az egyedeket, az élek pedig a kapcsolatokat fejezik ki. Az egyedeket tulajdonságaikkal írjuk le. A legelterjedtebb hálós adatmodellre épülő rendszer az IDMS (Integrated Database Management System) volt. • A hierarchikus adatmodell szerkezetét szintén gráffal adjuk meg, de a gráf speciális, nevezetesen fa. Hierarchikus modellen alapuló rendszerre jó példa az IMS (Integrated Management System). • A relációs adatmodellben az egyedet táblázattal adjuk meg, a t áblázat oszlopai a tulajdonságok, sorai pedig az egyed értékei (előfordulásai). A táblázat egy-egy sorát a tulajdonságok konkrét értékei adják. A táblázat maga az egyedhalmaz 87 19. A relációs adatmodell fogalma Funkcionális függőség, normálformák, normalizálás A relációs adatmodell egy táblázat, melynek oszlopai tulajdonságtípusok, más megközelítés szerint
pedig attribútum halmazok direkt szorzatának részhalmaza. Az attribútumok (oszlopok) számát az R reláció fokának, a sorok számát pedig a reláció számosságának nevezzük. A relációs adatbázis rövid jelölése a következő: R (A 1 ,A 2 ,A 3 ,,A n ), ahol R a reláció neve, A i pedig egy attribútum. A reláció voltaképpen egy egyedtípus, és minden egyedtípus egy relációnak tekinthető. Az A attribútumhalmaz egy K részhalmazát kulcsnak nevezzük, ha 1) a K értékei az R reláció mindegyik sorát egyértelműen meghatározzák, 2) de ha egyetlen attribútumot is elhagyunk K-ból, akkor ez már nem teljesül. Külső (idegen) kulcsnak nevezzük egy reláció azon attribútumait, amelyek egy másik relációban kulcsot alkotnak. Funkcionális függőség A P attribútum-részhalmaz funkcionálisan meghatározza a Q attribútumhalmazt, ha minden P-hez tarozó értékhez (a P attribútumainak oszlopaiban álló értékekhez) pontosan egy Q-hoz tartozó
értéket tudunk hozzárendelni. Vagyis a P értékei egyértelműen meghatározzák a Q értékeit. Jelölése: P Q Normálformák • 1NF: Egy R relációról azt mondjuk, hogy első normálformában van, ha minden sorában pontosan egy attribútumérték áll. • 2NF: Egy R relációról azt mondjuk, hogy második normálformában van, ha első normálformában van, és ha minden másodlagos attribútum teljesen függ a kulcstól. • 3NF: Egy R relációról azt mondjuk, hogy harmadik normálformában van, ha második normálformában van, és egyetlen másodlagos attribútum sem függ tranzitíven a kulcstól. Normálformára hozás (normalizálás) • 1NF-re: 1) minden „többszörös” attribútumértékű sort annyi sorban írunk fel, ahányszoros az attribútumérték a sorban; 2) vagy a kulcshoz egy külső kulcsú relációt készítünk és ebben a többszörös attribútumértékű oszlop soraiból annyi sort hozunk létre, ahányszoros az attribútumérték ebben
a sorban. • 2NF-re: a kulcsnak azon attribútumhalmazaiból, melyek maguk is meghatározzák (funkcionálisan) a másodlagos attribútumokat, valamint ezen másodlagos attribútumokból önálló relációt hozunk létre. Így több relációra bontjuk az eredeti relációt • 3NF-re: megszüntetjük a tranzitív függőségeket, mégpedig úgy, hogy a tranzitív függőségben részt vevő attribútumhalmazok felhasználásával új relációkat készítünk. 88 20. Az SQL fontosabb fogalmai (adatbázis, tábla, oszloptípusok, kifejezések, függvények). A SELECT parancs szerkezete, működése A beágyazott SELECT Az SQL (Structured Query Language) az adatbázis-kezelő rendszerek szabványosított nyelve. Az SQL alapelemei Tábla Az SQL relációs adatmodellt kezel, így a nyelv fő objektuma a reláció, amit az SQL-ben táblának nevezünk. A tábla definiálása a C REATE TABLE paranccsal történik A tábla azonosítója maximum 8 karakter lehet, betűkből,
számjegyekből és aláhúzás karakterekből állhat. Oszlop A tábla oszlopokból áll, a tábla definiálásakor az oszlopok típusait is meg kell adni. Az oszlop azonosítója 10 ka rakter lehet. A tábla- és oszlopneveknek egyedieknek kell lenniük, de két különböző táblában lehetnek azonos nevű oszlopok. Adatbázis A táblák adott csoportja adatbázist alkot az SQL-ben. Az adatbázis táblák névvel ellátott együttese. Létrehozása a CREATE DATBASE paranccsal történik Az adatbázis azonosítója max, 8 karakterből állhat. Oszloptípusok SMALLINT: értéke 6 számjegyű (előjeles) egész szám lehet INTEGER: értéke 11 jegyű (előjeles) egész szám lehet DECIMAL(x,y); NUMERIC(x,y): x jegyű (előjeles) fixpontos decimális szám y tizedesjeggyel FLOAT(x,y): x számjegyű (előjeles) lebegőpontos szám y tizedesjeggyel CHAR(n): n hosszú karakterfüzér (1≤n≤254) DATE: dátum típusú oszlop LOGICAL: logikai típusú oszlop, értéke igaz vagy hamis
lehet Kifejezések Az SQL a kifejezések szerkezete és tartalma tekintetében megegyezik más nyelvekkel. • Aritmetikai kifejezések: Numerikus vagy dátum típusú oszlopnevekből, változókból, konstansokból, műveleti jelekből (+, -, *, /, ) és zárójelekből állnak. Szerepelhet bennük aritmetikai függvény is. • Karakter-kifejezések: Karakter típusú oszlopnevekből, változókból, szövegkonstansokból, műveleti jelből (+, a konkatenáció jele) és zárójelekből állnak. • Logikai: Logikai típusú oszlopnevekből, változókból, konstansokból, műveleti jelekből (AND, OR, NOT) és zárójelekből állnak. Függvények (beépített függvények és a behívó nyelv függvényei) Aritmetikai függvények: SIN, COS, EXP, LOG, SQRT stb. Aggregáló függvények: COUNT, SUM, AVG, MAX, MIN Karakter típusú függvények: a behívó nyelv függvényei, pl. SUBSTR Dátum függvények: a behívó nyelv függvényei, pl. MONTH–BETWEEN Logikai (predikátum)
függvények: BETWEEN, IN, LIKE Konverziós függvények: a behívó nyelv függvényei, pl. CTOD 89 A SELECT parancs Az adatbázis-kezelés egyik fontos művelete a lekérdezés. Az SQL lekérdezési parancsa egy összetett parancs, a S ELECT parancs. A SELECT parancs végrehajtásának eredményeként egy új tábla keletkezik, ezt eredménytáblának (E-tábla) hívjuk. A parancs általános szerkezete a következő: SELECT oszlop kiválasztása = projekció [INTO ] az E-tábla 1. sorának tárolása FROM táblák Descartes-szorzata [WHERE ] sorok kiválasztása = szelekció [GROUP BY ] csoportosítás [HAVING ] csoportok közötti választás [UNION ] E-táblák összefűzése = unió [ORDER BY/FOR UPDATE OF ] E-tábla rendezése/módosítása [SAVE TO TEMP ]; E-tábla megőrzése, elmentése A SELECT parancs hatására keletkező E-tábla csak ideiglenesen jön létre. A SELECT parancs szerkezete kötött, az alparancsok csak olyan sorrendben írhatók fel, ahogyan fentebb
látjuk. A szögletes zárójelbe tett alparancsok opcionálisak A beágyazott SELECT A SELECT parancsok egymásba ágyazhatók az alábbi szerkezetben: SELECT (SELECT (SELECT ) ) Az egymás mellett lévő bal oldalon álló SELECT-et a tőle jobbra állóhoz képest külső, a másikat pedig belső SELECT-nek nevezzük. A külső SELECT a belső E-táblájától függően hoz létre E-táblát. Az ilyen módon létrehozott SELECT sorozat egyetlen eredménytáblát ad, amit az utolsó külső SELECT generál. A belső SELECT mindig vagy WHERE vagy HAVING utasítás operandusa, nem tartalmazhat ORDER BY és UNION utasításokat és az is kikötés, hogy a GROUP BY és a HAVING a teljes SELECT-ben csak egyszer fordulhat elő. 90