2020. április 10., péntek

Fájlok elhelyezése és kezelése

A fájlok olyan adatcsoportok, melyek leglényegesebb tulajdonsága, hogy egy választott név segítségével együttesen kezelhetők. Nem kell tehát a felhasználóknak azzal foglalkozniuk, hogy állományaik egy lemez melyik sávján, azon belül is melyik blokkban helyezkednek el, hanem nyugodtan rábízhatják magukat az operációs rendszerre, mely a megadott név alapján előkeresi számukra a megfelelő programot, vagy adatokat.

A fájl fogalma alatt általában tárolt adatokat értünk, de léteznek olyan operációs rendszerek (például a UNIX), ahol ezt a szemléletet minden külső adatfolyamra, így a képernyő tartalomra és a billentyűzetre is általánosították. A fájl fogalom kiszélesítése a programozó számára rendkívül kellemes, ezért egyes elemeit minden operációs rendszerben megtalálhatjuk. A programozó dolga nagyban leegyszerűsödik, mivel nem kell törődnie azzal, hogy programja milyen perifériáról kap majd bemenő adatokat, vagy eredményeit nyomtatóra, képernyőre, fájlba kell kiírnia, vagy csupán át kell adnia egy másik programnak, elegendő egy fájlra hivatkozni.

A mágneses háttértárak feladata a operatív tár kiegészítése, méretének látszólagos megnövelése (lásd virtuális memória!), illetve a felhasználók által létrehozott állományok megőrzése, hogy tartalmuk kikapcsoláskor ne vesszen el, hanem később is elérhető legyen. A lemezeken tárolt adatok három csoportba sorolhatók:

    Ideiglenes állományok, melyeket az operációs rendszer saját működésének támogatására hoz létre. Ilyenek például a memória kezelő által készített, az operatív memóriába éppen nem betöltött lapok vagy szegmensek, illetve cserefájlok.
    Felhasználói állományok, melyekre nevükkel hivatkozhatunk, azaz a klasszikus értelemben vett fájlok, a felhasználói adatok, programok tartós tárolására.
    Adminisztratív állományok, melyek ahhoz szükségesek, hogy az operációs rendszer számára a felhasználók által létrehozott állományok kezeléséhez, megtalálásához szükségesek. Ezek szerkezete, tartalma a felhasználók elől általában rejtett.

A fájlok tartalmuktól és céljuktól függően nagyon sokfélék lehetnek. Az aktuális operációs rendszer szabályai döntik el, hogy ez a különbözőség a névben vagy felépítésben is megjelenik-e vagy csupán értelmezés kérdése. A UNIX esetében például nincs megkülönböztetés, de a DOS kitünteti figyelmével a végrehajtható bináris programokat (EXE, COM), illetve a parancsnyelvi programokat (BAT).

A fájlok többnyire állandóak, azaz létrehozásuktól kezdve megmaradnak a háttértárolón egészen addig, amíg megszüntetésükről kifejezetten nem intézkedünk. A felhasználói folyamatok a hardverrel közvetlenül nem érintkezhetnek, ezért ha egy folyamat valamilyen háttértárolón lévő bemenő adatra vágyik, vagy eredményeit tárolni szeretné, egyéb lehetőség híján, egy rendszerhívás által az operációs rendszer magjához fordul. A rendszermag azon részét, amely a fájlokkal kapcsolatos műveleteket végzi, fájlkezelőnek nevezzük. (Ez nem tévesztendő össze a gyakran azonos nevű felhasználói programmal!) A fájlkezelő az a folyamat, mely a nevekből a logikai blokkszámokat kialakítva a felhasználói folyamatok kéréseit az eszközvezérlőnek továbbítja.
Fájlok jellemzői

A fájlokhoz a nevükön kívül egyéb információk is tartoznak, melyeket részben az operációs rendszer ad, részben a felhasználó. A többlet adatok a különböző operációs rendszerekben a fájlnevekhez hasonló nagy változatosságot mutatnak. Ezek közül egy pár:

    Fáljnév
    Méret
    Tulajdonos/létrehozó
    Utolsó módosítás ideje
    Attribútumok (A fájl állapotára utaló jelzőbiteket összefoglaló néven attribútumoknak nevezzük.)
        archiválandó (archive needed) (Megváltozott az utolsó mentés óta.)
        a fájl csak olvasható (read only)
        rendszerfájl (system)
        rejtett állomány (hidden)
        katalógus (directory)
        szimbolikus hivatkozás (link)
        ideiglenes, adatcsere fájl (pipe)
    Hozzáférési jogok
    Fizikai elhelyezkedés





Fájlok elhelyezése
Folytonos kiosztás

Legegyszerűbb és a későbbi használat szempontjából is kedvező, ha a fájl blokkjai folytonosan helyezkednek el. Az operációs rendszer felderíti, hogy mely szabad területek alkalmasak az állomány befogadására. Gyakran több ilyen terület is van, így dönteni kell.

    First Fit: A legelső alkalmas hely felhasználása a leggyorsabb ugyan, de nem mindig kedvező. Lehet, hogy az éppen elhelyezendő fájl számára ha szűkebben is, de máshol is lett volna hely, és a következő állomány egyetlen lehetőségét vettük el.
    Best Fit: Megkereshetjük azt a szabad tartományt, melynek mérete csak minimálisan haladja meg az állomány méretét, azaz a fájl a legjobban illeszkedik. A módszer hátránya, hogy számításigényes, végig kell nézni az összes szabad helyet, mielőtt a döntésre sor kerülne.
    Worst Fit: A létező legnagyobb helyre is gondolhatunk, melyben az elhelyezett állomány mellett a legtöbb szabad hely marad, azaz a legrosszabbul illeszkedik. E mellett az elhelyezés mellett a legnagyobb az esélye annak, hogy egy újabb fájl is befér majd a fennmaradó szabad blokkokba.

fájlok folytonos kiosztása

fájlok folytonos kiosztása

Bármelyik módszert választjuk is, ha ragaszkodunk a folytonos elhelyezéshez, óhatatlanul szétdarabolódik a rendelkezésre álló hely. Könnyen előfordulhat, hogy bár összességében van elegendő hely a lemezen, újabb fájl mégsem helyezhető el, mivel a szabad helyek nem alkotnak összefüggő tartományt. A másik hátrány, hogy nem ismerhető előre a fájl végleges mérete. Túl precíz illeszkedés esetén a fájl méretének minimális növekedése is csak az egész állomány átmásolásával lehetséges (ha egyáltalán lehetséges). További nagy probléma, hogy ha a fájl belsejéből ki akarunk törölni egy blokkot, az azzal jár, hogy az összes maradék blokkot egy blokkal előre kell mozgatni.
A fájl helyének nyilvántartása viszont egyszerű. Mindössze a kezdő blokk sorszámát kell megadni a katalógusban, a blokkok száma már számítható a fájl méretéből.
Láncolt elhelyezés

Ha lemondunk az egyszerű nyilvántartásról, és egy újabb táblázatot is igénybe veszünk, sokkal rugalmasabb módszerhez jutunk. A katalógusban itt is csak a fájl kezdő blokkjának címét kell megadni, az összes többi adatot a fájl elhelyezési tábla (File Allocation Table - FAT) tartalmazza. A táblázatnak ugyanannyi eleme van, mint ahány blokk a lemezen és minden rekesz tartalma a fájl következő blokkjára mutató sorszám, ha van következő blokk, 0, ha ez volt az utolsó blokk.
fájlok láncolt elhelyezése

fájlok láncolt elhelyezése

Az eljárás mentes a folytonos elhelyezésnél tapasztalható töredezés veszélyétől. A szabad helyek az utolsó blokkig kihasználhatók, a fájlok mérete a lemez fizikai határáig növekedhet. Az üres helyek keresésére sem kell időt és energiát szánni, az első szabad blokknál lehet kezdeni. Ennél a módszernél nem probléma a fájl méretének növelése, illetve csökkentése. Hátrány azonban, hogy inkább a szekvenciális hozzáférést támogatja, azaz, ha például egy fájl 10. blokkját akarjuk elérni, ahhoz végig kell követni az első 9 blokk helyét, ami lassú lehet.

A FAT meglehetősen nagy táblázat lehet és szerepe döntő. Ezen kívül nagyon sűrűn kell használni, ezért a memóriában kell tartani, ami még szűkösebb, mint a háttértár. A FAT sérülése esetén nagy valószínűséggel a kettészakadt fájlt visszaállítani nem lehet. A láncolási módszert alkalmazó operációs rendszerek, például a DOS, a Windows és a NetWare a biztonság kedvéért két ilyen táblázatot tartanak fenn.
Indextábla alkalmazása

Rugalmas elhelyezési lehetőségekhez jutunk, ha egy óriási táblázat helyett sok kicsit használunk, minden állományhoz külön. A katalógus tartalmazza a fájlhoz tartozó kicsi táblázat címét, a kicsi táblázat pedig a fájl blokkjainak a címét.

A módszer előnye, hogy az elhelyezési információ gyorsan elérhető, kevésbé sérülékeny a tárolás is. Hátránya, hogy valamiféle becslésre van szükség, hogy mekkorák lesznek fájlok.
Mekkora indextáblát kell fenntartani? Ha túlságosan nagy a tábla, az pazarló. Ha túlságosan kicsi, akkor ez határozná meg a maximális fájlméretet, ami megengedhetetlen.

A Unix operációs rendszer a fenti problémát kombinált módszer alkalmazásával oldotta meg.
A katalógus csak egy címet, egy indextábla címét tartalmazza, amely 15 rekeszből áll. Az első 12 a fájl első 12 blokkjának sorszáma. Amennyiben ez kevésnek bizonyulna, a 13. rekesz egy újabb indexre mutat, mely további 15 blokk nyilvántartását teszi lehetővé. Ha a fájlunk még 27 blokknál is nagyobb, az első indextábla 14. rekesze egy indirekt indextáblát címez, amelynek tartalma további 15 indextábla címe, és így tovább ...
fájlok indextáblás elhelyezése

fájlok indextáblás elhelyezése

A módszer hátránya, hogy míg a FAT alkalmas foglaltsági táblának is, itt erről külön kell gondoskodnunk, illetve a fájl belsejéből való törlés itt is másolással jár, de most nem magukat az adatblokkokat, hanem csak az indextábla bejegyzéseit kell másolni. Az indexelt leképzés legnagyobb előnye, hogy lehetővé teszi a közvetlen elérést is, azaz ha most a fájl 10. blokkját akarjuk elérni, annak a címét egyszerűen megtudhatjuk az indextábla 10. sorából.



Háttértárak működési elve

A háttértár olyan számítógépes hardverelem, mely nagy mennyiségű adatot képes tárolni, és azokat a számítógép kikapcsolása után is megőrzi. Erre azért van szükség, mert a számítógép műveleti memóriájában csak ideiglenesen lehet adatot tárolni, ennek tartalma a számítógép kikapcsolása után törlődik.

Az adatoknak a memóriából háttértárra írását az adatok mentésének nevezzük.

A mai számítógépek legtöbbje digitális, azaz minden adatot (kép, hang, egyéb) számokká alakítva kap meg, dolgoz fel és tárol. A manapság használatos háttértárak mágneses, optikai és elektronikus elveken tárolják az adatokat.

A kezdeti időkben használatos háttértárak szekvenciális (soros) adatelérésűek voltak, ami azt jelenti, hogy a háttértáron tárolt adatok csak sorban egymás után voltak visszaolvashatók. Ilyen adattároló volt a lyukszalag, vagy később a mágnesszalag. (Ha a mágnesszalag közepén lévő zeneszámot akartuk meghallgatni, akkor először az elejétől a közepéig kellett tekercselni a szalagot, majd csak ezután kezdődhetett a lejátszás.) Manapság már csak olyan esetben használnak szekvenciális elérésű adattárat, amikor a tárolt adatok visszaolvasására csak ritkán van szükség (pl. biztonsági mentések).

Az ún. direkt (közvetlen) adatelérésű háttértárakon bármelyik adat azonos idő alatt érhető el, függetlenül annak fizikai elhelyezkedésétől. Az író-olvasó eszköz képes azonnal a kívánt adat tárolási helyére állni, és az adatbeolvasást azonnal elkezdeni. A manapság használatos háttértárak döntő többsége direkt adatelérésű.
Mágneses elven működő háttértárak
Mágnesszalag

A digitális mágnesszalagok az adatokat kettes számrendszerben ábrázolva, egy mágnesezhető réteggel bevont, műanyag szalagon tárolják. (Az első digitális mágnesszalag 1952-ben került a piacra. Ez a lyukszalag mágneses változatának volt tekinthető.) A mágnesszalagokat kezdetben egy-egy orsóra feltekercselve tárolták, később zárt kazettákban hozták forgalomba. Mágnesszalagokat manapság már csak olyan esetben használnak, amikor a tárolt adatokat csak ritkán kell visszaolvasni (pl. adatmentések).
mágnesszalag

mágnesszalag

magnókazetta

magnókazetta
Hajlékonylemez

A mágneslemezeken az adattárolás elve megegyezik a mágnesszalagokéval, vagyis a mágnesezhető réteg megfelelő polaritású mágnesezésével tároljuk az adatokat. A különbség azonban, hogy nem szalag alakú a tároló, hanem kör alakú, az információ pedig koncentrikus körök mentén van tárolva.

Legnagyobb előnye a direkt adatelérés, azaz nem kell a kívánt adat előtt elhelyezkedő összes adatot végigolvasni, hanem az olvasó fejet közvetlenül a kívánt adatra lehet ráállítani. Az adatok koncentrikus körök mentén helyezkednek el a lemez mindkét oldalán. A koncentrikus körök hivatalos elnevezése sáv. A sávot tovább szokás osztani szektorokra.

Matematikai értelemben a szektor körcikk, tehát egy körlap része, amit a kör középpontja, két sugara és az általuk közrefogott ív határol (lásd az ábrán a szürke területet!). A merevlemez szektora (sárga rész) így a merevlemez egy sávja és a matematikai szektor metszéspontjára utal.
mágneslemez részei

mágneslemez részei

A szektor a háttértárak legkisebb, elemi foglalási egysége. Ettől kisebb rész különálló módon nem írható vagy olvasható. Egy lemez minden szektora fix méretű, a PC-kben alkalmazott lemezes egységek (winchester) esetében a szektor tipikus mérete 512 bájt. A CD-ROM szektorainak hossza 2 kilobájt (2352 bájt).

