Tartalmi kivonat
B.1 Az operációs rendszerek működéséhez szükséges hardvertámogatások (CPU üzemmódok, megszakítási rendszerek). 1. CPU üzemmódok Valós üzemmód Védett üzemmód Virtuális üzemmód 1. Valós üzemmód Amikor a 386-os vagy a 486-os mikroprocesszorra épült számítógépet (PC-t) bekapcsoljuk vagy a hardver RESET vonal segítségével újrainiciáljuk, a CPU valós üzemmódba kerül. Valós üzemmódban a védelmi mechanizmusok nem engedélyezettek, a lapozás nem működik és a programbeli címek megfelelnek a fizikai címeknek. A címterület az 1 Mbyte fizikai memóriára korlátozott. A valós üzemmód korlátai Az utasítások végrehajtása valós üzemmódban érvénytelen műveletkód hibát eredményez. A valós üzemmódú programok elérhetik az összes regisztert, beleértve a vezérlő, a nyomkövető és a tesztregisztereket is. A valós üzemmód nem támogatja a lapozást 2. A Védett üzemmód A CR0 regiszter alsó bitjének értékét
1-re állítva a processzor védett üzemmódba kapcsolható. A processzor ilyenkor védett üzemmódban működik még akkor is, ha nem történt meg a beállítás, azaz fut az első megszakításig FAR CALL-ig, vagy szegmensregiszter betöltéséig. Ennél a pontnál a processzor valamelyik deszkriptortáblázatot igényli Mivel a védelmi mechanizmusok e deszkriptortáblázatokra épülnek, a rendszer leáll, ha a deszkriptortáblázatok még nem inicializáltak. A védett üzemmódú 286-os programok futtathatók a 386-oson, illetve a 486-oson, ha minden deszkriptor 4. szavának értéke 0 A deszkriptorok 64-bitesek mindegyik processzornál, de 286-os nem használja a felső 16 bitet. Általánosan, egy operációs rendszer nem kapcsolhat vissza valós üzemmódba védett üzemmód után. A visszatérés a valós üzemmódba veszélyezteti az operációs rendszer biztonságát, mivel a valós üzemmód sokkal könnyebben omlik össze hibák következtében. A valós üzemmódú
programok futtatása védett üzemmódú operációs rendszerben, rendelkezésünkre áll a virtuális 8086-os üzemmód. 3. Virtuális üzemmód A 8086-os virtuális üzemmód olyan egyszerű mechanizmus, amely lehetővé teszi a felügyelői szintnek, hogy a felhasználói szinten elindítson egy 8086-os programot. A 8086-os programok elindítása bármelyik 8086-os tárgykóddal megvalósul. Ez lehet egy egyszerű 8086-os felhasználói program vagy egy 8086-os operációs rendszer. Vagyis ahogy a virtuális memória lehetővé teszi, hogy a processzor olyan memóriát is használjon, amely fizikailag nem létezik, a 8086-os virtuális üzemmód létrehoz a 386-oson, illetve a 486-oson egy működő 8086-ost. Az illúzió annyira teljes, hogy egy védett üzemmódú operációs rendszerben akár több ilyen 8086-os virtuális üzemmódú program is működhet szimultán. 2. Megszakítások Megszakítási rendszerekre azért van szükség, mert a számítógépes rendszerek olyan
alkatrészeket is tartalmaznak, amelyek párhuzamosan működtethetők. Ha sok perifériával kell egyidejűleg foglalkozni, akkor ez a tevékenység teljesen lefoglalná a processzor idejét, hasznos tevékenységre alig maradna ideje. Jobb megoldás az, ha a periféria jelez akkor, amikor befejeződött az átvitel, hiszen így csak egyszer kell foglalkozni a perifériával. A megszakítási rendszer lehetővé teszi: a reagálást a központi egységen belül előálló speciális feltételekre, a kívülről érkező jelzések kezelését, és ezek által a párhuzamosan üzemeltethető egységek közötti koordinációt. A megszakítások kezelését a hardver és szoftvereszközök igen változatos keveréke végzi bonyolult algoritmusok alapján. Minden megszakító rendszer azonban azt az alapvető problémát oldja meg, hogy egy véletlenszerűen bekövetkező esemény képes legyen megváltoztatni a műveletek végrehajtási sorrendjét az éppen elvégzés alatt
álló művelet eredményének elvesztése nélkül. A megszakítások tehát tulajdonképpen hardver úton erőltetett vezérlésátadást (ugrást) jelent a megszakítást feldolgozó, ún. megszakító rutinra A meg. rutin indulása előtt azonban rögzíteni kell a központi egység állapotát, hogy azt a megszakítás feldolgozása után vissza tudjuk állítani úgy, hogy az eredeti programot hibátlanul folytathassuk. A megszakító rutin hívása általában ugrótáblán keresztül valósul meg, ahová a vezérlés a megfelelő megszakítás bekövetkeztekor hardver úton adódik át. Egy megszakítás feldolgozása közben újabb megszakítási kérelem is érkezhet, amivel a rendszernek szintén foglalkoznia kell. Ez a jelenség tetszőleges mélységben egymásba skatulyázva is felléphet. A problémát úgy egyszerűsítik, hogy bizonyos megszakítások kezelésének idejére letiltják más jellegű (az adott osztályba tartozó) megszakítások fogadását. Ugyanakkor
természetes, hogy valamilyen megszakítás kezelése közben a központi egység más osztályába tartozó megszakításokat elfogad. (Az IBM PC kompatibilis számítógépeknél ezt két osztállyal oldják meg: „maszkolható” és „nem maszkolható”. „Maszkolható” = letiltható) A megszakítások során a hardver valamelyik szintű vezérlőállapotába kerül át. Ez azt jelenti, hogy a megszakítás után induló kód privilegizált jogokkal rendelkezik. Fontos, hogy a megszakítás-kezelők gyorsan reagáljanak a megszakítási eseményekre, illetve a rendszer minél kevesebb ideig legyen megszakítás fogadására alkalmatlan állapotban. A megszakítás menete megszakítási kérelem érkezik a központi egységhez; a központi egység a kérelmet várakoztatja, amíg egy utasításciklus be nem fejeződik, vagy amíg az adott osztályú megszakítás tiltott; amikor a központi egység elfogadja a megszakítást segít félretenni a megszakított
program állapotát a megfelelő verembe; automatikuson privilegizált állapotba lép és többnyire az adott osztály megszakításait letiltja; a megszakítási osztálynak megfelelő megszakítási vektorból a központi egység előveszi a megszakító rutin induló állapotvektorát és megszakító rutin első utasítására adja a vezérlést; a megszakító rutin befejezi az előző program állapotvektorának mentését; amint a megszakítás feldolgozása túl van a kritikus szakaszon, visszaállítja az adott osztály megszakíthatóságát; a megszakítás feldolgozása rendszerint azzal ér véget, hogy a vezérlést átadja valamilyen más programnak, ami többnyire az operációs rendszer valamelyik ütemező rutinja; az ütemező dönt a folytatásról és előveszi a folytatni szándékozott program állapotvektorát a veremből, majd a vezérlést a program megszakítását követő utasításra adja. B.2 Kötegelt,
időosztásos és valós idejű rendszerek 1. Kötegelt rendszerek A k ötegelt r endszerek esetében az o perációs rendszer e gymástól f üggetlen m unkák végrehajtására vonatkozó igényeket fogad, s ezekből kötegeket (batch) hoz létre, melyeket ezután a körülményeknek megfelelő időpontban hajt végre. Ezen rendszerek sajátja, hogy lehetővé teszi a gép folyamatos terhelését, és a programozókat elválasztja a géptől. A közvetlen hozzáférést biztosító lemezegységek megjelenésével sokat fejlődtek a kötegelt rendszerek is, azonban két hátrányuk megmaradt: Nincs i nterakció a p rogramozó é s a r endszer kö zött a m unka vé grehajtása köz ben. Mivel sok esetben egy feladat következő lépése az előzőtől függ, a programozónak minden eshetőségről előre intézkednie kell, ami többletmunka és gyakran igen bonyolult. A pr ogramok hi báit statikusan, t árkivonatokból ke ll m egtalálni, a mi ug yan inspirálhatja a f
egyelmezett, mó dszeres p rogramírást é s te sztelést, d e min denképpen csökkenti a fejlesztők teljesítményét. 2. Időosztásos rendszerek A kötegelt rendszerek továbbfejlesztése és egyes problémák kiküszöbölésével jelentek meg az időosztásos rendszerek, ahol a felhasználó állandó és folyamatos kapcsolatban áll a programjával annak í rása és v égrehajtása s orán. A p arancsok az onnal v égrehajtódnak és az eredménytől függően a programozó dönthet a következő lépésről. Az On-line r endszerek vezérlőnyelvét inkább parancsnyelvnek nevezik, mert kiadásuk után a rendszer rögtön reagál, abban különböznek a kötegelt rendszerek vezérlőnyelvétől, hogy vertikális jellegűek [Sok parancsból építkeznek (vertikális) és az egyes parancsok paraméterezése általában egyszerű (horizontális)]. Az időosztásos operációs rendszer célja, hogy a számítógéprendszer interaktív használatát több f elhasználó s zámára
pá rhuzamosan lehetővé tegye. Ennek érdekében az operációs rendszer a központi egység megfelelő ütemezésével és multiprogramozás alkalmazásával a gép idejét több felhasználó között osztja meg. Különösen a programfejlesztésnél igaz, hogy az éppen aktív folyamat egy rövid időn belől befejeződik vagy B.K műveletet igényel Mivel az interaktív adatbevitel gyakran billentyűzetről folyik, ami a gép szempontjából igen lassú, a rendszer gyakran váltogathatja a falhasználók kiszolgálását, mégis mindenki úgy érzi, hog y egyedül dolgozik. Az időosztásos rendszerek az erőforrások igazságos elosztása érdekében védekeznek az ellen, hogy egy folyamat korlátlan ideig aktív maradhasson. Erre a célra általában a gép órájának megszakítását használják oly módon, hogy az órajel valamilyen többszörösével kifejezhető időszelet elmúltával másik folyamatra kapcsolnak át. Az időszelet nagysága függhet az alkalmazási
környezettől és a pillanatnyi terheléstől is. A kötegelt rendszerek időosztásos alrendszerrel való bővítése mellett természetesen az időosztásos rendszerekben is gyakran gondoskodnak kötegelt üzemmódról a rutinszerűen ismétlődő munkák végrehajtásának egyszerűsítése érdekében. Az időosztásos rendszerek „prototípusa” a UNIX. 3. Valós idejű rendszerek Egyes, s peciális f eladatok g épesítése t ámasztotta az okat az i gényeket, amelyek a v alós idejű operációs rendszerek kialakulásához vezettek. Ezek a rendszerek tulajdonképpen egyedi alkalmazások vezérlő mechanizmusainak tekinthetők. Az adatok a gépben érzékelőkről érkeznek. Az operációs rendszer feladata az adatok elemzése és szükség esetén olyan vezérlő mechanizmusok aktivizálása, melyek befolyásolhatják az érzékelők által mért értékeket. Tipikus valós idejű alkalmazás például a forgalmi rendszerek, ipari folyamatok, tudományos kísérletek
irányítása stb. A valós idejű operációs rendszerek közös jellemzője, hogy a munkák elvégzését szigorú időkorlát köti. Rendszerhibával egyenértékű, ha egy munka nem hajtódik végre a hozzárendelt időkorláton belül. Amíg a kötegelt operációs rendszereknél lényegtelen, a időosztásos rendszereknél fontos, de nem meghatározó, addig a valós idejű rendszereknél az időkorlát döntő jelentőségű. A valós idejű környezetek további fontos tulajdonsága az eseményvezérelt jelleg. Az operációs r endszer n em v ezérli a f eldolgozást, hanem f ogadja és t eljesíti a k érelmeket. A kérelmek teljesítését biztosító programokat taszkoknak hívják. A hangsúly nem az erőforrások optimális kihasználásán, hanem az biztonságos üzemen van. A teljesítmény paramétereket úgy kell megválasztani, hogy az időkorlátok csúcsterhelés esetén i s t arthatók l egyenek, a m éretezést t ehát a cs úcsterhelésre v égzik. E nnek ér
dekében gyakori a ha rdware r edundancia, é s az, hog y a z s zabvány pr ocesszorok e gy s peciális módosított változatát alkalmazzák. A valós idejű alkalmazások software-re a szokásosnál több szempontból is bonyolultabb. Egyrészt az egész programrendszernek – legalább gyakorlatilag – hibamentesnek kell lennie, másrészt a programok „belövését” nem lehet a megszokott módon elvégezni, mivel a próbához szimulálni kell a teljes környezetet az összes bekövetkezhető eseménnyel együtt. Erre azért van szükség, mert hiába működik egy program hibátlanul egy laboratóriumi környezetbe, arról is meg kell győződni, hogy minden folyamat akkor is időkorlátján belől marad, ha a rendszer teljes terhelés mellett üzemel. (valós idejű rendszer pl a QNX) B.3 Processzorkezelés Ütemezési algoritmusok Ütemezési algoritmusok A következő munkának a készenléti sorból való kiválasztásai algoritmusa nagymértékben b efolyásolhatja az
eg ész r endszer h atékonyságát. A f eladat s úlyának érzékeltetésére megpróbáljuk összefoglalni, hogy az ütemező algoritmusról általában milyen szempontok szerinti optimalizálást várnak el: CPU kihasználtság, ami a gyakorlatban 40% és 95% között szokott lenni. a rendszer átbocsátóképessége, ami pl. az óránként befejezett f eladatok s zámával lehet mérni. fordulási idő, ami egy feladat leadása és befejezése között telik el. Ez különösen a felhasználó szempontjából fontos, de a B/K sebesétől erősen függ. várakozási idő, a fordulási idő egyik komponense, amit a feladat a készenléti sorban t ölt. Az ütemező algoritmusok a fordulási időt tulajdonképpen csak a várakozási időn keresztül befolyásolják. válaszidő, ami különösen interaktív rendszereknél fontos, ahol a fordulási idő nem megfelelő kritérium. Előfordulhat, hogy ha egy folyamat az eredmények e gy részét már előállította,
a többi eredmény meghatározását át lehet lapolni a meglévő közlésével. Így a felhasználót tulajdonképpen csak az első eredmény megjelenéséig eltelt idő - a válaszidő - érdekli. Természetesen e gy-egy a lgoritmus a f entiek közül eg yszerre cs ak egyet, v agy néhányat optimalizálhat. Jó esetben a többire sem ad az átlagosnál rosszabb értéket Interaktív rendszernél, pl. inkább a válaszidő szórását, mint átlagát célszerű minimalizálni, mert ekkor a rendszer viselkedése jobban tervezhető. 1. Előbb jött - előbb fut A legegyszerűbb ütemezés, melyet angol rövidítéssel FCFS-nek ( First-Come-FirstServed) is neveznek. A központi egységet mindig az először igénylő folyamat kapja meg Megvalósítása csupán egy FIFO sort igényel, amelynek kezelése igen gyors lehet. Az algoritmus hatékonysága ugyanakkor meglehetősen rossz. A fordulási idő pl erősen függ a feladatok megjelenésének sorrendjétől. Az F CFS m ásik gy enge
pont ja a z ún. c sorda ha tás H a a f eladatok köz ött e gy C PU orientált va n, e z ki sajátítja a központi egységet, a többi B/K orientált feladat pedig egy idő múlva m ind a ké szenléti s orban vá r, s a pe rifériák ki használatlanok. M ajd a B/K or ientált feladatok v égül m egkapják ug yan a köz ponti e gységet, de gyorsan v isszatérnek a B/K sorokba, é s ez által a CPU lesz tétlen. A rendszer működését tehát az egyetlen nagy, CPU orientált feladat el tudja rontani. Úgy tűnik, érdemes a rövidebb feladatokat előre venni 2. A legrövidebb előnyben Az a lgoritmus ( angol r övidítése S JF = S hortest-Job-First), lé nyege, ho gy a köz ponti egységet felszabadulása után ahhoz a feladathoz rendeljük, amelynek következő CPU igénye a legkisebb. Ha több ilyen van, a FCFS algoritmus dönt Az S JF ig azi p roblémája, h ogy a k észenléti s orban min den feladat me llett tá rolni k ell a következő CPU - igény hosszát i s. A köt
egelt r endszereknél a f elhasználóktól ka pott időkorlátok alkalmazhatók: a programozók érdekeltté válnak a program futási idejének jó becslésében, mert alacsonyabb időkorláttal gyorsabban jutnak az eredményekhez, ha viszont túl optimistán becsülnek, a rendszer a feladatot időtúllépés miatt visszautasítja. Ezért az SJF különösen a kötegelt rendszereknél gyakori. Mivel azonban az algoritmus egyszerű és optimális, nem szívesen mondanak le róla ott sem, ahol nincs igazi magas szintű ütemezés (időosztásos rendszerek). Ilyen esetekben, ha ismerjük az előző igényt és az erre adott becslést, a matematikai statisztika segítségével meg lehet becsülni a következő CPU igény hosszát. A becslésre az ún exponenciális átlagot szokták használni, ami egy alkalmasan kiválasztott w < 1 esetén a következő: bn+1 = w*tn + (1 - w) bn ahol tn az utolsó CPU igény hossza, bn az utolsó, bn+1 pedig a következő igény becslése. A w
súly t ulajdonképpen a ke len é s a m últ ha tásának f igyelembevételét s zabályozza. A z egyszerűség kedvéért a w-t általában ˝-nek választják, ami azt jelenti, hogy a jövő szempontjából a múlt és a jelen egyformán fontos. 3. Prioritás A p rioritásos ü temezés az S JF a lgoritmus á ltalánosítása, a k észenléti s orban min den feladathoz egy egész számmal kifejezett, a feladat fontosságát jelző prioritást is tárolunk, a CPU - t minden esetben a legmagasabb prioritású feladat kapja (több ilyen esetén az FCFS elv dönt). Az S JF -nél a prioritás speciálisan a következő CPU - igény r eciprok értéke vol t. Általános m egegyezés m ég ab ban s incs, h ogy a n agyobb s zámok j elentik a m agasabb prioritást, vagy fordítva. A prioritás belülről vagy kívülről adható meg A belső prioritást a feladat különböző paramétereiből határozza meg a rendszer. A külső prioritást v iszont a rendszeren kí vül á lló szempontok
a lapján a dják m eg. Ilyen l ehet pl , a f elhasználó privilégiuma, a magasabb díjtétel, a feladat objektív fontossága, üzletpolitika stb. Minden prioritásos üt emezés köz ös problémája a z ún. ki éheztetés, ami azt jelenti, hogy egy kész állapotban lévő folyamat várakozási ideje nem korlátos. A folyamatosan érkező, nagyobb pr ioritású folyamatok e gy alacsony prioritású m unkát i gen h osszú vá rakozásra kényszeríthetnek. A pr obléma m egoldása nem bon yolult, be l ehet vezetni az “ö regedés” fogalmát p l a készenléti sorban eltöltött idő alapján. Ha minden 5 perc várakozás után a feladatok prioritását eggyel növeljük, a legalacsonyabb prioritású feladat is belátható időn belül sorra kerül. Amint sorra ke rül, pr ioritását vi ssza k ell ál lítani a r égi ér tékre. A VAX V MS, és az IBM O S/2 operációs rendszerekben pont ezt a módszert alkalmazzák. A prioritásos algoritmusok egy további finomítása
lehet az ún. kizárás Ez azt jelenti, hogy ha a várakozási sorba az éppen aktív folyamatnál nagyobb prioritású folyamat érkezik, akkor az kiszorítja az aktív folyamatot és megkapja a CPU - t. Az időosztásos rendszerekben, ha pr ioritásos üt emezést ha sználnak, ki zárásra f eltétlenül s zükség va n, m ert c sak í gy biztosítható, hog y t öbbé-kevésbé s zabályos időközönként minden felhasználó hozzájusson a központi e gységhez. K önnyen b elátható, hog y a z S JF ( szintén pr ioritásos) a lgoritmus kizárással együtt rövidebb átlagos fordulási időt ad, mint anélkül. 4. Körben járás Az időosztásos rendszerek számára tervezett k örben j árás ( angol r övidítése R R= Round-Robin) lényege, hogy meghatároznak egy kis időtartamot, amit “időszelet-nek” neveznek. Értéke általában 10 é s 100 e zredmásodperc között van A készenléti sort egy zárt körnek tekintik, az alacsony szintű ütemező körben jár, és
minden folyamat rendre megkapja a CPU - t az időszeletet meg nem haladó időtartamra. Az RR algoritmust legegyszerűbben egy FIFO sorral valósítják meg. Az érkező folyamatok a sor végére kerülnek, az ütemező veszi az első folyamatot, beálltja az időszelet alapján az óramegszakítást és a folyamat indulhat. Ezután a folyamat vagy visszaadja a CPU t önként (mert befejeződik, illetve B/K műveletbe kezd), vagy az időszelet lejártával bekövetkező megszakítás során az ütemező veszi el tőle, a folyamat p edig v isszakerül a s or végére. Az RR algoritmus hatékonysága erősen függ az időszelet nagyságától. Kis időszelet esetén “p rocesszorosztás-ról” be szélünk, e kkor m inden f elhasználó úgy é rzi, hogy s aját processzorra van, ami az igazi processzor sebességének 1/N szeresével működik. Ezt a m egoldást al kalmazzák a C DC 6600-nél a p erifériaprocesszorok megvalósításánál. E gy fizikai pr ocesszorhoz 10 r
egiszterkészletet ha sználtak A h ardver minden utasítás után átkapcsolt a következő regiszterkészletre. A felhasználó e gy gyors helyett tíz lassú processzort látott, de ezek még elég gyorsak voltak a perifériák meghajtására. Az R R s zoftver m egoldásaival a zonban egyéb problémák va nnak. A z éppen a ktív folyamat me gszakításakor me nteni k ell, a z ú j f olyamat in dításakor p edig b e k ell tö lteni a regisztereket. Ezt a két tevékenységet együttesen környezetváltásnak nevezzük, időtartama gépenként változik, de áltálban eléri az időszelet 10%-át. A környezetváltás teljes egészében kieső idő, és komoly mértékben befolyásolja az ütemező hatékonyságát, hiszen - az időszelet tizedével számolva - a CPU idejének 10%-át kell környezetváltásra fordítani. Ezért az látszik célszerűnek, ha az időszelet jóval nagyobb, mint a környezetváltás ideje, mert akkor egy adott feladathalmaz esetében csökken a
környezetváltások száma és esetleg az átlagos fordulási idő is. Ugyanakkor az időszelet növelésével az RR algoritmus FCFS - sé de gradálódik, ami nyilván nem kívánatos. Általánosan bevált becslés szerint az időszeletet úgy kell megválasztani, hogy a CPU igények nagy része egy időszelet alatt kielégíthető legyen. 5. Többsoros ütemezés Különösen nagyobb számítógépes rendszerek esetén gyakran előfordul, hogy a munkák könnyen két vagy több csoportra oszthatók. Pl az ún előtérben futó interaktív és a háttérben futó kötegelt munkák szétválasztása azért kézenfekvő, mert a válaszidőkövetelmények eltérőek, és azért különböző ütemezést igényelnek. Ezen túlmenően az előtérmunkákhoz sokszor nagyobb külső prioritás is tartozik. A több sorral dolgozó ütemező a készenléti sort több, különálló sorra osztja. Az érkező munkák valamilyen tulajdonságuk alapján kerülnek be valamelyik sorba, besorolásuk
később már nem változhat. Minden sorhoz saját, az adott feladattípusnak megfelelő ütemező algoritmus ta rtozhat. T öbb s or esetén t ermészetesen a s orok k özötti v álasztást i s ü temezni kell, amit általában rögzített prioritással, kizárásos alapon oldanak meg. Példaként egy OS/MFT rendszer készenléti sorát adjuk meg: Operációs rendszerbeli munkák Interaktív programok Interaktív szerkesztés Kötegelt munkák A tanulók feldatai A felsorolás a rögzített prioritási sorrendet mutatja. Egy alacsonyabb prioritású sorban lévő feladat csak akkor futhatott, ha az összes magasabb prioritású sor üres volt. A sorok közötti ütemezés időszeletek kiosztásával is megoldható. Az időszeleten belül az egyes sorok a saját algoritmusok alapján ütemezik a munkákat. Ha a különböző sorokba való beosztást nem a munkák külső ismérvei alapján végezzük, hanem a r endszerre bízzuk azzal a cél lal, hogy a
különböző CPU igényű munkák külön s orokba ke rüljenek, f eladhatjuk a be sorolás á llandóságának e lvét é s e ljutunk a z ún . visszacsatolásos többszintű sorokhoz. Az alapelv az, hogy ha egy folyamat túl sok CPU időt használ, á tkerül egy alacsonyabb pr ioritású s orba, i lletve h a e gy feladat t úl s okat v ár e gy sorban, magasabb prioritású sorba juttatják. A többsoros visszacsatolásos ütemezés tekinthető a processzor-kezelés l egfejlettebb megoldásának. S egítségével a z ope rációs rendszer úg y hangolható, ho gy j ól m egfeleljen szinte bármilyen működési környezet által dámaszott igényeknek. Ugyanakkor az is igaz, hogy ez a legösszetettebb ütemezés, amely csak nagy teljesítményű hardver és megfelelően heterogén t erhelés esetén l ehet g azdaságos. E nnek el lenére az O S/2 s zemélyi számítógépes operációs rendszerben is hasonló alapelveket valósítanak meg, és más, kis teljesítményű
hardverekre ki dolgozott, m ultiprogramozott o perációs rendszerek i s i gyekeznek i lyen megoldásokat használni. Processzorkezelés A multiprogramozástól azt várjuk, hogy javítsa a központi egység kihasználtságát, és növelje a rendszer átbocsátóképességét (az adott idő alatt végrehajtható feladatok mennyiségét). A központi rendszer kihasználtsága azért nő, mert B/K műveletek alatt újabb folyamatokat l ehet ak tivizálni. Az átbocsátóképesség növekedését egy egyszerű pl szemléltetjük: Az A és B feladat egyformán viselkedik: mindegyik fut egy másodpercig, majd B/K műveletet végez egy másodpercig, és ez 100-szor ismétlődik. Ha a két feladatot egymás után futtatjuk, 400 másodpercre van szükség a végrehajtásukhoz. Közben a központi egység pedig csak az idő felében dolgozik. Ha az A feladat várakozási idejében a központi egység a B feladatot hajtaná végre, a B várakozási idejében pedig újra az A-t, a teljes
átfutási idő megfeleződne, a központi egység kihasználtsága pedig megkétszereződne, vagyis 100% lenne. Figyeljük meg, hogy az A feladat ugyanakkorra fejeződik be, mint az előző esetben, a javulás abból ered, hogy ez alatt a B feladat is lefut. Természetesen ilyen jól illeszkedő feladatok a gyakorlatban nincsenek, de a multiprogramozás akkor is sokat segíthet, ha csak közelíti a fenti példát. A központi egység ütemezése azon a felismerésen alapszik, hogy minden folyamat két tevékenység ciklikus ismétlődéséből áll: CPU használat és B/K h asználat. A ciklus v égén mindig központi egység művelet van. Statiszikai mérések azt mutatták, hogy - bár a központiegység-használati szakaszok erősen függenek a folyamatoktól és a hardvertől általában minden folyamat során túlnyomó többségben vannak az igen rövid CPU használati szakaszok, és csak nagyon kevés, a központi egységet használó hosszú szakasz fordul elő. Az ún. CPU
orientált programokra jellemző néhány ilyen igen hosszú szakasz, míg a programok többsége B/K - orientált. Mivel a CPU e gyszerre t öbb a ktív f olyamattal i s f oglalkozik, a z a ktív á llapotot felbontjuk ún. kész, illetve futó állapotra A megszakíthatóság és ütemezhetőség érdekében minden folyamathoz többféle információt kell tárolni. Ezen információk tárolási helyét folyamatvezérlő blokknak (angolul Process Control Block = PCB) nevezik, és szerkezete a következő: a folyamat állapota: új, kész, váró, holtponti vagy befejezett az utasításszámláló tartalma: a folyamat következőként végrehajtandó utasításának címe. a CPU regisztereinek tartalma Különféle tárkezelési információk: bázisok és limitek, alaptáblák, stb. elszámolási információk: CPU idő, valós idő, idő limit, számlaszám, feladat, vagy folyamatazonosító stb B/K- állapot információ: ki nem elégített B/K igények,
a folyamathoz rendelt B/K egységek, nyitott állományok stb. CPU- ütemezési in formáció: p rioritás, ü temezési s orban e lfoglalt p ozíció, e gyéb paraméterek A P CB -ket az o perációs r endszer t erületén rendszerint eg y l ista f ormájában k ell tárolni. Ez történhet statikusan vagy dinamikusan A PCB segítségével a k özponti egység átkapcsolható eg yik folyamatról a másikra és vissza. A c él az, hog y v alamelyik f olyamat á llandóan f utó állapotban l egyen. Egyprocesszoros rendszernél természetesen minden időpontban csak egy folyamat lehet futó, a t öbbiek v árnak ( kész ál lapotban) és e gy s ort al kotnak, am elyet “ készenléti” s ornak nevezünk. A készenléti s ort - a B /K e gységekre vá ró f olyamatok s oraihoz ha sonlóan általában láncolt listákkal valósítják meg Számunkra a készenléti sor a fontos, hiszen ez tartalmazza a központi egységre váró feladatokat. Az ütemezést első közelítésben két
lépcsőben végzik: a magas szintű ütemező dönti e l, hogy m ely f eladatok ke rülnek a k észléti s orba. K ötegelt f eldolgozásnál ug yanis gyakran t öbb f eladatot k özölnek a r endszerrel, m int am ennyit az onnali v égrehajtásra át t ud venni. A f eladatok a há ttértáron v árakoznak, ameddig a magas szintű ütemező át nem viszi őket a készléti sorba. Az alacsony szintű ütemező a készenléti sorból kiválasztott feladathoz rendeli a központi egységet, azaz “futtatja” a programokat. A két ütemező között több eltérés lehetséges, de a legfontosabb kül önbség végrehajtásuk gyakoriságában van. Az alacsony szintű ütemező igen gyakran fut, másodpercenként százszor is indítják, hogy egy B/K művelet miatt felfüggesztett folyamat helyett másikat aktivizáljon. Ezért az alacsony szintű ütemezőnek igen gyorsnak kell lennie Annak e ldöntése, ho gy egy f olyamat né hány s zázad m ásodpercig a ktív l egyen, ne m t arthat
még egy ezredmásodpercig sem, mert különben a rendszer “kieső ideje” igen magas lenne. A magas szintű ütemező azonban viszonylag ritkán dolgozik, mert l ehet, hog y percekig nem érkezik újabb feladat. Fő feladata a multiprogramozás fokának vezérlése Ha a multiprogramozás f okát á llandó s zinten t artjuk, a kkor a r endszerbe t öbbé-kevésbé an nyi feladat lép be, amennyi távozik. Igy a magas szintű ütemezőt elég csak a befejezett munkák után hívni. Ezzel az ütemezővel szemben tehát nem a sebesség az elsődleges követelmény, hanem, ho gy minél jobb munkakeveréket töltsön a készenléti sorba. A m unkakeverék akkor jó, h a e gyformán ta rtalmaz C PU, ille tve B /K- orientált f eladatokat. H a ez az eg yensúly felborul, akkor valamelyik várakozó sor kiürül, és a megfelelő ütemező munka nélkül marad. Egyes rendszereknél a magas szintű ütemező hiányozhat, vagy lehet egészen minimális is. Az időosztásos rendszereknél pl
a feladatokat általában közvetlenül a készenléti sorba le het a te rminálról b evinni, itt a mu ltiprogramozás f okát c sak a terminálok s záma, illetve a bevitel sebessége korlátozza, a túlterhelés ellen nincs biztosíték. Ugyanakkor m ás op erációs r endszerek - különösen a virtuális tárral rendelkezők igényelnek egy harmadik ún. közbenső szintű ütemezőt is Ez tulajdonképpen a swapping technika multiprogramozásos környezetben való megvalósítását támogatja. A különböző megfontolások ( tárnyerés, a m unkakeverék j avítása s tb.) al apján i deiglenesen eltávolított folyamatok visszajuttatása a várakozó sorba szintén a közbenső szintű ütemező feladata. A teljesség kedvéért megjegyezzük, hogy az alacsony szintű ütemezőről le szokták választani az ún. diszpécsert, amely a kiválasztott folyamatot ténylegesen aktivizálja Ez konkrétan a regiszterek visszatöltését, a privilegizált állapotból normál
állapotra való visszakapcsolást és egy megfelelő vezérlésátadás végrehajtását jelenti. B.4 Tárkezelés: tömörítés, lapozás és szegmentálás, virtuális tár (operációs rendszereknél !!!) A multiprogramozás miatt a tárat több felhasználó között kellett megosztani. Ezért arra is szükség volt, hogy a tárkezelés háttértárakra is támaszkodjon. A többpartíciós rendszerekben a tár szabad területét több részre (partícióra) osztják és minden pa rtícióban e gy-egy f elhasználó pr ogramja t artózkodhat vé grehajtásra vá rakozva. A tárkezelés f eladata, ho gy m unkasorban v árakozó m unkákból f olyamatosan f eltöltse a partivókat f utásra k ész pr ogramokkal. A m ultiprogramozás f okát a pa rtíciók s záma s zabja meg. A pa rtícionálás k étféle módon ol dható m eg: statikusan és dinamikusan. A s tatikus megoldásnál rögzített méretű partíciók szerepelnek (MFT), a dinamikus megoldásnál változó
méretűek. (MVT) Úgy a rögzített, mint a változó méretű partícióknál fellép a külső-, illetve belső elaprózódás. Előfordulhat, hogy egy munka a méreténél jóval nagyobb partíciót köt le, ez a belső elaprózódás; vagy az is megeshet, hogy egy partíció kihasználatlanul áll, mert nem elég nagy egyik várakozó munka számára sem, ez a külső elaprózódás. Ezek optimalizálására létezik három módszer. Tömörités Az MVT-nél (változó partíciók) a külső elaprózódás egyik hatékony megoldása a tár rendszeres időközönkénti “átrendezése” azért, hogy a kis - önmagukban ha sználhatatlan darabokból egy folytonos területet képezzünk. Ezt a tevékenységet hívjuk tömörítésnek, vagy a programozási nyelvek futtató rendszereitől átvett kifejezéssel “szemétgyűjtésnek”. A tömörítés csak akkor végezhető el, ha a rendszer megengedi a dinamikus relokációt. Ebben az esetben át kell másolni a p rogram- és
adatterület tartalmát, és be kell írni a bázisregiszter új értékét. Lapozás A külső elaprózódás leküzdésének másik - általánosabb - megoldása, h a feladjuk az egy m unkára ki osztott t árterület f olytonosságának e lvét. A m unkához t öbb, a t árban szétszórtan elhelyezkedő blokk tartozik, az op. rendszer pedig gondoskodik arról, hogy futás közben s zükség es etén a v ezérlés az eg yik blokkból a m ásikba ke rüljön. A bl okkokat lapoknak, a módszert pedig lapkezelésnek, vagy lapozásnak nevezzük. Minden C U á ltal g enerált c ímet 2 r észre o sztunk: e gy la pcímre é s egy lapon b elüli relatív címre. A lapcím adja a laptábla indexét, ahol minden laphoz megtalálható annak fizikai kezdő (bázis) címe. A l ogikai t árat az onos n agyságú l apokra, a f izikai t árat p edig u gyanekkora r észekre, un. keretekre osztjuk Eleinte a laptáblát külön regiszterkészlettel oldották meg, amikor azonban a tár mérete nőtt,
kénytelenek voltak a laptáblát a tárban t artani, és b evezetni a l aptábla-bázisregisztert, amely min dig a z a ktuális la ptáblára mu tatott. A c ímfordítás a zonban legalább k ét tá rhoz fordulást i gényelt, a mi s ebességcsökkenést okoz ott. E nnek a m egoldására ve zették be a tartalom szerint címezhető, vagy asszociatív tárnak nevezett kis speciális hardvertárat. Szegmentálás Mivel a lo gikai c ímek fizikaira v aló le képzését a z o p. r endszer r ejtett c ímfordító eljárása végzi, lehetőség nyílt, hogy a logikai és fizikai tár ténylegesen különböző méretű legyen. A megfelelő címfordító eljárással ki lehetett használni a nagyobb tárat Érdemes volt a tárat ol y módon kialakítani, ahogy a felhasználó ténylegesen elképzeli. Ez pedig nem bájtok lineáris, számozott sorozata, hanem különböző nagyságú, funkcióval bíró, s okszor rendezettséget nem mutató szegmensek gyűjteménye. Egy-egy s zegmens l
ehet e gy főprogram, egy eljárás, egy modul, egy táblázat stb. Ezek tárbeli helye és sorrendje a felhasználó számára közömbös, méretük különböző. A szegmensekre nevükkel, elemeikre egy - a kezdetüktől mért - relatív távolsággal hivatkozhatunk. Az ilyen jellegű logikai tárral dolgozó tárkezelést nevezzük szegmentálásnak. A logikai cí mtartomány s zegmensek h almaza, m elyek m indegyikéhez eg y n év, és eg y h ossz tartozik. A lo gikai c ím a szegmens nevéből és a szegmensen belüli relatív címből áll Az egyszerűbb megvalósítás érdekében a szegmensekre név helyett szegmensszámmal hivatkozunk. A két részes logikai címet fizikai címmé a szegmenstábla segítségével alakíthatjuk át. A s zegmenscím a szegmenstábla indexeként szolgál, a megfelelő elem pedig megadja a szegmens hosszát és bázisát. Előnye, hogy a tárvédelmet a szegmensekhez lehet rendelni, az utasításszegmensek lehetnek csak írhatók vagy csak
végrehajthatók. Minél kisebbek a szegmensek, annál kisebb a külső elaprózódás. A virtuális tár A f enti m ódszereknél a c él a z vol t, hogy m inél t öbb f olyamatot t artsanak párhuzamosan a tárban a multiprogramozás elősegítése érdekében. Ha azt mondjuk, hogy a teljes mu nkát n em k ell föltétlenül a tá rban t artani a v égrehajtás s orán, akkor m ár v irtuális tárkezelésről beszélünk. Ebben az esetben a felhasználói programok meghaladhatják a fizikai tárméretet. A programozási nyelvek nagyrészt megengedik az átlapolást,(overlay technika), ami azt je lenti, h ogy a p rogram e gy r ezidens ( a k özponti t ár) és e gy t ranziens ( háttértár) r észen helyezkedik el. A vezérlőrész feladata, hogy a háttértáron lévő, egymást átlapoló programrészeket behívja a főtárba. Ha ezt az eljárást az op. rendszer szintjén valósítjuk meg virtuális tárról beszélünk Előnyei: a programokat nem köti a fizikai tár mérete,
egyszerűsödik a programozók dolga több felhasználó szolgálható ki, növekszik a központi egység kihasználtsága kevesebb B/K műveletre van szűkség, elmarad a munkák ki-be m ásolása, a rendszer hatásfoka javul. A virtuális tár megvalósítására legelterjedtebb módszer az un. igény szerinti lapozás Ez leginkább a swappinggal kombinált lapozásra emlékeztet. A swapping lényege, hogy a felhasználói részt mindig egy felhasználó uralja, a többiek teljes tárterülete a háttértáron várakozik. Felhasználócserénél a rendszer kimásolja a régit és behozza az új felhasználó tárképét A b eolvasó cs ak ak kor olvas b e l apot, h a ar ra a p rogram f utása s orán ténylegesen szükség van. Hogy a program ne próbáljon be nem hozott lapra (azon levő címre) hivatkozni, a l aptábla érvényességi b itjére kell támaszkodni. Ha kiderül, hogy a lap még nem elérhető, laphiba lép fel. Ezt az alábbi folyamat szerint hozza
helyre: ellenőrzi, hogy a folyamat jogosan használja-e a k érdéses cí met.(ezt a f olyamat vezérlőblokkjához tartozó táblából nézi ki). Ha nem, igazi címhibáról van szó, és meg kell szakítani a folyamatot ha a c ím j ogos, a kkor b e ke ll ol vasni a l apot: s zabad ke retet ke ll ki választani, ütemezni a lemezről való olvasást, módosítani kell a folyamat-, illetve a laptáblát újra kell indítani a laphibát okozó utasítást A multiprogramozás fokozásával könnyen előállhat az a helyzet, hogy a párhuzamosan futó p rogramok s zámára e gyüttesen k iosztott tá r me ghaladja a f izikai tá r mé retét. Ilyenkor megtörténhet, hogy egy laphibánál azért nem lehet behozni a kívánt lapot, mert nincs szabad keret a fizikai tárban. Ebben a helyzetben 2 megoldás van: swapping vagy lapcsere A lapcsere folyamata: • az igényelt lap felkutatása a háttértárban • Egy szabad keret keresése ha van szabad keret, annak
lekötése ha nincs, egy algoritmus kijelöli a kivihető lapot a kiviendő lap kimásolása a háttértárra, a lap és kerettábla megfelelő módosítása • az i gényelt l ap b ehozatala a k ivitt h elyére, a l ap- és kerettábla megfelelő módosítása a megszakított folyamat folytatása B5. Az IBM PC számítógépek operációs WINDOWS, UNIX). A fájl és a könyvtárstruktúra rendszerei (DOS, A számítógép egymagában (csak a hardver része!) nem képes mûködni. Ahhoz, hogy valamire használni is lehessen, vagyis hogy életre keljen szükség van bizonyos utasításokra, programokra, a melyek működőképessé teszik azt. Ezek az utasítások írják elő, például, a gépnek, hogy mit tegyen abban az esetben, ha lenyomtunk egy billentyűt, vagy ha futtatni akarunk egy programot, vagy ha egy program valamelyik lemezről akar olvasni, illetve rá akar í rni, e gyszerûen e zek bi ztosítnak bá rmilyen kom munikációt a f elhasználó é s a g ép
között, v alamint v ezérlik a p rogramok v égrehajtását. E zeket az u tasításokat ( programokat) nevezzük egyszóval operációs rendszernek. Az ISO megfogalmazása szerint az operációs rendszer "olyan programrendszer, amely a s zámítógépes rendszerben a p rogramok v égrehajtását v ezé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." Az IBM / PC gépek legfontosabb operációs rendszerei a következők: DOS WINDOWS ( Win.95, NT ) UNIX ( Linux ) OS/2 ( Warp ) stb 1. A DOS operációs rendszer A PC-DOS / MS-DOS páros a M icrosoft cég terméke, a 80 - as évek legelterjedtebb operációs r endszere vol t. E gyfelhasználós, m onoprogramozott i nteraktív r endszer, r öviden csak DOS -nak nevezzük. A PC-DOS az eredeti IBM PC - kooperációs rendszere volt A DOS rendszeradminisztrációs rutinjai egyrészt a ROM
-ban vannak (ROM - BIOS), más r észük a há ttértárolón t alálhatóak. Erről a tárolóról töltődnek be a memóriába a gép bekapcsolásakor, va gy a R ESET - tel történő újraindításkor. Ezek a rutinok 2 rendszerállományban va nnak, a r égebbi D OS vá ltozatokban e zek a z IBMBIO.COM é s IBMDOS.COM programok voltak, a későbbi változatokban az IOSYS é s M SDOSSYS betölthető állományokban vannak. A DOS háttértárolón található harmadik komponense a COMMAND.COM szabványos parancsértelmező, mely ûzeten a billenty be ütött parancsnyelvet fogadja, megkeresi és futtatja a p rogramokat, egyszóval az ember - gép közti közvetlen kapcsolatot valósítja meg. A szabványos parancsértelmező le is cserélhető A parancsértelmező kétféle parancsot kezel belső és külső parancsokat. A belső parancsokat - ezekről volt idáig szó - a r endszerállományok t artalmazzák, e zek m indig a memóriában vannak. A külső parancsok valójában a
háttértárolón található futtatható állományokban, un. fájlokban vannak, innen töltődnek be futtatáskor a memóriába A f ájlok m egnevezésénél f igyelembe k ell v enni, h ogy az ér vényes s zabályoknak megfelelően a név maximálisan 8 karakterből állhat, és egy ponttal elválasztva maximum 3 karakteres un. kiterjesztésből amely utalhat a fájl típusára Így például a futtatható állományok kiterjesztése .E XE, C OM va gy BAT l ehet N em í rott s zabály hogy a TXT k iterjesztés ASCII s zöveges állományt j elez, a .P AS a Turbo P ascal forráskódok s zöveges állománya, a .SYS meg betölthető eszközmeghajtókat jelöl, de rendszerparaméterek megadására is használják (pl. CONFIGSYS) és még számtalan ilyen jellemző megnevezés l étezik A n év megadásánál s zempont az i s, h ogy a n év k arakterei cs ak az an gol A BC betûi, s zámjegyek, valamint né hány s peciális ka rakter l ehet ( , #, & s tb.) N incs kül
önbség a ki s é s n agybetûk közt. A DOS állományok lehetnek tehát futtatható -, szöveges - valamint adat állományok. Az á llományok bá jtokat t artalmaznak, t árolásuk i s bá jtokban, b ájttömbökben t örténik, függetlenül a ttól, hogy milyen t ípusú á llományról b eszélünk. A kül önbség azok értelmezésénél ad ódik. A s zöveges ál lományok sorokat t artalmaznak, 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, c om / de l ehetnek s zövegesek i s / ba t /) A b ináris á llományok s zintén b ájtok sorozatából á llnak, e zek vi szont ni ncsenek s orokra t agolva a CR/LF s orvégjellel. Értelmezésük a rendszertől, a programoktól függ. A .B AT ki terjesztésû f uttatható á llományok i s l ényegében s zö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. A DOS - ban a z á llományok e gy könyvtárstruktúra (más né ven ka talógusrendszer) mentén 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 k atalógusokban t alálhatóak, ugyanakkor a k atalógusok t artalmazhatnak további alkatalógusokat is. Ezért a katalógusrendszer egy fastruktúrához hasonlít Szokták így is nevezni. A katalógusok megnevezésénél ugyanazok a szabályok érvényesek, mint a fájloknál. A k atalógusoknak i s l ehet e gy m ax. 3 k arakteres k iterjesztett a dni, d e ezt s zinte s ehol s em 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 pe rjel, ba ckslash . A gyökérből kiindulva kell a katalógusneveket egymásután megadni, a hogy következnek, e zeket s zintén a jel v álasztja e l egymástól. E zt 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 katalógus, amelyhez az aktuális katalógus tartozik. Ennek a jele a két pont (.) Ezt is lehet használni az útvonal megadásokban 2. A WINDOWS operácós rendszer A DOS - hoz hasonlóan a Windows is a Microsoft cég terméke. A W indows ope rációs r endszer na gyban t ámaszkodik a D OS - ra, t ulajdonképpen a DOS - ra épül rá. Kivételt a l egújabb változatai, a Windows 95 é s ami utánna jött (Win98) képeznek, ezeknek már nincs szükségük a DOS - ra. Ami a Win - okban közös, az egységes
grafikus felhasználói felület (GUI - Graphic User Interface ?). A Win -ban a programokhoz lehet rendelni, un. ikonokat, melyekre az egérrel rákattintva futtatható az illető program A W indows m ár t öbbfeladatos, m ultitaszkos ope rációs rendszer, egyszerre t öbb alkalmazás is f uttatható, má s - más a blakokban. A z a lkalmazások a blakokban f uttathatók, (windows = ablakok!). A W indows N T a W indows há lózati m egvalósítása, a lkalmazá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 s truktúrával, cs ak a m egjelenítése t örténik g rafikusan. V iszont a W indows 95 -ben már lényeges változásokat eszközöltek ezen a téren. Ezután a Windows 95 -ről lesz több szó A Win. 95 -nek nincs szüksége a DOS -ra önálló operációs rendszer Kihasználja a 32 bites hardverlehetőségeket. A hardver megváltoztatása es etén
b ekapcsoláskor au tomatikusan felismeri a változást és azonosítja az új elemet. A Win. 95 -ben a katalógusokat foldereknek vagy mappáknak nevezzük, de a lényege ugyan az marad. A fizikai könyvtárstruktúra azonos a DOS könyvtárstruktúrájával, a fájlok is ugyan ú gy h elyezkednek e l a ka talógusokban. A z e lnevezéseknél vi szont m ár l ehet hos szú neveket, valamint más karaktereket is használni. A nevek hossza legfeljebb 250 karakter lehet A f izikai me gvalósítás s zinte te ljesen a zonos a D OS -al, a kül önbség a megjelenítésben t alálható. A l emezen ug yan ú gy vannak t árolva a z á llományok, a n evük i s csak m aximum 13 ka rakter hos szú, be leértve a ki terjesztést é s a pont ot i s, a hos szú megnevezés egy másik fájlban található. A képernyőn a mappák megjelenítése kül önbözik sokban a régebbi WINDOWS verzióktól. 3. A UNIX operácós rendszer A U NIX 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 un terminálokon keresztül cs atlakoznak a rendszerre, az összeköttetés megvalósítására számos módszer létezik. Minden felhasználónak van b ejelentkezési n eve és j elszava, a b ejelentkezé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 U NIX e gy m ágneses periférián u n. állományrendszer(eke)t t ételez f el, m indegyik állományrendszernek v an e gy ki induló ka talógusa, a mit g yökérkatalógusnak, ne veznek. A DOS i s ezt a struktúrát örökölte. A gyökérből indulnak ki a további alkatalógusok, melyek szintén t artalmazhatnak ú jabb al katalógusokat és állományokat. A k atalógus-neveket egymástól a perjel ( / ) választja el. A U NIX m inden á llományhoz é s ka talógushoz hoz záférési j
ogokat r endel, ez zel ( 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 U NIX al att. T eljesen strukturálatlan, nincs sem rögzített, sem változó hosszúságú mezőkre, rekordokra bontva, nincs me gszabott h osszúsága, s emmilyen má s k orlátja n incs, a v égét n em je lzi s emmilyen speciális k arakter - akkor va n vé ge, a mikor m ár nincs mit olvasni belőle. A fájl tehát egyszerûen bájtok (karakterek) sorozata. A f ájlok e lnevezésénél 128 ka raktert ha sználhatunk, a ki s é s na gybetûk köz t 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 • adat • végrehajtható ∗ bináris ∗ 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 k atalógusok fájlok egy m ásik f ájltípus. E z a zt je lenti, h ogy a U NIX -ban a katalógusok is fájlokban találhatóak. Annyi a különbség, hogy e fájloknak a kezelésére külön parancsok szolgálnak. Ezért lehet kijelenteni, hogy a UNIX -ban minden fájl ! B.6 A szabványos algoritmus építőelemek, szekvencia, szelekció, iteráció. Algoritmusábrázolási technikák (bemutatásuk valamelyik tetszőlegesen választott technikával,
megvalósításuk a Pascal nyelvben). (!!! Ennek a vége kissé zavaros, át kell nézni jól főleg a Pascal-os megvalósítást!!!) Az al goritmus ( lépéssorozat), o lyan el õírás, am ely s zerint v alamely f eladat v éges számú l épésben m egoldható. E gy feladatnak a számítógépen v aló m egoldása ér dekében a feladatot jól definiált elemi lépések sorozatára bontják. Az a lgoritmust e lõre m eg k ell te rvezni, h ogy jó l h asználható, á ttekinthetõ é s s zilárd szerkezetû legyen. A probléma megoldása tulajdonképpen a részproblémák helyes sorrendben való megoldását jelenti. Szekvencia: Egy p rogramban a kül önbözõ r észprogramok s zekvenciát, a zaz s orozatot a lkotnak, a mi a zt jelenti, hog y egymás ut án l épésrõl-lépésre h ajtjuk v égre a r észprogramokat. A z eg yszerû utasítások n em t artalmazhatnak m ás u tasításokat. F eltétel n élküli u grás, ér tékadás, eljárás, függvényhívás, üres utasítás.
f1 f2 f3 Szelekció: A f eltételes p rogramrészleteket i lletve a f eltételesen v égrehajtandó u tasításokat s zelekciónak nevezzük. A s zelekció s egítségével a p robléma megoldása es etekre b ontható, el ágaztatható (pl.: kétágú szelekció) és így a feladat megoldása egyszerûsödik Az a szerepe, hogy bizonyos utasítások(ok) végrehajtása csak valamilyen feltétel teljesülése esetén következzen be. c1 f1 c cn c2 f2 . fn Iteráció: Valamilyen el járás i smételt v égrehajtása ( ciklikus t evékenység) ú gy, h ogy egy-egy végrehajtás er edménye képezi a k övetkezõ v égrehajtás b emeneti p araméterét. S egítségével akár t öbb m illió m ûveletet i s e lvégezhetünk egy rövid ut asítássorozattal. A z ite ratív részmegoldások alkalmazása a probléma iteratív szerkezetének feltárása révén válik lehetõvé. Így az algoritmus ne m c sak r övidebbé, ha nem j óval á ttekinthetõbbé i s t ehetõ. A s zerkezet
feltárásához ál talában a z ad atok el emzésén k eresztül v ezet az ú t. Az iteráció lehet : előtesztelő (REPEAT.UNTIL), hátultesztelő (WHILEDO), és növekményes (FOR ciklusos) hamis igaz f1 Ábrázolási technikák Folyamatábra: A f olyamatábra e gy f eladat m eghatározásának, el emzésének, m egoldási m ódjának o lyan egyezményes g rafikus ábrázolása, ah ol a m ûveleteket, az ad atokat, a k apcsolatokat, az eszközöket megállapodás szerinti jelképek ábrázolják. Két fajtája van: - Az adat-folyamatábra az adatoknak a f eladatmegoldás folyamatában "megtett útját" ábrázolja, feltüntetve a fontosabb feldolgozási szakaszokat és az adathordozókat. - A program-folyamatábra egy program mûveleteinek láncolatát ábrázolja. VAGY Az al goritmus k ifejezõ, k épi áb rázolása a f olyamatábra. A z al goritmus e gy-egy lépésének a f olyamatábrán e gy-egy s zimbólum f elel m eg., a l épések i dõbeli egymáshoz va ló vi
szonyát p edig a f olyamatábra m egfelelõ s zimbólumainak egymáshoz v iszonyított s íkbeli el helyezkedésével, i lletve ö sszekapcsolásával ábrázoljuk. A folyamatábráknak két csoportját különböztethetjük meg: - Áttekintõ. A probléma során gyakran részproblémákat definiálunk, ilyenkor is készül folyamatábra , de itt a folyamatábra lépéseinek egy-egy kitûzött részfeladat felel meg. - Részletezõ. A kitûzött részfeladatokat bontja fel lépésekre a probléma megoldásához A folyamatábra jelei: utasítás folyamat iránya n output i Start End részfeladat Stuktogram: A pr ogramozás l egújabb vá zlata, m ely e gyre i nkább f elváltja a f olyamatábra h asználatát. Segítségével bon yolult programozási f eladatok i s á ttekinthetõen á brázolhatók. A s oftware fejlesztõjét strukturált programozásra kényszerítõ segédeszköz, mely a gyakorlatban egy vagy több struktúrablokkból áll. összeadni i feltétel n A
blokk B blokk változó 1 2 3 é r t é k A B C blokk feltétel A blokk . Jackson ábra: A módszerben ajánlott konvenciórendszerek használatától lesz Jackson a Jackson. A program szabványos építõelemekbõl felépíthetõ - szekvenciák - szelekciók - iterációk. A módszer alapján gondolkodással: - A szóba kerülhetõ események rendezése, elemi eseményekre bontása. - Az események sorszámozása a bekövetkezés sorrendjében. - A programnyelvtõl függetlenül végrehajtható. - Segít a logikai és szintaktikai hibák kizárásában. * S + o o - o o 0 o 1 o o . 9 o Az u tasítás mik routasítások s orozatát je lenti. A mik routasítás o lyan e lemi szintutasítás, amely a számítógépet közvetlenül vezérli. A program mikroutasítások sorozata A Pascalban megkülönböztetünk strukturált és strukturálatlan utasításokat. Strukturálatlan utasítások: Strukturálatlan utasítás az úgynevezett egyszerû utasítás, amely nem
tartalmaz másik utasítást, szimbólumot és nem ír elõ tevékenységet. • egyszerû utasítás = [(értékadó utasítás / eljárás utasítás / GOTO utasítás)]. Ilyen utasítás például az értékadó utasítás, az eljáráshívás, a vezérlésátadás. • Üres utasítás: Nem j elent s emmilyen t evékenységet. C supán t echnikai j elleggel al kalmazzuk, p éldául o tt, ahol szintaktikailag utasításnak kell állnia, de logikailag semmit sem kell végrehajtani. • Értékadó utasítás: Egy v áltozó p illanatnyi é rtékének e gy ú j értékkel v aló f elülírására s zolgál. A k ifejezés kompatibilis a vá ltozó v agy a f üggvény t ípusával. A z é rtékadó ut asítás s orán a b al ol dalon álló változó felveszi a jobb oldal értékét. értékadó utasítás = (változó/függvénynév) " := " kifejezés. • Eljárás utasítás: A be nne m egadott e ljárás a ktivizálására s zolgál. K ülsõ bl okkból l ehet meghívni ve
le a z eljárást. Eljárás utasítás = eljárásnév [aktuális paraméterlista]. eljárásnév = név. • GOTO utasítás: Azt jelzi, hogy a feldolgozás a program egy másik pontján folytatódik. A címke érvényességi köre az adott blokk, csak az adott blokkon belül hivatkozhatunk a címkére. GOTO utasítás = "GOTO" címke. Strukturált utasítások: A s trukturált u tasítások a z ú gynevezett ö sszetett u tasítások, má s u tasításokból felépített s zerkezetek. E zeket v agy a l eírás s orrendjében (utasításcsoport), v agy f eltételesen (feltételes u tasítás), v agy ismételve ( ciklusutasítások), v agy kiterjesztett k örben ( WITH utasítás) hajtjuk végre. Az ut asításcsoport kom ponensei ol yan ut asítások, a melyeket a l eírásuk s orrendjében kell végrehajtani. Az utasítás sort mindig Begin - End szó pár közé kell tenni • Feltételes utasítások: A feltételes utasítás a komponensei közül kiválaszt egy
utasítást, hogy azt végrehajtsa. feltételes utasítás = IF utasítás / CASE utasítás. IF utasítás: Szerepe, hog y bi zonyos ut asítások vé grehajtása c sak va lamilyen feltétel t eljesülése es etén következzen be. Az utasítás összetett utasítás is lehet és újabb IF utasítás is lehet egyágú szelekció: IF feltétel THEN utasítás kétágú szelekció: IF feltétel THEN utasítás ELSE utasítás CASE utasítás: A C ASE u tasítás t öbbirányú f eltételes el ágazás, ah ol cs ak az el sõ o lyan ág h ajtódik v égre, ahol a s zelektor ér téke b eleesik a m egadott t artományba. A z E LSE - re, akkor kerül s or, h a egyik á g s em t udott vé grehajtódni. H a a z ut asításban ni ncs E LSE, a kkor e lõfordulhat, hog y egyik ág sem fog végrehajtódni. CASE szelektor OF állandó : utasítás; állandó : utasítás; . ELSE utasítás; • Ciklusutasítások: REPEAT utasítás: A c iklus e gészen a ddig is métlõdik, a míg n em te
ljesül a k ilépési f eltétel. A c iklus min imum egyszer végrehajtódik. REPEAT utasítás; utasítás; . UNTIL kilépési feltétel WHILE utasítás: A ciklus végrehajtása addig ismétlõdik, ameddig a feltétel értéke igaz. Ha a b elépési feltétel nem teljesül, akkor a ciklus egyszer sem kerül végrehajtásra. WHILE belépési feltétel DO utasítás. FOR utasítás: A ciklust mindaddig végre kell hajtani, amíg a ciklusváltozó a megadott értéken belül van. TO esetén a ciklusváltozó sorszáma eggyel nõ, DOWNTO esetén eggyel csökken. FOR ciklusváltozó:= kezdõérték TO/DOWNTO végérték DO utasítás WITH utasítás: Az ut asítás a r ekordkezelés e gyszerûsítésére s zolgál, áttekinthetõbbé t eszi a pr ogramot. A változó azonosító rekord vagy objektum azonosítója lehet. WITH változó-azonosító,. DO utasítás B.7 A típus, mint halmaz A Pascal nyelv standard típusainak ismertetése. A felhasználó által definiált típus fogalma
A rekord típus. A típus fogalma: A pr ogramok a datait vá ltozókkal j elöljük. A vá ltozókat t ulajdonságaik s zerint 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 b eépített t ípusok, va lamint m i i s 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. A var részben csak már ismert típusú változókat deklarálhatunk. Az új t ípusok de finiálása az e zt m egelõzõ t ípusdefiníciós r észben - type történik A Pascal nyelv adattípusai: 1. egyszerû • sorszámozott ∗ egészek ◊ Integer ◊ ShortInt ◊ LongInt ◊ Byte ◊ Word ∗ logikai - BOOLEAN ∗ karakter - CHAR ∗ felsorolt ∗ intervallum • valós ∗ Real ∗
Single ∗ Double ∗ Extended ∗ Comp 2. összetett adattípusok (strukturált): • tömb - ARRAY • rekord - RECORD • állomány ∗ szöveges - TEXT ∗ tipusos - FILE OF tipus ∗ tipus nélküli - FILE • halmaz - SET • objektum - OBJECT 3. mutató • tipusos - ^tipus • tipus nélküli - POINTER 4. eljárás - FUNCTION / PROCEDURE 5. karakterlánc - STRING A felhasználó által definiált 2 típus: felsorolt és intervallum! Ha e gy t ípust de finiálunk, a kkor e zzel m egmondjuk, hog y a z e hhez a t ípushoz t artozó változók milyen értéket vehetnek fel, s milyen mûveletek végezhetõk velük. A típus definíció egy nevet kapcsol össze egy típussal. Új t ípusok de finiálására kül ön t ípusdefiníciós r ész s zolgál, a mely a d eklarációs r észben található. E zt a r észt a type szó ve zeti be E zután de klaráljuk a kül önbözõ t ípusokat Szintaxisa: a t ípus ne vével, a zonosítójával ke zdünk, e zt e gy e gyenlõségjel,
ma jd a típ us definíciója követi. Minden deklarációt pontosvesszõ zár le Type újtípus = létezõ típus; A definíciónak két módja van: 1. A típusnak más ismert típusokból való felépítése 2. A hozzárendelhetõ értékek halmazának definiálása Ez utóbbi lehet egy létezõ típus résztartománya, halmaz definiálása, vagy a lehetséges értékek felsorolása. A f elsorolt t ípusnál a l ehetséges ér tékeket e gymástól v esszõvel v álasztjuk el , az egész listát pedig zárójelbe tesszük. A n yelvben l évõ b eépített standard t ípusokat nem ke ll de klarálni, d e a t ulajdonságaiknak ismerete nagyon fontos. Type egesz = integer; tomb = array [1.100] of byte; betu = set of char; ketjegyu = set of 10 .99; ido = record ev : 1000.2000; ho : (jan,feb,marc,apr,maj,jun,jul,aug,sep,okt,nov,dec); nap : 1.31; ora : 1.12; perc,mp: 1.60; end; evszak = (tavasz,nyar,osz,tel); szamjegy = ‘0’.’9’; Standard típusok: INTEGER típus Az integer
adattípusai az egész számok halmazából kerülnek ki. A Pascal nyelv hat féle egész típust i smer: b yte, s hortint, w ord, i nteger, l ongint, c omp. Integer a datokkal a köv etkezõ mûveletek vé gezhetõk: ös szeadás ( +), ki vonás ( -), s zorzás ( *), e gész os ztás ( div), m aradék elõállítása ( mod), o sztás ( /), v alamint a r elációs m ûveletek: na gyobb ( >), na gyobb va gy egyenlõ (>=), kisebb (<), kisebb vagy egyenlõ (<=), egyenlõ (=), nem egyenlõ (<>). CHAR típus Alapvetõen kétféle szöveges típus van: a char és a string típus. A string-ek egy típuscsaládot alkotnak, mivel hosszúságuk szerint többféle típusú stringet különböztetünk meg. A szövege típusok közös jellemzõje, hogy alkotóelemeik karakterek, az ASCII karakterkészlet elemei. BOOLEAN típus Más né ven l ogikai a dattípus. C supán ké t kons tans t artozik ho zzá a true (igaz) és a false (hamis). A l ogikai kons tansok i s s orrendbe
állíthatók: f alse < t rue Igen f ontos, hog y egy relációs mûvelet mindig boolean típusú értéket állít elõ. Csak logikai értékekre alkalmazható mûveletek: a nd ( logikai "és", k étoperandusos m ûvelet), or (logikai "vagy", ké toperandusos mûvelet), not (logikai "nem", egyoperandusos mûvelet). A RECORD típus A rekord olyan strukturált típus, mely adott számú és típusú komponensbõl épül fel. A típus definiálását a Record kulcsszó vezeti be, a mezõk felsorolása után pedig az End szó zárja. A deklaráció a type részben t örténik. A r ekord t ípus a lkalmazása t öbbnyire a há ttértárakhoz kapcsolódik. A rekord t ulajdonképpen egy összetartozó i nformáció köt eg, a melyre hivatkozhatunk, m int e gészre é s hi vatkozhatunk bá rmely ös szetevõjére kül ön-külön i s. A z összetevõk e gymástól f üggetlenül t etszõleges t ípusúak i s l ehetnek. A r ekordelemre n évvel hivatkozunk.
B.8 A tömb fogalma, deklarációja a Pascal nyelvben Belső rendezési algoritmusok. Rendezés indextömb segítségével ( !!! Ebben is vannak hibák. A Rendezés indextömb segítségével részben nem kell állományokról beszélni. Amit az erdélyi tagozatokon adtak I és II Pascalos halgatói segédleteket (fóliamásolatokat) azokban minden szépen megvan. Biztos a magyarországi tagozatokéban is benne kell legyen !!!) A Pascal nyelvben négyféle összetett adattípus van: - tömb, - rekord, - állomány, - halmaz. A tömb fogalma: A t ömb e lemek e lrendezése e gy v agy t öbb d imenzió m entén. N d imenziós e lrendezés leírására az N dimenziós tömb alkalmas. Az egyes elemeknek minden dimenzió mentén index jelöli ki a pozícióját. Az N dimenziós tömbben egy elemet a tömb neve és N darab indexérték azonosít. Tömbdeklaráció: A deklaráció egy nevet rendel a konstanshoz illetve változóhoz és megnyitja a jogot a névnek a programban való
használatára. A tömbdeklaráció során az adattömbökhöz is egy nevet kell rendelni, de ezen kívül itt még a tömbelemek számát is rögzíteni kell. A deklarálást az Array kulcsszó ve zeti be , a t ömb e lemtípusát pe dig a z Of kulcsszó ve zeti be . A t ömböt a zonosító nevet pedig a var részben kell megadni. Általános alak: var változónév : Array[const1 . const2] Of típusnév; Ahol a vá ltozónév t etszõleges a zonosító l ehet, ez l esz a t ömb ne ve; a típusnév m egadja a tömbelemek köz ös t ípusát; a c onst1 . const2 pá r pe dig m eghatározza a z i ntervallumot, a z indexek mozgásterét. Indexes változók: A t ömb el emeihez az i ndexes változók használatával férhetünk hoz zá. Az i ndexes változó a tömb a zonosítójából é s az i ndexkifejezésbõl á ll. A z indexkifejezés e gyszerûbb e setben e gy egész típusú konstans vagy változó, de tetszõleges aritmetikai kifejezés is lehet, de értékének
mindenféleképpen a tömbdeklarációban szereplõ alsó és felsõ indexhatár közé kell esnie. A tömb elemeinek tárolása a memóriában: A t árolás s orfolytonosan t örténik, e lõbb a be lsõ index növe kszik. A f oglalt m emóriaterület méretét az alaptípus mérete és az egyes indextípusok számossága határozzák meg. A t öbbméretû t ömbök t árolásával k apcsolatban f elmerül a p robléma az el emek t árolási sorrendjérõl. T öbbé-kevésbé e gyértelmû, h ogy az eg yméretû t ömbök el emei a m emóriában egymás ut án t árolódnak. A ké tméretû t ömbök e setében t udnunk ke ll, hog y a m emóriában azonos sor- vagy azonos oszlopindexû elemek foglalnak-e helyet egymás után. A t árolásmód m egfelel a nnak, a hogyan á bécérendbe r endezett a datokat ( pl. e gy né vsor adatait) tárolunk. Ez az úgynevezett lexikográfikus tárolás Vagyis a felsorolásnál az elsõ betû csak akkor változik meg, ha az utána következõ
betû összes kombinációit kimerítettük. A másik tárolási mód az úgynevezett sorfolytonos tárolás, ami azt jelenti, hogy elsõ helyen áll az elsõ sor, majd a második, a harmadik stb. A t ömb ol yan a dattárolási f orma, amelynek fix s zámú e leme va n és m inden e lem a zonos típusú. Egy N-dimenziós tömb deklarálásának szintaxisa: tömbnév : Array[i1.j2, i2j2, ,injn] of elemtípus; A di menziók s zámára ni ncs m egkötés. H a n >1, akkor t öbbdimenziós t ömbrõl be szélünk A tömb elemeihez való hozzáférést indexek segítségével valósítjuk meg. Változók nem lehetnek indexhatárok. Az indexek csak egész, felsorolt és résztartomány típusok lehetnek A t ömb h elyfoglalása a m emóriában egyenlõ az el emszám és az el em h elyfoglalásának a szorzatával. A t ömb e lemei a m emóriában ol y módon he lyezkednek e l, hog y egymás ut án azok a z e lemek köve tkeznek, a melyek c sak a z ut olsó i ndexükben kül önböznek. E
zután a sorrendiséget a z ut olsó e lõtti i ndex s zabja m eg, é s í gy t ovább, a z e lsõ i ndexig. T ehát a memóriában a sorrend - az elemek rendezésének az alapja - az indexek szerint jobbról balra valósul m eg. K étdimenziós ( oszlop - sor) t ömböknél e zt a z á brázolást s orfolytonosnak nevezzük, mivel egy sor elemei egymás mellé kerülnek a memóriában. E m emóriaszerkezet a lapján a T urbo r endszer a t ömb e lemeinek hos szából, a t ömb memóriabeli kezdõcímébõl ki tudja számítani ez egyes tömbelemek kezdetét a memóriában, az un. Címkiszámító függvény segítségével A tömbök rendezésének algoritmusai: Közvetlen elemmozgatásos rendezés: • minimumkiválasztásos • beszurásos • maximumkiválasztásos • buborék • gyorsrendezés Indextömbös rendezés Ha be tudjuk határolni a komponensek számát, és azok beférnek a memóriába, akkor rendezést végezzük el a m emóriában. Ebben az esetben a r endezésnek
három fázisa van Az elsõben be olvassuk az ös szes e lemet a m emóriába, a m ásodik a be olvasott r ekordokat rendezzük, vé gül a r endezett r ekordokat a l emezre í rjuk. A r endeléshez bá rmely i smert algoritmust alkalmazhatjuk, mint pl.: minimum-kiválasztásos, buborék, shell rendezés Minimum-kiválasztásos rendezés Legelőször kiválasszuk az egész tömb legkisebb elemét, ezt kicseréljük a legelső elemmel. Ezt folytatjuk a következő elemekkel, sorra a 2, majd 3, 4 stb egészen addig, amíg elérünk az utolsó előtti elemig. Ha ez nagyobb, mint az utolsó elem, akkor a kettőt kicseréljük, ha nem, akkor úgy marad, és ezzel a tömb növekvő sorrendbe van rendezve. Beszúrásos rendezés Feltételezzük, hogy létezik egy rend, mely szerint sorba kell rakni. Az első elemet úgy vesszük, hogy rendezve van. A következő elemet az elsőhöz viszonyítva jó helyre tesszük Majd a harmadik elemet az elsőkhöz viszonyítva szintén a helyére
tesszük. Ezt ismételjük az utolsó elemig, mindegyik elemnek megkeresve a helyét a már rendezett sorban, és oda téve. Rendezés indextömb segítségével Sok memóriát t udunk s pórolni, ha c sak azokat a kul csadatokat ol vassuk be a m emóriába melyek résztvesznek a rendezési sorrend megállapításában. A rendezendõ tömb elemei most un. kul csrekordok l esznek A kul csrekord t artalmaz e gy i ndexet, m ely a kul cshoz t artozó komponens á llománybeli poz íciója. A z i ndexeket é s kul csokat t artalmazó t ömböt indextömbnek szokás nevezni. A kulcstömb rendezése után az indexek alapján beolvassuk az eredeti r endezetlen ál lományból a r ekordokat, m elyeket s zekvenciálisan f elírunk az ú j rendezett ál lományba. E zt a m ódszert ak kor al kalmazzuk, h a a r endezendõ ál lomány ö sszes rekordja számára nincs hely a memóriában, de a kulcsrekordok még mind elférnek. B.9 Az eljárás és a függvény fogalma Aktuális és formális
paraméterek. Az átvétel fajtái a Pascal nyelvben A lokális és globális azonosító fogalma. Az UNIT (egység) fogalma a Pascal nyelvben. Egy adott probléma megoldásának a során célszerû, ha programunkat jól elkülönített, zárt e gészet a lkotó r észprogramokból é pítjük fel. E zeket a r észprogramokat ne vezzük alprogramoknak. Ilyen alprogram a függvény és az eljárás is Egy külön definiált alprogramra a f õ pr ogramrészben c sak hi vatkoznunk ke ll. A z a lprogram d eklarációs r észe t artalmazhat még újabb alprogram deklarációkat is. Egy alprogram létrehozása akkor válik szükségessé, ha egy t evékenység a pr ogram f utása s orán t öbbször e lõfordul va gy e gy t úl na gy pr ogramot a jobb ol vashatóság ke dvéért t agolni s zeretnénk. A z a lprogram a z i nput adatokat ( kivétel a beolvasás és a kiírás) a fõprogramtól kapja és az eredményt is annak adja vissza. Az eljárások és a függvények - közös nevükön
alprogramok - a program önálló részei. Ezeket e gy kül sõ blokkból m eg l ehet hí vni, eg y el járás-utasítással ( illetve függvényutasítással). Ekkor az alprogram végrehajtásra kerül, majd a végrehajtás folytatódik, annál az u tasításnál, am ely az al program m eghívását k öveti. A f üggvényeljárást az különbözteti m eg a z e ljárástól, hog y van egy visszatérési ér téke, am elyet v égrehajtása u tán eredményül visszaad annak a blokknak, amelybõl meghívtuk. Az eljárás fogalma: Az el járás s egítségével e gy p rogramrész v agy egy teljes p rogram e gy m ásik programba egy ut asítással be építhetõ. E lõször d eklarálni k ell az el járást, m ajd a d eklarált eljárás a p rogramból h ívható az ú gynevezett el járáshívás u tasítással. A z el járás s zerkezete hasonló a p rogram szerkezetéhez. Különbség cs ak az eljárás fejében v an és a z áró End után pontosvesszõt írunk pont helyett. Egy
eljárás ismeri: - az eljárás deklarációs részében levõ eljárásokat, de azok eljárásait már nem, - ugyanabban a deklarációs részben korábban deklarált eljárásokat, - az õt tartalmazó eljárásokat, - saját magát, melynek a rekurzív hívás esetében van jelentõsége. Az eljárás egy olyan alprogram, amely egy elõírt mûveletsort végez el. Külön értéket nem r endel az el járás nevéhez, í gy k ifejezésekben n em h asználható a n eve. A z el járás, nevének l eírásával au tomatikusan v égrehajtódik, m ajd a v ezérlés v isszatér a hí vást köve tõ utasításra. A z e ljárással több e redményt is e lõállíthatunk, e llentétben a f üggvénnyel, me ly csak e gyetlen é rtéket h atároz m eg. A z er edményeket k ülönbözõ k imeneti p araméterekben helyezhetjük el. A formális paraméterlista az eljárásnál elhagyható, de ha megadtuk, akkor az aktuális paraméterlistának meg kell egyeznie a formális paraméterlistában
felsoroltakkal. A f üggvény s okban ha sonlít a z e ljáráshoz, a zzal a kül önbséggel, hog y visszaad e gy értéket, me lynek e lõre meghatározott típ usa k ell le gyen. A v isszaadott ér tékre a f üggvény azonosítójával hi vatkozunk. A vi sszaadott é rték t ípusa c sak e lõre de finiált t ípus va gyis típusazonosító lehet. A P ascal pr ogramban v annak ú gynevezett s tandard e ljárások. E zek e lõre definiáltak, így azok a pr ogramok, melyek r észei a rendszernek az el járás-név m egadása u tán automatikusan végrehajtják azt. Egy eljárás végrehajtásánál nagy szerep jut a v eremnek, mert itt keletkezik az eljárás összes l okális v áltozója. A r endszer az el járásba v aló b elépés el õtt a veremre h elyezi a visszatérési c ímet, hog y a z e ljárásból va ló ki lépéskor m ajd t udja hova kell vi sszatérnie. A veremszegmens i deiglenes ad atok t árolására s zolgáló m emóriarész. A z ad attárolás
veremszerûen m ûködik, a zaz e lõször a z ut oljára be tett a datot t udjuk ki venni. E gy ve rem mérete maximum 64 kbyte lehet, de alapértelmezésben csak 16 kbyte. Ha a verem megtelik a program futási hibával leáll. Az eljárás feje a Pascalban: procedure eljárás-azonosító[(formális paraméterlista)]; Az el járásfej d eklarálásakor a p araméterlistában r észtvevõ vá ltozókat formális paramétereknek nevezzük. A z aktuális par améterek pe dig azok, a melyekkel m eghívjuk a z eljárást. A z eljárás i s e gy blokk, am ely egy d eklarációs r ésszel k ezdõdik, ez t a v égrehajtási rész k öveti. A z ak tuális és a formális p aramétereknek ál talában az onosnak k ell l enni darabszám, típus szerint. Ezeket a standard eljárásokat következõképpen csoportosíthatjuk: 1. Matematikai függvények és eljárások 2. Szöveges típusokhoz kötõdõ eljárások és függvények 3. Konverziós függvények 4. A dinamikus változók függvényei
és eljárásai 5. Cím függvények 6. Általános célú eljárások Ezek az eljárások illetve függvények mind az úgynevezett system unit-ban találhatók. Ez a legfõbb rendszerkönyvtár és erre nem kell külön hivatkozni a ‘uses’ deklarációban, ez a unit m inden pr ogramhoz m indig hoz zá l esz s zerkesztve. A s ystem uni ton kí vül a z a lábbi standard kön yvtárak va nnak, a melyekben e gy-egy t émakörhöz t artozó e ljárások é s függvények találhatók. 1. CRT: A ké pernyõt, s zíneket, a blakokat, a bi llentyûzetet, a ha ngokat generáló c hip-et, a képernyõs I/O m ûveleteket ke zelõ s tandard e ljárásokat, f üggvényeket, vá ltozókat é s konstansokat tartalmazza. 2. DOS: A DOS-hívásokat tartalmazó modulok gyûjteménye 3. GRAPH: Több m int 5 0 g rafikus m odult t artalmaz, a melynek a kül önbözõ g rafikus eszközöket - pl. C GA, EGA, H ercules ká rtyákat - tudják ke zelni E z a uni t ha sználja a CRT uni t-t. E zek köz t
va nnak bi t-orientált, e gyeneseket r ajzoló, pol igonfestõ, s tb modulok. 4. OVERLAY: A zokat az el járásokat, függvényeket, d eklarációkat tartalmazza, am elyek a Turbo rendszer átlapolási technikáját tartalmazza. 5. PRINTER: E bben v an d eklarálva az LST t extfile-változó, a mely hoz zá va n r endelve a z LPT1 egységhez. 6. GRAPH3: A zokat a grafikus m odulokat t artalmazza, a melyeket a T urbo 30 r endszerhez fejlesztettek ki, pl. turtle-grafikát 7. TURBO3: Ez a unit tartalmazza az elõre definiált KBD file-változót, a C BREAK l ogikai változót, va lamint a M EMAVAIL é s a M AXAVAIL függvények a zon ve rzióit, a melyek paragrafusokban adják meg a szabad helyet. Standard és felhasználói eljárások: Standard eljárások az úgynevezett beépített vagy elõre definiált eljárások. Pl.: A datállomány k ezelõ e ljárások: R ESET(F), REWRITE(F), R EAD, WRITE, R EADLN, WRITELN, Dinamikus tárfoglaló eljárások: NEW(P), DISPOSE(P). A
felhasználói eljárások alatt azokat az alprogramokat illetve függvényeket értjük, amelyeket a felhasználó készít el általában a beépített függvények, illetve eljárások segítségével. Formális paraméter: Az el járásfej d eklarálásakor a p paramétereknek nevezzük. araméterlistában r észtvevõ v áltozókat f ormális Aktuális paraméter: Az aktuális paraméterek azok, amelyekkel meghívjuk az eljárást. Csak változó lehet Paraméter átadás, átvétel: Paraméterátadás = a hívásban megadott aktuális paraméterek hogyan "találnak rá" a megfelelõ paraméterekre. A Pascalban kétféle paraméterátadás létezik: a cím szerinti és az érték szerinti Kétféle p araméterátadás létezik a cím szerinti és az érték szerinti. P araméter á tvételkor e gy fiktiv ér tékadásra k erül s or, ér tékszerinti es etében a f ormális p araméter felveszi az ak tuális paramjter értékét, cím szerinti esetén az eljárás,
függvény az akt. paraméter címét veszi át, és azon a tárterületen fog dolgozni. 1. Cím szerinti pa raméterátadáson a zt é rtjük, hogy a pa raméterek a kül sõ i ll be lsõ blokkokban fizikailag ugyanazokat a változókat tartják, a tárban is ugyanazon a címen találhatók. Így az a lprogramban a z e zeken a vá ltozókon vé grehajtott bá rmilyen mûvelet m egváltoztatja a hí vó pr ogramban i s e vá ltozók é rtékeit. A z i lyen t ípusú paraméterátadás deklarálásakor a paraméter elõtt a ‘var’ szó áll. Procedure(var a1,a2 : word); 2. A p araméterátadás m ásik m ódja az érték szerinti p araméterátadás E z az t , h ogy az aktuális és a f ormális p araméterek k ülön h elyet f oglalnak 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 h atással az ak tuális p araméterekre, am elyek az al program aktivizálása u tán i s megtartják az eredeti
értéküket. Csak o lyan v áltozó l ehet p araméter, am elynek t ípusa k ülön nevet v isel, az az am elyet meghatároztunk a típusdefiníciós részben, kivéve a beépített típusokat. Az alprogramokat a következõképpen deklaráljuk. Az eljárás deklarációja a procedure szóval ke zdõdik, m ajd s zóköz ut án a z e ljárás ne ve köve tkezik. E zután j ön e gy opc ionális, zárójelek közé zárt paraméterlista, amely után pontosvesszõ áll. Ez általában az eljárás véget jelöli, de speciális esetekben mindezek után még egy kulcsszó állhat, pontosvesszõvel lezárva. Pl : (externál, inline, forward, virtuál, interrupt). Procedure pelda(var a1,a2 : word ; var b1 : real ; c1 : char); Hívása : pelda(300,200,315.23,’c’); A függvény fogalma: A f üggvény egy o lyan programrész, amely ad ott b emeneti p araméterekbõl e gyetlen értéket s zámít k i, és az t h ozzárendeli az az onosítóhoz. A f üggvény az a lprogramok azon típusa,
ahol az alprogramot azonosító névnek kettõs funkciója van: - A függvény aktivizálása és végrehajtása. - A neve egyben egy változó is, amelynek értékét maga állítja elõ a végrehajtás során. A függvény hívásra ugyanúgy végrehajtódik, mint az eljárás. Annyi a különbség, hogy a függvény azonosítója eg y érték: a f üggvény visszatérési értéke. Az eljárással ellentétben a függvény kifejezésekben is használható, pl. értékadó utasításban a jobb oldalon A függvény deklarációs része ugyanaz, mint az eljárásé. A függvény blokkjában a függvény-azonosítónak értéket kell adni. Az utoljára adott érték lesz a f üggvény visszatérési értéke Értékadás nélkül a f üggvény d efiniálatlan le sz. A s zintaktika me gköveteli a z a ktuális p araméterlistát, h a v an Ellenkezõ esetben elõfordulhat a verem túlcsordulása. A függvény feje a Pascalban: function függvény-azonosító [(formális
paraméterlista)]:típusazonosító; A típusazonosító csak sorszámozott, valós, karakterlánc vagy mutató lehet. A függvény hívása: függvényazonosító[(aktuális paraméterlista)] A Pascalban vannak a standard eljárások mellett standard függvények is, például: CHR, EOF, EOLN stb. A f üggvényeljárások es etén a function szót ha sználjuk de klaráláskor, és a bl okk fejében jelezni kell a függvény értékének típusát. Ez csak egy már definiált típus lehet Function pelda(var i1,i2,i3 : integer; r1,r2 : real) : integer; Hívása : i:=pelda(100,200,300,10.5,205); Mind a z e ljárások é s mind a f üggvények ön magukból m eghívhatók. E zt a h ívást nevezzük r ekurzív hí vásnak. E bben a z e setben a vi sszatérési c ímek é s a vá ltozók új ból a verembe ke rülnek, t ehát f ennáll a ve szélye annak, hog y a ve rem t úlcsordul. R ekurzív h ívás esetén ez ért m eg k ell ad ni a l ehetõséget ar ra, hogy a v erem k iürüljön.
E rre a kkor va n lehetõség, ha a blokk záró End-jére kerül a vezérlés. Azonosítók a PASCAL nyelvben: A pr ogramnak a zt a részét, a melyben e gy azonosító de finiálva va n, a z a zonosító hatáskörének ne vezzük. A P ASCAL-ban egy vá ltozó ha tásköre a z a bl okk, a melyben deklaráltuk és m inden ol yan al-blokk, amelyben az azonosítót nem deklaráltuk új ra. Lokális egy változó abban az alprogramban, amelyben deklaráltuk. Az olyan azonosítókat, amelynek hatásköre s zélesebb e gy alprogramnál, nemlokálisnak ne vezzük. A z olyan azonosítókat, amelyeket az egész programra érvényes hatáskörrel definiálunk, globálisnak hívjuk. A P ascal n yelv t etszõleges hos szúságú azonosítót i s m egenged. E zek na gy és kisbetûkbõl, s zámjegyekbõl ké pezhetõk, de ne m t artalmazhatnak s peciális ka raktereket és szóközöket, s nem kezdõdhetnek számjeggyel. A fenntartott szavak és szabványos azonosítók nem használhatók
programozói adatnévként. Egy azonosító j elentése attól f ügg, ho gyan de finiáljuk a zt a z e ljárásban, amelynek a fejében l évõ d eklarációs u tasítás s zerepel. H a u gyanazt a n evet e gy m ásik al program használja, egy másik változó jön létre, azaz a név egy másik memóriapozícióra hivatkozik. Az ilyen vá ltozók l okálisak abban a z a lprogramban, amelyben de klarálták õke t. H asználatukkal lehetõség n yílik a z információ t öbb a lprogram köz ti m egosztására a nélkül, hog y a paraméterlistát használni kellene. Az azonosító szolgálhat: - program - egység - eljárás - függvény - metódus - címke - konstans - típus - változó - rekord- és objektummezõ azonosítására. Az egység (UNIT) a programok ol yan része, melyet elõre m egírhatunk és lefordíthatunk. A lefordított kód m érete ug yanúgy, m int a f õprogramé, m aximum e gy s zegmensnyi ( 64 k B) lehet. Programunkhoz akárhány egységet
szerkeszthetünk, a program teljes méretének csak a memória n agysága s zab h atárt. A z eg ység k észítése a T urbo P ascalban a m oduláris programozás a lapja. J ól de finiált ka pcsolódási f elületen ( interface) ke resztül ka pcsolódik a program más részeihez. A Turbo Pascal rendszer nyolc szabványos modullal rendelkezik: • SYSTEM - automatikusan hozzákapcsolódik minden TP prg-hoz. • DOS • CRT • PRINTER uses hivatkozás szükséges az eléréséhez. • GRAPH • OVARLAY • TURBO3 • GRAPH 3 CRT DOS Elsõsorban a ké pernyõ szöveges üz emmódját t ámogató e ljárásokat és f üggvényeket tartalmaz. • kurzor pozícionálása • használt színek beállítása • ablakok létrehozása • billentyûzet, speciális elérésének lehetõsége • hanggenerátor MS-DOS ope rációs r endszer l ehetõségeinek ha tékony kiszolgálására s zolgáló eljárások és függvények gyûjteménye. GRAPH A ké pernyõ grafikus üzemmódját t
ámogató t ípusok, kons tansok, e ljárások é s függvények készlete. OVERLAY Használata ak kor s zükséges, am ikor n agy p rogramok f ejlesztése es etén a z át lagolási technika h asználata s zükségessé v álik. A r endelkezésre ál ló s zabad m emória m éretét meghaladó méretû programok is készíthetõk (550-620 Kbyte). PRINTER Leegyszerûsíti a szöveges információk nyomtatását. SYSTEM Tartalmazza a szabványos Pascal nyelv eljárásait, függvényeit s azokat a TP rutinokat, melyek nem kerülhetnek más modulba. TURBO3 A TP. 30-ás verziójával való forrásnyelvû kompatibilitás miatt GRAPH3 tartalmazzák az új rendszerek. Az egységet használó program vagy egység csak az illesztõ részben megadott deklarációként ismeri. A k ifejtõ r ész az eg ység b elügye A z i nicializálható r észé el hagyható, ek kor cs ak a záró END-et kell írni. A használt egység azonosítóira csak a USES-ban történt felsorolás után hivatkozhatunk.
Ha két nagy több egység egymást kölcsönösen használja, akkor mindegyikben a másik (többi) használatára v aló u tasítást a z imp lementációs részben me g k ell a dni. E gy egység e gy programhoz vagy egységhez csak egyszer szerkesztõdik hozzá. B.10 Az állományok kezelésének alapfogalmai: állományváltozó, logikai és fizikai állománynév összerendelése, állományok megnyitása, adatforgalom, lezárása. A Pascal nyelv által kezelt állománytípusok. Típusos állományok karbantartása A f ile-hoz - annak deklarálásakor - egy azonosítót r endelünk hozzá. E zt file-változónak nevezzük. Az e módon definiált logikai file-t egy fizikai, a háttértárban létezõ file-hoz kell hozzárendelni az Assign eljárással. A file-változóval végrehajtott minden mûvelet erre a f izikai f ile-ra f og vona tkozni. A z á llományváltozó e gyértelmûen azonosítja a f ile-t a Programon belül. Állományváltozó deklarálása: VAR
állományváltozó: típus; Fizikai és logikai állománynév összerendelése: ASSIGN (változónév, file-név); A file megnyitása: a Reset vagy Rewrite végzi. A Rename, Erase, Truncate egy fizikai file-ot átnevez, töröl, ill. vág Írási olvasási mûveleteket a Seek, Read, Write eljárásokkal végezhetünk. Állomány lezárása CLOSE (állományváltozó) Lezárja az elõzõleg RESET, REWRITE vagy APPEND eljárással megnyitott F logikai állományt. Lezárás el õtt a m ég p ufferben l évõ adatokat k iírja az ál lományba, a k atalógust aktualizálja. Végül felszabadítja az állományhoz tartozó kezelõszámot további felhasználásra A mûvelet eredményessége $I- mellett az IORESULT függvénnyel lekérdezhetõ. Az adatforgalom az ad atok í rása, o lvasása, p ozícionálás m eghatározott el emére a f ile-nak. Az állománytípusok ismertetésénél részletesen szó lesz mindegyikről! A Turbo Pascal által kezelt állományok: Állományok
használatára a Turbo Pascal alapvetõen három lehetõséget kínál. 1. Szöveges állomány: Karakterekbõl f elépülõ sorokból á ll, a s orokat a koc si vi ssza/soremelés ( CR/LF) vezérlõkarakterek zárják. A szöveges állományra jellemzõ a s oros szervezés, a s orok változó hosszúságúak. A s orokat a s orvégjel ( CR/LF), a z á llományt á llomány vé gjel ( ^Z) z árja A z állományt egyszerre csak olvasni, vagy csak írni lehet. A deklaráció szintaxisa: szoveg: text; Megnyitása: csak olvasásra: csak írásra: hozzáírásra: RESET (file-változó) REWRITE (file-változó) (egy már meglevõ file-t ekkor felülír) APPEND (file-változó) Az aktuális pozíciót a file végére állítja, Írási mûveletek: WRITE ([VAR F: text] V1, [V2. ]) Kiírja a z a ktuális p ozíciótól ( V1, V2) a k ifejezések ér tékét. Alapértelmezésben a képernyõre ír. WRITELN ([VAR F: text] v1: [,v2. ]) A kifejezések kiírása után kiírja a CR/LF jelet is.
Olvasás mûvelete: READ ([VAR F: text] v1: [,v2. ]) Az eljárás csak nyitott állományokra alkalmazható. READLN ([VAR F: text] v1: [,v2. ]) A beolvasás után a következõ sor elejére pozícionál. 2.Típusos állomány (file of alaptípus): A típusos állomány általában egy lemezes állomány, komponensei (elemei) egyforma méretûek és alaptípus típusúak. Olyan a dathalmazok, a melyek j ól de finiált a zonos t ípusú ös szetevõkre, e lemekre bonthatók. Az elemek típusa a file és objektum típus kivételével tetszõleges lehet A file -ben tárolt el emek a f elírás s orrendjében 0 -tól ke zdve e gyesével s orszámozódnak. A f ile feldolgozásánál e sorszám felhasználásával pozícionálhatunk az állomány valamely elemére. A kom ponensek s zámának csak az adathordozó m érete, valamint a DOS operációs r endszer szab ha tárt. A t ípusos f ile -on v égzett mû velet e gysége a z e lem A típ usos f ile -ok feldolgozása s zekvenciálisan va
gy a poz ícionálás m ûveletét ha sználva di rekt m ódon lehetséges. Dekralálás és megnyitás: VAR file-változó : file of típus; (bármilyen típus lehet, kivéve a file és objekt típust.) ASSIGN (file-változó): DOS-file-név) RESET (file-változó); - ha már létezik a file REWRITE ( file-változó); - új f ile l étrehozása v agy e gy m eglévõ file felülírása Megnyitás után a típusos file írható és olvasható. Adatok kiírása: olvasása: WRITE (file-változó, változólista); READ (file-változó, váltólista); Az ak tuális p ozíciótól k ezdve o lvassa a f ile el emeit a megadott változókba. Pozícionálás: SEEK eljárás segítségével közvetlenül elérhetjük a file tetszõleges elemét (direkt, random acces) egyébként a file szekvenciális módon érhetõ el. SEEK (file-változó, longint index) File zárás: CLOSE (file-változó) ! 3.Típus nélküli állományok: Ez az állomány hasonlít a típusos állományhoz, elemeire
azonban nem a típus, hanem a hossz jellemzõ. A be/kivitel alacsony szintû, puffer nélküli Általában ismeretlen file, vagy gyors adatmozgatás esetén használatosak. A kom ponenshossz a z á llomány n yitásakor m egadható, a lapértéke 128 . A z elérés szekvenciálisan vagy a komponens sorszáma szerint direkt módon történhet (0,1.) Az állomány írható és olvasható. A típusos file-ok esetén használt eljárások és függvények többsége a típus nélküli fileokhoz is használható. A f ile-ok esetén a m ûveletek e gyetlen l épésben el érhetõ e gysége a blokk ( alapértelmezés: 1 28 b yte), melynek m érete a file n yitásakor a R ESET és REWRITE el járások második paraméterével módosítható. A SEEK eljárás blokkonkénti pozícionálást hajt végre. Ha a file- hossz nem osztható maradék nélkül a blokkmérettel, akkor a fennmaradó byte-ok nem érhetõk el. A file-ok írása és olvasása is blokkokban történik. PROCEDURE BlockREAD (VAR
file-változó: VAR puffer : cnf: VAR res: file; tetszõleges típus; WORD[; WORD]; (cnf: egy lépésben olvasni kívánt blokkok száma; nem lehet > 65535-nél.) (res: ténylegesen beolvasott ill. kiírt blokkok száma) PROCEDURE BlockWrite (ua.) A file végének értékelése: EOF (VAR F): Boolean File zárása: CLOSE (file-változó); Mivel az ad atállomány r ekordjait n ehézkes m ozgatni, az ok f izikai h elyét az állományban a felírás ut án ne m vá ltoztatjuk m eg. A r endezést köz vetett m ódon, i ndextömb segítségével érjük el. Az indextömb a memóriában helyezkedik el, mely csak a rendezettség meghatározásában résztvevõ adatokat (kulcsokat) tartalmazza. Minden kulcs mellet szerepel a rekord többi adatának állománybeli pozíciója (indexe). Az indextömb kulcs szerint rendezett Ettõl k ezdve a k ereséseket a rendezett i ndex-tömbben vé gezzük e l. Ha a k eresett k ulcsot megtaláljuk, a kkor a z i ndex a lapján be olvassuk a kul cshoz t
artozó a datokat a törzsállományból. A keresés memóriában történik, így az nem vesz sok idõt igénybe Az állomány-karbantartás mûveletei: 1. Felvitel (új törzs és kulcsállomány létrehozása) 2. Hiányzó vagy hibás kulcsállomány létrehozása vagy helyreállítása a törzsállomány alapján. 3. Módosítás: A kul cs m ódosítása ne m m egengedett, í gy az a kul cstömböt é s a kulcsállományt nem érinti. 4. Törlés: Érinti a kulcstömböt és a kulcsállományt is 5. Sûrítés: A kul cstömböt t örlésre va ló ki tûzéskor f olyamatosan s ûrítjük S ûrítési parancsra új kulcsállományt is írunk a lemezre. 6. Listázás: A kulcstömb és a kulcsállomány alapján növekvõ kulcsok szerint történik a listázás. Indítás: • ha van törzsállomány megnyitjuk, ha nincs létrehozzuk. • ha van kulcsállomány megnyitjuk, ha nincs létrehozzuk. • Ha s zükséges, a t örzsállomány a lapján új kul csállomány(oka)t ké
szítenünk (kulcsok beolvasása, rendezés, listázás) Felvitel, beszúrás: • Bekérjük a felviendõ, beírandó rekord kulcsát. • Ha már létezik ez a kulcs, visszautasítjuk a bevitelt (a kulcs egyedi azonosító) • a kulcstömböt „széttoljuk” a megfelelõ helyen, s elhelyezzük az új kulcsot. Az új rekord a törzsállomány végére fog kerülni pozícionálás. • Beolvassuk a f elviendõ, be szúrandó r ekord t öbbi m ezõjét é s a z új r ekordot a törzsállomány végére írjuk. Ez a z e ljárás b iztosítja, h ogy a k ulcstömb a felvitel f olyamán min dig r endezett legyen. A kulcstömb rendezése csak a kulcsállomány helyreállítása során szükséges Módosítás: • Lekérdezzük a módosítandó rekord kulcsát és az esetleges kiegészítõ információkat • Ha a kul cs n em l étezik, va gy a ki egészítõ i nformációkat f igyelembe ve sszük, s „gyanús” , visszautasítjuk a módosítást. • A kulcstömb alapján kiolvassuk
a módosítandó rekordot. • Lekérdezzük egyenként a módosítandó mezõket, ahol van módosítás, átvezetjük. A kulcsmenü módosítását nem engedjük meg. • A módosított rekordot visszaírjuk a helyére. Törlésre kitûzés: • Lekérdezzük a törlendõ rekord kulcsát és az esetleges kiegészítõ információkat, • Ha nem létezik a kulcs vagy az információk alapján úgy döntünk, visszautasítjuk a törlést. • A kulcstömb alapján kiolvassuk a törölt rekordot. • A törölt flag-et TRUE-ra állítjuk. • A kulcstömböt a törölt kulcsnál „összetoljuk” • A t örlésre ki tûzött r ekordot a flag-tõl e ltekintve vá ltozatlanul ha gyjuk, s visszaírjuk a helyére. Az e ljárás bi ztosítja, hog y a t örlés ki tûzése ut án a kul cstömb r endezett é s hézagmentes m aradjon. H a a t örlésre ki tûzött r ekordok vi sszanyerhetõsége szempont, akkor a kulcstömböt nem toljuk össze, ilyenkor a kulcsrekord is kibõvül. törölt
kulcs sorszám A törléskor az összetolás helyett a kulcstömbben is törölt flag-et állítjuk be. Sûrítés változatlan fizikai sorrenddel (I.) 1. Egy munkaállomány létrehozása 2. A tö rzsállomány n em tö rölt r ekordjait á tmásoljuk a mu nkaállományba, ma jd lezárjuk. 3. Az e redeti tö rzsállományt le zárjuk és tö ltjük, v agy a k iterjesztését B AK-ra változtatjuk. 4. A munkaállományt átnevezzük az eredeti névre 5. Az új állományhoz kulcsállományt készítsük 6. A további munkához az új törzsállományt újra megnyitjuk Sûrítés új fizikai sorrenddel (II.) 1. = sûrítés I 2. A kul cstömb a lapján a t örzsállomány rekordjait növe kvõ kul csok s orrendjében átmásoljuk a munkaállományba, majd a munkaállományt lezárjuk. 3. = sûrítés I 4. = sûrítés I 5. A kulcstömbben a fizikai sorrendet jelölõ mezõket átírjuk (az i-ediké i-1 lesz) 6. A módosított kulcstömböt a lemezre írjuk 7. = sûrítés I Ez a m
ódszer g azdaságosabb az el sõnél, m ert n em t esz s zükségessé e gy rendezési menetet, de csak akkor, alkalmazható, ha csak egy kulcsállományunk van. Listázás: Növekvõ kulcsok szerinti listát a kulcstömb alapján készítünk. Más szempont szerint rendezett listát egy második kulcstömb elõállítása után készíthetünk. • beolvassuk a rendezés szempontjából érdekes mezõket • az új kulcsrekordba beírjuk a rekord sorszáma - 1-et • rendezzük az új kulcstömböt • az új kulcstömb alapján elkészítjük a listát. Leállás: • Sûrítünk. Kiírjuk a kulcstömböt és lezárjuk. B.11 Az adatszerkezet fogalma Konstrukciós és szelekciós műveletek. Adatszerkezetek statikus és dinamikus megvalósítása Láncolt listaszerkezetek, sor, verem. A heap kezelésének alapfogalmai: területfoglalás és felszabadítás. Az ad atszerkezet ö sszetartozó ad atelemek r endszere, m elyben az ad atelemek m aghatározott módon ka pcsolódnak e
gymáshoz. A ka pcsolódás m ódja ha tározza meg, ho gy m ilyen adatszerkezetről van szó. Konstrukció: Új adatszerkezet létrehozása, vagy egy meglévő adatszerkezetbe új adatelem beillesztése. Szelekció: A meglévő adatszerkezet valamely adatelemének kiválasztása, az adatelemekhez való hozzáférés. A leggyakrabban használt adatszerkezetek: Sor: Azonos típusú elemek egymásutánja, amelynél mindig a legelőször beillesztett elemet távolítjuk el elsőnek: (FIFO) • Egyszerű sor : Mindig a legelsőnek betett elemet lehet kivenni. • Kettősvégű sor : A sornak mindkét végéhez hozzá lehet tenni, és mindkét végéről ki is lehet venni elemet. • Input korlátozott sor : A sornak csak az egyik végéhez lehet hozzátenni, de mindkét végéről ki lehet venni elemet. • Output k orlátozott s or: A s ornak m indkét vé géhez hoz zá l ehet t enni, de c sak az egyik végéről lehet elemet kivenni. 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 : Első elem lekérdezése - a sor változatlan marad Megvalósítása: egydimenziós tömb segítségével : • elemszám maximalizált • kell egy mutató az első elemre • kell egy mutató az utolsó elemre. Alkalmazása: Ha v alamely k iszolgálási f olyamat ü teme el tér a érkezésének ütemétől (pl: billentyűzet, nyomtató, memória) A sor konstrukciós és kiszolgálásra v árók szelekciós művelete: ← ← beléptetés a sor végére kiléptetés a sor elejéről Speciális, mer t a fizikai szerkezetből adódóan nem kell a logikai szerkezetet mutatókkal jelölni. A logikai és fizikai sorrend azonos Ciklikus sor: A sor adatszerkezete által használt algoritmus igen gazdaságtalan, mert a tömb elejét nem használjuk újra. Legyen az elemek tárolása ciklikus A sorban levő elemek számát is jegyezzük • Első > Utolsó lehet tele és üres
is • Első és Darabszámból Utolsó számítható Verem: Ol yan azono s típusú ele mek eg ymásutánja, a melynél, mindig az utoljára beillesztett ele met táv olítjuk el elsőként. Egy szekvenciális adatszerkezet, melynek mindig c sak a l egutoljára betett elemét lehet látni ille tve ki venni. Kell eg y mutató, mely a mindenkori verem tetejére illetve az első szabad helyre mutat. Egy veremről meg kell tu dni álla pítani, hog y a z üres, vagy tele van, hiszen üres veremből nincs értelme kivenni, tele verembe nincs értelme betenni elemet. Megvalósítás: Pl: egydimenziós tömb segítségével. • elemszám maximalizált • kell egy mutató az első szabad helyre • érték beírása • mutató növelése • a következő szabad helyre mutat. Konstrukciós művelet Új elem beillesztése a verem tetejére (PUSH művelet) Szelekciós művelet A verem legfelső elemének eltávolítása (POP művelet) ↑ ↓ • érték beírása • szabad hely •
mutató növelése • mutató csökkentése • következő szabad helyre • elem kiolvasása mutat Figyelni! Üres verem Tele verem ⇓ ⇓ beírni lehet, olvasni lehet, kiolvasni nem de írni nem. Használata: • visszatérés címek tárolása (ahogy elmentünk, úgy kell visszajönni.) • különféle programok közti paraméterváltás (pl: Assembly) Lista: Azonos t ípusú adatelemek e gymásutánja, m elyek m indegyikéhez t artozik e gy információs mező, amelynek tartalma meghatározza, hogy az adatlemezek közül me lyik a következő. A lista elemei fizikailag teljesen véletlenszerűen helyezkedik el a tárolóban, az elemek sorrendjét mutatókkal állítjuk fel. A listának legnagyobb előnye abban áll, hogy átrendezés es etén n em k ell ó riási ad atmennyiségeket m ozgatni, a zt n éhány mu tató átirányításával elintézhetjük. Figyelembe kell venni a listáknak egy óriási korlátját is: elemei közvetlenül nem címezhetők, azok csak
szekvenciálisan érhetők el. A lista alkalmazási körét ez a tény feltétlenül szűkíti. Az információs mezők a mutatók vagy pointerek. A lista elemei nem logikai egymásutánjuk sorrendjében helyezkednek el a memóriában vagy valamely külső adathordozón, azok az adatok fizikai sorrendje különbözik a logikai sorrendtől. Alkalmazása: Ha nehéz az adatokat úgy tárolni, hogy a logikai és fizikai sorrendjük azonos legyen (pl: a később érkező elem csak igen sok másik elem mozgatása árán tehető a neki megfelelő helyre.) Konstrukciós művelete: Az üres lista létrehozása és az új elem beillesztése a listába. ↑ ↓ x Szelekciós művelete: Egy adott elem megkeresése, vagy eltávolítása a listából. Szelekció: ↓ x Listaszerkezetek is használatosak, ahol egy adatelemhez nem egy, hanem két mutató tartozik, az első az adatelemet megelőző, a második az adatelemet követő adatelemet határozza meg. Ez a szimmetrikus lista.
Előre és hátra is haladhatunk benne Egyszerűbb hozzáférést biztosít, de helyigényesebb. Ciklikus lista esetén az utolsó elem visszamutat az elsőre, így körbejárható a lista. A dinamikus adatszerkezetekre az a jellemző, hogy a benne lévő adatelemek össze vannak kapcsolva: minden adatelem valamilyen módon tartalmazza az őt követő elem mutatóját. Az adatszerkezetek a mutatók révén elejétől a végéig bejárható. Ezt a láncot az első elem mutatója meghatározza. Az utolsó elem mutatója általában egy végjel, mely egyértelműen felismerhető, és természetesen nem létező elemre mutat. A láncolt lista felépítése, elemei: • LISTAFEJ a lista első elemére mutat • ELEM két részből áll adat mutató (a következő listaelemre mutat) • NIL az utolsó listaelem mutatója Az elemek csak meghatározott sorrendben érhetők el, elsősorban statikus (nem változó) állományoknál célszerű alkalmazni ezt a szerkezetet, ahol sokszor kell
keresni. Dinamikus adatterületek a heapen optimálisan lista struktúra segítségével kezelhetők. A dinamikus l isták he ap-beli te rületfoglalását a New és a GetMem segítségével vé gezzük. A New el járás p aramétere eg y - a d eklarációs r észben m ár d efiniált - dinamikus vá ltozó mutatója. A he ap e gy di namikus a dattároló: a pr ogram f utása köz ben vá ltozók h ozhatók l étre va gy szüntethetők meg. A heap az overlay puffer felett (ha ez 0) vagy a v eremszegmens felett helyezkedik el. M érete a $M fordítási di rektívával s zabályozható; m egadható m aximuma és minimuma. Alapértelmezésben az egész maradék memóriát lefoglalja Veremszerűen működik, felfelé növekszik, kezelését az egység heap menedzsere végzi. A heap menedzser az igényeket szabályok szerint elégíti ki, karbantartja a s zabad területeket, stb. Ha egy újabb adatnak foglalunk helyet, akkora az a heap tetejére kerül, hacsak nem talál a heap
menedzser egy már felszabadított területet (lyukat) a foglat adatok között. Az egyszerre lefoglalható te rület min imális mérete 8 b yte, m aximális mérete p edig m ajdnem eg y t eljes szegmens 65,519 byte. Memóriaterület foglalása, megszüntetése az alábbi függvények segítségével történik: • GetMem (VAR P: Pointer; Size: Word) foglalás • FreeMem(VAR P: Pointer; Size: Word) felszabadítás • Rlease (VAR P: Pointer) felszabadítás • New (VAR P: Pointer (; konstruktor) dinamikus változó létrehozása • Dispose (VAR P.Pointer (; destruktor) előző felszabadítása Heap kezelés • Dinamikus változóval ⇒ programfutás közben hozható létre és szüntethető meg. ⇒ hivatkozás mutató (pointer) segítségével Típusos mutató: ⇒ egy 4 bájtos memóriacímet tartalmaz, arra a címre mutat ⇒ a mutatott változó típusa meghatározott ⇒ értékadás NEW eljárással VAR P: ∧ Típus; Típus nélküli mutató VAR P: Pointer; Mutató
konstans Ptr (Seg, ofs) NIL= Ptr (0,0) nem mutat sehová. (szegmenseltolási cím) Heap foglalás: New (VAR P: Pointer) • Létrehoz egy új dinamikus változót, P értéke erre fog mutatni • Az aktuális paraméter csak típusos mutató lehet • A lefoglalt terület nagysága a mutató típusától függ • hivatkozás a változóra: P∧ • Ha nincs elég hely a heap-en futási hiba lép fel. Ha nincs szükség már a P∧ egész típusú változóra, akkor a DISPOSE(p); eljárással törölhetjük. B.12 Adatmodellek, alapfogalmak A relációs adatmodell Az ad atbázis-kezelő rendszerek, mindig valamilyen adatmodellre épülnek. Az adatmodellben leírjuk a különböző típusú adatokat, a köztük fennálló kapcsolatokat, összefüggéseket és a v elük k apcsolatos ad atvédelmi el járásokat. A z ad atmodellben az egyedtípusokkal f oglalkozunk, m íg a f eldolgozásban a rekordtípusok konkr ét előfordulásaival. Egyed - Minden olyan dolog, ami minden más
dologtól megkülönböztethető és amirôl adatokat tárolunk. Az egyed konkrét dolgokat fog egybe Tulajdonság - Az e gyedeket t ulajdonságokkal í rjuk l e. A t ulajdonság a z e gyed e gy jellemzôje, am i m egadja, m eghatározza az eg yed e gy részletét. A t ulajdonság i s e gy absztrakció, tehát konkrét értékekből, un. elôfordulásokból áll Kapcsolat - a k apcsolat a z e gyedek köz ti vi szonyt f ejezi ki , e gyedeket köt ös sze. A kapcsolat konkrét viszonyok absztrakciója. Ha egy tulajdonság vagy tulajdonságok egy csoportja egyértelműen meghatározza, hogy az egyed melyik értékérôl, elôfordulásáról van szó, akkor azt kulcsnak nevezzük. Az adatmodell egyedek, tulajdonságok, kapcsolatok halmaza, mely absztrakt módon tökrözi a va lós obj ektumoknak, a zok t ulajdonságainak ( jellemzôinek) é s vi szonyainak e lvont kategoriáit. Az adatmodellnek három független szintje van: - Belső szint, mely az adatok fizikai tárolását és elérési
módját adja meg. - A koncepcionális szint vagy séma, mely az adatbázisban levő összes adat szerkezetét és a köztük f ennálló ös szes k apcsolatot, a z adatokhoz va ló hoz záférés logikáját és a h ozzáférési jogosultságokat írja le. - A külső szint vagy alsémák, melyek azt írják le, hogy az egyes felhasználók miként látják a sémát. Az a datmodellnek m indig a va lós vi lágot, p ontosabban a nnak a t eljes f eladat megoldásához s zámunkra s zükséges részét k ell áb rázolnia. A z ad atmodellen a k apcsolati rendszert is érthetjük, amely a külső szinten írja le az adatbázist. Az adatmodell három fő típusa: - hierarchikus (az adatok között alá-, fölérendeltségi viszony van) - hálós (egy fő csoport köré gyűjti az oda tartozókat) - relációs modell (azonos tulajdonságú kapcsolatok vannak összefűzve). Az adatmodellek szempontjából fontos az adatbázisban lévő építőelemek, obj ektumok köz ti kapcsolatok
csoportosítása: - A két elem független egymástól. Ez a legkedvezőbb, mert akkor az adatbázisban sem kell kapcsolatot teremteni közöttük. - A két elem között kölcsönösen egyértelmű kapcsolat áll fenn. Ezt az összefüggést 1:1 kapcsolatnak is nevezzük. Ez a kapcsolat minden adatmodellben kezelhető - Egyik ir ányba egyértelmű, a másikba többértelmű, 1:N kapcsolat. A második elemtípus értéke egyértelműen meghatározza az elsőt, de ez fordítva már nem igaz. Az ilyen ka pcsolatok e gymásra i s é pülhetnek. E zt a ka pcsolatsort hi erarchiának va gy egyszerű hierarchiának is nevezzük. Minden adatmodellben ábrázolható - Több-több, M:N kapcsolat. Az első egyedtípus bármelyik eleméhez a második típusnak a kárhány eleme ka pcsolódhat. A t öbb-több k apcsolatot csak a r elációs és a hálós modelleken alapuló rendszerek tudják kezelni. A relációs adatmodell: A relációs adatmodell azonos tulajdonságú kapcsolatok
összefűzését jelenti. Az adatokat logikailag relációkban tekintve táblázatokban ábrázoljuk és a köztük lévő különböző kapcsolatokat relációs műveletek segítségével hozzuk létre. A r elációs m odell l egnagyobb előnye az, hogy a táblázatos ábrázolásmód következtében az átlagos felhasználói szemlélethez ez a z a datmodell á ll a l egközelebb, ma tematikai s zempontból e zt a mo dellt d olgozták k i a legrészletesebben és eb ben a m odellben v alósítható meg legjobban, legegyszerűbben és legnagyobb mértékben a fizikai és a logikai adatfüggetlenség. Matematikailag te kintve a r elációs mo dell egy vagy több k étdimenziós, s peciális tulajdonságokkal rendelkező táblázatból, relációból áll. Ezek a relációk írják le a valós világ különböző egyedeit, azok tulajdonságait. A relációnak oszlopai és sorai vannak. Az oszlopok nevei alkotják a reláció fejlécét, a sorok bejegyzései a reláció adatait. A sorok
jellemzik az adott reláció egyedeit, az oszlopok pedig az egyes tulajdonságokat. A sorokon belül mezőket különböztetünk meg, melynek jellemzőit a mezőjellemző mutatja meg. Mezőjellemző a név, a típus és a hossz A következő feltételeknek kell teljesülni ahhoz, hogy a táblázatok valóban relációs adatbázist alkossanak: - Minden relációnak van egy egyértelmű neve, amelyik azt azonosítja az adatmodellben. - Egy adott reláció minden sorában azonos számú oszlop van. Az oszlopok számát a reláció f okának i s s zokták ne vezni. A r eláció f oka a m odellben á llandó, megváltoztatása tulajdonképpen a reláció megszüntetését és egy új létrehozását jelenti. - Minden oszlopnak egyértelmű neve van, amellyel azonosítható. - Minden oszlop csak meghatározott értékeket vehet fel. - Bármelyik s orban b ármelyik o szlop cs ak e gyetlen ér téket vehet f el a megengedett értékek köz ül. E z a zt j elenti, hog y a z os zlopértékek e
lemiek, n em t artalmazhatnak ismétlődő mezőt. Elvileg a relációs modell a következő típusú relációkat engedi meg. - Alap vagy bázis reláció: fizikailag ténylegesen létező reláció, m ely az ad atokat a megadott formátumban ténylegesen tartalmazza. - Virtuális r eláció v agy n ézet: ö nmagában n em t artalmaz ad atokat, a n ézet definiálásakor határozzuk meg az értékeket. - Pillanatfelvétel: adott táblázat(ok) adatait tartalmazza egy megadott pillanatban. - Lekérdezések eredménye: célinformációkat szolgáltat a felhasználó számára. - Közbenső táblázatok: bonyolultabb feladatok megoldásához az adatbázis-kezelő rendszernek ideiglenesen tárolnia kell a közbenső eredményeket. A relációs adatmodell használatának lehetőségei: - Önálló nyelvű. Például a dBase III önálló nyelvű, nincs szükség hozzá segédeszközre. Három üzemmódja van: menü, parancs és program üzemmód - Bennfoglaló nyelvű. Ez nem komplett
programozási nyelv, hanem csak az adatkezeléshez kapcsolódó utasításokat tartalmazza. Kulcs: az a datok va lamely ha lmazához, pé ldául e gy r ekordhoz, t artozó ka rakter va gy karakterfüzér, mely azonosítja az adott adathalmazt (egyértelműen meghatározza). Elsődleges kulcs: Egyedi, a rekordot azonosítja, az egyes relációk egyedeinek egyértelmű azonosítására szolgál. Elsődleges kulcsnak célszerű a lehetséges kulcsok közül a kiválasztásra leggyakrabban használtat kijelölni. Egy adatállományhoz többféle elsődleges kulcs is tartozhat, de egyszerre csak egy lehet aktív. Összetett kulcs: Összetett kulcs = az elsődleges kulcs + egy kód. Ezzel egy kód szerint rendezett táblát kapunk, azonos kódon belül elsődleges kulcs szerint kerülnek sorba a rekordok. A reláción belül a kulcsnak még a következő feltételeket is teljesítenie kell: - A kulcs, illetve összetett kulcsnál annak egy komponense sem lehet null-érték, hiszen csak azzal
tudunk valamit azonosítani, amit ismerünk, aminek tudjuk az értékét. - Összetett kulcsnál a komponensek száma minimális. Bármelyik oszlopot elhagynánk a kulcsból az egyértelműség megszűnne. Az elsődleges kulcsok kijelölése az adatbázis-tervezés egyik legfontosabb feladata. A konkrét adatmodell legtöbbször nyilvánvalóvá teszi, hogy mi legyen az elsődleges kulcs a relációban. Másodlagos kulcs: Ez az elsődleges és az összetett kulccsal ellentétben már nem egyedi azonosító. Például a dBase III. nem támogatja a használatát B.13 Funkcionális függőség Normálformák, normalizálás Funkcionális függőség: A valós világban meglévő függőségeket fejezi ki. Ha P és Q tetszőleges tulajdonság típus, akkor Q funkcionálisan függ P-től, ha P minden értékéhez vagy előfordulásához egyértelműen kijelölhetünk egy Q értéket vagy előfordulást. P Q, Q funkcionálisan függ P-től Más s zóval Q f unkcionálisan f ügg P -től
ha abból, hogy a reláció valamely két sora megegyezik a P halmazon, következik, hogy a két sor értékei megegyeznek a Q halmazon is. Felhasználhatjuk e gy r elációs ad atbázis ( egy t áblázat) t árolási h atékonyságának megnövelésére. P Q esetén a P-ben egyező sorokhoz tartozó Q -beli sorokat csak egyszer tároljuk. Hátránya: az adatbázisba nem vihető fel pl. olyan személy, akinek két címe van, olyan esetben, ahol a lakcim funkcionálisan függ a névtôl. A funkcionális függőség: egyszerű, ha a meghatározó tulajdonság típus is egyszerű összetett, ha a meghatározó tulajdonság típus is összetett. A funkcionális függőségek tulajdonságai: - reflexív (reflexivitás) AA Egy attribútum halmaz a benne levő részhalmazt meghatározza. Q ⊆ P ⊆ A, akkor P Q teljesül. Egy tulajdonságtípus bármely értéke meghatározza önmagát. - additív (egyesítési szabály) A B, A C ⇒ A (B+C) Az a dditivitás s zabályai s
zerint, a mennyiben A t ulajdonság t ípus egy B é s egy C tulajdonság típust határoz meg, úgy meghatározza a (B+C) tulajdonság típus sort is. - tranzitív (tranzitivitás) A B és B C ⇒ A C A tranzitivitás szabálya kimondja, hogy abban az esetben, ha egy A tulajdonság típus meghatároz egy B tulajdonság típust, ami C -t határozza meg, a C az A -tól is függ. - pszeudo tranzitív (pszeudo-tranzitivitási szabály) A B és (B+x) C ⇒ (A+x) C A pszeudo tranzitivitás értelmében, ha egy A tulajdonság típus meghatároz egy B -t, amely pedig bármilyen bővítményével (B+X) meghatároz egy C -t, akkor a z A megfelelő bővítménye (A+X) is meghatározza a C -t. - Bôvítés Ha P Q teljesül és S ⊆ A egy tetszôleges attributúmhalmaz az A - ból, akkor P∪SQ∪S - Dekompozició Ha P Q teljesül és S ⊆ Q, akkor P S is teljesül. {- projektív A B ⇒ B A (B összetett). A pr ojektivitás s zabálya l eszögezi, hog y amennyiben e gy A t ulajdonság
t ípust r észe egy B t ulajdonság t ípusnak, ú gy B m eghatározza A -t. B ek kor t ermészetesen összetett. - augentitív A B és x tetszőleges tulajdonság típus ⇒ (A+x) B Az a ugentitivitás a zt je lenti, h ogy amennyiben egy A tu lajdonság típ us me ghatároz egy B -t, az ( A+X) e gyüttes i s m eghatározza B -t, X l egyen bá rmilyen t ulajdonság típus. } Annak m egállapításához, hog y egy relációban v an-e funkcionális függőség, azt kell megállapítani, hogy mi az attribútumok tartalma. A funkcionális függőség a valóságos világban meglévő függőségeket fejez ki. A normálformák az adatbázisok belső szerkezetét jellemzik. Első normálforma: (ha minden sorban pontosan egy attribútum érték áll). Az egyed típus első normálformájú, ha csak olyan tulajdonság típus jellemzi, mely funkcionálisan függ az egyed típus azonosító tulajdonság típusától. Egy t áblázat el emei 1 NF-ben vannak, azaz relációt alkotnak, ha
teljesülnek a következő feltételek: - minden oszlop egy és csak egy attribútumot jelent - minden sor különbözik - az attribútumok sorrendje minden sorban ugyanaz - nincsenek ismétlődő mezők - minden sorhoz tartozik egy egyedi kulcs, melytől az összes többi attribútum funkcionálisan függ. Minden r elációs ad atbázis-kezelő rendszer megköveteli, hogy az adatok legalább első normálformában legyenek. Második n ormálforma: (1NF - ben v an, é s m inden m ásodlagos attribútum t eljesen f ügg a kulcstól) Az egyed típus második normálformájú, ha csak olyan tulajdonság típus jellemzi, mely függ az összetett azonosítótól, de nem függ annak egy részétől. Második normálformában akkor és csak akkor van egy reláció, ha 1NF-ben van és az összes nem kulcs attribútum funkcionálisan teljesen függ az elsődleges kulcstól. Harmadik normálforma: Ha 2NF - ben van, és egyetlen másodlagos attribútum sem függ tranzitíven valamelyik
kulcstól). Az egyed típus harmadik normálformájú, ha csak olyan tulajdonság típus jellemzi, mely függ az a zonosítótól, d e ne m f ügg m ás l eíró tulajdonság t ípustól. M inden m ásodlagos attribútum funkcionálisan független egymástól, és teljesen függ a kulcstól. Egy r eláció ak kor és csak a kkor va n 3N F-ben, ha 2N F-ben van és az elsődleges kulcshoz nem tartozó attribútumai csak az elsődleges kulcstól függnek funkcionálisan. Tehát funkcionális függés csak az elsődleges és az alternatív kulcsokból indulhat ki. Boyce-Codd normálforma: - A negyedik az úgynevezett Boyce-Codd normálforma /BCNF/. Azonosítót megtörő függés az, ha a z egyed t ulajdonság t ípusnak ol yan t ulajdonság t ípusa va n, m ely meghatározza a z azonosító egy részét. Kivétel, ha az azonosító jelölt - Az 1NF-ben levô relációról mondjuk hogy BCNF-ben van, ha a r eláció minden generátora egyben kulcs is. Normalizálásnak n
evezzük az t a z el járást, am ikor eg y ad atbázist valamilyen normálformára hozunk. A relációs adatmodell használatának nagy előnye, hogy az adatok ésszerű, a gyakorlatban j ól ha sználható c soportosításához, a r elációk ki alakításához elméletileg m egalapozott el járást ad , ez t az el járást n evezzük n ormalizációnak. A normalizáció mindig az adatok logikai szintjén történik. Általában több lépésből áll A normalizáció szisztematikus alkalmazásával sem tudunk azonban minden gondot megoldani, de ennek ellenére elmondható, hogy a jó normalizáció következtében: az adatok tároló igénye kisebb lesz az elemi adatokat gyorsabban és kevesebb hibalehetőséggel változtathatjuk meg az adatbázis logikailag áttekinthetőbb lesz. A normalizációval elkerülhetjük a függőségeket, így a helyesen normalizált adatbázisba nem kerülhetnek bele egymással ellentmondásban lévő adatok. B.14 A relációs algebra
műveletei A relációs adatbázis-kezelő nyelvek lekérdező utasításai a relációs algebra műveleteit valósítják meg. Különösen igaz ez az SQL nyelvekre, amelynek SELECT parancsát pontosan meg lehet feleltetni a relációs algebra műveleteinek. 1. Relációk uniója (műveleti jel: ∪) Legyen R és S k ét n -edfokú r eláció. E zek unióján azt az R ∪ S s zintén n -edfokú r elációt értjük, amelynek rekordjai vagy az R-nek, vagy az S-nek vagy mindkettőnek elemei. 2. Relációk különbsége (műveleti jel: − ) A n -ed fokú R és S r elációk R − S különbségén azt az n -ed fokú relációt értjük, amelynek elemei R-nek elemei, de S-nek nem. 3. A Descartes-sorozat (műveleti jel: × ) Legyen R n 1-ed fokú, S n 2-ed fokú reláció. Ezek Descartes-szorzatán azt az (n1+n2)-ted fokú R × S relációt értjük, amelyben minden elem első részét az R relációból, második részét pedig az S relációból vesszük. R minden sora mellé minden
lehetséges módon melléírtuk S sorait 4. A projekció művelete (műveleti jel: π ) A projekció műveletet végzünk a reláción, ha kiemelünk belőle néhány megadott attribútumot és a m aradékot ad ott s zempont s zerint át rendezzük. A z í gy k apott relációt az er edeti projekciójának nevezzük, é s πi1 ,i2 ,.,im (R)-lel je löljük, a hol i 1 , i2 ,,im a m eghagyott és átrendezett attribútumok nevei. 5. A szelekció művelete (műveleti jel: σF ) A R reláción végzett szelekció egy olyan σF (R) relációt eredményez, amelynek elemei az R reláció elemeiből kerülnek ki az F formula által meghatározott módon. Az F formula az alábbi objektumokból áll: 1. Operandusok 2. Az operandusokon értelmezett aritmetikai relációk (<, >, =, ≤, ≥, ≠) 3. Az operandusokon értelmezett logikai műveletek: ∧ (és), ∨ (vagy), ¬ (nem) 6. Relációk hányadosa (műveleti jel: ÷ ) Legyen R n-ed fokú, S m-ed fokú reláció (n>m). Az R és S
relációk hányadosán azt az R ÷ S relációt é rtjük, a mely n − m o szlopból ál l és a melynek Descartes-szorzata az S r elációval benne van az R relációban; azaz (R ÷ S) × S ⊆ R 7. Relációk metszete (jele: ∩ ) Két n-ed fokú reláció, R és S R ∩ S-sel jelölt metszetén azt a r elációt értjük, amely R és S közös sorait tartalmazza. 8. Az összekapcsolás művelet (jele: ) Legyen R n-ed fokú, S pedig m-ed fokú reláció. Ezek összekapcsolásán egy olyan (n + m)-ed fokú R S-sel j elölt r elációt ér tünk, am elynek el emei az R × S el emei k özül az ok, amelyekre az R reláció i és az S reláció j attribútuma között teljesül a θ-val jelölt aritmetikai reláció. 9. A természetes összekapcsolás (jele: ) Legyen R n-ed fokú, S m-ed fokú reláció. A természetes összekapcsolás műveletével képzett R S-sel jelölt relációt a következőképpen kapjuk. a) Képezzük R × S-t. b) Vegyük az azonos nevű (jelöljük A-val)
attribútumokat R-ből és S-ből és emeljük ki azokat a rekordokat R × S-ből, amelyekben az R.A és SA oszlopban lévő értékek megegyeznek c) Minden a b) pontban vett attribútumra emeljük ki az S.A oszlopokat (Azonos tartalmú oszlopok azonos értékei alpján választ ki sorokat.) B.15 Az SQL alapelemei: adatbázis, tábla, oszloptípusok, kifejezések, függvények. A tábla létrehozása, feltöltése, módosítása, törlése. Az SQL egy strukturált lekérdező nyelv, mely egy relációs adat-báziskezelőre épül. Minimális adatbeviteli és adatmódosítási lehetőségeket is nyújt. Funkciói: - adatok definiálása Új táblák hozzáadása a már meglévő adatbázishoz; meglévő táblák módosítása, törlése. - adatok kezelése Sor beszúrása, módosítása, törlése. - adatok lekérdezése Információ már meglévő adatbázisokról. - adatok kontrollálása A hozzáférési jogosultság megadása illetve elvétele. - speciális lehetőségek Pl.:
indexelés, dátum aritmetika, aritmetikai kifejezések - adatvédelem, biztonság, adatvezérlés Hozzáférési jogosultságok: a t áblagazda és a r endszergazda korlátlan jogokkal rendelkezik, a további felhasználóknak csak korlátozott jogai vannak. - VIEW-ok --> adatok különböző szemszögből. Az S QL ol yan V IEW-okat is enged definiálni, amelyek különböző felhasználóknak más-más eredményt adnak. Adatbázis: Valamely al kalmazás o bjektumai ad atbázist al kotnak. A z S QL es etében az ad atbázis e gy önálló a lkönyvtárt j elent. A z obj ektumok e gy részét a z a lkalmazó, m ás r észét a r endszer kezeli illetve használja. Az adatbázis olyan adatoknak a halmaza, melyeket együtt kezelünk, az adatok kapcsolataikkal együtt történő ábrázolását, tárolását jelenti. Nagy előnye, hogy egyszerre s okan h asználhatják, í gy egyszerre különféle i nformációigények k ielégítésére alkalmas, de csak egyszeres tárolásra van
szükség. Adattábla: Az ad atokat t artalmazó r elációt n evezzük ad attáblának. A z S QL t áblákat k ezel / TABLE/, melyek azonosítója betűvel kezdődik. A tábláknak oszlopaik vannak, melyek típusát meg kell adni a z a dattábla de finiálásakor. E gy t ábla, akkor s zámít de finiáltnak, ha m ár m egadtuk a tábla nevét, melynek az egész adatbázisban egyedinek kell lennie és az oszlop nevét és típusát Csak arra kell ügyelni, hogy egy táblán belül két azonos nevű oszlop ne legyen. Megadhatjuk még, h ogy h ol h elyezkedik el a t ábla az ad atbázisban. U gyancsak de finiálhatjuk a t ábla elsődleges kulcsát is. A tábla minden egyes oszlopát külön kell definiálni Definiáló formátum: CREATE TABLE táblanév (oszlopnév adattípus [,oszlopnév adattípus] . ); A C reate T able u tasítás v égrehajtása u tán egy üres t áblázatot k apunk, m elybe az Insert adatkezelő utasítással vagy táblázatbetöltő szolgáltató programmal
vihetünk be adatokat. Oszloptípusok: --------------------------------------------------------------------------------------------------------Adattípus Értéktípus Egészek száma Tizedesek száma --------------------------------------------------------------------------------------------------------CHAR karakteres n<=254 SMALLINT numerikus 6 0 INTEGER numerikus 11 0 DECIMAL(x,y) numerikus x+1 y NUMERIC(x,y) numerikus x y FLOAT(x,y) numerikus x y (a mantisszára) DATE dátum opció-beállítás javasolt LOGICAL logikai .F: hamis, T: igaz Kifejezések: A kifejezés konstans vagy oszlopokon és/vagy konstansokon végzett megengedett aritmetikai vagy string műveletek eredménye. Függvények: Az SQL függvény a k ifejezés egy speciális formája. A rendszerbe beépített függvények igen kényelmessé teszik az SQL használatát. Két csoportjuk van: - Oszlopfüggvények, melyek a ggregátum k épzésére s zolgálnak, a kiválasztott s orokra megadják p éldául a f üggvény
átlagát (AVG), ma ximumát ( MAX), min imumát ( MIN), összegét (SUM) stb. - Skalár függvények, melyek a függvény értékét alakítják át más formába, a függvénytől függ, hogy milyen adattípust tartalmazhat. Például: DECIMAL, SUBSTR, DIGITS A módosítás, a beszúrás és a törlés úgynevezett adatváltoztató utasítások. Az utasítást csak az adatbázis-felügyelő hajthatja végre, vagy az akinek erre a relációra engedélyt adott. Módosítás (UPDATE): Az U PDATE ut asítás módosítja a m egadott t áblázat va gy né zet e gy va gy t öbb s orának meghatározott os zlopát vagy os zlopait. H a ne m a dunk m eg f eltételt, a kkor m inden s ort módosítunk, e gyébként c sak azokat, a melyekre a f eltétel t eljesül. Speciális es etben előfordulhat, hogy egy sort sem módosítunk. UPDATE A-táblanév SET oszlopnév = kifejezés [oszlopnév = kifejezés]. [WHERE feltétel]; Al-SELECT használata esetén a WHERE feltételében megadott belső
SELECT E-tábla értékei jelölik ki a módosítandó sorokat. Beszúrás (INSERT): Az INSERT utasítás sor(oka)t helyez be egy táblázatba vagy nézetbe. Beíráskor formátum- és integritás-ellenőrzés történik. Ha a bemenő adat bármelyik mezője nem fér el a megfelelő oszlopban, akkor az utasítás nem hajtódik végre, vagyis a sor nem kerül bele a táblázatba. INSERT INTO A-táblanév [oszlopnév-lista] VALUES (értéklista) Al-SELECT ha sználatával i s be szúrható új s or a t áblába, e kkor az új s orok é rtékeit a z A lSELECT E-táblájának soraiból tölti fel az SQL. INSERT INTO A-táblanév [oszlopnév-lista] Al-SELECT; További sorok az INSERT parancs ismételt kiadásával szúrhatók be. Törlés (DELETE): A DELETE utasítás sor(oka)t töröl egy táblázatból vagy nézetből. A kiválasztási feltétel bármelyik l ehet ( SELECT, B ETWEEN, IS N ULL, LIKE, EXISTS). A t áblázat/nézet az összes s or t örlése u tán i s m egmarad, ennek m
egszüntetésére a DROP u tasítás s zolgál. H a a táblázatra i degen kul ccsal m ás t áblázat i s hi vatkozik, a kkor a nnak s orai i s a z i degen kul cs definiálásakor megadott módon változnak meg. A törölt kulccsal egyező értékű idegen kulcsot tartalmazó sorok a hivatkozó táblázatból szintén törlődnek vagy a null-értéket veszik fel. DELETE FROM A-táblanév [WHERE feltétel]; Al-SELECT használatakor a WHERE feltételében megadott belső SELECT E-tábla értékei jelölik ki a törlendő sorokat. B.16 A SELECT parancs Egymásba ágyazott SELECT parancsok A dBase lehetőséget ad egyszerre több adatállomány használatára, de különböző munkaterületeken. Tíz munkaterülete van (1-10 vagy A-J) Alapértelmezésben egy állomány esetén az e gyes m unkaterületen dol gozunk. K atalógusállományt i s m egnyitva a z a 10 -es munkaterületre kerül (áthelyezhető, de nem célszerű -> lassító hatású). A használni kívánt
munkaterületet a SELECT < terület azonosító > paranccsal jelöljük ki. A ki adott pa rancsok m indig a z ut oljára kijelölt munkaterületen lévő állományra vonatkoznak. A z e gyes m unkaterületek e gymástól f üggetlenül h asználhatók, e zért ne m elegendő tudni, hogy megnyitottuk az állományt, használni csak akkor tudjuk, ha a munkaterületen va gyunk -> ekkor aktív a z á llomány. A S ELECT p arancsot az állománynévvel vagy annak alias nevével is paraméterezhetjük. Az SQL - ben viszont a SELECT parancsnak teljesen más a funkciója ! Az adatbázis egyik legfontosabb művelete a lekérdezés. Az SQL fő parancsa a SELECT. A S ELECT p arancs v égrehajtásának eredményeként e gy ú j t ábla k eletkezik, ez t eredménytáblának hí vjuk(E-tábla). A S ELECT t öbb a lparancsból á ll S zerkezete köt ött, vagyis az alparancsok csak sorrendben írhatók fel. SELECT [ALL/DISTINCT] oszlopnévlista - oszlop kiválasztása = projekció [INTO.] -
az E tábla 1. sorának tárolása FROM. - az A tábla nevek megadása (Descartes-szorzat) [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 / tábla módosítása [SAVE TO TEMP.] - E tábla megőrzése, elmentése a DISTINCT hatására az E-tábla azonos sorait (ahol azonos érték szerepel) csak egyszer írja ki, ALL használata esetén minden sort kiír. a FROM szó után a tábla nevét kell megadni vagy kell felsorolni a táblákat, amelyekbôl keressük az adatokat. az INTO változónévlista alparancs a SELECT által létrehozott E-tábla elsô sorát elhelyezi a változónév-listában szereplô változókba. a WHERE alparancs operandusa egy logikai kifejezés, egy feltétel, hatására az E-táblába azok a sorok kerülnek, amelyekre teljesül a feltétel. a GROUP BY oszlopnevlista
hatására a rekordokat a megadott oszlop (több esetén ezen belül sorra veszi a többit) azonos értékei szerint szerint csoportosítja a HAV ING feltétel hatására a G ROUP BY által k ialakított E -táblából ki választja a zon sorokat, amelyek eleget tesznek a feltételnek az U NION al parancs s egítségével S ELECTekkel l étrehozott t áblákattudunk ös szefüzni, egymás alá “tenni”. az OR DER B y oszlopnév/oszlopsorszám [ ASC/DESC] . a lparancs a m egadott oszlop(ok) szerint rendezi az E-táblát növekvô [ASC] vagy csökkenô [DESC] sorrendbe a S AVE TO TM P táblanév [ oszlopnévlista] alparancs a S ELECT által lé trehozott E táblát a megadott táblanév alatt ideiglenesen elmenteni a megadott oszlopok alatt. Az így létrehozott táblát bármilyen SQL paranccsal kezelhetjük. Ha megadjuk a parancs végén a KEEP kulcsszót is, akkor a táblát .dbf kiterjesztésű állományként, dBASE tipusú fájlként is létrehozza,
ami a felhasználói könyvtárba kerül. Egymásba ágyazott SELECT parancsok Az a datbázisban t árolt adatok köz ötti bon yolultabb ös szefüggések vi zsgálatára a subselect használatával van lehetőség. A subselect egy olyan, a k ifejezésekben h asználható SELECT utasítás, amely értéke(ke)t ad át annak az utasításnak, amely használja. A subselect meghatározott es etekben m aga i s átvehet adatot, a s ubselectet h asználó u tasítás forrástáblázatának éppen feldolgozás alatt álló sorából. vagyis . A SELECT parancsok egymásba ágyazhatók. Formája: SELECT . (SELECT (SELECT ) ) A j obb ol dalon á lló S ELECTet kül sô S ELECTnek ( a ba l ol dalihoz vi szonyítva!), a m ásikat belsô SELECTnek nevezzük. Több S ELECT e gymás utáni vé grehajtása e gyetlen E -táblát eredményez. Van külső SELECT, belső SELECT. Külső SELECT a belső E-táblájától függően hoz létre E-táblát. A z i ly m ódon létrehozott SELECT sorozat
egyetlen eredménytáblát ad. A belső SELECT mindig vagy WHERE v agy HAVING u tasítás operandusa; nem t artalmazhat O RDER B Y és U NION utasításokat. Az szerint, hogy a belső SELECT E-tábla egy vagy tö bb é rtéket ta rtalmaz k ét csoportba soroljuk: 1. e gyetlen ér téket t artalmazó E -tábla E gyetlen ér téket h ozhatunk l étre az a ggregáló függvényekkel. 2. több értékű belső SELECT Több értéket generál; ilyen esetben négy predikátummal dolgozunk. Ezek: IN, ANY, ALL, EXISTS Az IN predikátum esetén a külsô SELECT a belsô SELECT által generált listában keresi a külsô SELECT WHERE feltételében lévô oszlop értékeit, és amelyiket megtalálja, az ahhoz tartozó rekordot beteszi az E-táblába Az A NY az okat a s orokat v álasztja k i a k ülsô S ELECT W HERE p arancsrészével, amelyekre a a W HERE-ben le vô lo gikai f eltétel a a b elsô S ELECT által g enerált lis ta valamelyik értékére igaz. Az ALL igaz értéket ad vissza, ha
a megadott reláció valamennyi belső E-táblabeli értékre i gaz. A zokat a s orokat v álasztja k i a k ülsô S ELECT W HERE p arancsrészével, amelyekre a a W HERE-ben levô logikai feltétel a a belsô SELECT által generált lista minden értékére igaz. Az EX ISTS - el létrehozott feltétel akkor vesz igaz értéket a feltétel, ha a belső SELECT által generált E-tábla nem üres. Mindegyik predikátum tagadható a NOT szóval ! B.17 Nézettábla létrehozása és használata Beágyazott SQL (a kurzor és felhasználása). Nézettábla Nagy adatbázisoknál egy felhasználónak nem biztos, hogy szüksége van az adatbázis minden táblájára, vagy minden tábla minden sorára. Az adatbázis-kezelő rendszerek lehetõvé teszik, hogy az adatbázisból egy nézetet csináljunk, vagyis külön definiáljuk az adatbázis azt a azt a r észét, am ire s zükségünk l esz. A z S QL -ben az i lyen nézetet, amit e gy vagy t öbb táblából hoz unk ös sze virtuális t
áblának vagy nézettáblának nevezzük. V irtuális t ábla mögött f izikailag n em áll a dattartalom, mé gis v alóságos tá blaként k ezelhetõ, min tha a CREATE paranccsal hoztuk volna létre. A parancs formátuma: CREATE VIEW táblanév [oszlopnévlista] AS SELECT [WITH CHECK OPTION] ; A SELECT által generált E-táblának a VIEW után írt táblanevet adja az SQL és ennek a táblának az oszlopai az oszlopnévlistában felsorolt oszlopok lesznek. Az u tasítás h atására az S QL t árolja a V -tábla l étrehozásának p aramétereit és a V táblára való hivatkozás során hajtja végre a paraméterek által definiált V-tábla generálását. A SELECT FROMja után egy vagy több tábla vagy V-tábla neve adható meg. A W ITH C HECK O PTION m egadása es etén ak kor l ehetséges meglévô s or módosítása, vagy új sor bevitele, a táblába V-táblán keresztül ha az értékek eleget tesznek a V-táblát létrehozó SELECT WHERE feltételnek. Nem lehet adatot
bevinni a virtuális táblába, ha 1. a V-tábla több táblából állt össze 2. a SELECT - aggregáló függvényt - GROUP BY - parancsrészt, - DISTINCT - kulcsszót - származtatott oszlopot tartalmaz. 3. a V-táblát másik, nem módosítható V-táblából hoztuk létre Virtuális t áblák i s eg ymásba á gyazhatók. V -táblákat u gyanúgy le het tö rölni min t a táblákat: kiadjuk a DROP VIEW V-táblanév parancsot. Beágyazott SQL Az SQL beépülõ tipusú nyelv (host-nyelv) ami azt jelenti, hogy csak egy másik valódi programnyelvvel együtt mûködik, hiszen nincsenek benne ciklusutasítások, elágazások input output utasítások. A megvalósított rendszerekben az interaktív üzemmód mellett lehetõsége van az SQL elõre megírt számítógép programból történõ használatára is. Ezt az üzemmódot nevezzük az SQL beágyazott használatnak. A beágyazott üz emmódban e gy m egfelelõen v álasztott programozási (gazda) n yelvet kiegészítenek SQL
utasításokkal, s ezzel lehetõvé teszik az SQL lehetõségek használatát is. A gazdanyelv bõvül a z SQL-lel, u gyanakkor a z S QL na gy h atékonyságú pr ogramozási segédeszközöket kap. Legismertebb gazdanyelvek: Cobol, Fortran, PL/1, C, dBase nyelvek A pr ogramok vé grehajtása a f ordítási m ûveletek ut án a s zokásos m ódon t örténik, a program az SQL-t a program szövegébe írt utasításoknak megfelelõen hajtja végre. A b eágyazott S QL-ben ol yan ut asításokra va n s zükség, a melyek a datokat t udnak cserélni a gazdanyelv v áltozóival, s az er edménytáblázatok ad atait - legalább s orokra bontva, e gymás ut án k észek átadni, Az S QL ut asítások a gazdanyelvben olyan eljárásoknak felelnek meg, amelyek: • végrehajtják a megfelelõ SQL mûveletet • bizonyos kiegészítésekkel adatokat cserélnek a gazdanyelv változóival A gazdanyelv általában korlátozás nélkül használható Az SQL kurzor: A S ELECT p aranccsal l
étrehozott E -táblához eg y n év r endelhetõ és e zzel a t ábla fixálható, létezõvé tehetõ a behívó programnyelv utasításaival feldolgozható. Egy S ELECT egy m eghatározott s orára m utató poi nter. H asználata l ehetõvé t eszi, hogy egy SELECT eredményét ne csak egy objektumként (táblázatként), hanem soronként is lehessen kezelni. A kur zor ha sználatához definiálni kell az t a DECLARE utasítással, a mi a kur zor nevének és a hoz zá t artozó S ELECT-nek a me gadását je lenti. S zintén me g k ell h atározni, hogy a ku rzoron ke resztül kí vánjuk-e a t áblák a datait m ódosítani, s megadható a s orok sorrendje. DECLARE kurzornév CURSOR FOR SELECT-parancs [FOR UPDATE OF oszloplista] A kur zor hoz zárendelése a z E -táblához m ég ne m j elenti a zt, hogy hoz zá i s f érünk a táblához. Ehhez elõbb meg kell nyitni a táblát A kijelölt SELECT mûveleteket a kurzor megnyitása hajtja végre (OPEN). A kurzor SELECT-jével
kiválasztott sorok számát általában egy, a r endszerben definiált (Sqlcnt nevû) változó tartalmazza. A következõ sorra a kurzor a FETCH utasítással pozícionálható (az elsõ FETCH az elsõ sorra pozícionál). Hatására a kurzort egy sorral lejjebb viszi, és azt a sort ahol a kurzor áll átviszi a vá ltozólistában s zereplõ vá ltozókba, e gymásnak s orrend s zerint m egfeleltetve. A FETCH parancsot általában ciklusba építjük be, minden cikluslépésben eggyel lejjebb megy az E-táblában a kurzor. Beágyazott ü zemmódban a D ELETE és U PDATE u tasítások W HERE komponensében megadható a CURRENT OF <kurzornév> kifejezés. Ez esetben a mûvelet az SQL kurzorral kijelölt aktuális sorra vonatkozik. Használat után a kurzort a CLOSE utasítással lehet lezárni. A CLOSE parancs hatására az E-tábla nem áll továbbra rendelkezésre. Ha mégis szükség volna rá újból meg kell nyitni. B.18 A strukturált rendszerfejlesztési
módszertanok jellemzői 1. Termékszemlélet A m ódszertanban a z e lõállítandó t erméktípusok e lõre m eghatározottak é s meghatározott minõségi követelményeknek kell megfelelniük. A m érnök f eladata v alamilyen i pari t ermék, v agy l étesítmény m egtervezése. E z munkájának vé geredménye/végterméke. T ervezéskor e lõször a kívánt vé gtermék tulajdonságait határozzák meg, majd az ehhez szükséges szerelvényeket, alkatrészeket. Az így meghatározott elemek részletes tervezése vezet el a kész tervhez. Ezt a szemléletet érvényesítik a strukturált módszertanok, az információs rendszerek, vagy szoftver csomagok tervezésekor. E s zerint a f ejlesztésnek n em cs upán v égterméke v an, h anem m inden t evékenység valamilyen terméket állít elõ, vagy módosít. Az elõállítandó terméktípusok a módszertanban elõre me ghatározottak, é s a mi e gy to vábbi n agyon lé nyeges je llemzõ: h atározott min õségi
követelményeknek kell eleget tenniük. A minõségkezelés tehát kifejezett hangsúlyt kapott 2. Életcikluson alapuló technológia 3. A fejlesztés menetének pontos leírása (modulok -> szakaszok-> lépések) Ahogy a m ûszaki t echnológiáknak m egvannak a j ól m eghatározott f ázisai, ug yanúgy a strukturált módszertanok is pontosan elõírják a fejlesztés szakaszait, az azon belül szükséges tevékenységeket, a zt, hog y m ilyen vé geredménynek ke ll l ennie a z e gyes t evékenységeknek, ehhez m ilyen m ás t evékenységek t ermékeit k ell f elhasználni, m ilyen t echnikákat k ell használni a z e gyes te rmékek e lõállításához, é s mil yen min õségi k övetelményeknek ke ll a termékeknek eleget tenni. Ilyen m ódon m aga a fejlesztés m enete i s m integy s zabványossá v álik, és a k észülõ termékek i s s zabványosított f eltételeknek t esznek el eget. E záltal az eg ész m unka s okkal áttekinthetõbbé vá lik, pont osan t
ervezhetõ é s i rányítható. Így csökkenteni l ehet a pont atlan tervezésbõl származó késõbbi határidõ és költségtúllépések valószínűségét. 4. Technikák kap csolódnak h ozzá (adatmodellezés, d ialógustervezés, folyamattervezés). A strukturált módszertanokban alkalmazott módszereket technikáknak nevezzük. A m ódszertan abban kül önbözik a m ódszertől, hogy amíg az ut óbbi egy jól körülhatárolt feladat m egoldásának es zköze, ad dig a m ódszertan eg ymással ö sszefüggõ f eladatok megoldásának egymással ös szefüggõ, s õt egymásra épülõ m ódszerét je lenti. A strukturált módszertanokban használatos módszereket többnyire technikáknak szoktuk nevezni. Vannak olyan t echnikák, a melyeket e zekkel a m ódszertanokkal e gyidejûleg f ejlesztettek ki , de többségük m ár kor ábban i s i smert vol t va lamilyen f ormában. A z ú jszerûséget ép pen az említett r endszerezés j elentette, t ehát az , h ogy a k
ülönbözõ t echnikák egymásra ép ülnek. Néhány példa a technikákra: adatmodellezés, folyamatmodellezés, dialógustervezés. 5. Az elemzés felülrõl lefelé, a tervezés alulról felfelé Amikor me g akarunk is merni v alamit - tehát e lemezzük - akkor n em szabad az ap ró részleteknél l eragadnunk, m ert í gy kevés e sélyünk l esz a rra, ho gy a l ényeget m eg t udjuk ragadni. A m egismerendõ r endszer t ehát a lrendszerekre, a zokat f unkciókra, m ajd folyamatokra s tb. bont juk l e, amíg e ljutunk a t ovább m ár ne m r észletezendõ s zintig E gy további f ontos f elismerés, hog y m inden s zinten be lül e gyaránt f oglalkoznunk ke ll a z információs rendszerek mindegyik alapvetõ elemcsoportjával: Az adatokkal, a folyamatokkal (feldolgozások), és a rendszer határfelületeivel. Az elemzéssel szemben tehát a t ervezés alulról - a részletektõl - felfelé haladva építkezik, és így jut el az új egészig. Ennek oka az, hogy a
módosított, vagy új alapelemek határozzák meg a felettük lévõ összeépítési szint elemeit, és ez így követhetõ végig felfelé haladva. 6. Fizikai és logikai fejlesztések különválasztása Minden információs rendszernek van egyfajta belsõ logikája. A r endszerek f izikai é s l ogikai vona tkozásainak s zétválasztott ke zelése jellemzõ a strukturált módszertanokban. Ennek oka, hogy ily módon csökkenteni lehessen az egyszerre kezelendõ pr oblémák s zámát, va lamint a z, h ogy vi lágosan, e lhatároltan m eg l ehessen fogalmazni a rendszerek logikai szintû leírását, amely hosszú ideig stabil maradhat, mert nem függ azoktól a konkrét eszközöktõl, amelyeken adott esetben a rendszert mûködtetni kell. 7. Fokozatosság és iterativitás Fokozatosság: nem törekszünk arra, hogy egybõl pontosan le legyenek írva az objektumok. Iterativitás: egy meghatározott mûveletet elvégezve, majd a kapott eredményen ismételten végrehajtva egy
pontosabb eredményhez jutunk. 8. Minõségkezelés Konkrét minõségi követelmények hozzárendelése a termékhez. 9. Projektvezetés támogatása - feladatok felosztása, - feladatok sorra kerülésének sorrendje, - minõségi követelmények. 10. Testreszabhatóság: A feladathoz alakítható. 11. Számítógépes támogatás Egyik l egfontosabb j ellemzõje a s trukturált m ódszertanoknak. M inden strukturált módszertannak van hozzá kifejlesztett számítógépes támogatása, ami figyelembe vehetõ. Sokféle r endszerfejlesztési t echnológia vol t é s va n, m elyek t öbbsége s ok köz ös jellemzõt takar. - Top-down irányultság A problémát az általánostól, felülrõl kiindulva göngyölítik fel, így jutnak alulra a résztevékenységekhez. - Szakaszos bontás A tervezhetõséget, a mérhetõséget, az ellenõrizhetõséget szolgálja. Természetes célok: - A célok megfogalmazása. - A logikai tervezés (még eltekintünk az eszközöktõl). - Fizikai
tervezés (már számolunk a konkrét eszközökkel). - Megvalósítás szakasza (programozás vagy programcsomag adaptálás). - Kipróbálás (tesztelés, átvétel). - A b evezetés i deje (elsõ r endszerbevezetés v agy át térés az ú j rendszerre). - Idõnkénti minõségi vizsgálat. Minden szakasz kockázatokkal jár, könnyen el lehet téveszteni a célszerû rendszert. E zért m inden s zakaszban m eg ke ll vi zsgálni, hog y j ó út on járunk-e? A r endszerkészítõ f elelõsségét a m ódszeres kül sõ m inõségi vizsgálat oldja fel. Csoportos alkotó technikák Értékelemzés CASE eszközök (Magic, Oracle, Flora stb.) HIPO Strukturált B.SP döntési programozási táblák módszerek Tervezés Tervezés elõkészítése ARDOSZ Kivitelezés Próbaüzem prg. javítás SSADM SDM (Hoskyns, Pandata) SchwAr ISAC Módszerek és technikák rendszerezése Rendszer éles üzemelése B.19 Az SSADM módszertan jellemzői, felépítése, moduljai Az S SADM s
zerkezete eg y h ierarchikus f elépítésû, k öveti a f elülrõl l efelé h aladó szemléletet. A z S SADM e gészen m odulokra, a m odulok s zakaszokra, e zek l épésekre, a lépések feladatokra vannak felosztva. Az e lsõ s zinten he lyet f oglaló m odulok i lletve e zek alá rendelt s zakaszok a következõk: - megvalósíthatóság elemzés 0. m egvalósíthatóság e ldöntése - bemutatja, h ogy ér demes-e e gyáltalán elindítani a szóbanforgó projektet - követelmény elemzés 1. jelenlegi helyzet vizsgálata • folyamatok feltárása • az adatok feltárása • a követelmények meghatározása 2. rendszerszervezési változat kiválasztása - követelmény specifikáció 3. követelmény meghatározása • adatok • funkciók • felhasználói interfész - logikai rendszerspecifikáció 4. rendszertechnikai változat kiválasztása 5. logikai rendszerszevezés - fizikai rendszertervezés 6. f izikai r endszertervezés - célja, h ogy p rogramtervezésre i ll
p rogramozásra (program generálásra) a lkalmas m ódon í rja l e a m egvalósítandó r endszert ( szoftvert ) • Adattervek • feldolgozástervek • interfész-tervek Tehát 5 m odulból é s 7 szakaszból á ll ( a m odulok ni ncsenek s zámozva a s zakaszok pedig 0 - tól 6 - ig) A z el emzés és a t ervezés n em v álasztható el m ereven. V annak tevékenységek a melyekrõl ne héz e ldönteni, ho gy hová s orolódnak. Az S SADM o lyan strukturált r endszerszervezési m ódszertan, am ely a f ejlesztés el emzési é s t ervezési f ázisait támogatja és e leget te sz a s trukturált mó dszertanokkal s zemben tá masztható v alamennyi követelménynek. Felépítésében 3 nagyobb részt tartalmaz, - strukturális ( az elvégzendõ tevékenységek idõbeniségével foglalkozik) - technikai része ( hogyan kell a tevékenységeket elvégezni) - adatszótára - leírja az elõállítandó termékeket. Az SSADM -ben 3 dimenzió van adatok folyamatok és
idõ Mindegyik di menzió kezelése t echnikák r évén va lósul m eg. Ezek azok a módszerek, amelyek ö sszehangolt r endszere j elenti a m ódszertant. A z ö sszehangolást a m ódszertan szerkezete valósítja meg, amely megadja, hogy melyik tevékenységet mikor kell elvégezni. Adattechnikák: logikai adatmodellezés, relációs adatelemzés és fizikai adattervezés Folyamattechnikák: ad atfolyammodellezés, f unkció-meghatározás, I/O t ervezés, dialógustervezés, m enütervezés, l ogikai ad atbázis f olyamatok t ervezése, f izikai f olyamattervezés. Idõtechnikák: egyedtörténeti diagramok, esemény - hatás diagramok, logikai adatbázis folyamatok tervezése, fizikai folyamat- és adattervezés. B.20 A CASE eszközök és jellemzőik CASE = C omputer A ided S oftver E ngineering = s zámítógéppel t ámogatott szoftver technológia A CASE eszközöket - melyek elsõdleges f eladata az összehangolás - nevezzük számítógéppel segített
rendszertervezésnek (pl.: Magic, Oracle, Flora stb) A m ai C ASE e szközökben c sak e gyetlen dol og köz ös: t árgyuk a teljes információs rendszer. Alapkoncepcióikban már eltérnek egymástól Igen eltérõ hardver és szoftver környezetben mûködnek (ma leggyakoribb a 32 bites mikroszámítógép). A nagygép a CASE-el kétoldalúan kommunikál. Szótárban tárolja az elõzetesen elemzett te rvezési in formációkat, me lyeket te rminálról tö ltenek b e. L etöltéssel k erül a mikrogépre, amelyen az elemzõ programok futnak. A CASE eszköz egy termék: - Van benne valamilyen szakértõi rendszer vagy mesterséges intelligencia. - A rendszer objektumorientált. - SQL-t vagy más fejlett lekérdezõ rendszert használ. - Programgenerátort alkalmaz. CASE eszközök általános jellemzõi és csoportosítása A r endszerfejlesztési m unka cs ak ú gy l ehet er edményes, h a t echnológiát al kalmazunk.-> engineering A struktúrált módszertanokat a
számítástechnika és az információtechnológia segíti, mely hatékonnyá teszi a munkát. CASE eszközök használata mindig módszertant követel meg, de ezek ö nmagukban n em m ódszertanok. G yakran ha tározott m ódszertan né lkül, né hány szabványrészletet pr óbálnak s zoftver e szközökkel m egvalósítani, é s e zeket a s zoftver termékeket C ASE es zköz n éven ér tékesítik. A r endszerszervezésben az i dõtényezõt l ehet a CASE eszközök használatával csökkenti. Két ok miatt csökkenti az idõigényt: Dokumentálás gyorsabb, és a fejlesztési adatbázis naprakészebb. A C ASE s zoftverek ne mcsak a dokum entálást könn yítik m eg, ha nem m eggátolják a munkacsoport tagjainak párhuzamos mûködésekor egymás munkájának zavarását. Általános jellemzõik: 1. Mindig egy határozott módszertanra épülnek 2. Önmagukban nem módszertanok 3. Rendszerkövetelmények, tervezési specifikációk grafikus létrehozása és
karbantartása. 4. Információk és keresztreferenciák elemzése 5. Prototipizálás és szimuláció 6. Kódgenerálás és dokumentálás 7. Szabványosítás 8. Kapcsolat létesítése külsõ adatbázisokkal és szótárakkal 9. Adatok és információk tárolása és visszakeresése Csoportosításuk: I. Integráltság alapján 1. CASE eszköz (tools) legalább 1 fázist támogat 2. CASE felszerelés (toolkit) 1 egész életciklusbeli fázist támogat 3. CASE munkapad (workbench) -> lényegében az egész életciklust lefedi, -> fejlesztõ- és tárgyrendszer egy gépen van. II. Életciklusbeli elhelyezkedés alapján 1. Upper CASE stratégiai tervezés, projectvezetés 2. Middle CASE rendszerelemzés, tervezés 3. Lower CASE egyszerûbb rendszerspecifikációk B.21 Tervezés, elemzés SSADM - ben TERVEZÉS Az S SADM o lyan s trukturált r endszerszervezési m ódszertan, am ely a fejlesztéselemzési és tervezési fázisit támogatja, és eleget tesz a strukturált
módszertanokkal szemben t ámasztható v alamennyi k övetkezménynek. F elépítésében h árom na gyobb r észt tartalmaz. St rukturális része a z e lvégzendõ t evékenységek i dõbeliségével f oglalkozik, technikai része azt mondja meg, hogyan kell a t evékenységeket elvégezni, adatszótára pedig leírja az előállítandó termékeket. Ennek a lapján a zt, mondhatjuk, hog y a m odulok köz ül ke ttõ e lemzéssel (Követelmények el emzés, K övetelmény m eghatározás), k ettõ p edig t ervezéssel ( Logikai rendszerspecifikáció, Fizikai r endszertervezés) f oglalkozik. A hhoz, hog y ezeknek a moduloknak, a bennük foglalt szakaszoknak és lépéseknek a szerepét, értelmét megérthessük, a l egcélszerûbb a k ívánt v égeredménybõl k iindulni. E z a v égeredmény a t ervezési tevékenység eredménye. A f ent e mlített k ét te rvezési mo dul h árom f ejlesztési s zakaszt jelent, m ert a Logikai rendszerspecifikáció két szakaszból áll:
Rendszertechnikai változat kiválasztása Logikai rendszertervezés Ehhez jön az utolsó modul egyetlen szakasza: Fizikai rendszertervezés Ezek a szakaszok nem egyszerûen sorakoznak egymás után, hanem határozott logikai szerkezetet alkotnak. Rendszertechnikai változat Fizikai rendszertervezés Logikai rendszertervezés Ahhoz, hogy a fizikai rendszertervezés elkezdődhessen, már késze kell lennie a logikai tervnek, t ovábbá m eg ke llett, hog y t örténjen a t echnikai környezet ki választása. E feltételek nélkül ugyanis nem tudnánk, minek a fizikai tervére van szükség és mire, milyen környezetre készítsük el a tervet. A f izikai te rv célja, h ogy p rogramtervezésre, i lletve p rogramozásra (programgenerálásra) a lkalmas m ódon í rja l e a m egvalósítandó r endszert. H árom na gyobb csoportba sorolhatók azok a termékek, amelyeket ennek során létre kell hozni: adattervek feldolgozástervek interfész-tervek Azért ez ek, m
ert S SADM - felfogásban az i nformációs r endszerek al apszerkezete a következõ: Adatbázis Interfész Feldolgozások Interfész Felhasználó A felhasználó és az adatbázis között helyezkednek el a feldolgozások, amelyek mind az adatbázishoz, mind a felhasználóhoz interfésszel csatlakoznak. A S SADM n em f oglalkozik: a f elhasználói i nterfészek f izikai t ervezésének módszereivel. Előírja a képerny õk, i nput n yomtatványok, n yomtatási ké pek f izikai s zintû megtervezésének s zükségességét, d e n em ad ez ekre s emmilyen s ajátos m ódszert, m ert e módszerek r égóta i smertek é s ki forrottak a s zakmában. T ovábbi i ndok, hog y az S SADM támogatja a p rototipizálás a lkalmazását, me lynek s orán ép pen en nek az i nterfésznek a megtervezése kap különös hangsúlyt, ugyanakkor az ilyen típusú részletes módszere jórészt a prototipizáló eszköztõl függ. Annyit a zonban m egállapíthatunk a f elhasználói i
nterfészekkel ka pcsolatban, hog y a fizikai t ervezés m egkezdésekor i smerni k ell a f eldolgozások I/O s zerkezetét, a menüszerkezetet és a m egvalósítandó d ialógusokat, b eleértve ezeknek a t ervezési objektumoknak a k onkrét ad attartalmát. M indezek az el emek a l ogikai t ervezés ál tal szolgáltatandók. E mellett pe rsze a zt i s t udni ke ll, hogy m ilyen t echnikai e szközökre számíthatunk a f elhasználói in terfész f izikai me gvalósításához, a mi a v álasztott rendszertechnikai változat révén válik adottá. A fizikai adattervezés két lépésben történik: elsõ közelítésű terv finomított terv Az e lsõ k özelítésű terv kialakításánál csak olyan, ún. ökölszabályokat alkalmazunk, amelyek minden fizikai megvalósításánál érvényesek. A cél az, hogy a logikai tervezés egyik végeredményét j elentõ l ogikai ad atmodellt f izikai a dattervvé a lakítsuk á t. N agyon l ényeges azonban azt t udni, hogy maga
a l ogikai adatmodell - ill. ál talában a r endszer l ogikai t erve ettõl m ég m egmarad és al kalmas ar ra, h ogy a j övõben eg y m ásik f izikai k örnyezetre v aló áttéréskor csak a fizikai tervezést kelljen újra elvégezni! Az el sõ közelítésű terv elkésztésénél azt feltételezzük, hogy a logikai adatmodell egyedtípusaitól r ekordtípusok ( relációs t áblák) l esznek, a r ekordok t árolása f izikai blokkokban történik, ahová az elérési igényeknek megfelelõen csoportosítjuk és soroljuk õket. Ehhez s zükség va n a nnak i smeretére, ho gy a z i nformációs r endszer e gyes f unkciói m ely rekordokat igényelik elsõdleges kulcs, melyeket másodlagos kulcs alapján. Ezeket a kiinduló információkat tehát szintén szolgáltatnia kell a logikai tervnek. Az elsõ köz vetítésű fizikai terv elkészítése módot ad arra, hogy a várható tárolóhely foglalásra vonatkozóbecsléseket végezzünk. Viszonylag k evés es ély v an a rra, h
ogy ez a t erv m ár v égleges i s l ehet, ez ért v an szükség a finomításra, amit optimálisnak is szoktak mondani. A f inomításhoz a t árolóhely foglalásra, va lamint a vi sszakeresésekre von atkozó i dõkövetelmények ismerete szükséges. Ezeket szintén a lo gikai te rvnek k ell szolgáltatnia, vagy legalábbis közvetítenie. A feldolgozások fizikai tervezése is két lépésre oszlik: funkcióelemek feltérképezése funkció-meghatározás teljessé tétele A logikai tervezés Összehasonlítva a f izikai t ervezéssel, ez a s zakasz v iszonylag e gyszerû szerkezetû. Ennek az az o ka, h ogy az S SADM a t ervezési munkát m egelõzõ el emzés s orán amit cs ak lehet, elvégeztet a logikai tervezésbõl is, ezáltal téve lehetõvé a rendszertechnikai változatnak a l ogikai t ervezési s zakasszal p árhuzamos m egoldását. E zért j ellemeztem a K övetelmény specifikáció s zakaszát az el õzõ r észben ú gy, m int am elyet az el emzés
és tervezés köz ötti átmenetnek is lehet tekinteni. A lo gikai s zintû a dattervezéssel, p l. egyáltalán n em k ell f oglalkozni, me rt a z adatmodellezés már a k orai felmérések során elkezdõdik, és mire a l ogikai tervezési szakasz indul, a ddigra m ár ké szen á ll a kí vánt r endszer lo gikai a datmodellje. A z a datmodellek jellegébõl fakad ugyanis, hogy eleve logikai szinten készülnek, hiszen ezeknek fizikai szintje nincs is. A feldolgozások logikai szintû tervezéséhez az SSADM két csoportba sorolja ezeket: a lekérdezõ a karbantartó feldolgozások csoportjába. Ezek l ogikai t ervezését r észben pá rhuzamosan l ehet vé gezni, a zonban bi zonyos elsõbbséget é lveznek a karbantartó f eldolgozások, m ert e zek t ervezése s orán ki derülhet, ho gy a karbantartás lekérdezést is szükségessé tesz bizonyos döntések meghozatalához. Akár k arbantartó, ak ár l ekérdezõ feldolgozásról v an s zó, a l ogikai t ervezés er
edménye egységes: J ackson - struktúra, am elyet az után a f izikai t ervezés s orán m ár cs ak k ontroll információval kell ellátni, hogy programterv váljék belõle. A k arbantartási f eldolgozások m egtervezéséhez i smerni k ell az es eményt, amely a karbantartás k iváltó o ka, v alamint en nek az es eménynek az ad tamodellre g yakorolt h atásait. Ugyancsak szükség van a karbantartó funkció I/O - szerkezetére. A l ekérdezési f eldolgozások m egtervezése i gényeli a l ogikai ad atmodell, az ez en meghatározott l ekérdezési ut ak, va lamint a l ekérdezõ f unkciókkal ka pcsolatos I/O - szerkezetek rendelkezésre ál lását. E zeket az el emeket t ehát a l ogikai t ervezést m egelõzõ s zakasznak k ell szolgáltatnia. A k arbantartó és l ekérdezõ f eldolgozások t ervezésével p árhuzamos l épés a d ialógusok tervezése, am elynek k iinduló al apja az O n-line f unkciók I/O - szerkezete, er edménye p edig a szintén J ackson - féle j
elölésrendszerben áb rázolt d ialógusszerkezet, v alamint a m enüszerkezet. Ezek a t ervezési t ermékek - a f izikai t ervezési s zabályokat i s f igyelembevéve - kellõ a lapot képeznek a megfelelõ programok elkészítéséhez. Az S SADM m egköveteli v alamennyi f elhasználói k övetelményírásban -méghozzá el õirt, egységes f ormában - való r ögzítését. E zt a köve telmény ka talógusnak nevezzük é s ké szítése a projekt ke zdetekor i ndul e l, m ajd t artalma és t erjedelme f okozatosan bõ vül m ind a z öt s zakasz során. A lo gikai te rv ö sszehasonlítása - amely az u tolsó l épés - ugyanúgy, min t a f izikai te rv esetében - a minõségellenõrzést is magában foglalja. ELEMZÉS A logikai tervezés által igényelt input az ezt megelõzõ elemzési szakaszok outputjaként áll elõ. Az elemzéssel az SSADM két modulja foglalkozik A K övetelmény elemzés és a Követelmény m eghatározása, k ét el emzési m odul, am ely három
fejlesztési szakaszt jelent, mert a Követelményelemzés két szakaszból áll: a jelenlegi helyzet vizsgálata rendszertervezési változat kiválasztása Ehhez jön a követelmény meghatározás moduljának egyetlen szakasza: a követelmények meghatározása A jelenlegi helyzet vizsgálata Rendszerszervezési változat A követelmények m eghatározása Ez a s zerkezet - eltérõen a t ervezéstõl - nem t artalmaz p árhuzamosságot. E nnek egyszerû o ka, h ogy csak a j elenlegi h elyzet i smeretében l ehetséges rendszerszervezési megoldási vá ltozatokat ki dolgozni, i ll. a zok közül vá lasztani A mikor ez a v álasztás megtörtént, akkor határozzuk meg a követelményeket részletesen a választott változatra. A követelmények meghatározása szakasz a legbonyolultabb az SSADM valamennyi szakasza közül a maga nyolc lépésével. A bonyolultság azért látszólagos, mert a korábbiakban megismert f õ t evékenység i ll. t ermékcsoportok i
tt i s na gyon vi lágosan f elismerhetõk A csoportosító szempontok: adatok funkciók felhasználói interfész Összehasonlítva a h elyzetet a t ervezéssel k apcsolatban m egismerttel, i tt m ég n em beszélhetünk ad attervekrõl, cs ak ad atmodellekrõl, a f eldolgozások t ervezése h elyett a rendszer funkcióit elemezzük, az interfészek közül pedig a felhasználóinak a specifikálása a cél. Az ad atok v onatkozásában a t ervezés s zámára o lyan ad atmodellt k ell szolgáltatni, amely a v árható adatmennyiségekkel kapcsolatos információt is tartalmazza. Tekintettel arra, hogy ez az adatmodell lesz közvetlenül a tervezés alapja, nyilvánvaló, hogy a tervezett, nem pedig a m eglévõ r endszer ad atmodelljérõl v an s zó. E zt az ért ér demes ha ngsúlyozni, m ert a szakmában m eglehetõsen k özismert, h ogy a m odellezésnél a m eglévõ r endszer ad ataiból szoktunk ki indulni. E z i tt i s így t örténik, é s há rom l épésben j
utunk e l a t ervezés s zámára szolgáltatandó modellhez: a meglévõ rendszer logikai adatmodellje a tervezett rendszer logikai adatmodellje a tervezett rendszer normalizált logikai adatmodellje. Ahhoz, hogy a tervezett rendszer adatmodelljét a meglévõ rendszerébõl levezethessük, szükség v an a f elhasználói k övetelmények i smeretére, amelyek az ún. köve telmény katalógusban dokumentáltak. Ezek alapján azt kell elemezni, hogy milyen részekkel kívánatos kiegészíteni a me glévõ r endszer a datmodelljét. V agy esetleg mit k ell elhagyni a mo dellbõl, mert feleslegessé válik az új rendszerben. Itt ér demes k itérni ar ra, h ogy az ad atmodellezés az S SADM -ben e lõször a z ún. logikai adatszerkezet kialakítását jelenti, amely nem más, mint egy egyed-kapcsolati modell, igen k evés t ulajdonságtípussal f elszerelve. E z a z i ndítás m egfelel an nak, h ogy a f ejlesztés kezdeti s zakaszaiban m ég k evesebb i smeretünk v an
a r észletekrõl. A mikor az tán az adatelemzéssel pá rhuzamosan f olyó f olyamatelemzés e ljut a f unkciók i nput/output követelményeinek m eghatározásához, ak kor l ehet el végezni a r elációs ad atelemzést (normalizálást) az inputokat, ill. outputokat, mint tulajdonság típusforrásokat felhasználva Ez a r elációs ad atelemzés f üggetlen a k orábban k ialakított eg yed-kapcsolati adatmodelltõl. Úgy is mondhatjuk, hogy az egyedkapcsolati modell felülrõl lefelé haladó (topdown) m ódon a rendszer e gészére v onatkozó i smeretek al apján h atározzuk m eg, m ig a normalizált m odellt a t ulajdonságtípusokból ki indulva, t ehát alulról felfelé haladva (bottomup) f ejlesztjük k i, m ajd a k étféle er edményt ö sszehasonlítva és eg ymással el lenõrizve határozzuk meg a végleges modellt. A f unkciók elemzését, i ll. m eghatározását az ad atelemzéshez h asonló f okozatosság jellemzi. A zok a f unkciók, a melyek I/O -
szerkezete k épezi az al apját a r elációs adatelemzésnek - valamint m ás t ovábbi t ervezési l épéseknek - a kö vetkezõ l épésekben alakulnak ki: meglévõ rendszer fizikai folyamatai meglévõ rendszer logikai folyamatai tervezett rendszer logikai folyamatai tervezett rendszer funkciói. A k övetelmény m eghatározás ar ra a m egoldási v áltozatra k észül el , am elyre a felhasználói vezetés választása esett. A folyamatok elemzése az ún. adatfolyam modellezési technika segitségével történik Ennek vé geredményébõl l ehet a f unkciókat m eghatározni, e gymáshoz r endelve a z összetartozó feldolgozásokat, inputokat, outputokat, valamint adatmodellbeli adatokat A rendszerszervezési változat kiválasztása A t ervezésnél m ár t alálkoztunk eg y k iválasztási s zakasszal, a r endszertechnikai változat ki választásával. A z e lvégzendõ l épések j ellegét i lletõen na gyfokú a ha sonlóság, d e van e gy l
ényeges k ülönbség. A r endszertechnikai v áltozat es etén az t a környezetet k ellett megválasztani, amelyre a fizikai terv készül, itt viszont egy rendszerszervezési megoldást kell kiválasztani. Ennek a választásnak az az alapgondolata, hogy a felhasználóra ne erõltessünk rá egy meghatározott s zervezési e lképzelést. K ínáljunk f el n éhány változatot me gmutatva a legfontosabb j ellemzõit, ha dd dönt se el a f elhasználó, ho gy m elyik a n eki l egmegfelelõbb. Ehhez m egfelelõ v áltozatot ke ll ki dolgozni. A r endszerszervezési vá ltozatokkal ka pcsolatos döntés két lépcsős: 1. azoknak a változatoknak a kiszûrése, amelyek már a nagyvonalú jellemzők alapján láthatóan nem megfelelőek, 2. választás a megmaradt változatok közül azok részletes jellemzése alapján Ahhoz, hog y a ki választást ilyen módon lehessen végrehajtani, először megfelelő számú változatot kell kidolgozni. Javasolt szám a 3 - 6 Megtörténik,
hog y a vá lasztás ne m e gy f elkínált vá ltozásra e sik, ha nem módosításra van szükség, esetleg több javasolt változat kombinációját kívánja a felhasználó. A jelenlegi helyzet vizsgálata Célja, hogy alapot teremtsen a rendszerszervezési változatok kimunkálásához. Az a lapgondolat a z, hogy új r endszert a kkor t udunk i gazán l étrehozni, ha pont osan megértjük, ho gyan ke ll m ûködnie. A z e setek csekély s zázalékától eltekintve, v alamilyen létező információs rendszert, vagy szoftvert kell az újnak felváltania, amelynek a megismerése ad módot mind a benne rejlő hibák feltárására, mind pedig az új rendszertől elvárt többlet szolgáltatások megértésére. 1. először a meglévő, fizikailag létező rendszert tanulmányozzuk 2. a második fokozatban kiszűrjük, eltávolítjuk a fizikai elemeket, és így jutunk el a meglevő rendszer logikájának a megismeréséig. 3. a következő fokozat, a tervezett (kívánt) új
rendszer logikájának a kialakítása - a későbbi szakaszok feladata Ebben a f elmérési j ellegû s zakaszban a m eglévõ r endszer m egismerésének h árom f õ irányát különböztetjük meg: folyamatok feltárása az adatok feltárása a követelmények meghatározása 130. lépés A jelenlegi folyamatok felmérése 110. lépés Az elemzés kereteinek a kijelölése 120. lépés A követelmények felmérése 150. lépés A jelenlegi rendszer logikája 140. lépés Az adatok felmérése 160. lépés A felmérés eredményeinek rendszerezése A megvalósíthatóság elemzése Ez az SSADM 0. szakasza, amely egyben az 5 modul közül az első Két fontos dolgot kell tudni róla: nem tartozik a kötelezően végrehajtandó szakaszok közé, ha alkalmazzuk, akkor az a célja, hogy bemutassa, érdemes-e egyáltalán elindítani a szóban forgó projektet. Kihagyása esetén a követelmény elemzési modul veszi át a szerepét. 010. lépés
Elôkészület 020. lépés Probléma meghatározás 040. lépés Megvalósíthatósági tanulmány elkészítése 030. lépés Megvalósítható változatok kiválasztása B.22 A félvezető technológiák fejlődésének gazdasági hatásai a számítógép iparra. Fõ f ejlesztési i rányok a f élvezetõ t echnikában: az i ntegrálsági f ok növelése, a vonalvastagság csökkentése, szeletátmérõ növelése, a mérés, a hibaanalízis, rendszertechnikai egyszerûsítések, fejlesztések, új megoldások. Az i ntegráltsági f ok növe lésével e gyre i nkább a s zilárd a nyagon be lüli s zerkezet kialakításából és n em alkatrész ö sszeszerelésébõl ál l eg y d igitális t echnikai b erendezés elektronikai r észe. A z i ntegrált ár amkörök f unkcionális e gységek be lsõ f elé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 m egszerzése ér dekében. A t echnikai f
ejlesztések a g yorsasági s tb 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 ál talános i nflációs tendenciák közepette - kb. 10 na gyságrenddel csökkent Ugyanakkor a mûszaki paraméterek (megbízhatóság, te ljesítményfelvétel, m éret) 5 - 10 na gyságrenddel j avultak J obb m inõségû készülék u táni k ereslet és az el adási ár n õ, ugyanakkor cs ökken az ü zembe h elyezési, garanciális ás szerviz költség. A ch ippek b onyolultsága év ente m egduplázódik a m éretek cs ökkenése miatt eg yre növekszik a f unkcionális e gységek t eljesítménye amit a c hippenkénti b itszámmal v agy az 1 cm2 -en elhelyezett tranzisztorok számával mérnek Az IC j elentõségének korai f elismerése u tal az U SA k ezdeti t
õkebefektetéseinek nagysága, a mikor akkor a s tratégiai ûr kutatási s zempontoknak m egfelelõen állami támogatással is p árosult, é s íg y ó riási e lõnyhöz ju tottak, te kintettel a s zintugrá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 m a m ár a n yugat eu ró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 e hhez a z U SA á ltal d iktált á rak n yomán k ialakult ip arpolitikai h elyzet, amivel a piacon való egyeduralmat igyekszenek megtartani, ami természetesen a számítógép piac feletti egyeduralmat is jelent. A f ejlõdési f olyamat vizsgálatához a gazdasági m ozgások i dõbeli é s t érbeni törvényszerûségeket ke ll f elderíteni. A ga zdasági vá ltozások gy akorlatában f olyamatos é s szakaszos mozgási
formákat különböztetnek meg. Folyamatos változásnak tekinthetõ például az e gyes t echnológiák a prólékos á llandó j ellegû fejlesztése a r észmegoldások t ökéletesítése. Szakaszos, u grásszerû emelkedést v áltanak k i az o lyan n agysiker ű találmányok, mint a tranzisztor, integrált áramkör stb