1, Multiprogramozott környezetben meg kell teremteni, annak feltételeit, hogy egyes folyamatok egymás memóriaterületeit ne zavarják. pl.: programhiba esetén se!
Ki kell alakítani egy jól működő védelmi rendszert és ki kell véde
ni a rosszakaratú hozzáféréseket. – de biztosítani kell a folyamatok közötti kommunikációt.Tárvédelem: 1. Védeni: a folyamat logikai egységeit egymástól.
2. Védeni kell a felhasználói folyamatokat egymástól, de biztosítani kell közöttük az igényeiket ----a kommunikáció lehetőségét.
3. Védeni kell az OP. rendszert a felhasználói folyamatoktól.
1/a, Folyamatok logikai egységeinek védelme.
Pl. – verem túlcsordulás több adatbetöltés, mint amit kiolvasunk. Így kialakul a telítődés, majd felülíródik (stack overflov)=stack memória
Védekezés: a programozó jelölje ki a program logikai egységeit = program szegmentálás – és készítsen:
Készítsünk laptáblát -> szegmensleíró táblát.
Ahány szegmens definiáljuk – lesz egy mező, - ami megadja a
Címszámítás szegmentáláskor
2. A folyamatok védelme egymástól – a folyamatok memóriaterületeit megvédjük egymástól, de biztosítsuk – a folyamatközi kommunikáció lehetőségét.
-Megoldás: egy-egy szegmensleíró táblát rendeljünk minden folyamathoz.
-Kérdés: Hogyan kommunikálnak egyes folyamatok egymással, ha ezt igénylik.
- ha két folyamat egy közös adatterületet szeretne használni, akkor erre a közös
adatterületre definiáljunk egy adatszegmenst és ennek adatait, tegyük be mindkét folyamat leírótáblájába, -> így mindkét folyamat hozzá tud férni -> más nem!
Például: X számlatuladjonos számlaegyenlege
X folyamatnak és a bank folyamatának, hozzá kell tudni férni => ez egy közösen használt szegmens felhasználásával – de csak a bank módosíthat – egyenleget X => nem Ő- csak olvashatja.
-Megoldás: a leírótáblában a szegmens adatait ki kell egészíteni egy bittel (bit csoporttal) mely meghatározza, hogyan használhatja az adott folyamat a szegmenst,- ez hozzáférési jog (access right) szabályozó bitcsoport. (védelmi bit)
X és a bank – folyamatleíró táblájában szerepel az előbbi helyen -> csak olvasható, – míg a bank esetében írható hozzáférési joggal. (bit ellenőrzése is feladat) ->, ha illetéktelen a hozzáfordulás, akkor -> hibajelzés!
Sok szolgáltatás a felhasználóknak – képernyőre írás, nyomtatás…, - ezek egy-egy szegmensben találhatók
és hogy ezeket a segédprogramokat mindenki tudja kezelni -> ezért egy globális leírótáblát (GDT Global Descriptor Table) –és minden folyamathoz rendel saját lokális leírótáblát is (Local Descriptor Table).A megszakítási rutinok számára -> külön leírótáblát (Interrupt Descriptor Table) készítenek.
3. OP rendszer védelme: prioritások – prioritási szintet kell rendelnünk minden folyamathoz, ezek speciális jogok.
Prioritási szint:
Kezdőcím |
Hossz |
Típus |
Priorítás |
Szegmensleírótábla egy sorának felépítése
4. Címszámítás gyorsítása szegmentálásnál:
Mivel a szegmensek logikailag összetartozó dolgokat tartalmazhatnak, a lokalitási elv szerint sokkal erősebbek, mint a lapok használata esetén pl.: (TLB) volt.
Ki kell alakítani: kódszegmens regisztert: a futó folyamat kódszegmensének adatait pl.: (kezdőcím, hossz, védelmi bitek vannak)
Stack szegmens regisztert és adatszegmens regisztert használnak.
5.Összetett memóriakezelés. Szegmentálást és a lapvezérlési távkezelést együtt használják.
Szegmentálás -> védekezési rendszer része elsősorban – hozzáférési jogok.
Tehát a processzor által kiadott logikai cím először – a szegmens egységbe kerül – ha engedélyezett a memóriaművelet – a szegmensfordítás kimenete lesz lapozó
egység bemenete, ez a lineáris cím. Végül a lapozó egység kimenete adja meg a keresett memória rekesz fizikai címet az operatív memóriában. (207old. rajz)Ma már a mikroprocesszorok összetett memóriakezeléssel rendelkeznek és a belső struktúra így van kialakítva – minél gyorsabb memória elérés érdekében, minél nagyobb hardvertámogatást nyújtsanak – az OP rendszernek memória kezelés támogatására.
Mai processzorokban: komplett memóriavezérlő egység --(Memory Management Unit - MMU), is található.