Tulajdonképpen a szektor a lemez legkisebb önállóan elérhető része. A szektort mind írni, mind olvasni csak együtt lehet, ami azt jelenti, hogy egy-egy byte elérésére közvetlenül nincs lehetőség, csak úgy, ha a memóriába a szektort beolvasva, ott megkeressük a kívánt byte-ot.

Az első direkt elérésű háttértárak az ún. hajlékonylemezek (floppy disc) voltak. A hajlékonylemez egy mindkét oldalán mágnesezhető réteggel ellátott, műanyagból készült korong. A külső fizikai behatásoktól egy tok védi meg, aminek a belső oldala a nagyobb méretű lemezeknél filc borítású. A lemezt a használathoz nem kell (és nem is lehet) kivenni a tokjából. Az író-olvasó fejnek és a lemezt forgató mechanikának a megfelelő rések ki vannak vágva a tokon.
mágneslemez részei

hajlékony (nagy)lemez, 5,25''

mágneslemez részei

hajlékony (kis)lemez, 3,5''

A hajlékonylemezek manapság már nemigen használatosak, mivel csak kis adatmennyiség tárolására alkalmasak és meglehetősen sérülékenyek.
Merevlemez

A hajlékonylemez továbbfejlesztéseként jött létre az ún. merevlemez. A merevlemezes egységben több, egymás felett elhelyezkedő, mágneses réteggel bevont könnyűfém lemezt helyeznek el. Az adatokat az író-olvasó fejek segítségével lehet elérni. Minden lemezhez tartozik két ilyen fej (a lemez két oldalán), amelyet egy fejmozgató egységre szerelnek fel. Az állandó sebességgel, gyorsan forgó lemezektől a fej kis távolságban mozog. A merevlemezek zárt külső borítása védi az adatokat tartalmazó lemezeket a külső mechanikai sérülésektől és szennyeződésektől. (Az első merevlemezt az IBM angliai Winchester városa mellett található laboratóriumában fejlesztették ki, ezért kapta a winchester nevet.)
winchester fölépítése

HDD, winchester, merevlemez

A merevlemezes egység lemezein az egyes oldalakon egymás fölött elhelyezkedő sávoknak külön elnevezése is van: cilinder. Az ábrán látható, hogy a merevlemez minden író/olvasó feje egyszerre mozgatható egyik sávról a másikra. Így tulajdonképpen az adatok elérése akkor a leggyorsabb, ha nem kell elmozdítani a fejeket, vagyis ha azok minden része ugyanannak a cilindernek a különböző részein található.

Manapság a merevlemezek a legnagyobb kapacitású és sebességű háttértárak. A merevlemezen tárolódnak az operációs rendszer és az egyéb programok működéséhez szükséges állományok (fájlok), valamint azok az adatok, amelyek időnként megváltoz(hat)nak.

A merevlemezeket általában a számítógép házába szerelik be, de léteznek ún. külső merevlemezek is, amelyek USB porton keresztül csatlakoztathatók a számítógéphez.
Optikai elven működő háttértárak

A CD és DVD lemezek (1.2 mm vastag 120 mm átmérőjű) polikarbonát korongok, amelyeket egy nagyon vékony alumínium réteggel tesznek fényvisszaverővé. Az adatok tárolása az alumínium rétegbe égetett vagy nyomott apró lyukacskák segítségével történik. Ezek a lyukacskák a lemez közepéből kiinduló spirál mentén kerülnek elhelyezésre. A lemezek tároló kapacitása elsősorban az olvasásra használt lézer fény hullámhosszának a függvénye: minél rövidebb hullámhosszú fényt használunk, annál több és kisebb lyukacskát tudunk elhelyezni egy-egy lemez felszínén.
Egy CD keresztmetszete

Egy CD keresztmetszete

pit - land

A kiemelkedő (az írott CD esetén bemélyedő) gödröcskék (pit) hordozzák az információt egy fél mikron széles sávban. Köztük egy 1,6 mikron széles elválasztó sáv (land) található.



DVD - Blu-Ray összehasonlítása

DVD - Blu-Ray összehasonlítása

CD, DVD, BD írása

CD, DVD, BD írása

Az első CD (compact disc) lemezt 1981-ben mutatták be és eredetileg hifi minőségű zene tárolására szolgált. A CD lemezen a lemez olvasásánál használt (780 nanométer hullámhosszú) közel infravörös lézerfény biztosította felbontásnak megfelelően a szabványos CD 12 cm átmérőjű korongján maximálisan 700 MB információ tárolását teszi lehetővé.

A CD-lemezeknek, meghajtóknak ma már több fajtáját különböztetjük meg. Az egyik típusa a CD-ROM. Ezeket a lemezeket gyárilag írják meg, ezután adatokat ráírni, illetve törölni nem lehet róluk. A CD-R típusú lemezek üresen kerülnek forgalomba, egyszer írhatók (de több menetben), s írás után már csak olvasni tudjuk a rajta lévő adatokat. Ilyen lemez írásához CD-író szükséges. A legújabb CD-k lehetővé teszik azt is, hogy a felírt adatokat letöröljük, s a lemezeket újraírjuk. Ezek a CD-RW típusú lemezek, amelyekre több menetben is írhatunk adatokat, törölni viszont csak egyszerre az egész lemezt tudjuk.

Az optikai lemezek egy újabb, nagyobb kapacitású változata a DVD (digital video disc; 1995), amelyet eredetileg nagy felbontású videofilmek tárolására fejlesztettek ki (innen a neve). A nagyobb kapacitás elsősorban annak köszönhető, hogy rövidebb hullámhosszú lézerfényt használ, amely lehetővé teszi a kisebb adattárolási méret alkalmazását. Így a lemezen a lyukak sűrűbben helyezkednek el, mint a CD esetén. A DVD lemezek maximális kapacitása 4,7 GB. További újításként bevezették a kétrétegű írást, ennek megfelelően a szabvány méretű lemezek kapacitását 8,5 GB-ra növelték. A DVD fizikai mérete megegyezik a CD lemez méretével, így a DVD meghajtók alkalmasak CD lemezek kezelésére is.

A DVD lemezeknek létezik egy- és kétoldalas változata is. A CD-hez hasonlóan itt is van egyszer írható (DVD-R, DVD+) és újraírható (DVDRW, DVD+RW).

Az ún. Blu-ray lemez a DVD lemezek továbbfejlesztett változata. Lényege, hogy amíg a szabványos DVD lemezek olvasására vörös fényű lézert használnak, addig ezeket a lemezeket rövidebb hullámhosszú ibolya színű lézer fénnyel lehet írni/olvasni, így az információ tárolásra szolgáló lyukacskák közti távolság tovább csökkent, ami adattároláskor jóval nagyobb adatsűrűséget jelent. Az egyrétegű BD-lemez kapacitása 25GB, a kétrétegűé 50GB.

Mivel az optikai háttértárak írása lassú folyamat, az adatok törlése pedig csak korlátozott mértékben lehetséges (az egész lemez törölhető egyszerre), ezért optikai lemezeken olyan adatokat szokás tárolni, amelyek nem változnak: fényképek, filmek, programfájlok.
Elektronikus elven működő háttértárak

A legújabb típusú számítógépes adattároló technológia az ún. flash-memória, amelyet – nevével ellentétben – általában nem a számítógép operatív táraként alkalmaznak, hanem háttértárként. A flash-memória teljesen elektronikus elven működik, nem tartalmaz mozgó alkatrészt, ezért jobban ellenáll a mechanikai behatásoknak (pl. a rázkódásnak), mint a merevlemez.

A flash-memória a – RAM-mal ellentétben – nem felejtő, megmaradó, amely azt jelenti, hogy nincs szüksége tápfeszültségre ahhoz, hogy a benne tárolt információt megőrizze. (Az adatok rögzítéséhez és olvasásához természetesen szükséges az elektromos áram, de a tárolt adat az áramellátás megszűnése után is megmarad.) A flash-memória adattárolási és elérési sebessége viszont jelentősen elmarad a RAM sebességétől, ezért nem alkalmas arra, hogy operatív tárként alkalmazzák. Tárolókapacitás tekintetében nem veheti fel a versenyt a merevlemezekkel. Ráadásul az ismételt írást/törlést kevésbé jól bírja, mint a merevlemez.

Előnyös és hátrányos tulajdonságaiból következően a flash-memóriát olyan esetekben alkalmazzák, amikor fontos a kis méret, a külső behatásokkal szembeni ellenálló képesség és a hordozhatóság. Az alkalmazás példái a digitális audio-lejátszók (mp3-lejátszók), digitális kamerák, mobiltelefonok, kéziszámítógépek. A flashmemóriát használják az USB-csatolású pendrive-okban is, melyek az adatok általános tárolói és szállítói a számítógépek között.

Manapság többféle flash-memória van forgalomban – az általános szabvány elsősorban azért várat magára, mert a fejlesztők új és még újabb megoldásokat találnak ki arra, hogy a lapkák fizikai mérete csökkenjen, miközben a kapacitás és az átviteli sebesség növekszik. A régebbi digitális fényképezőgépek CompactFlash (CF) kártyát használnak, az utóbbi időkben a Secure Digital (SD) kártya a legelterjedtebb. A hagyományos SDkártya mellett később megjelentek a kisebb méretű MiniSD, majd a még kisebb MicroSD kártyák is.



Memóriakezelés alaja

Mind a processzoridő-, mind a memóriakezelés abból a tényből kell, hogy kiinduljon, hogy a futásra váró és a futó programok azt feltételezik, hogy egyedül ők vannak a világon, egyáltalán nem törődnek azzal, hogy van például operációs rendszer, illetve más folyamatok is futni merészelnek. A folyamatok általában azt is figyelmen kívül hagyják, hogy mennyi memória van a gépben valójában.

Pedig az erőforrások hatékony kihasználása, és a folyamatok közötti gyors átkapcsolás érdekében több folyamatnak kell egyidejűleg a memóriában tartózkodnia. Az operációs rendszer magjának (kernel), azon belül is a memória­ke­ze­lő­nek a feladata a memória elosztása a folyamatok között, a mindenkori állapot adminisztrálása és szükség esetén a háttértárak igénybevétele, mégpedig oly módon, hogy a folyamatok se egymást, se az operációs rendszert ne sérthessék meg.
Valóságos tárkezelés

A valóságos tár elnevezés a virtuális tártól való megkülönböztetést szolgálja. A kétféle módszer között a leg­lé­nye­ge­sebb eltérés az, hogy a valós tárkezelés esetében az éppen végrehajtott folyamathoz tartozó prog­ram­u­ta­sí­tá­sok­nak és adatoknak teljes egészében az operatív memóriában kell tartózkodniuk, míg virtuális tárkezelés esetén csak az éppen végrehajtás alatt álló rész van az operatív tárban, a program és az adatok többi része a háttértáron található.
Rögzített címzés

Amíg egy számítógépen csak egy felhasználó dolgozhatott és ő is csak egyetlen, viszonylag kicsi programot futtathatott, a memóriakezelés különösebb gondot nem okozott. Az operációs rendszer állandó területen, például a memória legelső, legkisebb című rekeszein helyezkedett el, a felhasználói program használhatta az operációs rendszer végétől egészen a legnagyobb címig az egész memóriát. A program változóinak, illetve vezérlésátadásainak címe így már fordítás közben meghatározható volt.

A tárvédelem is elég egyszerű ebben az esetben, mindössze azt kell figyelni, hogy egy adott, az ún. határregiszterben tárolt címnél kisebbet a felhasználói program ne érhessen el, mert az már az operációs rendszer fennhatósága. A felhasználói program az operációs rendszert rend-szerhívások által érte el. A rendszerhívás első dolga, hogy a processzort védett üzemmódba kapcsolja, így biztosítva az operációs rendszer számára az egész memória elérését. Természetesen a határregiszter tartalmának változtatása is szigorúan az operációs rendszer feladata volt.
Áthelyezhető címzés

Az első korlát, amibe a rögzített címzésű rendszerek beleütköztek, az volt, hogy az operációs rendszer mérete nem bizonyult állandónak. Ez önmagában még nem lett volna baj, de a programozók is hamar megelégelték, hogy egy-egy operációs rendszer módosítás után mindig módosítaniuk kellett programjaikat. Amikor azonban megjelentek az olyan operációs rendszerek, melyek tranziens résszel is rendelkeztek, azaz egyes részeik csak akkor töltődtek be a memóriába, ha szükség volt rájuk, a szorgalmas programozóknak is bealkonyult, hiszen a felhasználói program rendelkezésére álló memória címtartomány a program végrehajtása során is változhatott.

A megoldás viszonylag egyszerű volt. A programok fordításakor a fordítóprogram már nem közvetlen fizikai címeket generált, (azaz nem azt mondta meg például, hogy ugorj el a 2345H címre), hanem a program elejéhez képesti relatív címeket (tehát azt mondta meg például, hogy ugorj el a program elejéhez képesti 1234H címre). Ahhoz, hogy ezekből a relatív címekből fizikai címeket kapjunk, most már csak azt kellett tudni, hogy hol kezdődik a program a memóriában. Ha ezt tudjuk, akkor ehhez a kezdőcímhez hozzá kell adni a programban szereplő relatív vagy más néven logikai címet és megkapjuk a keresett memóriarekesz fizikai címét. Ennek a módszernek a támogatására találták ki az ún. bázisregisztert. Ez a regiszter tartalmazza a program kezdő- vagy más néven báziscímét. A processzor minden memória műveletnél automatikusan hozzáadja a bázisregiszter tartalmát az utasításban szereplő címhez és az így kapott összeg lesz az a fizikai memóriacím, amihez fordul. Már csak egy kérdés maradt hátra: ki határozza meg a program kezdőcímét? Természetesen, ez az operációs rendszer feladata, hiszen az operációs rendszer mindig tudja magáról, hogy éppen meddig ér és hol kezdődik a szabad hely a memóriában, így a felhasználói programot az első szabad címtől kezdve töltheti be, ezt a kezdőcím értéket pedig a program betöltésekor beírja a bázisregiszterbe.
áthelyezhető címzés

áthelyezhető címzés
Átlapoló (overlay) módszer

