TÖBBPROCESSZOROS RENDSZEREK(anyag 2)

A több processzor egyidejű használata nagyobb megbízhatóságot eredményezett, és megteremtette a lehetőséget, a programágak párhuzamos végrehajtása által, a feldolgozás gyorsítására is. Ez utóbbi azonban mind a programozókat, mind az operációs rendszerek készítőit nagy kihívás elé állította, meg kellett oldaniuk a folyamatok közötti kommunikáció, illetve szinkronizálás kérdéseit. A többprocesszoros rendszerek klasszikus megvalósításában a processzorok ugyanazt a memóriát, ugyanazokat a perifériákat használják és a rendszerbuszon keresztül kommunikálnak egymással, tehát közöttük igen szoros a kapcsolat. Az előnyök a következők:

1. Megnövekedett átbocsátó képesség. N darab processzor párhuzamos alkalmazásától azt várjuk, hogy a feladatok végrehajtási ideje N-ed részére csökken, azaz a rendszer N-szer annyi feladatot képes adott idő alatt elvégezni. Nem szabad azonban megfeledkezni a megnövekedett adminisztrációval, szinkronizációval járó többlet időről sem.

2. Erőforrás megtakarítás. Azoknál a feladatoknál, ahol a CPU jelenti a s " keresztmetszetet, szükségtelen minden perifériát és memóriát többszörözni.

Megbízhatóság. Ha több funkcionális egység ugyanazt a feladatkört tölti be, egyikük meghibásodása nem okoz katasztrófát, némi teljesítmény csökkenés árán a rendszer működőképes marad. A fennmaradó rész detektálhatja a hibát, kezdeményezheti annak megszüntetését. Az ilyen rendszereket hibatűrő rendszereknek nevezzük.

A több processzoros rendszerek lehetnek szimmetrikusak (SMP Symmetric MultiProcessing), vagy aszimmetrikusak. Szimmetrikus esetben minden processzor egyenértékű, mindegyiken az operációs rendszer egy másolata fut, minden folyamatot bármelyik processzorra rá lehet bízni. Aszimmetrikus rendszereknél az egyes processzorok feladata előre rögzített, például az egyik lehet a főnök, a másik végezheti a lebegőpontos számításokat, a harmadik kezelheti a perifériákat és így tovább.

Elosztott rendszerek

Több processzor szolgálatait úgy is igénybe lehet venni, ha azok egymással csak laza kapcsolatban vannak. Minden processzornak saját memóriája van, saját perifériáikkal rendelkezhet, tehát egy önálló számítógép. A processzorok közötti kapcsolat valamilyen kommunikációs csatornán (telefon vonalon, lokális hálózaton) történhet. Az elosztott rendszerek tipikus példái a számítógéphálózatok, melyekben az egyes processzorok, illetve más erőforrások egymástól földrésznyi távolságra is lehetnek. Az elosztott rendszerek alkalmazása mellett a következő érvek szólnak:

1. Rugalmasság. Az elosztott rendszerek komponensei lehetnek a legkülönbözőbb méretű, kiépítettségű, más-más gyártótól származó számítógépek, így minden feladathoz a legmegfelelőbb összeállítás alakítható ki.

2. Erőforrás megosztás. A hardver erőforrásokon kívül igen nagy szerepe van az adatbázisok, információs bázisok elosztott használatának. Például nem kell minden gépre felmásolni a moziműsort (ezzel tároló területet és időt takarítunk meg), ráadásul az adatokat a keletkezés helyén frissíthetik, így mindig aktuális marad.

3. Sebességnövekedés. Nagyobb, számításigényes feladatra igénybe vehetjük egy nagyszámítógép processzorait, vagy a terhelést megoszthatjuk több, kicsi számítógép között.

4. Megbízhatóság. Egy több lábon álló, szimmetrikus rendszerben az egyik komponens meghibásodása nem befolyásolja alapvetően az egész rendszer működését, mindössze némi sebesség csökkenéssel számolhatunk. Abban az esetben azonban, ha a meghibásodott számítógép valamilyen kritikus feladatot lát el (például kizárólag ez szolgálja ki a terminálokat) a hiba az egész rendszer működését leállíthatja.

5. Kommunikáció. Az összekapcsolt gépek között adatcsere történhet akár állományok továbbítása, akár elektronikus levelezés formájában.

Az említett előnyök mellett beszélni kell azonban a biztonság kérdéséről is. Az egyes állományok, hardver erőforrások jó esetben a nagy közös feladat hatékony végrehajtását szolgálják, azonban nem tisztességes szándékú felhasználók áldozatául is eshetnek. Az elosztott rendszerek témakörének egyik legfontosabb kérdése a hozzáférések szabályozása.

Alapfogalmak

Folyamatok

A program egy algoritmust megvalósító utasítások sorozata, függetlenül attól, hogy azok magas szintű nyelven, vagy akár bináris gépi kódban van ábrázolva és tárolva.

A folyamat (task, process) egy éppen végrehajtás alatt lévő program. Egy program végrehajtása több folyamatot is létrehozhat, ugyanaz a program több folyamat formájában is megjelenhet.

Multiprogramozott környezetben, ha a processzorok száma kevesebb a folyamatok számánál, a folyamatok nem mindig futhatnak, olykor pihenni kényszerülnek. A tétlenség idejének leteltével, a folyamat tovább haladhat, azonban ahhoz, hogy tudja, hogy hol is tartott, néhány alapvető információt kell róla tárolni.

A folyamatleíró blokk (Process Control Block-PCB, Task State Segment-TSS) azonosítja egyértelműen a folyamatot, tartalmazza a folytatáshoz szükséges adatokat (a konkrét tartalma az adott rendszertől függ):

 

A folyamatok fogalmának egy másik megközelítése a folyamatleíró blokkon alapul. Eszerint a folyamatok olyan programok , melyek rendelkeznek folyamatleíró blokkal, azaz az operációs rendszer felügyelete alá kerültek.

Folyamatok

 

Olyan programok , melyeknek van folyamatleíró blokkja

 

 

A folyamatok közötti váltás e tábla alapján történik. Minél nagyobb ez a tábla annál lassabb. A biztonság és a sebesség szempontjai, mind mindig itt is elmondhatóak. (Pl.: a banki ügyfél forgalom illetve a velük levő tranzakciók.)

 

A szálak (thread) a folyamatokhoz nagyon hasonlítanak, de nyilvántartásukhoz sokkal kevesebb adat elegendő, gyakran csak az utasításszámláló és a regiszterek tartalma szükséges. A szálak közötti átkapcsolás nagyon gyors – általában valamilyen memória területen osztozniuk kell, ami nem veszélytelen, ezért ott szerencsés használni, ahol a gyors működés kritikus, és a kisebb megbízhatóságot kellő odafigyeléssel , teszteléssel pótolni lehet , mint pl. az op.rendszer magjában a kernelben.