Az eddigiekben olyan kicsi programokról volt szó, amelyek teljes egészükben belefértek a memóriába. A programozók természetesen nem elégedtek meg ezzel, nem voltak hajlandók fejet hajtani a gyarló földi korlátok előtt, nagyobb programokra vágytak. Ezért azonban meg kellett dolgozniuk. Úgy kellett a feladatokat szervezni, hogy az olyan méretű blokkokból álljon, melyek külön-külön már elhelyezhetők. Ezzel az átlapoló technikával (overlay) elérhető volt, hogy a memóriában állandóan csak a programrészek közötti átkapcsolást végző modulnak kelljen tartózkodnia, a többiek közül hol az egyik, hol a másik rész került a memóriába, a többi a háttértáron várakozott.
overlay technika

overlay technika

Az ilyen programozáshoz az operációs rendszer semmiféle támogatást nem adott, mindenről a programozónak kellett gondoskodnia, de megérte: a program mérete meghaladhatta a memória méretét.

Még egy nagyon fontos és előremutató dolog történt. A háttértár, amely eddig csak a programok tárolására szolgált, először vesz részt a program futtatásában aktív szereplőként.

Tárcsere (swapping)

A következő kihívást az jelentette, amikor egy időben több felhasználó programjának futtatását kellett biztosítani, persze egymástól függetlenül. A feladat megoldásának legegyszerűbb és legősibb módja, ha minden felhasználó kap egy bizonyos időszeletet, majd ha az lejárt, az általa használt egész memóriaterületet az operációs rendszer a háttértárra másolja, és onnan betölti a következő felhasználóhoz tartozó memóriatartalmat. Így mindegyik felhasználó úgy dolgozhat, mintha az egész memória az övé lenne. A memóriatartomány ki-be másolását tár-cserének (swapping) hívjuk, a másolás eredményeképpen keletkező állományt cserefile-nak (swap file). A módszer nagy hátránya, hogy lassú, hiszen az időszelet lejártakor a teljes memóriaterületet a háttértárra kell másolni, illetve onnan betölteni, ami nagyon sokáig tart!
swapping technika

swapping

A processzor-ütemezéshez hasonlóan itt sem mindegy, hogy mekkora az a bizonyos időszelet, mert ha túl kicsi, akkor a másolgatásra fordítódik az idő legnagyobb része. Segíteni lehet a dolgon úgy, ha az operációs rendszer elég okos, és csak azokat a memóriarészeket mozgatja, amelyek változtak, de ennek menedzselése bonyolult.

A címzés és a tárvédelem szempontjából semmi lényeges változás nem történt, az operációs rendszernek sem az átlapoló, sem a tárcsere technika esetén nem kell többet tudnia, mint az áthelyezhető címzés esetén.
Állandó partíciók

Mi történik azonban, ha az éppen futó folyamat várakozni kényszerül, például felhasználói adatbevitelt vár? Tegyük félre, és hadd jöjjön a másik? A másik folyamathoz tartozó memóriaterület betöltése viszont időigényes, ki tudja, hogy megéri-e? Ha állandóan több folyamat tartózkodhatna a memóriában, egyszerű lenne a dolog, a várakozás idejére csak át kéne gyorsan kapcsolni a másikra, és az máris futhatna.

Ha a felhasználói folyamatok számára rendelkezésre álló memóriaterületet egymástól független részekre, partíciókra osztjuk, több program memóriában tartására is lehetőség nyílik. Egy-egy partíció úgy viselkedik az őt birtokló folyamat számára, mintha teljesen önálló memória lenne, a partíción belül lehetőség van az átlapoló vagy a tárcsere technika alkalmazására is.

Mekkora legyen azonban egy partíció? Ha túl kicsi, esetleg nem fér bele folyamat. Ha túl nagy, akkor - mivel a partíciót csak egy folyamat használhatja -, sok kihasználatlan üres hely marad a partíció területén belül. Ezt a jelenséget nevezzük belső elaprózódásnak (internal fragmentation). A gyakorlatban az a módszer terjedt el, hogy becslések és statisztikák alapján a memóriában több különböző méretű partíciót alakítottak ki.
partícionált rendszer

állandó partíciók

A partíciókat alkalmazó rendszerekben az operációs rendszerekre már komoly feladat hárul. Ismerniük kell a partíciók méretét és annyi bázisregiszter-határregiszter párt kell számon tartaniuk és folyamatosan vizsgálniuk, ahány partíció van. A másik feladat a partíciók kijelölése a folyamatok számára. Bármilyen tudományosan történt is a partíciók méretének megválasztása, a folyamatok csak azért sem jönnek a megfelelő sorrendben. Az operációs rendszernek döntést kell hoznia, hogy a futásra váró programok közül melyik kapjon meg egy felszabaduló partíciót. Ha az első érkező kapja (FCFS - előbb jött előbb fut), akkor fennáll a veszélye annak, hogy kicsi program nagy partíciót foglal el, ami rossz tárkihasználást eredményez. A másik megvalósított stratégia szerint az operációs rendszer külön várakozási sort tart fenn a különböző memóriaigényű programoknak. Ez utóbbi esetén viszont például lehetséges, hogy a nagyobb partíció üresen áll, míg a kisebbért vérre menő küzdelem folyik. Az eredmény újra csak rossz memória kihasználás.
Rugalmas partíciók

Az állandó partíció mérethátrányait jórészt kiküszöböli, ha a partíciók számát és nagyságát nem rögzítjük szigorúan, azok rugalmasan alkalmazkodhatnak az aktuális feltételekhez. A teljesen szabadon kezelt méret és kezdőcím azonban túl bonyolult címszámítást igényelne, ezért a partícióméretet célszerű valamely kettő hatvány egész számú többszörösére választani. (pl. 2048) Az operációs rendszer ebben az esetben nyilvántartja a partíciók foglaltságát, és az érkező folyamatoknak a befejezett folyamatok után fennmaradó lyukakból választ helyet, persze, csak ha van olyan szabad terület, ahová az befér.

A rugalmas partíciók módszere (majdnem) kiküszöböli a belső elaprózódást. Egy kis maradék hely mindig lesz, hiszen a programok mérete nem pontosan egyezik meg a minimális partícióméret (a fenti példa szerint 2048 bájt) egész számú többszörösével. De könnyű belátni, hogy a fenti példában még a legrosszabb esetben is az egy folyamatra eső belső elaprózódás csak maximum 2047 Byte lehet, ami elhanyagolható).

"Cserében" viszont megjelenik egy új veszély. Ugyanis, ha egy folyamat befejeződik, akkor a helyére betöltendő új folyamat memóriaigénye nem biztos, hogy megegyezik az előzőével. Nyilvánvaló, hogy ha az új folyamat memóriaigénye nagyobb, mint a régié volt, akkor az ide nem tölthető be, viszont ha kisebb, akkor az új folyamat vége után marad egy kis szabad hely, amely viszont általában már túl kicsi, hogy oda más folyamatok beférjenek. Azaz előbb-utóbb a folyamatok által használt memóriaterületek között viszonylag kicsi, de összességében akár jelentős méretű lyukak alakulnak ki. Ezt hívjuk külső elaprózódásnak (external fragmentation). Könnyen előfordulhat ugyanis, hogy egy folyamat betöltéséhez lenne elég szabad hely, de nem folytonosan, hanem az egyes aktív partíciók között teljesen szétdarabolódva. Megoldást jelenthet, ha olykor egy tömörítő algoritmust futtatunk (garbage collection), mely a memóriában lévő folyamatokat folytonosan egymás után rendezi, természetesen úgy, hogy közben módosítja a hozzájuk rendelt bázis- és határregisztereket is. Bár egy jól átgondolt, a várakozó programok jellemzőit is figyelembe vevő algoritmus itt is csodát tehet, jelentősen lerövidítve a tárrendezéshez szükséges időt, de a tömörítő algoritmus mindig nagyon lelassítja a rendszer működését. Ez különösen interaktív rendszerek esetén nagy probléma: egy türelmetlen felhasználó esetleg a tömörítés alatt elkezdi nyomkodni a reset gombot...
rugalmas partíciók

rugalmas partíciók
Lapozás (paging)

Mi okozta az elaprózódást az állandó és a rugalmas partíciók használata esetén? Az, hogy a programjaink nem egyforma memóriaterületet igényeltek, viszont ragaszkodtunk ahhoz, hogy folytonosan helyezzük el őket a memóriában. Mivel azon nem tudunk változtatni, hogy a folyamataink különböző méretű memóriát igényelnek, próbáljunk meg segíteni úgy, hogy lemondunk arról, hogy a folyamataink folytonosan helyezkedjenek el a memóriában.

Osszuk fel a rendelkezésre álló operatív memória területet egyforma és viszonylag kisméretű egységekre, ún. lapokra! Egy folyamat memóriában való elhelyezésekor most már nem szükséges az, hogy akkora összefüggő szabad memóriaterület álljon rendelkezésre, amennyit a folyamat igényel, hanem elég az, hogy összességében legyen ennyi hely. A folyamat első néhány lapját elhelyezzük az első szabad helyen, a következő néhány lapot a másodikban, stb.

Igen ám, de felmerül egy új probléma. Mivel az egyes folyamatok most már nem folytonosan helyezkednek el, nem elég már csak azt megjegyezni, hogy hol kezdődnek és milyen hosszúak, hanem sajnos nyilván kell tartani, hogy az egyes részek hol helyezkednek el. Erre a célra szolgálnak a laptáblák. Az operációs rendszer minden egyes folyamat betöltésekor létrehoz a folyamat számára egy laptáblát, mely a logikai lapokhoz hozzárendeli a fizikai lapot. A következő ábrán az operatív memória 8 lap méretű és ebből pillanatnyilag a 0., az l., a 3. és a 6. lapot használják más folyamatok, míg a 2., a 4., az 5. és a 7. lap üres. Mivel összességében 4 üres lap van, betölthetünk egy olyan folyamatot, amely 4 lapot igényel. A folyamat első (0. sorszámú ) lapját töltsük be például az operatív memória 4. számú laphelyére, az 1. sorszámút az 5. üres helyre, a 2. sorszámút a 2-ra és végül az utolsó, 3. sorszámú lapot a 7. helyre. Ennek a nyilvántartásához létre kell hoznunk egy négysoros laptáblát, mely első sora azt mutatja, hogy a 0. sorszámú logikai lap a 4. sorszámú fizikai lap helyére került az operatív memóriában stb.

(Megjegyzés: Azt könnyű belátni, hogy igazából a laptábla első oszlopára nincs is szükség, hiszen a laptábla sorainak sorszáma egyértelműen utal a logikai lap sorszámára. Itt az ábrán ezt az első oszlopot csak a megértés elősegítésére tüntettük föl.)
laptábla használata

laptábla használata

Most már csak egy problémát kell megoldani. Ez pedig az, hogy hogyan találjuk meg a memóriában az egyes utasításokat és adatokat? Hiszen a fordítóprogramunk azt mondja, hogy például ugorjunk el a program elejéhez képesti 16. sorra. Igen ám, de hol van most a 16. sor, hiszen a folyamatunk nem folytonosan helyezkedik el a memóriában! Az egyszerűség kedvéért tételezzük föl, hogy minden lap 10 sorból áll, amelyeket 0 és 9 közötti számokkal látunk el. (Természetesen a valóságban egy lap mérete célszerűen nem a 10 valamelyik hatványával egyezik meg, hanem a 2-ével.) Ezek után könnyű kiszámolni, hogy a 16. logikai sor az 1-es számú logikai lapon helyezkedik el és azon belül ez a 6. számú sor. (Ezt úgy hívjuk, hogy a lapon belüli eltolás értéke 6.) Most már csak azt kell tudnunk, hogy hol van az operatív memóriában az 1. számú logikai lap. De hiszen éppen ezt mondja meg a laptábla 1. sora! Ha ránézünk a laptáblánkra, látható, hogy az 1. logikai lap az 5. fizikai lap helyén van az operatív memóriában és ezen belül keressük a 6. sort, vagyis a 16. logikai cím a valóságban az 56. fizikai címen található meg.

Nézzük meg általánosan, hogy lapozásnál hogyan történik a címszámítás!

A processzor által kiadott logikai címet formálisan két részre osztjuk. A cím első része adja meg a lapszámot, míg a második része a lapon belüli eltolást. Ezek után megnézzük a laptábla "lapszám"-adik sorát, és az ott található számérték megmutatja a lap fizikai kezdőcímét az operatív memóriában. Ehhez a számértékhez kell hozzáilleszteni (úgy mondjuk, hogy "hozzáadni", holott ez nem összeadást, hanem hozzáillesztést jelent!) a lapon belüli eltolás értékét.

fizikai cím számítása

fizikai cím számítása

Nézzünk egy valóságos példát! Tegyük fel, hogy a logikai cím 16 bites, azaz 216 = 65536 sort címezhetünk meg. Legyen egy lap mérete 211 = 2048 sor! Ebből kiszámítható, hogy 216 / 211 = 25 = 32 db lapunk van. Azaz a lapok kiválasztására 5, míg a lapon belüli sor kiválasztására (eltolás) 11 bit kell. Például így:
logikai cím: 00010 | 10110101110 → lapcím: 00010, eltolás: 10110101110

Tegyük fel, hogy a laptábla 00010 (=2) sorában az 10111 (=23) számérték található, azaz a keresett memóriahely fizikai címe: 10111 | 10110101110. Lapozásnál a címszámítás látszólag egyszerű: a folyamat által kívánt logikai címnek azt a részét, amely a laptábla megfelelő rekeszére mutat, ki kell cserélni a laptábla megfelelő rekeszének tartalmára és már készen is áll a fizikai cím. De hol legyen a laptábla, és hány rekeszből álljon?

Adott lapméret esetén tudjuk ugyan a lapok, azaz a szükséges laptábla rekeszek számát, de a memória is (egyszerű bővítéssel), a lapméret is változhat (az operációs rendszer más beállításával), így tisztán hardver eszközökkel nehéz megoldani a címszámítást. A gyakorlatban az terjedt el, hogy egy-egy folyamat létrehozásakor az operációs rendszer megfelelően védett területen létrehozott a folyamat számára egy laptáblát a memóriában, és a laptábla címét a folyamat egyéb adataival együtt a folyamatleíró blokkban (PCB) tárolta. A címszámító hardver megkapja az éppen futó folyamat laptáblájának címét, ahhoz hozzáadja a logikai lapcímet, és az így keletkezett mutató által címzett rekeszből veszi ki a lap fizikai kezdőcímét. A dolog működik, de a folyamat minden egyes memóriához fordulása egy újabb memóriához fordulást igényel, tehát a memória elérés ideje megduplázódik. (Ezt az elrémítő hatást cím-számítást segítő asszociatív memória alkalmazásával kb. 10%-ra lehet csökkenteni. Lásd később, a virtuális tárkezelésnél!)

Láthatjuk, hogy a lapozás alkalmazásával a külső elaprózódást kiküszöböljük, a belső elaprózódás minimalizálását pedig az szolgálja, hogy a lapok viszonylag kicsik. (A folyamatok mérete általában nem egész számú többszöröse a lapméretnek, így folyamatonként átlagosan egy fél lapnyi terület üres marad.) A belső elaprózódás szempontjából az lenne az optimális, ha a lapméret 1 sor lenne, de akkor a laptábla mérete lenne nagyon nagy. E két szempont közötti kompromisszum eredménye az, hogy a gyakorlatban a lapméret 1-4 kB.

A lapozó technika amellett, hogy kiküszöböli az elaprózódást, mintegy melléktermékként egy további lehetőséggel kecsegtet, amelyet főképp régebbi, kis címzési kapacitású processzorok esetén lehet jól használni.

A processzor látszólagos címzési tartománya könnyedén megnövelhető, hiszen nem kell mást tenni, mint a laptábla szóhosszúságát megnövelni. Az egyszerre kiadható címek száma ugyan nem növekszik, de azok egy szélesebb tartományban helyezkedhetnek el. Például az előző, 16 bites címet alkalmazó példánkkal élve, eredetileg a megcímezhető memória mérete 216 byte, azaz 64 kB lehetett. Ha minden 5 bites logikai lapcímhez 8 bites fizikai lapcímet rendelünk, (azaz a laptáblában nem ötbites, hanem nyolcbites számokat tárolunk), akkor 8-szor annyi, azaz 512 kB memória címezhető. Egy folyamat címtartománya ugyan nem haladhatja meg a 64 kB-ot, viszont egyszerre a memóriában lehet 8 ilyen folyamat!

Holtpont (deadlock) végtelen várakozás

Az erőforrás kezelésnek az a módszere, hogy ha van szabad erőforrás, akkor kielégítjük, ha nincs, akkor pedig a folyamat várakozni kényszerül, végtelenül egyszerűnek tűnik. Ez a probléma nagyvonalú megközelítése, azonban korlátai elég hamar megmutatkoznak.
Veszélye például, hogy ha több folyamat egy olyan erőforrás felszabadulására vár, amit csak egy ugyancsak várakozó folyamat tudna előidézni, akkor mindegyik érintett folyamat csak vár, csak vár, csak vár ... Ez az állapot kapta a holtpont nevet. Holtpont esetén a folyamatok körkörösen egymásra várakoznak. Ha megszüntetjük a párhuzamosságot a probléma megelőzhető.ételezzük föl, hogy egy taszk le akarja foglalni a nyomtatót, majd utána a CD-írót! Közben egy másik taszk le akarja foglalni a CD-írót, majd utána le szeretné foglalni a nyomtatót! Tegyük fel, hogy az 1. taszk sikeresen lefoglalta a nyomtatót, miközben ezzel egy időben a 2. taszk szintén sikeresen lefoglalta a CD-írót! Most, az 1. taszk megpróbálja lefoglalni a CD-írót, a 2. taszk pedig a nyomtatót. Egyik taszk sem fog sikerrel járni, mert a másik taszk már tartja a zárat. Mindkét taszk a végtelenségig fog várni arra, hogy a másik elengedje az erőforrást, de ez nem fog bekövetkezni.Öt kínai bölcs ül egy kerek asztal körül. Mindegyik előtt ott egy tányér rizs és a szomszédos tányérok között egy-egy pálcika. Az evéshez két pálcika kell, ezért egy bölcsnek mind a jobb-, mind a baloldali pálcikát meg kell szereznie, hogy elkezdhessen enni. Ha egy bölcs eszik, akkor egyik szomszédja sem tud, hiszen legalább az egyik pálcikája hiányzik hozzá.

Ha mindegyik bölcs egyszerre jut arra a döntésre, hogy először a bal-, majd a jobboldali pálcikát veszi kézbe, mindegyiknek csak egy pálcika jut, senki sem tud enni, holtpontra jutnak.

Ebben az esetben feltehetően születik megoldás, hiszen bölcsekről van szó. Ez azonban az egymásról mit sem tudó folyamatok esetén nem várható. Egy felsőbb erőnek, az operációs rendszernek kell rendet teremtenie, például úgy, hogy egyiktől elveszi a pálcikát és a szomszédjának adja.A holtpont kialakulásának szükséges feltételei

    kölcsönös kizárás: Legalább egy – többek által igényelt – erőforrás nem megosztható, azaz egyszerre csak egy processzus használhatja.
    foglalva várakozás: Valamelyik processzus már lefoglalt egy erőforrást, és arra vár, hogy továbbiakat lefoglaljon.
    nem elvehető erőforrások: Az erőforrást a foglalótól nem lehet kívülről – operációs rendszer beavatkozással – elvenni.
    körkörös várakozás: A körben álló folyamatok mindegyike a következő által foglalt erőforrásra vár.
Holtpont kezelő stratégiák

Ahhoz, hogy a rendszerünk holtpont-mentes legyen alapvetően kétféle stratégia választható: vagy meg kell előzni a holtpont kialakulását, vagy folyamatosan figyelni kell, hogy kialakult-e holtpont, és ha igen, meg kell tenni a megfelelő lépéseket a holtpont felszámolására. A holtpont megelőzése kevesebb veszteséggel jár, mint a már kialakult holtpont megszüntetése, de sajnos, nem mindig tehető meg, ezért kell a holtpont felszámolásával is foglalkozni.

    Strucc algoritmus: Nem foglalkozunk a holtponttal (strucc-politika). Valószínűtlen eseménynek tekintjük ezt a helyzetet, a kezelése pedig költséges.
    Ha a holtpont kialakulásának valószínűsége kicsi, a rendszer újraindításának nincsenek kritikus következményei, akkor megérheti ezt a megoldást választani.

    Az egyetlen foglalási lehetőség stratégiája: Ez a várakozás közbeni erőforrás-lekötést tiltja meg. A folyamat csak egy lépésben (célszerű induláskor) foglalhatja le az összes szükséges erőforrást. Ha bármelyik erőforrás is hiányzik a folyamat várakozó listára kerül. Az a folyamat, amelyik már rendelkezik erőforrással, többletigényt nem nyújthat be, a további kéréseket az operációs rendszer elutasítja. Holtpont nem alakulhat ki, mivel a futó folyamatok nem kényszerülnek várakozni, mindenük megvan, a várakozó folyamatok pedig nem rendelkeznek erőforrásokkal.

    Előnye: Egy folyamat, ha már megszerezte az összes erőforrást, soha többé nem kell, hogy erőforrásra várakozzon, azaz gyorsan lefuthat.
    Hátrányai: A folyamatok olyankor is kénytelenek foglalva tartani erőforrásokat, ha pillanatnyilag nincs rá szükségük. Nem mindig mérhető fel előre egy folyamat erőforrás igénye. Ha egy folyamat sok és népszerű erőforrást igényel, előfordulhat, hogy soha nem jön el az a pillanat, amikor mindegyik egyidejűleg áll rendelkezésre, így a folyamat bizonytalan ideig várakozni kényszerül, éhezik.

    Rangsor szerinti foglalás: A ciklikus várakozás lehetőségének kiküszöbölésével alkalmas a holtponthelyzetek megelőzésére. Lényege, hogy az erőforrások osztályaihoz egy-egy növekvő sorszámot rendelünk úgy, hogy a leggyakrabban használt erőforrások kapják a legkisebb sorszámot. Ha egy folyamatnak egy osztályon belül több erőforrásra van szüksége, azokat csak egyszerre igényelheti. Egy folyamat csak olyan osztályból igényelhet erőforrást, melynek sorszáma magasabb, mint a már birtokolt erőforrások sorszáma. Ha egy folyamatnak a meglévőknél alacsonyabb sorszámú erőforrásra van szüksége, fel kell szabadítania erőforrásokat egészen addig a szintig, míg az igénylési feltételek nem teljesülnek.

    Bankár algoritmus: A rendszert mindig ún. biztonságos állapotban tartja. Egy állapotot akkor tekintünk biztonságosnak, ha létezik legalább egy olyan sorozat, amely szerint az összes folyamat erőforrás igénye kielégíthető. Sose elégítsünk ki egy igényt, ha az nem biztonságos állapotot eredményez!

    Az algoritmus csak akkor működik, ha a folyamatok indulásukkor tudják, hogy a különböző erőforrásokból egyszerre maximálisan hányat fognak igényelni, és ezt az op. rendszernek – egy rendszerhívás által – be is jelentik. Ez a módszer legnagyobb hátránya, hogy vannak olyan folyamatok, amelyek erőforrás igénye előre nem tudható.

    Meg kell jegyezni, hogy ha egy rendszer állapota nem biztonságos, nem jelenti azt, hogy a holtpont kialakul, hanem mindössze azt, hogy lehet hogy kialakul. Azaz az algoritmus úgy garantálja a holtpont mentességet, hogy már egy, a holtpontnál tágabb szituáció a nem biztonságos állapot kialakulását is megakadályozza.

Processzor ütemezés fogalma

Ami előbb jött, előbb fut (FCFS - First Come First Served)

A legegyszerűbben megvalósítható ütemezési módszer. Semmi más nem kell hozzá, mint egy jól ismert várakozási sor. A folyamatok egyszerűen érkezési sorrendben kapják meg a processzort és egészen addig maguknál tarthatják, amíg be nem fejeződnek, vagy egy periféria-művelet miatt várakozni nem kényszerülne.

Előny: Egyszerű, biztos.
Hátrány: A folyamatok érkezési sorrendjétől nagy mértékben függ a várakozási idő.

A módszer működéséből fakadó előny az egyszerűsége mellett az, hogy biztosan mindegyik folyamat előbb-utóbb sorra kerül. De az is látszik, hogy inkább utóbb. Ha egy nagy futási idejű folyamat keveredik a rendszerbe, az a folyamatok egész sorát tarthatja fel (kamion hatás). A többi erőforrás is feltehetően kihasználatlanul marad, hiszen a rövidebb munkák periféria igényei a hosszú folyamat futása alatt már valószínűleg kielégítést nyertek és azok visszakerültek a futásra várók sorába. Az eljárás a hosszú folyamatoknak kedvez, nekik processzorigényükhöz képest viszonylag keveset kell várniuk.

Az alábbi példában az eljárás minősítésére az átlagos várakozási idők vannak feltüntetve. Az algoritmus bemenő adatai a tapasztalatból vett, becsült értékek vagy egyszerűen véletlen számok lehetnek. A számítás elvégzéséhez ismerni kell az egyes folyamatok érkezési idejét, valamint processzor igényét.
Meg kell jegyezni, hogy a valóságban nem igaz az, hogy egy folyamat azonnal elkezdődhet, amint egy másik befejeződött. Hiszen a "régi" folyamat állapotának mentése, a következő folyamat kiválasztása, állapotának betöltése időt igényel. Tehát a fenti számításokból adódó várakozási értékeknél a valóságban rosszabb a helyzet, a várakozási idő a környezetváltozások számával arányosan nő.
Legrövidebb előnyben (SJF - Shortest Job First)

Míg az előző módszer a leghosszabb folyamatoknak kedvez, ez az ütemezési eljárás előnyben részesíti a rövid processzoridőt igénylő munkákat. Ha több egyforma idejű folyamat is lenne, közülük az futhat, amelyik előbb érkezett (FCFS).

Előny: A legrövidebb várakozási időt adja.
Hátrány: A hosszú folyamatokkal mostohán bánik.

Az FCFS módszernél a folyamatok processzor igényét csak a példa feladat miatt kellett ismerni, itt azonban nagyon fontos, hiszen ettől függ az alacsony szintű ütemező döntése! Ez a módszer egyik gyengéje. A kívánt időtartam csak statisztikailag, vagy a programozó becslése alapján állapítható meg.
A következő probléma, hogy ha a rendszerben folyamatosan érkeznek a munkák, előfordulhat, hogy egy hosszú folyamat sohasem kerül sorra, mindig lesz egy rövidebb, amelyik elé vág. Az SJF algoritmus garantálja a legrövidebb átlagos várakozási időt. De miért örüljön ennek egy örökre kizárt hosszú folyamat? A számítási példa egyszerű, azonban bonyolultabb esetekben célszerű külön oszlopot fenntartani az egyes folyamatok befejezésekor várakozó folyamatoknak, ill. közülük a legrövidebbnek.

A körben járó algoritmus az "utolsó pár előre fuss" elvet valósítja meg. Interaktív rendszerekben, ahol a felhasználók a terminálok előtt ülve várják programjuk eredményeit, nem megengedhető sem a FCFS hosszú folyamatokat, sem a SJF rövid folyamatokat előnyben részesítő stratégiája. Az RR módszer demokratikusabb. Egy bizonyos időszelet eltelte után az ütemező elveszi a folyamattól a processzort. Az addig futó folyamat a várakozási sor végére kerül, a következő folyamat futhat, de ő is csak egy ideig.

Előny: Demokratikus, a legrövidebb a válaszideje.
Hátrány: Jelentős adminisztrációt igényel.

Minden egyes folyamatváltásnál környezetváltásra is sor kerül, ami az időszelet nem megfelelő megválasztása esetén túlsúlyba is kerülhet. A megnövekedett adminisztrációt már az egyszerű példa kapcsán is megtapasztalhatjuk, most már végképp kevés az egy táblázat. A folyamatok adatai a régiek, de mivel egy-egy folyamat nem egy lépcsőben fut le, a sorok száma már több kell legyen, mint a folyamatok száma, sőt előre nem is igazán lehet tudni, hogy mennyi.
Megjegyezés: A táblázatban *-gal jelölt az a folyamat, amely felfüggesztődött, majd újra sorra került. Ilyenkor az érkezési idő oszlopban a felfüggesztés ideje, míg a kezdeti igény oszlopban a maradék idő szerepel. Azért, hogy ezt megkülönböztessük a tényleges érkezési időtől és kezdeti igénytől, zárójelek között kerültek beírásra.
Prioritásos módszerek

A folyamatokat fontosság szerint rangsorba állíthatjuk. Ez persze felborít minden egyszerű algoritmust. A prioritás az FCFS és SJF technikáknál azt jelenti, hogy a magasabb rendű folyamat a várakozási sor elejére kerül. Az RR algoritmusnál az elsőbbséget nagyobb időszelet biztosításával lehet elérni. A prioritásos rendszereknél fennáll a veszélye annak, hogy a kevesebb joggal rendelkező folyamatok háttérbe szorulnak, nem futhatnak.

A prioritás azonban a gyengék javát is szolgálhatja. Ha a várakozási sorban lévő folyamatok prioritását idővel automatikusan növeljük, előbb-utóbb az alacsony jogú, hátrányos helyzetű folyamatok is futhatnak.



Szálak és folyamatok fogalma

A program egy algoritmust megvalósító utasítások sorozata magas színtű nyelven vagy gépi kódban. A folyamat (task, process) egy éppen végrehajtás alatt álló program. Egy program végrehajtása több folyamatot is létrehozhat. Egy program több különböző folyamatból is állhat. (Például egy levelező program esetén a bejelentkezés az első folyamat, mely létrehozhat egy szerkesztő, majd egy levélküldő folyamatot.) A létrehozó folyamat a szülő (parent process), a létrehozott a gyermekfolyamat (child process). A szülőt általában az operációs rendszer hozza létre.
Multitasking környezetben a processzorok száma általában kevesebb, mint a folyamatoké, így a folyamatok időnként várakozni kényszerülnek. A további folytatáshoz azonban néhány információt tárolni kell róla.
A folyamatleíró blokk (Process Control Block – PCB) azonosítja egyértelműen a folyamatot. Ez tartalmazza a folytatáshoz szükséges adatokat (konkrét tartalma az adott rendszertől függ):
  • a folyamat azonosítóját
  • a programszámláló állását
  • a folyamat állapotát
  • a regiszterek tartalmát
  • a folyamathoz tartozó memóriaterületek adatait
  • a használt perifériák, állományok jellemzőit
A folyamatok másik megközelítése: Olyan programok, melyeknek van folyamatleíró blokkja. (Vagyis az operációs rendszer felügyelete alá kerültek). A folyamatok közötti váltás e tábla alapján történik, minél nagyobb a tábla, annál lassabban. A szálak (THREAD) a folyamatokhoz hasonlítanak, de nyilvántartásukhoz gyakran elég az utasítás számláló és a regiszterek tartalma. (Helyesírás ellenőrző az MS Word-ben.) A szálak közötti átkapcsolás nagyon gyors, de az adatcsere lehetősége miatt általában valamilyen közös memóriát kell használniuk.
A folyamatok és a processzor kapcsolata igen szoros, a folyamatok minden utasítását a processzor hajtja végre. Egy folyamat az elindításától a befejezéséig folyamatosan igényli a processzor közreműködését. Rendszerünkben több folyamat is fut, ezért a precíz működés érdekében pontos időzítésre van szükség. A processzor kihasználtsági foka (különösen régebben, amikor a hardver igen drága volt,) elsőrendű fontossággal bírt, de manapság sem elhanyagolható.
A felhasználók szempontjából azonban nem ez a kulcskérdés. A felhasználó akkor érzi jól magát, és akkor elégedett a számítógép működésével, ha az a programjait a lehető legrövidebb idő alatt végrehajtja. A kihasználtság és a sebesség tehát egyaránt fontos, ezért az operációs rendszereknek mindkét feltételt teljesíteniük kell.
Az idővel való gazdálkodást ütemezésnek (scheduling) nevezzük. Az ütemezés során a folyamatok állapota változik meg. Attól függően, hogy milyen állapotok között történik váltás, az ütemező több szintjét definiálhatjuk. (magas szintű ütemező , alacsony szintű ütemező)
Egy folyamat az időzítés szempontjából alapvetően 3 alapállapotot vehet fel, az állapotok között pedig 4 különböző átmenet lehetséges.
    Az alapállapotok:
  1. Futásra kész (ready): Ebben az állapotban - a processzoron kívül - minden erőforrás a folyamat rendelkezésére áll. A folyamatok, létrejöttüket követően futásra kész állapotba kerülnek.
  2. Fut (running): A processzor annak a folyamatnak az utasításait hajtja végre, amelyik ebben az állapotban van.
  3. Várakozik (blocked): Ha futó folyamat olyan erőforrást igényel, amelyik pillanatnyilag nem áll rendelkezésre, vagy a további futásához szüksége van egy másik folyamat által szolgáltatandó eredményre, ebbe az állapotba kerül.
    Az átmenetek:
  1. Elindul (dispatch): A központi egység felszabadulása esetén az alacsonyszintű ütemező a futásra kész állapotban lévő folyamatok közül választja ki azt, amelyik a fut állapotba kerülhet.
  2. Megszakad (timer runout): Ha a futó folyamat számára biztosított idő lejár, visszakerül a futásra kész állapotba. (Nem mindegyik operációs rendszer teszi lehetővé, hogy egy folyamatot megszakítsunk, ehhez a rendszernek, illetve a folyamatnak megszakíthatónak kell lennie).
  3. Vár (wait, block): Amennyiben olyan erőforrásra van szüksége, amely éppen foglalt, a fut állapotból a várakozik állapotba jut.
  4. Feléled (awake): A várt esemény bekövetkezése esetén a folyamat futásra kész állapotba kerül és újra beáll a processzorra várakozó folyamatok sorába.



A HTTP (protokoll) szerepe az adattovábbításban


A Web kliens-szerver architektúrát alkalmaz az információk megosztására és terjesztésére. A rendszer működése során a felhasználó gépén futtatott kliens program - a web-browser - kérést intéz az Internetre rákapcsolt web-szerverhez, ami az üzenetet értelmezi és a kért dokumentumot ill. kiegészítő információkat küld vissza a kliens felé. A megkapott fájlt aztán értelmezi a browser és annak tartalmától függően megjeleníti, lemezre menti vagy éppenséggel - pl. Java kód esetén - elkezdi futtatni azt a felhasználó gépén. A két gép között az információ-csere a HTTP protokoll segítségével zajlik.
Az HyperText Transfer Protocol (Hipertext Átviteli Protokoll) kialakítása során elsődleges szempont volt az egyszerűség és gyorsaság, amik elengedhetetlen feltételei egy jól működő oszott, hipermédia alapú információs rendszernek. A HTTP egy objektum-orientált, állapot nélküli általános protokoll, ami azonban jóval több feladat ellátására is képes lehet, mint web-oldalak továbbítása.
Az, hogy a protokoll állapot nélküli azt jelenti, hogy a teljes kommunikáció folyamata jól behatárolható, egyedi kérések sorozatából áll, melyek mindegyike során a kliensnek minden szükséges információt újból el kell küldenie a szerver felé. Bár e megközelítés ineffektívnek bizonyul, egy viszonylag állandó kapcsolat - pl. helyi hálózat szervere és a munkaállomások - esetén, egyértelműen sokkal hatékonyabb az olyan hipermédia rendszerek, mint pl. a web esetén is, ahol alapvetően alacsony (<50%) az esélye annak, hogy a kliens két egymás utáni kérése ugyanarra a szerverre fut be, hisz a hiperlinkek segítségével a felhasználó - teljesen észrevétlenül - keresztül-kasul vándorol a hálózaton. Az egy-egy oldal lekérése során végrehajtásra kerülő átviteli tranzakció a következő alapvető lépésekből áll:
  • a kliens és a szerver közti kapcsolat felépítése (a HTTP általában a 80-as TCP/IP portot használja a szerver gépen, de az URL segítségével bármilyen más, tetszőleges port is megadható)
  • a kliens egy kérést (request) intéz a szerver felé
  • a szerver a kérés fogadása és az annak megfelelő feladatok elvégzése után egy választ (response) küld vissza a kliens felé
  • mindkét fél bontja a kapcsolatot
A kliens az összeállított kérésben információkat küld saját magáról (pl. a browser típusa és verziója), az alkalmazott formátumról (pl. az alkalmazott HTTP protokoll verzió) valamint az URL-ben a host-név utáni - a felhasználó által közvetlenül begépelt, vagy egy hiperlinkben megadott - kiegészítő paramétereket, melyek további információkat nyújthatnak a szervernek az információ típusát, jellegét illetően vagy speciális futtatható modulok esetén végrehajtási módozatával kapcsolatban. Ezen kívül egy ún. metódust is meghatároz, azaz megmondja, hogy milyen műveletet kíván a megadott objektumon elvégezni. Az objektumokon elvégezhető metódusok az alkalmazott információs rendszer jellegétől függenek és a WWW esetén pl. a következő feladatok elvégzésére alkalmasak: lekérdezni, hogy egy objektum állapota megváltozott-e (azaz, hogy újra kell-e olvasnia, vagy előveheti egy régebbi verzióját), letölteni, törölni, stb.
Ezen információkat a kliens egy, az Internel Mail-ben is alkalmazott fejléchez hasonló, alapvetően szöveges jellegű információs blokkban kódolja és ezt küldi el a szerver felé.
A szerver a kért információs blokk előállítása után azt egy hasonló fejléccel ellátva küldi vissza a kliensnek. A szöveges blokk elsősorban a visszaküldött objektum jellemzőit írja le: pl. kódolási formátum (sima szöveg, zip, stb.), típus (szöveges információ, kép, videó, hang, bináris állomány, stb.), alkalmazott nyelv, stb. A választ megkapva azután a browser ezen információk alapján tudja eldönteni, hogy mit is kell csinálnia az objektummal: megjelenítenie, lemezre menteni vagy éppenséggel lefuttatni.

Gépek azonosítása

A kommunikációban résztvevő gépek azonosítása igen összetett és sokrétű. Egy IP alapú hálózat, minden egyes számítógépe, sőt ezen túlmenően minden egyes hálózati interfész (hálózati kártya) egyedi azonosítóval rendelkezik. (IP cím)
Ne felejtsük el, hogy egy PC-ben lehet több hálózati kártya is! Az egyediség, vagyis az, hogy minden PC más és más IP címmel rendelkezik, az összefüggő hálózatokban elengedhetetlen alapkövetelmény.

Ez azt is jelenti, hogy egy "kifelé" zárt hálózatban (pl. vállalati, iskolai vagy otthoni intranet) használhatóak olyan IP címek, amelyek egyébként az Interneten szerepelnek, hiszen ütközés nem lehetséges, mivel a hálózat nem kapcsolódik az Internethez.

Nagyon fontos!!! Az IP címét egy hálózati kártya nem a gyártásakor kapja meg, és így az nem egy végleges valami. Az IP címet az adott hálózat üzemeltetői határozzák meg, természetesen egy rendszer szerint, bizonyos kritériumok figyelembevételével. A kifelé zárt rendszernél, hálózatnál, az egyetlen dolog amire figyelni kell az, hogy a hálózatban ne legyen két azonos IP cím, tehát az egyediség a fontos. Ha azonban a gépünk, illetve a hálózatunk kifelé nyitott, vagyis kapcsolódik egy másik hálózathoz, pl. az Internethez, akkor nagyobbrészt az Internet-szolgáltatótól (ISP=Internet Service Provider) függ, hogy milyen IP címeket használhatunk.

Nézzük meg azt az esetet, amikor pl. egy PC-ben lévő hálózati kártyának mindig ugyanaz az IP címe, (fixre van állítva). Ebben az esetben ún. statikus IP címről beszélünk.
Ha az IP cím csak akkor derül ki, amikor az Internet kiszolgáló szerverhez kapcsolódik a PC, vagyis a szolgáltató osztja ki az ő IP tartományából véletlenszerűen, akkor már dinamikus IP címről van szó.

Vizsgáljuk meg az IP cím felépítését, jellemzőit! Az IP cím egy 4 byte-ból, azaz 32 bit-ből álló számsorozat. Leggyakrabban pontokkal elválasztott decimális formában találkozhatunk vele: A.B.C.D alakban. Mind a négy tag, 0-255 közötti értéket vehet fel.
Példa egy lehetséges IP címre: 192.168.2.15
Kontinensek IP címtartományai

A "C" osztályú IP címtartományokat kontinentális alapon osztják ki.
Kontinens    Címtartomány
Európa    194.0.0.0 - 195.255.255.255
Észak-Amerika    198.0.0.0 - 199.255.255.255
Közép- és Dél-Amerika    200.0.0.0 - 201.255.255.255
Ázsia, Ausztrália    202.0.0.0 - 203.255.255.255
Címosztályok

Az IP címek eleje a hálózatot, a vége a csomópontot azonosítja.
"A" osztály

Az első bit: 0
01101000.    01001100.    00011101.    11101000    =     104.76.29.232
1. bájt    2. bájt    3. bájt    4. bájt
hálózat azonosító    hoszt azonosító

27 = 128 db ilyen hálózat van, egyenként 224 = 16.777.216 hoszttal.

Az 1. bájt értéke tehát: 0 – 127

1.0.0.0 -tól 126.255.255.255 -ig
"B" osztály

Az első két bit: 10
10101000.    01001100.    00011101.    11101000    =     168.76.29.232
1. bájt    2. bájt    3. bájt    4. bájt
hálózat azonosító    hoszt azonosító

214 = 16384 db ilyen hálózat van, egyenként 216 = 65536 hoszttal.

Az 1. bájt értéke tehát: 128 - 191

128.0.0.0 -tól 191.255.0.0 -ig
"C" osztály

Az első három bit: 110
11001000.    01001100.    00011101.    11101000    =     200.76.29.232
1. bájt    2. bájt    3. bájt    4. bájt
hálózat azonosító    hoszt azonosító

221 = 2.097.152 db ilyen hálózat van, egyenként 28 = 256 hoszttal.

Az 1. bájt értéke tehát: 192 - 223

192.0.0.0 -tól 223.255.255.0 -ig
"D" osztály

224.0.0.0-tól 239.255.255.255-ig
Internet multicast címzés
"E" osztály

240.0.0.0-tól 255.255.255.255-ig
Jővőbeli felhasználásra foglalt.
Speciális IP-címek
speciális IP-címek

A 2., 4. és 5. esetben természetesen nem biztos, hogy egész biteken van a vágás!!!
Maszkolás

Az osztályos címzésnél a vágás mindig egész bájton történik. Látható, hogy ez a fajta címkiosztás nem egyenletes. Sok "C" osztályú és nagyon kevés "A" osztályú hálózat van. Megoldás a hálózati maszk (=netmask).

Ez egy olyan 32 bites maszk, mely 1-es bitet tartalmaz a hálózat és alhálózat azonosításában résztvevő bithelyeken és 0-ás bitet tartalmaz a csomópont azonosítására szolgáló bithelyeken.
Prefix hossz: A hálózati maszkban szereplő 1-es értékek darabszáma (a hálózatot azonosító bithelyek darabszáma).

Az egyes osztályokhoz tartozó hálózati maszkok:
az osztály típusa    maszk    prefix hossza
"A"    255.0.0.0    8
"B"    255.255.0.0    16
"C"    255.255.255.0    24

Az IP címek (IPv4 esetén) 32 biten tárolódnak, tehát egy IP-cím így nézhet ki bináris formában:
11000000.10101000.00000001.00000001
A hozzá tartozó alhálózati maszk:
11111111.11111111.11111111.00000000

Ekkor ha egy AND művelettel a kettőt "összeboronáljuk", megkapjuk a címet:
11111111.11111111.00000001.00000000, vagyis 192.168.1.0

Az IP címeket olyan formában is felírhatjuk, hogy pl. 192.168.1.0/24
Ez azt jelenti, hogy az alhálózati maszkban 24 db 1-es szerepel, vagyis a maszk 255.255.255.0

Egy 192.168.1.0/24-es hálózatban az IP címek a következők lehetnek:
192.168.1.1 - 192.168.1.254
A 192.168.1.255-ös cím a broadcast számára van fenntartva. (Ez az a cím, amelyre ha csomagot küldünk, a hálózat összes tagja megkapja. A broadcast cím hostot azonosító része - ha binárisan nézzük - mindig tele van 1-essel.)

Az alhálózati maszkból tudja meg a gép, hogy a belső hálózatba kell-e küldeni a csomagot vagy máshová.
Pl. egy 192.168.2.1/24 -es IP esetén már nem a belső hálózaton zajlik a forgalom (nagyon leegyszerűsítve, egy 192.168.1.1/24-es gép szemszögéből).

Ott kezdődik a varázslat, ha elkezdünk játszani a maszkkal.
Pl. 192.168.1.1 esetén legyen a maszk 255.255.255.252! Ilyenkor ha leírjuk binárisan a maszkot:
11111111.11111111.11111111.11111100

Mivel már csak az utolsó két bit szabad a címben, oda csak 3 cím fér el:
192.168.1.1, 192.168.1.2, 192.168.1.3.
És lényegében csak 2 számítógép, mivel a 1.3 a broadcast cím. Láthatjuk, hogy ilyenkor 30 bit azonosítja a hálózatot, 2 a gépeket. A címet leírhatjuk úgy is, hogy: 192.168.1.1/30

De a másik irányba is tolhatók a bitek. Maradjunk a példánál: 192.168.1.1, a maszk legyen 255.255.252.0! (binárisan 11111111.11111111.11111100.00000000)
22 bit azonosítja a hálózatot, 10 bit pedig a számítógépeket. Vagyis a 192.168 az mindenképpen adott, a következő szám már lehet 0 vagy 1 vagy 2 vagy 3, és az utolsó számjegy mehet 1-255-ig. Tehát a következő IP címek mind egy hálózatban lesznek:
192.168.0.1-255
192.168.1.0-255
192.168.2.0-255
192.168.3.0-255

Mit is csináltunk? A
192.168.1.0/22 esetén 255+256+256+255 gépet csatolhatunk a hálózatba,
192.168.1.0/24 esetén viszont csak 254-et,
192.168.1.0/30 esetén pedig már csak 2-t.
Hogyan használja az IP-protokoll az alhálózati maszkot?

Amikor egy porgram adatokat küld a TCP/IP-hálózaton keresztül, az elküldendő adatokhoz mellékeli a saját és a címzett IP-címét is. Ha a címzett címében a hálózati azonosítója más mint a küldőt tartalmazó hálózat címe, a címzett csak útválasztó(ko)n keresztül érhető el. Ezért a küldő számítógépén futó IP-protokollnak először azt kell megállapítania, hogy az elküldendő csomag címzettje a helyi hálózatban van-e. Ezt pedig a következőképpen teszi:

    A küldő IP-címéből a küldő alhálózati maszkjának segítségével előállítja a hálózati azonosítót.
    A címzett IP-címéből a küldő alhálózati maszkjával előállítja a hálózatcímet (a címzett alhálózati maszkjával nem rendelkezik).
    A kapott két számott összehasonlítja.

Ha a két szám egyezik, megkeresi a címzettet a helyihálózatban, ha pedig nem, a csomagot az alapértelmezés szerinti átjárónak küldi el.

Az IP-cím nem a számítógépet, hanem annak csak egy hálózati csatolóját azonosítja. Ha a számítógépben több hálózati kártya van, minden csatolóhoz külön IP-címet kell adni.
A több csatolónak megfelelően a számítógép több különböző helyi hálózatban is részt vehet, mindegyikben a hálózatba illő IP-címmel. Ez azonban nem jelenti azt, hogy az így felszerelt számítógép össze is köti azokat a hálózatokat, amelyekhez csatlakozik: a különböző hálózatokban lévő más számítógépek alapértelmezés szerinnt nem tudnak egymással kommunikálni a többkártyás (multihomed) számítógép segítségével. Az olyan, több hálózati csatolót tartalmazó berendezést, amelyek révén a róla elérhető helyi hálózatok kommunikálni tudnak egymással, útválasztónak (router) nevezzük.
NAT
Az eredeti: http://hu.wikipedia.org/wiki/H%C3%A1l%C3%B3zati_c%C3%ADmford%C3%ADt%C3%A1s

A hálózati címfordítás (angolul Network Address Translation, röviden NAT) a csomagszűrő tűzfalak, illetve a címfordításra képes hálózati eszközök (pl. router) kiegészítő szolgáltatása, mely lehetővé teszi a belső hálózatra kötött gépek közvetlen kommunikációját tetszőleges protokollokon keresztül külső gépekkel anélkül, hogy azoknak saját nyilvános IP-címmel kellene rendelkezniük. Címfordításra akár egyetlen számítógép is képes, így valósítható meg például az internet-kapcsolat megosztás is, amikor a megosztó gép a saját publikus címébe fordítja bele a megosztást kihasználó kliens gép forgalmát.

A hálózati címfordító a belső gépekről érkező csomagokat az internetre továbbítás előtt úgy módosítja, hogy azok feladójaként saját magát tünteti fel, így az azokra érkező válaszcsomagok is hozzá kerülnek majd továbbításra, amiket – a célállomás címének módosítása után – a belső hálózaton elhelyezkedő eredeti feladó részére ad át. Ebből kifolyólag ez minden esetben egy aktív hálózati eszközt igényel, amely folyamatosan figyeli az érkező csomagokat és azok feladói és címzettjei alapján elvégzi a szükséges módosításokat. Ez többnyire (de nem szükségszerűen) egy tűzfal, amely megfelelően szétválasztja a külső internetet a belső hálózattól. (Innen származik a terminológia is: a külső, illetve belső hálózat fogalma.) A belső hálózatnak olyan címtartományt kell adni, amelyet minden hálózati eszköz a nemzetközi szabványoknak megfelelően belsőnek ismer el, és így azokat nem irányítja közvetlenül a külső hálózat felé. A belső címeket az alábbi táblázat mutatja be:
az osztály típusa    IP-cím tartomány    egyedi címek száma
"A"    10.0.0.0 – 10.255.255.255    16 777 216
"B"    172.16.0.0 – 172.31.255.255    1 048 576
"C"    192.168.0.0 – 192.168.255.255    65 536

A címfordítás segítségével megoldható, hogy akár egy egész cég teljes belső hálózati forgalma egyetlen külső IP cím mögött legyen, azaz gyakorlatilag egyetlen külső címet használ el egy több száz gépes hálózat. A belső forgalomban természetesen szükség van az egyedi belső címekre, de erről csak a címfordítást végző hálózati eszközöknek kell tudnia, kifelé ennek részletei már nem láthatók. Így létrejöhet olyan gazdaságos konfiguráció is, hogy egy viszonylag nagy cég teljes külső címfoglalása 10-20 db cím, míg a belső forgalmukban akár több ezer belső cím is lehet. Nagy előnye ennek a technikának, hogy ugyanazt a belső tartományt nyugodtan használhatja bárki más is, amíg mindegyik egyedi külső cím mögé van fordítva, ez nem okoz zavart. Akár az összes NAT-ot használó cég belső hálózatában lehet minden gép a 10.0.0.0 tartományban, ha kifelé valóban egyedi címmel látszanak. Éppen a címfordítás technológiája miatt nem került gyorsabban bevezetésre az IPv6 szabvány, amely kifejlesztésének egyik oka az IPv4 fogyatkozó címtartományának kiváltása volt.
Problémák

    NAT Traversal: A címfordítás miatt természetesen folyamatos üzemű és nagy teljesítményű hálózati eszközökre van szükség, hogy a megnövekedett igényekkel járó egyre nagyobb sávszélességet valós időben tudják átengedni magukon. Ez hatalmas számítási kapacitást köt le, és koncentrált mivolta miatt az egyik legkritikusabb pontja egy hálózatnak. Ha kiesik a címfordítást végző eszköz, a hálózat működése azonnal kárát látja. Fürtözéssel és alternatív útválasztók beállításával ugyan csökkenthető ez a veszély, de ettől függetlenül is a fő tűzfal jelenti az egyik legérzékenyebb pontot.
    Az IP csomag hasznos mérete tehát egyre csak csökken, mert egyre több járulékos információ foglalja el a hasznos helyet a fejlécben. A titkosítás, a címfordítások, az ellenőrző információk mind-mind a ténylegesen hasznos adat elől foglalják a helyet, miközben egy sor plusz lehetséges hibaforrást is jelentenek.
    IP-szűrés: Ha egyszerre sok felhasználó fér hozzá a hálózathoz látszólag ugyanarról a címről, problémát jelenthet az egyes címek tiltásával, feloldásával végzett hozzáférési szabályozás elve. Konkrét példával illusztrálva: ha egy szerkesztő és egy vandál is ugyanannál a cégnél dolgozik ahol címfordítást használnak kifelé, mindkettejük tevékenysége ugyanarról az IP címről látszik. Ez hirtelen felindulásból zoknibáb (Ha egy wikipédista több különböző felhasználónéven regisztrálja magát a Wikipédiában, a második és minden további felhasználónevét zoknibábnak nevezzük.) gyanúját is keltheti, hiszen a cím ugyanaz, ahonnan a szerkesztések és a vandálkodások is jönnek, pedig két (vagy akár több) különböző embert takar a valóságban. A címtartományok tulajdonosi köre nyilvános, tehát egy hozzáértő ellenőr ki tudja deríteni, hogy az adott cím a szolgáltatók által dinamikusan kiosztott tartományokból való, vagy esetleg egy cég tulajdona, aki befordítja az adott cím mögé a teljes hálózati forgalmát. Ilyenkor a cím blokkolása gátolná az amúgy rendes szerkesztő(k) hozzáférését is, így ilyen esetben a károkozót magát (felhasználónevét) kell korlátozni az IP cím helyett. Az internetes forgalmi kimutatásokat készítő programok eredményeit is befolyásolja az egyetlen címről érkező óriási mennyiségű lekérés, amit akár több száz dolgozó is generálhat, akik egyetlen külső cím mögött vannak.

IPv6

2011. február 3-án kiadták az utolsó szabad IP-címet. A hírt az IANA, a címek kiadásáért felelős legfelsőbb szintű szervezet adta közzé Miamiban. Az 1980-ban bevezetett IPv4 szabvány 4,3 milliárd címet volt képes kezelni – ez most elfogyott.

Az első IPv6-tal foglalkozó szabványok 1992 decemberére készültek el, és a hét változatból 1994-re született meg a ma IPv6-nak nevezett protokoll.

Az IPv6 címek 128 bitesek (16 byte). (Vagy másféleképpen: 8 db 16 bites rész.)
Például: 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
Hágy darab IPv6 cím létezik?

    2128 = 3,4 × 1038 cím
    340 szextillió
    340.000.000.000.000.000.000.000.000.000.000.000.000
    (Egész pontosan: 340 282 366 920 938 463 463 374 607 431 768 211 456 ) :-)
    Összehasonlításképpen ez olyan, mintha egy 0,3 milliméter átmérőjű vízcseppet hasonlítanánk össze a Föld teljes vízkészletének nagyságával.
    665 * 1021 cím per négyzetméter a Földön!
    Ha 106/μs sebességgel osztanánk ki a címeket, 20 év alatt tölthetnénk be a címteret.


Az IPv6 előnyei

Az IPv6 tervezésekor nem csak az IPv4 meglévő hibáit igyekeztek kiküszöbölni, hanem olyan új szolgáltatásokat is igyekeztek beépíteni, amelyek gyorsabbá, robosztusabbá, és az új hálózati és felhasználói igényeknek jobban megfelelővé teszik az új protokollt.

    IPv4 esetében az adatcsomagok méretének felső korlátja 64 kB (kilobyte), míg az IPv6 esetében ez 4GB (gigabyte) méretig növelhető, amely jelentősen megnövelheti az adatátviteli sebességet.
    Az IPv4 fejléchez képest az IPv6-os fejléc szerkezete egyszerűsödött. Az IPv4-ben kötelező mezők opcionálisakká váltak, így az IP csomag feldolgozása egyszerűsödik, ezzel is növelve az elérhető teljesítményt.
    Hogy megvédjék a személyes adatokat, egy új protokollt is bevezettek, amely megakadályozza, hogy egy hosszabb ideig a hálózaton lévő eszközt be lehessen azonosítani.

A címek szöveges megjelenítése is új az IPv4-hez képest. A címet 8 darab 16 bites részre bontva, hexadecimális alakban, kettőspontokkal elválasztva írjuk le.
A csupa 0 bitet tartalmazó tartományok rövidítve, :: jellel (2 db kettőspont) írhatóak.
Például a 1080:0:0:0:0:3:a143:2c2b cím rövidítve 1080::3:a143:2c2b formában írható. (A rövídítés szabályai a következők: egy :: több 16 bit-es nulla csoportot is jelölhet, azonban a :: egy címben csak egyszer szerepelhet, de a :: lehet a cím elején vagy a végén is.)
Ezen kívül még az egyes hexadecimális csoportokban a bevezető nullák is elhagyhatóak.
A fe80:0000:0000:0000:0000:0000:0000:0001 tehát írható fe80::1 alakban is. 

MAC cím, fizikai cím

A MAC-cím (Media Access Control) egy hexadecimális számsorozat, amellyel még a gyárban látják el a hálózati kártyákat. A hálózat többi eszköze a MAC-címet használja a hálózat előre meghatározott portjainak azonosítására. Ezek mellett az irányítótáblák és egyéb adatszerkezetek létrehozására és frissítésére is alkalmas. Egyebek mellett a hardvercím, MAC-rétegbeli cím és fizikai cím elnevezés is használatos. Minden kártyának saját MAC-címe van. A címet (címtartományokat) a szabványügyi hivatal adja ki a gyártónak, és ezt a gyártó fizikailag belesüti a kártyáiba. A címet 12 darab hexadecimális számjegy formájában szokták megadni (pl. 00–13–8F–57–ED–A5). Az első hat hexadecimális számjegy kiosztását az IEEE felügyeli, ezek a gyártót vagy az eladót azonosítják. A MAC-címnek ezt a részét egyedi szervezetazonosítónak (Organizational Unique Identifier, OUI) nevezzük. A fennmaradó hat hexadecimális számjegyet a gyártó adminisztrálja.
pl. 00–13–8F ⇒ Asiarock Incorporation
A MAC-cím Windows alóli elérése: Nyissunk egy parancssort és írjuk be: ipconfig /all

Mi az IMEI szám?

A nemzetközi mobiltelefon azonosító egy egyedi szám, amelyet minden egyes telefonhoz külön-külön, egyenként határoznak meg a GSM rendszerben, és amelyet a gyártótól kap meg a telefon.
Az IMEI egy 14 számjegy hosszúságú szám, amely a GSM telefont azonosítja a GSM hálózatban. Amikor a telefont bekapcsoljuk, az IMEI-t ellenőrzik egy központi adatbázis fekete, vagy fehér listája alapján. Ha az IMEI szám az adatbázis fekete listáján található, vagy nem található meg a fehér listán, akkor nem tudja használni a hálózatot, mivel nem tud oda bejelentkezni.
A legtöbb telefonnál megnézhetjük az IMEI számot, ha beütjük a következőket: *#06#
Itt van például egy IMEI szám:490154100837810
A szám egyes részeinek jelentése:
  • 490154: az első hat számjegy a telefon típusának a száma
  • 10: a gyártó kódja
  • 083781: a következő hat számjegy a telefon szériaszámát tartalmazza
  • 0: ellenőrző szám. A régebbi típusoknál 0
Az IMEI szám csak 14 számjegyből áll, az ellenőrző szám nem része az ellenőrzött IMEI számnak. Az ellenőrző számot a Luhn algoritmus segítségével számolják ki.

A lokális hálózatok építőelemei, és legfontosabb tulajdonságaik - 2
Fizikai átviteli jellemzők és módszerek

Az átviteli közeg feladata, hogy bitfolyamokat szállítson egyik géptől a másikhoz. A számítógépeket hálózattá összekötő közeg igen sokféle lehet.

A fizikai közeg a jelek hordozója, fémvezeték, fényvezeték vagy a puszta „éter”. Attól függően, hogy vezetékes, ill. vezeték nélküli átvitelmódról beszélünk. Átvivőközegen többet értünk, mint csupán jelek egyszerű hordozóját; a fizikai közegen kívül hozzászámítjuk még az átvitelben részt vevő egyéb elemeket, így pl. erősítőket, jelismétlőket, sugárzókat, kapcsolókat stb. is. Az átvitel történhet vonalszerűen, pl. vezeték, lézersugár; infravörös vagy mikrohullámú nyaláb útján, és történhet térben, irányítatlan rádióhullámmal.

Megkülönböztetünk strukturált és strukturálatlan átvivőközeget. Ez utóbbinak nincs belső szerkezete. Ilyen azoknak a rádióhálózatoknak az átvivőközege, amelyekben az állomások helye nem azonosítható, s az üzenetátvitelnek nincs meghatározott iránya. A strukturált átvivőközegben az üzenetek továbbítása vonalakon át történik, az állomásokat közvetlenül vagy kapcsolókon át vonalak fűzik össze. Az átvivőközeg tehát maga is hálózat. Korábban ezt nevezték az adathálózat alhálózatának.
Aktív és passzív eszközök

Tekintsük át, mit is jelent az aktív és a passzív eszközök fogalma!
Egy jel megy a kábelen. Elérkezik egy eszközhöz, ami ezeket a jeleket szétosztja. Ez az eszköz lehet aktív és passzív abból a szempontból, hogy a rajta átfolyó jelekkel mit csinál. Ha csak simán továbbadja/szétosztja, akkor passzív eszköz, mert nem csinál mást, mint továbbítja a bemenetén kapott jelet. (Ide sorolhatók többek között a dugók, csatlakozók, kábelrendező panelek, stb.)
Amennyiben ezen jeleket erősíti is, akkor már aktív. Jelerősítés akkor lehet fontos, ha a hálózat szegmense túl nagy ahhoz, hogy a jelek biztonságosan (jelveszteség nélkül) eljussanak a célállomásra. A jelvesztés akkor fordul elő, amikor túl hosszú a kábel a célállomás felé. Ilyen esetben van szükség erősítőre, jelismétlőre.

    Repeater (jelismétlő)
    repeater

    Az ismétlő feladata a hálózati jelek bit szintű erősítése és újbóli időzítése.
    Az azonos típusú sínhálózatok egyszerű jelismétlőkkel kapcsolhatók össze nagyobb hálózattá. A jelismétlők a kábeleket úgy egyesítik, hogy az összetett hálózat minden állomásának jelét (üzenetét) egyidejűleg az összes állomás hallja. Sínrendszerről van szó, minthogy ez a megoldás elterjedten a busz topológiájú LAN-oknál használatos. Gyűrű topológia esetén minden állomás eleve jelismétlőként működik; fogadja az üzenetet és a szintjére visszaállított jelet küldi ki újra.

    A jelismétlők a jelalak helyreállításán kívül semmi más feladatot nem végeznek. Ez az eszköz a protokoll fizikai szintjén működik, (csak bit szinten működnek, és nem értelmeznek egyéb információkat) ezért csak a minden rétegében azonos felépítésű hálózatok összekötésére szolgál. A repeaterek három nagyobb csoportra oszthatók:
        sodrott érpáras repeaterek
        üvegszálas átviteli támogatók
        vékony Ethernet repeaterek

    Az ismétlők lehetnek kétportosak, de a mai ismétlők már modulárisan bővíthetők, illetve eleve többportosak. Ez utóbbiakat nevezik hub-nak.
    Hub (elosztó)
    hub

    A hubok, vagy más néven többportos ismétlők feladata a hálózati jelek bit szintű erősítése és újraidőzítése sok (pl. 4, 8, 24 vagy akár 124) felhasználó számára. Ezt a funkciót koncentrálásnak nevezzük. Ha több eszközt (állomást) szeretnénk egy megosztott eszközhöz (kiszolgálóhoz) kapcsolni, és a kiszolgálóban csak egy hálózati kártyát szeretnénk elhelyezni, akkor ezt egy hubbal oldhatjuk meg.

    A hub a strukturált számítógép-hálózatok alapköve, nélküle nem lehetne a strukturált hálózatot kialakítani. Feladata a munkaállomások, szerverek és egyéb hálózati eszközök közti adatforgalom biztosítása. Csavart érpáras csillag topológiájú hálózatok esetén használnak az útvonal elosztására hub-okat, melyek meghatározott számú port-tal rendelkeznek. Három nagy csoportjuk létezik:
        passzív hub: nem végez jelismétlést, feladata az adattovábbbítás
        aktív hub: jelismétlést is végez
        intelligens hub: feladata a forgalomirányítás, csomagkapcsolás

    A hub egy doboz, rajta portoknak nevezett, telefoncsatlakozókhoz nagyon hasonlító csatlakozó aljzatokkal. Minden port egy munkaállomástól, szervertől vagy egyéb hálózati egységtől érkező kábelt fogad. Ha a hub nagy (16 vagy még több portot tartalmaz) gyakran rack-ba (tartóba) szerelhető kialakítású. Ez azt jelenti, hogy belőlük többet egy magas fémállványba csavarokkal rögzítenek, amely a hálózati eszközök elhelyezését és kábelezését is megkönnyíti.

    A legtöbb hub „buta”, amely azt jelenti, hogy a működésüket nem lehet felügyelni, önállóan működnek, csupán a hálózati forgalmat engedik át magukon, és ha hiba történik, akkor esetleg kijavítják. Ezzel szemben a felügyelhető hub-ok lehetővé teszik, hogy a rendszergazda távolról figyelemmel kísérje és konfigurálja, módosítsa a működésüket. Ezek a típusok használhatóak a hálózat hatékonyságának a növelésére olyan módon, hogy a rajtuk keresztül haladó forgalmat befolyásolhassák. Az SNMP (Simple Network Management Protocol = egyszerű hálózat felügyelő­kezelő protokoll) felhasználásával a rendszergazdák könnyen és rugalmasan tudják kezelni és elhárítani a hálózatban megjelenő hibákat. Ezen tulajdonságaik következtében az ilyen hub-ok jóval drágábbak egyszerűbb társaiknál.

    Ha bővül a hálózat, akkor az eredetileg használt hub-okat kinőheti. Ekkor megoldásként a hub-ok összekötése kábellel valósul meg. A különböző gyártóktól származó hub-ok is összeköthetők, ha mindegyik azonos sebességen működik. Sajnos a hub-ok ilyen módon történő bővítésének korlátjai vannak. A szabványos Ethernet hub-ok csak maximum 4 szintig köthetők össze. Ahol nem tudják biztosan, hogy fogják‑e a hálózatot bővíteni, érdemesebb összefűzhető (stack-elhető) hub-ot alkalmazni. Az összefűzhető hub-ok annyiban térnek el a hagyományos hub-októl, hogy speciális összefűző kábelekkel köthetők össze. Mikor ezt kialakítják, az összekötésben lévő összes hub a hálózat felé egyetlen hub-ként viselkedik. Ebben az esetben fontos, hogy minden összekötendő hub azonos gyártótól származzon. Ez a megoldás a hálózatépítőknek széleskörű lehetőségeket biztosít.

    A hub-okat tartalmazó hálózat mindig csavart érpáras kábelezésű. A csavart kábel a telefonkábelhez hasonlít, kivéve hogy 8 vezetéket tartalmaz a telefonkábel 4 vezetéke helyett. A kábelek végén RJ45-ös csatlakozó van. A kábel egyik végét bekötjük a hub portjába, a másik végét a munkaállomásba, vagy más hálózati eszközbe. A hub-okat a szerverrel vagy a munkaállomással összekötő csavart érpáras kábel neve egyenes kábel, mivel a kábel két végén lévő RJ45-ös csatlakozó két végpontjának azonos érintkezői vannak összekötve. Ezzel ellentétben, a fordítós kábeleket a hub-ok összeköttetésére használják. Ezekben a két végponti csatlakozó érintkezői ellentétesen vannak bekötve.
    Bridge (híd)

    Feladata a forgalom szűrése a LAN-on. A bridge nem továbbítja a lokális forgalmat, de a LAN más részeire (szegmenseire) tartó forgalmat átengedi. Joggal tehetjük fel a kérdést, hogy a híd honnan tudja megkülönböztetni a lokális forgalmat a kifelé irányuló forgalomtól. A válasz: onnan, ahonnan a posta is tudja, hogy mely küldemény helyi, vagyis a névből és a címből. Minden hálózati eszköz rendelkezik egy egyedi MAC-címmel; a híd ez alapján dönti el, hogy továbbítja-e az adatot.

    Az adatkapcsolati réteg szintjén működik a bridge. Feladata az egyes hálózati részek forgalmának elválasztása. Amikor a bridge-t a hálózatba kapcsolják, a címeket rögtön tanulni kezdi és ezek után már önállóan végzi a forgalomirányítást. Minden bridge-ben van egy adatbázis, ami a MAC (Medium Acces Control = az adatkapcsolat réteg alrétege, amelyhez azok a protokollok tartoznak, amelyek a közeg használatának vezérléséért felelősek) címek elhelyezkedését adja meg. Amikor egy bridge bemenetén megjelenik egy keret, a híd kiolvassa a forrás- és célcímeket, majd ezeket a címeket kikeresi a forgalomirányítási táblájából és meghatározza, hogy melyik LAN-on helyezkedik el a célgép és a forrásgép.

    Az ismétlőktől eltérően, amelyek egyszerű bitmásolást végeznek, a hidak tároló- és továbbító eszközök. Egy híd teljes kereteket vesz, és átadja az adatkapcsolati rétegnek, amely az ellenőrző összegét kontrollálja. Ezután a keret egy másik alhálózaton való továbbításra lekerül a fizikai rétegbe. A hidak végezhetnek apróbb változtatásokat a kereteken a továbbításuk előtt.

    Mivel ez az eszköz a fizikai réteg felett dolgozik, ezért képes arra, hogy eltérő fizikai szegmenseket összekössön. A hidak két nagyobb csoportra oszthatók annak alapján, hogy honnan tudják eldönteni azt, hogy melyik cím melyik szegmensben van.

    Az első esetben a fentebb már leírt transzparens és tanuló módszer segítségével a híd figyeli a rajta átmenő adatforgalmat, majd egy listát (forgalomirányítási tábla) állít össze arról, hogy az adatcsomag melyik állomásról érkezett. Ebben az esetben a híd csak azon állomások címét veszi fel a listára, amelyik a hídra kötött szegmensben van. E probléma megoldására két lehetséges megoldás van:
        A hidak kommunikálnak és a listáik tartalmát kicserélik egymás között
        A „körlevél” módszer, amely a hálózat indulásakor minden állomást felszólít, hogy azonosítsa magát, majd ezek alapján építi fel a listát.

    A másik módszer a célcím forrásának meghatározására a forgalomirányítás, amikor az adatcsomag a teljes útvonalat tartalmazza. Az útvonalak feltérképezésére ebben az esetben az ún. „discovery packet”-et (felfedező csomag) alkalmazzák, amely bejárván a hálót feltérképezi a lehetséges útvonalakat.
    Switch (kapcsoló)
    switch

    A switchek a bridge-ekhez hasonlítanak, csak annyiban térnek el egymástól, hogy a switch képes bármely két portját összekötni egymással a többi porttól teljesen függetlenül, ezáltal a maximális sávszélesség nem csökken. Továbbá a switch-eknek van egy vagy több nagysebességű portja is. A switch az az eszköz mely egy számítógép-hálózat strukturáltságát, szegmentálhatóságát hatékonyabbá teszi. A lokális hálózatok építőeleme, feladata sokrétű és esetenként igen összetett is lehet. Feladatai közé tartozik a hálózat szegmensei közötti kommunikáció biztosítása, a hálózat terheltségének csökkentése. Általános esetben portjaira hub-ok, nagy sebességű eszközök, optikai kábel csatlakozik. A switch a hálózat „intelligens” aktív eszközének is nevezhető.
    Router (forgalomirányító)
    router router

    Feladata a bejövő csomagok megvizsgálása, a legjobb hálózati útvonal kiválasztása, és a csomagok átkapcsolása a megfelelő kimenő portra. Az routerek a nagyméretű hálózatok legfontosabb forgalomirányító eszközei. Lehetővé teszik gyakorlatilag bármely típusú számítógép számára (a megfelelő protokollok segítségével), hogy kommunikálhasson a világ szinte bármelyik számítógépével.

    A hálózatokban a forgalomirányító két fő feladatot lát el: meghatározza az elérési útvonalakat és továbbítja a csomagokat. A csomagok több rendszeren keresztül történő eljuttatása a feladótól a címzettig, csak abban az esetben sikeres, ha minden router el tudja dönteni, hogy melyik portján továbbítsa az adott csomagot. A routing protokollok feladata az, hogy előállítsák minden egyes routerben a forgalomirányítási táblákat.

    A router olyan forgalomirányító eszköz, amely lehetővé teszi, hogy egymással közvetlen módon nem összekötött számítógépek kommunikálni tudjanak egymással. A routerek is hasonlóságot mutatnak a bridge-ekhez, de azokkal ellentétben nem az adatkapcsolati, hanem a hálózati rétegben helyezkednek el.

    Az alsó három rétegben dolgoznak, ezért már a logikai címeket is képesek feldolgozni. A logikai cím a fizikális címek felett lehetőséget ad a munkaállomások logikai részcsoportokra való osztályozására. Ezeket subnetwork-nek nevezik.

    Egy adatcsomag routerről routerre vándorol és az, hogy éppen milyen irányba halad tovább, azt az adott forgalomirányító szabja meg. Az irány meghatározásának módja lehet statikus vagy dinamikus. Statikus meghatározás esetében a hálózati adminisztrátor tartja kézben a folyamatot, amíg a másik változat esetében maguk végzik a forgalomirányítást, azaz folyamatosan frissítik a kapcsolatok listáját.
    Gateway (átjáró)

    Ez a legbonyolultabb hálózat összekapcsolási módszer. Akkor alkalmaznak átjárót, ha egymástól teljesen különböző hálózatot akarnak összekapcsolni. Mivel eltérő architektúrát használnak, a protokollok minden hálózati rétegben különbözhetnek. Az átjáró minden átalakítást elvégez, ami az egyik protokollkészletből a másikba való átmenet során szükséges. Ezek a következők:
        Üzenetformátum átalakítása: A hálózatok különböző üzenetformátumokat, eltérő maximális üzenetméretet és karakterkódokat alkalmaznak. Az átjáró át tudja alakítani az üzeneteket az üzenetet fogadó állomás számára.
        Címátalakítás: A hálózatok eltérő címzési szerkezetet használnak. A gateway képes átalakítani minden üzenethez a rendeltetési hálózat által megkívánt címszerkezetet.
        Protokoll-átalakítás: Amikor a hálózaton továbbításra előkészítik az üzenetet, minden hálózati réteg hozzáteszi a maga információját, amit a rendeltetési csomópontban lévő réteg arra használ, hogy megállapítsa, milyen protokollokat alkalmaztak, és hogyan kell feldolgozni az üzenetet. Az átjáró képes arra, hogy felcserélje az egyik hálózatból érkező információt a másik hálózat, hasonló feladat elvégzéséhez szükséges információjára.

   
A gateway-ek kínálják a legnagyobb rugalmasságot a hálózati összeköttetésben, mivel két teljesen eltérő hálózatot lehet egymáshoz kapcsolni. Az a hálózati csomópont, amelynek a gép azokat a csomagokat küldi, amelyek nem a helyi hálózat valamely állomásának szólnak. Az alapértelmezett átjáró feladata a távoli csomópontok felé az adatok továbbítása, illetve az onnan érkező információk fogadása a gép számára.

Bridge fogalma
Két, teljesen különböző protokollú hálózat között oldja meg az oda-vissza fordítást.

Vonal szerepe a kommunikációs csatornában

 A csatornák amelyeken az üzenetek áramlanak, igen jelentős költséggel megépített és üzemeltetett összeköttetéseken (vezeték, rádióhullám) keresztül valósulnak meg. Ezért nem célszerű, ha egy kommunikációs csatorna számára kisajátítunk egy vonalat, mert nagyon sok esetben a kommunikáció jellegéből fakadóan nincs folyamatos információcsere rajta, azaz a legtöbb kapcsolatban a vonalhasználat időszakosan jelentkezik. Mivel az adó és vevő oldal számára csak a végeredmény, az információ a fontos, ezért több csatorna is kialakítható egy vonalon, amelynek megvalósítására több lehetőség van.

multipelexelés: Az egyik megoldás az, mikor a fizikai közeget osztjuk meg több csatorna között. Ezt az adott vonal felosztását csatornákra több adó, illetve vevő között multiplexelésnek nevezzük. A multiplexelés olyan eljárás, amelynek során egy adatvonalat előre meghatározott, rögzített módszer szerint osztunk fel elemi adatcsatornákra. Minden bemenő elemi csatornához egy kimenő csatorna is tartozik, ezért a multiplexelés nem okoz csatorna-foglaltságot. Ezek a frekvenciaosztásos és az időosztásos multiplexelési módszerek, illetve ezek kombinációja.

Egy adatvonalat előre meghatározott, rögzített módszer szerint elemi adatcsatornákra osztunk fel. Ezt el lehet a frekvenciatartományban vagy/és az időtartományban is végezni (frekvenciaosztásos ill. időosztásos multiplexelés).

üzenet- és csomagkapcsolás: A másik lehetőség a vonalak maximális kihasználására, az átviendő információ kisebb adagokra bontása. A vonalon egymás után történik ezek átvitele, majd a darabokból az összerakásuk. Ez az adó és a vevő számára folyamatos összeköttetés látszatát kelti. Ezek az üzenet és csomagkapcsolási módszerek.

vonalkapcsolás: A harmadik lehetőségként az adatvezetékeket nem egy adóhoz és egy vevőhöz rendeljük, hanem azt a kommunikáció szükséglete szerint kapják meg a felek. Ennél a vonalkapcsolásnak hívott módszernél a kapcsolat a kommunikáció részeként jön létre, és a kommunikáció befejezésekor szűnik meg.

Jelenleg az analóg átviteli vonalakat felváltották a digitális átviteli utak. Ez azt jelenti, hogy szükségtelenné váltak a közbenső analóg-digitál és digitál-analóg átalakítók. Ezt azt is jelentette, hogy a frekvencia osztásos multiplexelést az időosztásos multiplexelés váltotta fel. Míg a beszéd analóg átviteléhez 300-3400 Hz-es sávszélesség elegendő, ugyanezen beszéd digitális átvitele 64 kbit/s-os adatátviteli sebességet igényel.
Multiplexelés
frekvenciaosztással (FDM - Frequency-Division Multiplexing)

Legfőbb felhasználási területe a távbeszélő-hálózatok vivőfrekvenciás rendszere, valamint a rádió-, és televízióadások.

Ha szinuszos hullámok összegéből előállítunk egy jelet, abból bármelyik összetevőt a csatorna másik oldalán eredeti formájában kinyerhetjük egy alkalmas szűrő segítségével.

Az egyes elemi vivőfrekvencia-tartományok között elválasztó frekvenciarésre van szükség, mivel a különböző jeleket szétválasztó szűrők meredeksége véges. A frekvenciarések jelentősen csökkentik a fővonal sávszélességének kihasználhatóságát. Ráadásul az éppen nem dolgozó berendezésekhez rendelt frekvenciasávok is kihasználatlanok.

A sávszélességet általában az ekvivalens 4 kHz-es beszédcsatornák számával adjuk meg. Tizenkét beszédcsatornát távbeszélőcsoportba fognak össze, amely nemzetközileg a 60-108 kHz-es frekvenciatartományban fekszik. Öt távbeszélőcsoport egy távbeszélő főcsoportot alkot, ez 240 kHz sávszélességű. Tíz főcsoportból jön létre egy 2.4 MHz sávszélességű bázis-mestercsoport. Ezeket is 3-as vagy 6-os mestercsoportokba lehet foglalni.

A frekvenciaosztás előnye, hogy a vonalak tetszőleges helyen megcsapolhatók, az egyes alcsatornák egymástól földrajzilag eltolva kezdődhetnek és végződhetnek, a csoportba fogott jeleknek nem szükséges kis körzetben elhelyezkedő adatállomásokhoz tartozni.

A fenti összefoglalóból az is nyilvánvaló, hogy ez a módszer nem igazán alkalmas számítógépek közötti információátvitelre, a csatornák emberi beszédre alapozott sávszélessége miatt.
szinkron időosztással (STDM - Synchronous Time-Division Multiplexing)

Digitális átvitelnél az idő-multiplex berendezések a nagyobb sávszélességű adatvonalat időben osztják fel több, elemi adatcsatornára.

Minden elemi adatcsatorna egy-egy időszeletet kap. A fővonal két végén elhelyezkedő vonali multiplexerek előre meghatározott időben, periodikusan, egymással szinkronban működve összekapcsolják egy-egy rövid időre – néha egyetlen bit, legtöbbször egyetlen karakter vagy bájt, esetleg néhány bájt átviteli idejére – az összetartozó be-, illetve kifutó vonalakat.

Néha a nagy sebességű fővonal közvetlenül a feldolgozó számítógéphez (illetve annak adatátviteli vezérlő egységéhez) csatlakozik és a demultiplexelés feladatát a számítógép látja el. Bármilyen típusú is az átvitel és bármekkora a multiplexelt információ-egység, szükség van arra, hogy a vonal két végén elhelyezett multiplexerek szinkronizálását biztosító periodikus jeleket is elhelyezzük az információ-egységek között. Ezek a szinkronjelek csökkentik a fővonal kihasználhatóságát.

A frekvenciaosztással és időosztással működő multiplexerek egyaránt akkor felelnek meg jól rendeltetésüknek, ha jelenlétük nem befolyásolja az adatkapcsolat szintű vezérlést.
Vonalkapcsolás

Az adó és a vevő közti összekötetés megteremtésére ki kell alakítani azt az útvonalat, amelyeknek részei kapcsolóközpontokon keresztül vannak összekötve. Első lépésben fizikai kapcsolat létesül az adó és vevő között, ami az összeköttetés idejére áll fenn. Az összeköttetésen keresztül megvalósul az adatátvitel, majd annak befejeztével a kapcsolat lebomlik.

A folyamatot a távbeszélő technikában hívásnak nevezik. Fontos tény, hogy az információátvitelt meg kell hogy előzze a híváskérés hatására létrejövő összeköttetés. Előnye a tényleges fizikai összeköttetés létrehozása. Ezek után a két állomás úgy képes kommunikálni, mintha pont-pont összeköttetés valósult volna meg közöttük.

Ilyenkor az adatok késleltetését már csak az elektromágneses jel terjedési ideje határozza meg, amely kb. 6 msec 1000 km-enként. Hátránya a kapcsolat létrehozásához szükséges sokszor jelentős időtartam és az, hogy ilyenkor a csatorna mégis kisajátítja a vonalat.

Ha a csatorna nem teljes kapacitással üzemel (pl. telefonnál a hosszú csend), akkor ez a vonal kihasználtságát rontja.
Üzenet- és csomagkapcsolás

Ilyenkor nincs előre kiépített út az adó és a vevő között. Az adó az elküldendő adatblokkját elküldi az első IMP-nek, az pedig továbbküldi a következőnek, egészen a vevő hoszt-hoz kapcsolódó IMP-ig. Az ilyen hálózatok a tárol és továbbít (store and forward) hálózatok.

Az üzenetkapcsolás esetén nincs az adatblokk méretére korlátozás, ami nagy tárolókapacitású fogadó és továbbító IMP-ket igényel. Másik hátránya az, hogy egy nagy üzenet akár percekre lefoglalhatja a közreműködő IMP-ket és a köztük lévő átviteli csatornát. Ezért gyakrabban használatos (számítógépes hálózatoknál csaknem kizárólagosan használt) az a módszer, mikor az átviendő adatblokk méretét korlátozzuk, és csomagokká bontjuk.

A csomagkapcsoló hálózatok hatékonyan alkalmazhatók interaktív forgalom (ember-gép kapcsolat) kezelésére is mivel biztosítják, hogy bármelyik felhasználó csupán néhány ezredmásodpercre sajátíthat ki egy vonalat.

A csomagkapcsolás nagyon hatékonyan képes a vonalak kihasználására, mivel adott két pont között összeköttetést több irányból érkező és továbbhaladó csomag is használja. Másrészről fennáll annak a veszélye, hogy a bemenő adatforgalom csomagjai úgy elárasztanak egy IMP-t, hogy korlátozott tárolókapacitása miatt csomagokat veszít. Míg vonalkapcsolás esetén az üzenet lényegében egyben kerül átvitelre, csomagkapcsoláskor a csomagok sorrendje megváltozhat, és a sorrendhelyes összerakásukról is gondoskodni kell.