tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

A RAM-kezelés alapvető megközelítései. Operációs rendszerek funkciói számítógépes erőforrások kezelésére. Memóriakezelés. Minden memóriakezelési módszer két osztályba sorolható: olyan módszerek, amelyek a folyamatok közötti mozgást használják

Küldje el a jó munkát a tudásbázis egyszerű. Használja az alábbi űrlapot

Diákok, végzős hallgatók, fiatal tudósok, akik a tudásbázist tanulmányaikban és munkájukban használják, nagyon hálásak lesznek Önnek.

Közzétéve: http://www.allbest.ru/

Bevezetés

1. Memóriakezelés

1.1 Alapvető memóriakezelési feladatok

3.1 Memóriakiosztás rögzített partíciókon keresztül

3.2 Memóriakiosztás dinamikus partíciók szerint

3.3 Mozgatható részek

4.1 A virtuális memória lefoglalásának oldalas módszere

4.2 A virtuális memória kiosztásának szegmentált módja

4.3 A virtuális memória elosztásának szegmensoldalas módszere

Következtetés

Bibliográfia

Bevezetés
A memória kritikus erőforrás, amely gondos kezelést igényel az operációs rendszertől.
A korai operációs rendszerekben a memóriakezelés egyszerűen abból állt, hogy egy programot és annak adatait valamilyen külső tárolóeszközről (mágnesszalag, mágneslemez) a memóriába töltöttük. A multiprogramozás megjelenésével az operációs rendszer új feladatokkal szembesült a rendelkezésre álló memória elosztásával kapcsolatban több, egyidejűleg futó program között.
Minden memóriakezelési módszer két osztályba sorolható: olyan módszerek, amelyek a folyamatok közötti mozgást használják RAMés lemez, és olyan módszerek, amelyek ezt nem teszik meg.
1. Memóriakezelés
memóriakezelő operációs rendszer
1.1 Alapvető feladatokat menedzsment memória
A fő memória (más néven RAM) kritikus erőforrás, amelynek hatékony használata döntő hatással van a rendszer általános teljesítményére.
Az egyfeladatos operációs rendszerek esetében a memóriakezelés nem jelent komoly problémát, hiszen minden olyan memória, amelyet a rendszer nem használ fel saját igényeire, egyetlen felhasználói folyamathoz rendelhető. A memóriakezelési eljárások a következő problémákat oldják meg:

lefoglal memóriát a felhasználói folyamat számára, amikor az elindul, és felszabadítja ezt a memóriát, amikor a folyamat véget ér;

annak biztosítása, hogy az elindított program a lefoglalt memóriacímekhez legyen konfigurálva;

a lefoglalt memóriaterületek kezelése a felhasználói program kérésére (például a memória egy részének felszabadítása a gyermekfolyamat elindítása előtt).

A multitasking operációs rendszerekben teljesen más a helyzet. A rendszerben egyidejűleg futó összes program teljes memóriaigénye általában meghaladja a rendelkezésre álló fő memória mennyiségét. Ilyen körülmények között az operációs rendszernek nincs más választása, mint felváltva, hogy a folyamatokat vagy azok részeit lemezre helyezze, hogy a felszabaduló memóriát más folyamatok szükségleteire használja fel. Az ilyen kilakoltatás sikertelen végrehajtása szinte teljesen leállíthatja az operációs rendszer működését, amely ideje nagy részét a lemezről való írással és olvasással tölti.

A fő feladatok, amelyeket egy többfeladatos operációs rendszer memóriakezelési alrendszerének meg kell oldania, a következők:

olyan folyamatok biztosítása, amelyek képesek további memóriaterületek megszerzésére és felszabadítására működés közben;

a korlátozott mennyiségű főmemória hatékony felhasználása az összes futó folyamat igényeinek kielégítésére, beleértve a lemezek használatát memóriabővítésként;

folyamatmemória elkülönítése, amely megakadályozza, hogy egy folyamat véletlenül vagy szándékosan illetéktelenül hozzáférjen egy másik folyamat által elfoglalt memóriaterülethez;

Lehetővé teszi a folyamatok számára az adatcserét a megosztott memóriaterületeken keresztül.

2. A memóriafoglalási módszerek osztályozása
Rizs. 1 A memóriafoglalási módszerek osztályozása
3. Valódi memóriakezelés
3.1 terjesztés memória rögzített szakaszok
A RAM kezelésének legegyszerűbb módja a memória felosztása több fix méretű területre, amelyeket partícióknak nevezünk. Az ilyen particionálást a kezelő manuálisan is elvégezheti a rendszer indításakor vagy telepítése során. Ezt követően a partícióhatárok nem változnak.
A következő végrehajtásra érkező új folyamat vagy egy általános sorba (1.1. ábra, a) vagy egy bizonyos szakaszhoz tartozó sorba kerül (1.1. ábra, b).
Rizs. 1.1. Memóriakiosztás rögzített partíciók szerint:
közös sorral (a), külön sorokkal (b)
A memóriakezelő alrendszer ebben az esetben a következő feladatokat látja el:
§ Összehasonlítja az újonnan érkező folyamathoz szükséges memória mennyiségét a szabad partíciók méretével, és kiválasztja a megfelelő partíciót;
§ Betölti a programot az egyik szekcióba, és beállítja a címeket. A program fejlesztője már a fordítási szakaszban megadhatja, hogy melyik szakaszban legyen végrehajtva. Ez lehetővé teszi, hogy azonnal, áthelyező betöltő használata nélkül megszerezze egy adott memóriaterületre hangolt gépi kódot.

A könnyű kivitelezés nyilvánvaló előnye, ez a módszer jelentős hátránya van - merevség. Mivel minden partíción csak egy folyamat futhat, a többprogramozás szintjét előre korlátozza a partíciók száma. A program méretétől függetlenül a teljes partíciót lefoglalja. Például egy három partícióval rendelkező rendszeren nem lehet egyszerre háromnál több folyamatot futtatni, még akkor sem, ha nagyon kevés memóriát igényelnek. Másrészt a particionáló memória nem enged olyan folyamatokat futtatni, amelyek programjai nem férnek el egyik partícióban sem, de amelyekhez több partíció memóriája is elegendő lenne.

Ezt a memóriakezelési módszert a korai többprogramozású operációs rendszerekben használták. A valós idejű rendszerekben azonban még ma is alkalmazzák a fix szakaszok segítségével történő memóriafoglalás módszerét, elsősorban az alacsony megvalósítási költségek miatt. A valós idejű rendszerek számítási folyamatának meghatározottsága (az elvégzendő feladatok köre, memóriaigénye, esetenként a kezdési időpontok előre ismertek) kompenzálja e memóriakezelési módszer rugalmasságának hiányát.

3.2 terjesztés memória dinamikus szakaszok

Ebben az esetben a gép memóriája nincs előre felosztva részekre. Eleinte az alkalmazásokhoz lefoglalt összes memória szabad. A folyamatlétrehozási szakaszban minden újonnan beérkezett alkalmazáshoz le van foglalva az összes szükséges memória (ha nincs elég memória, az alkalmazást nem fogadják el végrehajtásra, és nem jön létre hozzá folyamat). A folyamat befejezése után a memória felszabadul, és egy másik folyamat betölthető erre a helyre. Így egy tetszőleges időpontban a RAM tetszőleges méretű foglalt és szabad területek (partíciók) véletlenszerű sorozata. ábrán. A 2.1. ábra a memória állapotát mutatja különböző időpontokban dinamikus allokáció használatakor. Tehát a t0 időpontban csak az operációs rendszer van a memóriában, és t1 időpontra a memória 5 folyamat között oszlik meg, és a P4 folyamat befejezésekor elhagyja a memóriát. A t3 időpontban érkezett P6 folyamat betöltődik a P4 folyamat által kiürített térbe.

Rizs. 2.1. Memóriakiosztás dinamikus partíciókkal
Az alábbiakban felsoroljuk az operációs rendszer ezen memóriakezelési módszerének megvalósítására tervezett funkcióit.
§ A szabad és foglalt területek karbantartási táblázatai, amelyek jelzik a memóriaterületek kezdőcímét és méretét.

§ Új folyamat létrehozásakor elemezze a memóriaigényeket, nézze meg a szabad területek táblázatát, és válasszon egy olyan partíciót, amely elég nagy ahhoz, hogy az új folyamat kódjait és adatait befogadja. A partíció kiválasztása különböző szabályok szerint történhet, például: „az első elérhető megfelelő méretű partíció”, „a legkisebb elegendő méretű partíció” vagy „a legnagyobb elegendő méretű partíció”.

§ A program betöltése a hozzá rendelt partícióba és a szabad és foglalt területek tábláinak beállítása. Ez a módszer azt feltételezi, hogy a programkód nem mozdul el a végrehajtás során, ami azt jelenti, hogy a címek beállítása egyszerre elvégezhető a rendszerindításkor.
§ A folyamat befejezése után a szabad és foglalt területek táblázatának beállítása.

A rögzített partíciós módszerhez képest ez a módszer sokkal nagyobb rugalmassággal rendelkezik, de van egy nagyon komoly hátránya - a memória töredezettsége. A töredezettség nagyszámú, nem összefüggő, nagyon kis méretű szabad memóriaterület (töredékek) jelenléte. Olyan kicsi, hogy az újonnan érkező programok egyike sem fér bele egyik szekcióba sem, pedig a töredékek összmérete jelentős lehet, jóval meghaladja a szükséges memóriamennyiséget.

A dinamikus partíciók általi memóriafoglalás sok többprogramos szoftver memóriakezelési alrendszerének alapja. operációs rendszer ah 60-70s, különösen egy olyan népszerű operációs rendszer, mint az OS/360.
3.3 Mozgatható szakaszok

A töredezettség elleni küzdelem egyik módja az, hogy az összes elfoglalt területet magasabb vagy alacsonyabb címek felé mozgatjuk, így az összes szabad memória egyetlen szabad területet alkot (3.1. ábra). Azokon a funkciókon kívül, amelyeket az operációs rendszer a dinamikus partíciók memóriájának lefoglalásakor hajt végre ebben az esetben rendszeres időközönként át kell másolnia a partíciók tartalmát egyik memóriahelyről a másikra, módosítva a szabad és foglalt területek tábláit. Ezt az eljárást tömörítésnek nevezik. A tömörítés végrehajtható minden alkalommal, amikor egy folyamat leáll, vagy csak akkor, ha nincs megfelelő méretű szabad partíció egy újonnan létrehozott folyamathoz. Az első esetben kevesebb számítási munka szükséges a szabad és foglalt területek tábláinak beállításakor, a második esetben pedig ritkábban hajtják végre a tömörítési eljárást.

Rizs. 3.1. Memóriakiosztás partíciók mozgatásával
Mivel a programok a RAM körül mozognak a végrehajtás során, ebben az esetben nem lehet mozgó betöltővel címeket konfigurálni. Itt a dinamikus címfordítás alkalmasabb.
Bár a tömörítési eljárás hatékonyabb memóriahasználatot eredményez, időigényes lehet, ami gyakran meghaladja ennek a módszernek az előnyeit.

A tömörítés fogalmát más memóriafoglalási módszerek alkalmazásakor is alkalmazzák, amikor egy külön folyamathoz nem egy folytonos memóriaterületet foglalnak le, hanem több tetszőleges méretű, nem összefüggő memóriaterületet (szegmenseket). Ezt a megközelítést alkalmazták korábbi verziók OS/2, amelyben a memóriát szegmensekre osztották fel, és az ebből eredő töredezettséget a szegmensek időszakos mozgatásával küszöbölték ki.

4. Virtuális memória kezelése

Multitasking módban az aktív folyamatok mellett vannak felfüggesztett folyamatok is, amelyek lemezre cserélhetők. Ebben az esetben a virtuális RAM-ot biztosítják a programoknak. A virtuális memóriát operációs rendszer modulokon és processzorhardver áramkörökön keresztül használják. Jelenleg 3 virtuális memória kiosztási séma létezik.

4.1 oldal út terjesztés virtuális memória

Ezzel a módszerrel minden programrészlet, amelyre fel van osztva, azonos, és lapoknak nevezzük. A RAM fizikai oldalakra van felosztva, a program pedig virtuális oldalakra. A program néhány virtuális oldala a RAM-ban, néhány pedig kívül, a lemezen található. Egy olyan virtuális oldal elérésekor, amely jelenleg nincs a RAM-ban, megszakítás történik, és a vezérlés átkerül a RAM-kezelőhöz. Ha nincs fizikai oldal (ingyenes), akkor a memóriakezelő kiválasztja cserére azt az oldalt, amelyre már régóta nem hivatkoztak.

Előnyök: A memória töredezettségének megszüntetése, i.e. az oldalak azonos méretűek.
Hátrányok: a program véletlenszerűen van felosztva oldalakra, a logikai kapcsolatok figyelembevétele nélkül, ez időveszteséggel jár az oldalak közötti átmeneteknél.
OS-ben Windows memória 4 GB-ig növelhető, az oldalméret pedig 4 KB-ig.
4.2 Szegmentális út terjesztés virtuális memória

Gyakorlatilag a címteret szegmensekre osztják, figyelembe véve a szemantikai jelentést. Egy külön szegmens lehet egy szubrutin vagy egy adattömb. Amikor egy folyamatot betöltenek a RAM-ba, a szegmensek csak egy része kerül elhelyezésre, és az operációs rendszer egy bizonyos méretű folyamatos szakaszt keres. Ha nincs elég hely a RAM-ban egy szegmens betöltéséhez, akkor a RAM-ból származó szegmens egy része lemezre kerül a lapozófájlba. Az operációs rendszer (különösen a memóriakezelő) kiválasztja a leghosszabb ideig nem használt szegmens eltávolítását. A RAM minden szegmenshez tárolódik információs struktúrák, amely alapján az OS kiválasztja a kirakodáshoz szükséges szegmenseket.

- a szegmens helyéről (a RAM-ban vagy a merevlemezen);
- hozzáférési jogok;
- a szegmenshez való hozzáférés jelölése (azaz a szegmenst régóta vagy nemrégiben használták).
Előnye, hogy ez volt az első oldalfájlt használó terjesztési mód, és lehetőség nyílt a szegmensekhez hozzáférési jogok beállítására is.
Hátrányok: a processzoridő elvesztése a szegmensek betöltéséhez és az információs struktúrák feldolgozásához, az információs struktúrák memóriát igényelnek, a memória töredezettségmentesítése.
4.3 Szegmentálisan - lapozva út terjesztés virtuális memória
BAN BEN ez a módszer a program logikailag teljes részekre, a szegmensek oldalakra oszlik, az oldal címe pedig a szegmensszámból áll, míg a szegmens a RAM-ba töltve teljes egészében elhelyeződik, de egy szegmens oldalai nem szomszédos oldalakat is elfoglalhatnak.
Előnyök: az oldalak betöltésének ideje csökken, de szükséges számítási erőforrások információs struktúrák tárolására - a módszert drága operációs rendszerekben használják.
5. Memóriakezelő alrendszer az MS-DOS-ban

Az MS-DOS egy olyan operációs rendszer, amely az i86 processzor valós üzemmódjában fut, ami mindössze 1 MB címteret foglal magában. Valójában az IBM számítógépeken garantáltan csak 640 KB főmemória van, míg a magasabb memóriacímeket a BIOS és a videomemória foglalja el, bár ezek között vannak elszórtan UMB-nek (felső memóriablokknak) nevezett RAM-darabok.

A valós módú címet [szegmens:eltolás] formátumban írjuk, de itt a szegmens nem egy szegmenstábla sorát címezõ szelektor, hanem egyszerûen egy memória bekezdésszáma (1 bekezdés = 16 bájt). Ezért feltételezhetjük, hogy az MS-DOS csak fizikai címeket használ.

Az MS-DOS alatt futó programok elvileg 1 MB-nál nagyobb memóriát is elérhetnek, de ehhez speciális bővített memória-illesztőprogramra van szükség.

Mivel nem kell felosztani a rendelkezésre álló memóriát több folyamat között, az elosztás egyszerű.

Rizs. 4 Az MS-DOS OS fő memóriaterületei

A memória alsó részét az operációs rendszer moduljai foglalják el: megszakításkezelők, a parancsértelmező rezidens része, eszközvezérlők. Egyes rendszerprogramok a takarékosság kedvéért a felső memóriablokkba (640 KB felett) betölthetők. Bármi, ami középen marad, megadható a felhasználói folyamatnak.

A memória további megtakarítása érdekében egyes nem rezidens DOS-modulok elfoglalhatják a felhasználói terület felső részét, de csak addig, amíg a felhasználói program felül nem írja őket, ami az összes rendelkezésre álló memóriát igényli.

Rész rendszermemóriaés a teljes felhasználói terület szomszédos blokkokra van osztva, amelyek mérete egy bekezdés többszöröse. Minden memóriablokk eleje előtt van egy memóriavezérlő blokk (MCB, Memory Control Block), amely egy bekezdést foglal el és a következő adatokat tartalmazza:

· egy jel, amely meghatározza, hogy ez az utolsó memóriablokk, vagy lesz-e mögötte több blokk (illetve a „Z” vagy „M” betű);

· a blokkot birtokló PSP program címe (a 0 szabad blokkot jelent);

· blokkméret bekezdésekben;

· a tulajdonos program neve (legfeljebb 8 karakter); ez a mező redundáns (a PSP program ismeretében megtalálhatja a fájlnevét), valószínűleg azért került hozzáadásra, hogy valahogy elfoglalja az MCB bekezdés üres bájtjait.

Amikor a rendszernek egy memóriablokkot kell lefoglalnia saját használatra vagy egy felhasználói program kérésére, a blokkok listáját az elejétől kezdve pásztázza, egyik MCB-ről a másikra lépve. Miután megtalálta a megfelelő méretű szabad blokkot, a rendszer a megfelelő tulajdonos által elfoglaltként jelöli meg. Ha nincs lefoglalva a teljes szabad blokk, akkor a lefoglalt blokk után a rendszer egy másik MCB-t ír, amely leírja a blokk szabad maradékát.

Egy blokk feloldásakor a rendszer 0-t ír az MCB tulajdonos mezőjébe. Ha a felszabadított blokk egyik vagy mindkét oldalán vannak szabad blokkok, akkor két vagy három szabad blokk egyesül.

Amikor egy program elindul, a rendszer két memóriablokkot foglal le neki: először egy kis blokkot a környezeti változóknak, majd a fennmaradó szabad blokkok közül magának a programnak a legnagyobbat (a PSP blokkot). Általában ez a blokk az összes szabad memóriát elfoglalja. Ez a megoldás elfogadható, mivel nincs más jelölt a memóriára.

Miért van a környezeti blokk lefoglalva a PSP blokk előtt?

Amikor egy program leáll, a rendszer megvizsgálja az összes memóriablokkot, és felszabadítja azokat, akiknek a tulajdonosa a leállított program. Ez alól kivétel a rezidens telepítéssel történő befejezés esete, amikor is a PSP blokk nem szabadul fel, hanem a megadott méretre csökken. A jövőben ez a blokk a rendszer újraindításáig foglalt marad.

Az MS-DOS olyan funkciókat biztosít a felhasználó számára, amelyek lehetővé teszik az alapvető műveletek végrehajtását a memóriablokkokkal.

· Válassza ki a megadott méretű blokkot. Ha nincs elegendő méretű szabad blokk, akkor a rendszer a maximálisan lefoglalható méretet adja vissza.

· Korábban lefoglalt blokk felszabadítása.

· A blokk méretének módosítása. Egy blokk kicsinyítése mindig lehetséges, csak akkor növelhető, ha a blokk után van egy megfelelő méretű szabad blokk.

Azon kevés alkalom egyike, amikor ezek a funkciók hasznosak, az egy létrehozott folyamat indításakor. A rendszernek elegendő szabad területtel kell rendelkeznie a letöltött program környezeti blokkjának és PSP blokkjának elhelyezéséhez. Azonban, mint fentebb említettük, az összes szabad memória általában az aktuális program PSP blokkjához van lefoglalva. Ezért a létrehozott folyamat futtatása előtt a programnak csökkentenie kell a saját PSP-blokkját, hagyva magának a szükséges minimumot.

Következtetés
A memóriakezelés általános elveinek elemzése után egyértelmű, hogy a legegyszerűbb rendszerekben nincs memóriacsere vagy lapozás. A memóriába betöltött program addig marad ott, amíg be nem fejeződik. Egyes operációs rendszerek nem engedik meg, hogy egynél több folyamat maradjon a memóriában, míg mások támogatják a multitaskingot.
Bibliográfia
1. Olifer V.G. Hálózati operációs rendszerek: tankönyv egyetemeknek / V.G. Olifer, N.A. Olifer. - Szentpétervár: Péter, 2009. - 539 p.: ill.
2. Popov I.I. Operációs rendszerek, környezetek és héjak / I.I. Popov. - M.: "FÓRUM: INFA-M" kiadó, 2010. - 400 p. - ("Szakképzés" sorozat)
Közzétéve az Allbest.ru oldalon

Hasonló dokumentumok

    Memóriafoglalási séma, amely megfelel a memóriafoglalás felhasználó általi értelmezésének. Mozgatás szegmenstáblázat segítségével. Hardveres támogatás a szegmentált memóriakiosztáshoz. Szegmens-oldal memóriaszervezés kétszintű sémával.

    előadás, hozzáadva 2014.01.24

    Számítógép-architektúra és operációs rendszer memóriakezelési képességei. A virtuális memória fogalmának lényege. Hardverfüggetlen és hardverfüggő virtuális memória kezelési eszközök. A virtuális memória szegmens-oldal szervezése.

    bemutató, hozzáadva 2010.12.27

    A RAM elosztása rögzített, dinamikus és áthelyezhető partíciókkal. Elosztás külső memória használatával. Működési elvek mátrix nyomtató. Szimbólumok tervezése és nyomtatásukat megvalósító program fejlesztése.

    tanfolyami munka, hozzáadva 2011.07.01

    A memóriamodul paramétereinek javítása. Az operációs rendszer működése és interakciója a RAM-mal. A RAM főbb típusainak és paramétereinek elemzése. Szoftver rész parancsvégrehajtás feldolgozásával és RAM-ban való elhelyezésével.

    tanfolyami munka, hozzáadva 2009.12.02

    a fő feladat számítógépes rendszer. Több program virtuális címterei. A memóriafoglalási módszerek osztályozása. A processzor terhelésének függése a feladatok számától és az I/O intenzitástól. Cache memória működési diagramja.

    bemutató, hozzáadva: 2012.11.14

    Hogyan fordítják le a címeket az oldalszervezés használatával. Mi a tömörítés és hogyan kell használni a külső töredezettség megszüntetésére. Mi az oldaltábla-regiszter, szegmentálás. A memória külön szegmensek formájában történő lefoglalásának módszerei.

    teszt, hozzáadva 2016.12.23

    Memóriakiosztás rögzített és dinamikus, valamint mozgatható partíciókkal, ennek a folyamatnak a szolgáltatásai a Windows rendszerben. VirtualAlloc funkció: átvitt és lefoglalt memória. Memóriakiosztás a malloc függvény segítségével, módszertana és az eredmények elemzése.

    teszt, hozzáadva: 2013.12.01

    Összehasonlító elemzés statikus és dinamikus memória. A statikus memória teljesítménye és energiafogyasztása. Chip memória kapacitása. Időzítési diagramok az olvasási és írási memória számára. Szinkron és aszinkron memória chipek. Memóriamodul módok.

    bemutató, hozzáadva 2013.08.27

    Az információk memóriában való tárolásának stratégiái. Algoritmusok a RAM címterének elosztására. A modell jellemzőinek leírása és viselkedése, osztályai és elemei. Blokkok feltöltése és betöltése a másodlagos memóriából. A memória oldalszervezése.

    tanfolyami munka, hozzáadva 2013.05.31

    Számítógépes memória szervezése és egyszerű áramkörök annak kezelése. A címlinkelés elvei. Dinamikus kiosztás és csere. Szegmentális és szegmensoldalas memóriaszervezés. Ritkán használt oldal kiadása. A programmal való munka leírása.

Operációs rendszerek funkciói számítógépes erőforrások kezelésére.

A számítógépes rendszer erőforrásainak kezelése a leghatékonyabb felhasználásuk érdekében minden operációs rendszer fő célja.

A modern számítástechnikai rendszerek fő erőforrásai: processzorok és fő memória. Az erőforrások megoszlanak a folyamatok között. Folyamat (feladat) – végrehajtási szakaszban lévő program. A program egy statikus objektum, amely kódokat és adatokat tartalmazó fájl. A folyamat egy dinamikus objektum, amely az operációs rendszerben azután jön létre, hogy a felhasználó vagy maga az operációs rendszer úgy dönt, hogy „lefuttat egy programot végrehajtásra”, azaz létrehoz egy új számítási munkaegységet.

A fő hatékonysági kritériumok, amelyek szerint az operációs rendszer megszervezi a számítógépes erőforrások kezelését: áteresztőképesség számítási rendszer és reakcióidő.

Az erőforrás-kezelés a következő általános feladatok megoldását foglalja magában, amelyek nem függenek az erőforrás típusától:

1 - erőforrás tervezés – vagyis annak meghatározása, hogy melyik folyamatot, mikor és milyen mennyiségben (ha az erőforrás részenként allokálható) kell kiosztani ezt az erőforrást;

2 - forrásigények kielégítése;

3 - az erőforrás-felhasználás állapotának nyomon követése és elszámolása - azaz operatív információk karbantartása arról, hogy az erőforrás foglalt-e vagy szabad-e, és az erőforrás mekkora hányada került már kiosztásra;

4 - konfliktusok megoldása a folyamatok között.

A legtöbb erőforrás-kezelési funkciót az operációs rendszer automatikusan végrehajtja, és az alkalmazásprogramozó számára nem érhető el.

Memóriakezelés.

Az operációs rendszer memóriakezelési funkciói közé tartozik a felügyelet ingyenes és használt memória; memória hozzárendelése a folyamatokhoz és a memória felszabadítása, amikor a folyamatok leállnak; memóriavédelem; folyamatok áthelyezése a RAM-ból a lemezre, ha a fő memória mérete nem elegendő az összes folyamat befogadásához, és visszahelyezése a RAM-ba, ha hely szabadul fel benne, valamint programcímek beállítása a fizikai memória egy meghatározott területén.

A memóriakezelés magában foglalja a rendelkezésre álló fizikai memória elosztását a rendszerben jelenleg létező összes folyamat között, a folyamatkódok és adatok betöltését a lefoglalt memóriaterületekre, a folyamatkódok címérzékeny részeinek beállítását a lefoglalt terület fizikai címeire, valamint a memóriaterületek védelmét.

minden folyamat.

A modern operációs rendszerek egyik legnépszerűbb memóriakezelési módszere a virtuális memória-mechanizmus alkalmazása, amelyben a program által használt összes adatot lemezen tárolják, és szükség esetén részekre (szegmensekre vagy oldalakra) képezik le a fizikai memóriába. . Ez lehetővé teszi a programozó számára, hogy úgy írjon programot, mintha nagy, homogén RAM állna a rendelkezésére, amely gyakran jelentősen meghaladja a rendelkezésre álló fizikai memória mennyiségét. Amikor kódot és adatokat mozgat a RAM és a lemez között, a virtuális memória alrendszer lefordítja a program fordítása és összekapcsolása eredményeként kapott virtuális címeket a RAM cellák fizikai címeivé. Nagyon fontos, hogy a kódok és adatok RAM és lemezek közötti mozgatására, valamint a címfordításra vonatkozó összes műveletet az operációs rendszer a programozó számára átláthatóan hajtsa végre.

A memóriavédelem az a szelektív képesség, amely megakadályozza, hogy egy folyamatban lévő feladatot egy másik feladathoz rendelt memóriába írjanak vagy olvassanak ki. Az operációs rendszerben megvalósított memóriavédelmi intézkedéseknek meg kell akadályozniuk, hogy illetéktelen folyamatok idegen memóriaterületekhez jussanak.

Ma a programok mérete gyorsabban nő, mint a memória számítógépes memória kezelése nagyon fontos kérdés. Ennek az az oka, hogy a számítógép memóriája hierarchikus felépítésű: kicsi, nagyon gyors, illékony, illékony RAM (RAM) és nem felejtő hely a (merevlemezen). A számítógépmemória kezelése ezen összetevők használatának koordinálásán (OS) áll. Az operációs rendszernek az a része, amely a számítógép memóriájának kezeléséért felelős, vagyis annak ellenőrzéséért, hogy éppen melyik része van használatban, memóriát foglal le a folyamatokhoz, és azok befejeződésekor erőforrásokat szabadít fel, valamint kezeli a RAM és a lemez közötti adatcserét. nak, nek hívják memóriakezelő.

A számítógépes memóriakezelő rendszereknek két osztálya van. Az elsők, ha nincs elegendő RAM az összes program egyidejű tárolására, végrehajtásuk során a számítógép RAM-ja és a lemeze között mozognak, teljesen felcserélve a folyamatokat (csere) vagy oldalanként (lapozás). A rendszerek második osztálya a számítógép memóriakezelését a RAM méretének növelésére csökkenti. Például a rendszerek nagy követelményeket támasztanak a méretével szemben.

A lemezre lapozás nélküli, egyfeladatos rendszer számítógépes memóriakezelése abból adódik, hogy egyszerre csak egy (folyamat) fut, és a memória meg van osztva a programok és az operációs rendszer között. Vagyis a parancs vételekor az operációs rendszer betöltődik új program a memóriába, átírva az előzőre.

A multitasking elérésének legegyszerűbb módja a memória felosztása n,esetleg egyenlőtlen szakaszok. Amikor egy job belép a memóriába, a beviteli sorba kerül a legkisebb partícióra, amely elég nagy ahhoz, hogy befogadja a jobot, és a partíción lévő fel nem használt terület elvész. Ugyanakkor egy nagy szakasznál szinte nincs sorban állás, és sok feladat sorakozik a kis szakaszokhoz. Ezért a számítógépes memóriakezelés a második módszerben abból áll, hogy az összes partícióhoz egyetlen közös sort szervez. Egy partíció felszabadítása után betölthető egy olyan feladat, amely közelebb van a sor fejéhez, és alkalmas az adott partícióban való végrehajtásra. Minden alkalommal, amikor egy partíciót felszabadítanak, a sor megkeresi az adott partíció legnagyobb feladatát, és ez lesz kiválasztva feldolgozásra. Ez azonban eltávolítja a kis feladatokat a feldolgozásból. Ezért egy olyan feladatot, amely jogosult feldolgozásra, legfeljebb átugorható k egyszer. Ha egy feladatot kihagyunk, egyet hozzáadunk a számlálóhoz. Ha a számláló értéke egyenlő lesz k, a feladat már nem hagyható figyelmen kívül.

Néha nincs elég RAM az összes aktív folyamat befogadásához, és a felesleges folyamatokat lemezen kell tárolni, és át kell vinni a memóriába feldolgozás céljából. A számítógépes memória kezelése ebben az esetben részben a rendelkezésre álló mennyiségtől függ hardver. A legegyszerűbb stratégia, az ún csere(csere) abból áll, hogy minden folyamat teljesen átkerül a memóriába, fut egy ideig, majd teljesen visszatér a lemezre. Ezután ismét visszatérhet a memóriába, más elhelyezéssel. Ezért a címeit vagy szoftverben újra kell konfigurálni a rendszerindításkor, vagy hardveren a program végrehajtása során.

Számítógépes memóriakezelés, ún virtuális memória, lehetővé teszi a programok futtatását akkor is, ha csak részben vannak a RAM-ban. Ebben az esetben a program és az adatok együttes mérete meghaladhatja a számítógépen rendelkezésre álló fizikai memória mennyiségét. Az operációs rendszer a program jelenleg használt részeit a RAM-ban tárolja, a többit a lemezen. Ebben az esetben a program lemezen található és memória által használt részei szükség szerint cserélhetők.

OS funkciók memóriakezeléshez többprogramos rendszerben a következők:

· követés szabad és használt memória,

· kiosztás memória a folyamatokhoz és a memória felszabadítása folyamatok leállása esetén,

· kiszorítása folyamatok kódjai és adatai a RAM-ból a lemezre (teljes vagy részleges), ha a fő memória mérete nem elegendő az összes folyamat befogadására, és visszaküldése a RAM-ba, ha hely szabadul fel benne,

· címek beállítása programokat a fizikai memória egy meghatározott területére.

Azon túl, hogy az operációs rendszernek kezdetben le kell foglalnia a memóriát a folyamatokhoz, amikor azok létrejönnek, a dinamikus memóriafoglalással is foglalkoznia kell, pl. teljesíti a további memória iránti kérelmeket futás közben. Ha egy alkalmazásnak már nincs szüksége további memóriára, visszaküldheti azt a rendszernek. Véletlen hosszúságú memória lefoglalása in véletlenszerű pillanatok az osztott memóriatárból származó idő, amelyhez vezet töredezettségés ennek eredményeként annak eredménytelen felhasználására. Ezért töredezettségmentesítés a memória is az operációs rendszer függvénye.

Amíg az operációs rendszer fut, gyakran új szolgáltatásinformációs struktúrákat kell létrehoznia, például folyamat- és szálleírókat, különféle erőforrás-allokációs táblákat, a folyamatok által adatcserére használt puffereket, objektumok szinkronizálását stb. Ezen rendszerobjektumok mindegyike memóriát igényel. Egyes operációs rendszerekben egy bizonyos fix mennyiségű memória előre (telepítés közben) le van foglalva a rendszer igényeihez. Más operációs rendszerek rugalmasabb megközelítést alkalmaznak, amelyben a memória dinamikusan allokálódik rendszercélokra. Ebben az esetben a különböző operációs rendszer alrendszerek saját táblákat, objektumokat, struktúrákat stb. fordulnak memóriakezelő alrendszer kérésekkel.

Memóriavédelem Az operációs rendszer másik fontos feladata, hogy megakadályozza, hogy egy futó folyamat adatokat írjon vagy olvasson egy másik folyamat számára lefoglalt memóriaterületről. Ezt az operációs rendszer funkciót általában az operációs rendszer szoftvermoduljai valósítják meg szorosan együttműködve a hardverrel.

A címek típusai

A változók és parancsok azonosítására szimbolikus neveket (címkéket), virtuális címeket és fizikai címeket használnak (2.7. ábra).

· Szimbolikus nevek amelyet a felhasználó rendel hozzá, amikor egy programot algoritmikus nyelven vagy assembly nyelven ír.

· Virtuális címek fordítót fejleszt, amely lefordítja a programot gépi nyelvre. Mivel az adás közben be általános eset Nem tudni, hogy a program hova kerül a RAM-ba, ekkor a fordító virtuális (feltételes) címeket rendel a változókhoz, parancsokhoz, általában feltételezve, hogy a program a nulla címtől kezdve kerül elhelyezésre.

· Fizikai címek megfelel azoknak a RAM-celláknak, ahol a változók és parancsok ténylegesen találhatók vagy fognak elhelyezkedni. A virtuális címekről a fizikai címekre kétféleképpen lehet áttérni.

Egy folyamat virtuális címeinek halmazát ún virtuális címtér. Minden folyamatnak megvan a saját virtuális címtere, de a lehetséges virtuális tércímek tartománya minden folyamatnál azonos. Mindazonáltal minden folyamatnak megvan a saját virtuális címtere – a fordító a változókhoz és a kódokhoz külön-külön rendel virtuális címeket minden programhoz. A változók és a különböző folyamatok parancsai virtuális címeinek egybeesése nem vezet konfliktushoz, mivel abban az esetben, ha ezek a változók egyidejűleg jelen vannak az operációs rendszerben, az operációs rendszer különböző fizikai címekre képezi le őket.

Maximális méret A virtuális címteret az adott számítógép-architektúrában rejlő címbit-kapacitás korlátozza, és általában nem esik egybe a számítógépben rendelkezésre álló fizikai memória mennyiségével.

Különböző operációs rendszerekben használják különböző utak a virtuális címtér (VAS) strukturálása. Egyes operációs rendszerekben a folyamat VAP-ja, például a fizikai memória, folyamatosként jelenik meg lineáris virtuális címek sorozatai. Ebben az esetben a virtuális cím egyetlen szám, amely a VAP kezdetéhez viszonyított eltolást jelenti. Ezt a címtípust lineáris virtuális címnek nevezzük.

Más operációs rendszerekben a VAP szegmensekre (szekciókra, területekre stb.) van felosztva. Ebben az esetben a lineáris címen kívül egy virtuális cím is használható, ami az Pár számok (n, m), ahol n definiálja a szakaszt, m pedig a szakaszon belüli eltolás.

Több is van összetett módokon a VAP strukturálása, amikor egy virtuális címet három vagy akár több szám alkot.

Az operációs rendszer feladata, hogy az összes egyidejűleg futó folyamat egyes VAP-jait a közös fizikai memóriába leképezzük. Ebben az esetben az operációs rendszer vagy az összes VAP-ot, vagy annak csak egy részét jeleníti meg. A virtuális címek fizikai címekké alakításának eljárásának a lehető legátláthatóbbnak kell lennie a felhasználó és a programozó számára.

Két alapvetően eltérő megközelítés létezik a virtuális címek fizikai címekké alakítására.

Rizs. 2.7. A címek típusai

BAN BEN első eset a virtuális címek fizikaira cserélését egy speciális rendszerprogram- mozgás rakodó. A mozgó betöltő a kezdeti adatok alapján a fizikai memória kezdőcíméről, amelybe a programot be kívánja tölteni, és a fordító által a program címfüggő állandóiról adott információi alapján betölti a programot, kombinálva. a virtuális címek fizikaira cserélésével.

Második út abban rejlik, hogy a program virtuális címekben változatlan formában kerül a memóriába, miközben az operációs rendszer a programkód tényleges helyének eltolását rögzíti a virtuális címtérhez képest. A program végrehajtása során minden alkalommal, amikor a RAM-hoz hozzáférünk, a virtuális cím fizikai címre alakul.. A második módszer rugalmasabb, lehetővé teszi a program mozgatását a végrehajtás során, míg a mozgó betöltő szilárdan hozzáköti a programot az eredetileg hozzárendelt memóriaterülethez. A mozgó rendszerbetöltő használata azonban csökkenti a többletköltséget, mivel minden virtuális cím csak egyszer kerül lefordításra rendszerindításkor, a második esetben pedig minden alkalommal, amikor egy adott címhez hozzáférünk.

Egyes esetekben (általában speciális rendszerek), ha előre pontosan tudjuk, hogy a RAM melyik területén fog végrehajtani a program, a fordító azonnal végrehajtható kódot állít elő fizikai címeken.

2. Memóriakiosztási módszerek lemezterület használata nélkül




Rizs. 2.8. A memóriafoglalási módszerek osztályozása

Minden memóriakezelési módszer két osztályba sorolható: a RAM és a lemez közötti folyamatok mozgását használó módszerekre, illetve olyan módszerekre, amelyek nem (2.8. ábra). Kezdjük az utolsóval, többet egyszerű osztály mód.

2.1. Memóriakiosztás rögzített partíciókon keresztül

A legtöbb egyszerű módon A RAM-kezelés célja több, rögzített méretű részre osztani. Ezt a kezelő manuálisan megteheti a rendszer indításakor vagy generálása során. A következő végrehajtásra kapott feladat vagy egy általános sorba kerül (2.9a ábra), vagy egy bizonyos szakaszhoz tartozó sorba (2.9b ábra).

A memóriakezelő alrendszer ebben az esetben a következőket hajtja végre: feladatokat:

· a végrehajtásra kapott program és a szabad partíciók méretének összehasonlításával kiválasztja a megfelelő partíciót,



betölti a programot és beállítja a címeket.

Rizs. 2.9. Memóriakiosztás rögzített partíciók szerint:
a - általános sorral; b - külön sorokkal

Nyilvánvaló esetben előny- egyszerű végrehajtás - ez a módszer jelentős hiba- merevség. Mivel minden szekcióban csak egy program hajtható végre, a többprogramozás szintjét a szekciók száma előre korlátozza, függetlenül a programok méretétől. Még ha a program kicsi is, a teljes partíciót elfoglalja, ami nem hatékony memóriahasználatot eredményez. Másrészt, ha a gép RAM-kapacitása lehetővé teszi is egy bizonyos program végrehajtását, a memória particionálása ezt nem teszi lehetővé.

2.2. Memória lefoglalása változó partíciók szerint

Ebben az esetben a gép memóriája nincs előre felosztva részekre. Eleinte minden memória szabad. Minden újonnan érkező feladathoz hozzá van rendelve a szükséges memória. Ha nincs elég memória, a feladatot nem fogadják el végrehajtásra, és a sorban marad. Ha egy feladat befejeződött, a memória felszabadul, és egy másik feladat betölthető arra a helyre. Így egy tetszőleges időpontban a RAM tetszőleges méretű foglalt és szabad területek (partíciók) véletlenszerű sorozata.

A 2.10. ábra a memória állapotát mutatja különböző időpontokban dinamikus allokáció használatakor. Tehát t 0 pillanatban csak az operációs rendszer van a memóriában, és t 1 pillanatra a memória 5 feladat között van felosztva, és a P4 feladat befejezésekor elhagyja a memóriát. A P4 feladat után felszabaduló helyet a t 3 időpontban érkezett P6 feladat tölti ki.

Operációs rendszer feladatai ennek a memóriakezelési módszernek a megvalósítása során a következők:

· szabad és foglalt területek tábláinak karbantartása, amelyek jelzik a memóriaterületek kezdőcímét és méretét,

· ha új feladat érkezik - elemezze a kérést, tekintse meg a szabad területek táblázatát és válasszon ki egy partíciót, amelynek mérete elegendő a bejövő feladat befogadásához,

· a feladat elvégzése után a szabad és a foglalt területek táblázatának frissítése.

A kód nem mozdul el a végrehajtás során, vagyis egyszeri címmódosításokat lehet végrehajtani egy mozgó betöltő segítségével. végrehajtható különböző szabályok szerint, például „az első megfelelő méretű partíció”, „a legkisebb elegendő méretű partíció”, vagy „a legnagyobb elegendő méretű partíció”. Mindezeknek a szabályoknak megvannak a maga előnyei és hátrányai.



Szakasz kiválasztása egy újonnan kapott feladathoz végrehajtható különböző szabályok szerint, például „az első megfelelő méretű partíció”, „a legkisebb elegendő méretű partíció”, vagy „a legnagyobb elegendő méretű partíció”. Mindezeknek a szabályoknak megvannak a maga előnyei és hátrányai.

Rizs. 2.10. Memóriakiosztás dinamikus partíciókkal

A memóriafoglalás fix partíciós módszeréhez képest ez a módszer sokkal rugalmasabb, de eleve nagyon komoly. hiba - memória töredezettsége. Töredezettség- ez a nagyon kis méretű szabad memória (töredékek) nagyszámú, nem összefüggő területe. Olyan kicsi, hogy az újonnan érkező programok egyike sem fér bele egyik szekcióba sem, pedig a töredékek összmérete jelentős lehet, jóval meghaladja a szükséges memóriamennyiséget.

2.3. Mozgatható részek



A töredezettség leküzdésének egyik módja az, hogy az összes elfoglalt területet magasabb vagy alacsonyabb címek felé mozgatjuk, így az összes szabad memória egyetlen szabad területet képez (2.11. ábra). Azokon a funkciókon túl, amelyeket az operációs rendszer a memória változó partíciókra történő lefoglalásakor hajt végre, ebben az esetben a partíciók tartalmát is időről időre át kell másolnia egyik memóriahelyről a másikra, módosítva a szabad és foglalt területek tábláit. Ezt az eljárást "tömörítésnek" nevezik.

Rizs. 2.11. Memóriakiosztás partíciók mozgatásával

A tömörítés minden alkalommal végrehajtható, amikor egy feladat befejeződik, vagy csak akkor, ha nincs megfelelő méretű szabad partíció egy újonnan érkező feladathoz. Az első esetben kevesebb számítási munkára van szükség a táblázatok beállításakor, a másodikban pedig ritkábban hajtják végre a tömörítési eljárást. Mivel a programok végrehajtásuk közben mozognak a RAM-ban, a címek virtuálisról fizikai formára történő átalakítását dinamikus módon kell végrehajtani.

Bár a tömörítési eljárás hatékonyabb memóriahasználatot eredményez, időigényes lehet, ami gyakran meghaladja ennek a módszernek az előnyeit.

8. előadás Memóriakezelés az operációs rendszerben

4.4.3. Elhelyezési stratégiák

4.1. A fizikai memória szervezésének és kezelésének fogalma operációs rendszerekben

A számítógép fő (elsődleges, fizikai, valós) memóriájának megszervezése és kezelése az operációs rendszerek felépítését meghatározó egyik legfontosabb tényező. Az angol nyelvű szakirodalomban a memóriát szinonimák jelölik memóriaÉs tárolás.

Az operációs rendszerekben kétféle memória létezik: fő (elsődleges) és külső (másodlagos).

Fő memória(fő tároló) - RAM központi processzor vagy annak egy része, amely egyetlen memóriateret képvisel.

Külső memória(külső tároló) - memória, amelyben az adatok I/O műveleteken keresztül elérhetőek a központi processzor számára.

A programok közvetlen végrehajtásához vagy az adatok eléréséhez a fő memóriában kell lennie. A külső memória általában sokkal nagyobb kapacitással rendelkezik, mint a fő, kevesebbe kerül, és lehetővé teszi a feldolgozásra kész adatok és programok tárolását.

A fő és külső memória mellett a modern számítógépek további nagy sebességű memóriával rendelkeznek, az úgynevezett cache memória.

Mindhárom ilyen típusú memória kialakul memória hierarchia számítógép (lásd 4.1. ábra).

A több szintű memóriahierarchiával rendelkező operációs rendszereket a különböző szintű fizikai memóriaeszközök közötti program- és adatcsere nagy intenzitása jellemzi. Ezek a cserék rendszererőforrásokat (például CPU-időt) foglalnak el, amelyeket hatékonyabban lehetne felhasználni.

A fő memória az egyik legdrágább erőforrás. Az operációs rendszer fejlesztésének fő feladata a főmemória racionális szervezése és kezelése alapján történő optimális használata.

Alatt memóriaszervezés a fő memória ábrázolásának és használatának módjára utal.

Az operációs rendszerek a következő típusú főmemóriát használják:

  • azonos méretű rögzített blokkok;
  • egyenlőtlen méretű rögzített válaszfalak;
  • dinamikus partíciók, amelyek mérete a számítógépes rendszer működése során változik.

A főmemória a következő módokon használható:

  • egyszerre csak egy felhasználói program elhelyezése a memóriában;
  • több felhasználói program egyidejű elhelyezése a memóriában;
  • felhasználói programok elhelyezése a fő memória egy meghatározott előre meghatározott részében;
  • minden felhasználói program elhelyezése egy összefüggő (egyszerűen csatlakoztatott) fő memóriatérben;
  • a felhasználói program elhelyezése a RAM nem szomszédos területein (ebben az esetben az OS külön blokkokra bontja az ott elhelyezett programokat, és biztosítja ezeknek a blokkoknak a kapcsolatát).

Az operációs rendszerek a felsorolt ​​ábrázolási módok és a számítógép főmemória használatának módszerei bármilyen kombinációját használhatják.

Függetlenül attól, hogy egy adott operációs rendszerhez melyik memória kialakítást alkalmazzák, el kell dönteni, hogy milyen stratégiákat kell alkalmazni az optimális teljesítmény elérése érdekében.

Memóriakezelési stratégiák határozza meg, hogyan fog működni a memória egy adott szervezeti sémával a következő problémák megoldásának különböző megközelítései között:

· mikor kell egy új programot a memóriába helyezni;

· hova kerül a fő memóriában a következő program;

· hogyan helyezzük el a következő programot a memóriában (a memóriavesztés minimalizálásával vagy az elhelyezési sebesség maximalizálásával);

· a memóriában lévő programok közül melyiket kell eltávolítani a memóriából, ha új programot kell elhelyezni, és a memória már megtelt.

A meglévő operációs rendszerek olyan vezérlési stratégiákat valósítanak meg, amelyek különböző módon válaszolnak a fent felsorolt ​​kérdésekre, ami nagyrészt a fejlesztők rendelkezésére álló hardvernek és szoftvernek köszönhető.

A memóriakezelési stratégiák a következő kategóriákba sorolhatók:

· mintavételi stratégiák;

· elhelyezési stratégiák;

· helyettesítési stratégiák.

A mintavételi stratégiákat viszont két alkategóriára osztják:

· on-demand (on-demand) mintavételi stratégiák;

· előlehívási stratégiák.

Mintavételi stratégiák céljuk annak meghatározása, hogy a következő programot (vagy programblokkot) vagy adatot mikor kell „tolni” a fő memóriába.

Elhelyezési stratégiák Céljuk annak meghatározása, hogy a fő memóriában hova kell elhelyezni a bejövő programot. A legelterjedtebbek azok az elhelyezési stratégiák, amelyek a szabad memóriaterület „első alkalmas”, „legmegfelelőbb” és „legkevésbé megfelelő” méretének elfoglalásának elvét valósítják meg.

Helyettesítési stratégiák céljuk annak meghatározása, hogy melyik programblokkot vagy adatblokkot kell eltávolítani („tolni”) a fő memóriából, hogy helyet adjunk az újonnan érkező programoknak vagy adatoknak.

Az elhelyezési stratégiák megvalósítása során az operációs rendszerek gyakran figyelembe veszik a programok és adatok kohéziós memóriakiosztásának követelményeit.

Összefüggő memóriafoglalás - a számítógép fő memóriájának olyan elosztása, amelyben minden program egy folyamatos (összekapcsolt) memóriacella-blokkot foglal el.

Megszakadt memóriafoglalás - a számítógép főmemóriájának olyan elosztása, amelyben a felhasználói program több blokkra (szegmensekre, oldalakra) van osztva, amelyek a fő memóriában olyan területeken is elhelyezhetők, amelyek nem feltétlenül szomszédosak egymással (nem szomszédos területek). Ez biztosítja a fő memóriaterület hatékonyabb kihasználását.

Egy adott elhelyezési stratégia hatékonysága a h memóriahasználati tényező segítségével értékelhető

(4.1)

ahol V p a felhasználói programok által elfoglalt memória mennyisége; V op - a fő memória teljes térfogata; V os - az operációs rendszer által elfoglalt memória mennyisége; V o - az elosztáshoz rendelkezésre álló memória mennyisége.

4.2. A fő memória kohéziós allokációjának módszerei

4.2.1. Összefüggő memóriakiosztás egy felhasználó számára

Az egy felhasználó számára koherens memóriafoglalást, más néven egyszeri folyamatos kiosztást, az egyszerű operációs rendszert futtató, kötegelt egyprogramos módban működő számítógépeken alkalmazzák.

A számítógép teljes fő része, amelyet nem foglalnak el az operációs rendszer programjai, egy adott időtartamon belül az egyetlen felhasználó programjához van hozzárendelve. A program méretét ebben az esetben korlátozza a rendelkezésre álló főmemória mérete, de az overlay mechanizmus segítségével olyan programok is végrehajthatók, amelyek mérete meghaladja a fő memória méretét.

Az egy felhasználó számára koherens eloszlású memória szerveződését az ábra mutatja. 4.2.

A vizsgált eset memóriahasználati tényezőjét a képlet segítségével számítjuk ki

h с1 =V p /V o , (4.2)

ahol V p a felhasználói program mérete; V o - az elosztásra rendelkezésre álló számítógép főmemóriájának mennyisége.

Az operációs rendszer funkciói ebben az esetben a következők:

· a szükséges memóriaterület lefoglalása a program számára;

· memóriavédelem;

· memória felszabadítása.

A memóriafoglalás funkció lényege, hogy a programot mindennel ellátja elérhető memória SZÁMÍTÓGÉP.

Az egyprogramos rendszerek memóriavédelme magában foglalja az operációs rendszer által elfoglalt memóriaterületek védelmét a felhasználói programok befolyásától. Ez a funkció egy segítségével valósul meg regisztrálni határ, a központi processzorba épített. A határregiszter vagy az utasítás magas operációs rendszer címét vagy a program által elérhető fő memória alacsony címét (program kezdőcímét) tartalmazza. Ha egy felhasználói program megpróbál belépni az operációs rendszer területére, memóriavédelmi megszakítás jön létre, és a program összeomlik.

4.2.2. Összefüggő memóriafoglalás többprogramos feldolgozáshoz

Többprogramos feldolgozás esetén egyszerre több feladat kerül a számítógép memóriájába. A memóriafelosztás a feladatok között ebben az esetben a következő módokon történhet:

· elosztás rögzített szakaszokon;

· változó partíciók szerinti elosztás;

· elosztás cserével.

Elosztás rögzített partíciókkal két módosítása van:

a) a programok abszolút címeken történő betöltésével;

b) áthelyezhető modulok betöltésével.

Az áthelyezhető modulok betöltésekor a gép teljes RAM-ja fel van osztva egy bizonyos mennyiségre szakaszok fix méretű. Előfordulhat, hogy a partíciók mérete nem azonos. Minden szakaszban csak egy feladat adható meg.

Abszolút címen történő programok betöltése esetén az előkészítés során a programok betöltésének kezdőcíme kerül feltüntetésre, amely egybeesik annak a szakasznak a kezdőcímével, amelyben ez a program lefut.

Az áthelyezhető modulok betöltésekor a partíciót, amelybe a feladat kerül, vagy automatikusan meghatározza az operációs rendszer a benne megvalósított partíciókiválasztási stratégiának megfelelően („első alkalmas”, „legmegfelelőbb”, „legmegfelelőbb”), vagy speciális parancsok feladatkezelő nyelv használatával jelzi az operációs rendszernek.

Mindkét esetben a feladat kizárólagos tulajdonosa a teljes RAM mennyisége azon a partíción, amelybe az operációs rendszer helyezte.

A rögzített partíciókkal történő kiosztás memóriahasználati együtthatóit a következő képletekkel számítjuk ki:

(4.3)

(4.4)

ahol h СMi az i-edik szakasz memóriahasználati tényezője; V Оi - az i-edik szakasz mérete; V Pi - az i-edik szakaszban elhelyezett program hossza; N Ф - szakaszok száma; V O - a terjesztésre rendelkezésre álló RAM teljes mennyisége.

A memória rögzített partíciók általi lefoglalásának fő hátránya a számítógépes rendszer erőforrásainak nem hatékony felhasználása lehetséges megjelenés jobok hosszú sorai arra várnak, hogy egy adott partíció felszabaduljon, míg a többi partíció üres. ábrán egy hasonló helyzet látható. 4.3. A C partíció felszabadítására váró jobok elhelyezhetők az A vagy B partícióban, de az operációs rendszer ezt nem teszi lehetővé, mert az ellenőrzési információk jelzik azt a konkrét szakaszt, amelyben ezeket a feladatokat el kell végezni - C szakasz.

A rögzített szakaszok szerinti memóriafoglalás módszerét az EC OS és az IBM/360 operációs rendszerek MFT módban használják, ahol a programokat áthelyezhető modulok töltik be.

A rögzített partíciók által lefoglalt memóriavédelem hasonló az egyetlen felhasználó memóriavédelméhez, csak most többre van szükség határ regiszterek - két regiszter minden szakaszhoz. Az egyik határregiszter a szakasz alsó határát, a második pedig a felső határát jelzi. Ha egy felhasználói program megpróbál hozzáférni a szakasz címterületén kívül található adatokhoz, memóriavédelmi megszakítás jön létre.

Fix partíciókkal rendelkező többprogramos rendszerekben figyelhető meg a jelenség memória töredezettsége.

Az emlékezet töredezettsége - a RAM foglalt és nem foglalt (szabad) szakaszainak váltakozásának megjelenése a számítógép memóriájában.

Rögzített partíciókon keresztül történő elosztáskor a töredezettség annak a ténynek köszönhető, hogy vagy a felhasználói feladatok nem foglalják el teljesen a hozzájuk rendelt partíciókat, vagy egyes partíciók üresek maradnak.

A 4.4. a RAM töredezettségének megnyilvánulása látható.

A széttagoltság mértéke felmérhető töredezettségi együttható K f képlettel számolva

(4.5)

Ahol V di az i-edik „lyuk” mérete, azaz. a szabad memória i-edik része, amelyet felhasználói programok korlátoznak; N D - a „lyukak” száma, azaz a felhasználói programok között elhelyezkedő szabad memóriaterületek; V o - a terjesztéshez rendelkezésre álló RAM mennyisége.

A memória töredezettsége a számítógép szabad memóriájának egyszerűen csatlakoztatott területének megsértése, ami a memória, mint a számítógép egyik fő erőforrásaként való felhasználásának hatékonyságának csökkenéséhez vezet.

Memória lefoglalása változó szakaszok szerint célja a számítógép RAM használatának hatékonyságának növelése. A változó partíciók memóriakiosztásának a lényege, hogy a jobok megérkezésükkor annyi memóriát foglalnak le, amennyire szükségük van, pl. Az egyes feladatokhoz hozzárendelt RAM-rész mérete pontosan megegyezik az adott job méretével. Ezért ebben a módszerben nem figyelhető meg a memória „túlhasználata”, ami a rögzített partíciókon keresztül történik.

A változó partíciókkal való elosztás módszerének két módosítása van:

· elosztás változó, nem mozgatható partíciókkal;

· változók elosztása partíciók mozgatásával.

A memória lefoglalásakor változó nem mozgatható szakaszok(dinamikus partíciók), az operációs rendszer két táblát hoz létre: egy táblát a lefoglalt memóriaterületekkel és egy táblát a szabad memóriaterületekkel („lyukak”).

A következő feladat megérkezésekor a hosszú távú tervezési szakaszban hozzárendelődik a memória, és a memóriafoglalás a „lyukak” elszámolási táblából származó információk alapján történik, az operációs rendszerben elfogadott elhelyezési stratégiának megfelelően („first alkalmas” , „legmegfelelőbb”, „legnem megfelelőbb”). Ha a terjesztés sikeres, az operációs rendszer mindkét táblát módosítja – a lefoglalt és a szabad területeket.

Bármely feladat elvégzése után az általa elfoglalt memóriarész felszabadul, és az operációs rendszer beállítja a lefoglalt területek táblázatát, törli belőle az elvégzett feladatra vonatkozó információkat, valamint az újonnan megjelenő „lyuk” adatait is beírja a táblázatba. szabad területekről.

Tekintsük a következő példát. A memória változó szakaszok szerinti kezdeti lefoglalását a 4.1., 4.2. táblázatban és a 4. ábrán látható módon végezzük. 4.5a. Az A, B, C és D feladatok elhelyezése után akkora szabad terület marad, hogy a sorban álló programok egyike sem fér el erre a területre.

4.1. táblázat.Kiosztási táblázat

szakaszszám,

védelmi kulcs

Szakasz neve

Méret

Cím

Állapot

100K

200K

100K

400K

100K

50K

150K

350 ezer

450 ezer

850 ezer

Megosztott

Megosztott

Megosztott

Megosztott

Megosztott

4.2. táblázat.Szabad terület táblázat

Szoba szabad

vidék

Méret

Cím

Állapot

100K

950 ezer

Elérhető

Tételezzük fel, hogy bizonyos idő elteltével az A és C feladatok elkészülnek (lásd 4.5b. ábra). A területtáblázatok a táblázatban látható formában vannak. 4.3 és 4.4.

4.3. táblázat.Kiosztási táblázat: A feladat kész

szakaszszám,

védelmi kulcs

Szakasz neve

Méret

Cím

Állapot

200K

400K

100K

150K

450 ezer

850 ezer

Üres

Megosztott

Üres

Megosztott

Megosztott

4.4. táblázat.Szabad területek táblázata: A feladat kész

Szoba szabad

vidék

Méret

Cím

Állapot

100K

100K

100K

100K

350 ezer

950 ezer

Elérhető

Elérhető

Elérhető



Látható, hogy annak ellenére, hogy 274K szabad memória van, amely elegendő a sorban első E feladat befogadásához, az operációs rendszer nem tudja ezt megtenni, mert a szabad memória két, egyenként 100K-os töredékre van felosztva, amelyekben lehetetlen a sorban álló programokat elhelyezni. Ez a példa szemlélteti a változók nem mozgatható partíciókkal való elosztásának módszerének fő hátrányát - a fő memória töredezettségét, ami csökkenti a számítási rendszer hatékonyságát.

A memória lefoglalásakor változó mozgatható szakaszok Az operációs rendszer ún memóriatömörítés amely az összes elfoglalt terület áthelyezéséből áll a fő memória egyik vagy másik szélére. Ennek köszönhetően a változó, nem mozgatható szakaszok elosztása során keletkező nagyszámú kis „lyuk” helyett egyetlen (összekapcsolt) szabad memóriaszakasz jön létre. A 4.5c ábra a tömörítés eredményét mutatja, amikor a fő memóriában lévő B, D és E programokat az A és C programok befejezése után szabad területekre helyezik át. A szabad memória most egy ​274K méretű folytonos területet jelent, amelybe az OS elhelyezheti a sorba állított feladatot F. Ezt a folyamatot úgy is hívják töredezettségmentesítés memória.

A mozgó partíciókkal történő elosztáskor használt memóriatöredezettségmentesítésnek megvannak a maga hátrányai:

  • további idő szükséges;
  • a memóriatömörítés során a rendszernek le kell állítania (fel kell függesztenie) minden egyéb munkát, ami gyakran elfogadhatatlan;
  • a feladatok memóriában való áthelyezésének szükségessége jelentős mennyiségű, a programok memóriában való elhelyezésével kapcsolatos információ tárolását igényli, ami növeli az operációs rendszer memóriaigényét;
  • erős áramlással rövid programok Szükség lehet a memória gyakori töredezettségmentesítésére, így az e célokra fordított rendszererőforrások nem feltétlenül indokolhatók az elért előnyök miatt.

Memóriakiosztás cserével (az angol swapping) jellemzője, hogy a korábban tárgyalt terjesztési módokkal ellentétben a felhasználói programok nem maradnak a fő memóriában, amíg el nem készülnek. BAN BEN a legegyszerűbb rendszer cserével egyszerre csak egy felhasználói job van a fő memóriában, és addig foglalja el, amíg végrehajtható, majd a memóriát és a CPU-t is felszabadítja a következő job számára. Így a teljes memória egy feladathoz van lefoglalva egy rövid időre, majd egy bizonyos időpontban ez a feladat kimenetre kerül (lenyomva, azaz „kiszivattyúzva”), és beszúrásra kerül a következő feladat (lenyomva, azaz „kipumpálva”). Szokásos esetben minden feladat, még a befejezés előtt, sokszor lesz pumpálva a külső memóriából a fő memóriába és vissza.

A külső memória cseréjének engedélyezéséhez az operációs rendszer egyet vagy többet hoz létre cserélje ki a fájlokat, ahol a jelenleg futó felhasználói jobok RAM-képei tárolódnak. A cserével járó memóriafoglalási módszert a legegyszerűbb, időmegosztásos módban működő operációs rendszerekben alkalmazzák.

4.2.3. Az információk memóriában való tárolásának stratégiái

A memóriaelhelyezési stratégiák célja annak meghatározása, hogy a bejövő programokat és adatokat hol kell elhelyezni a fő memóriában, amikor a memóriát nem áthelyezhető partíciókra osztják ki. A leggyakrabban használt stratégiák a következők:

  • elhelyezés az első megfelelő kiválasztásával (az „első megfelelő” stratégia):
  • elhelyezés a legmegfelelőbb kiválasztásával („legmegfelelőbb” stratégia);
  • algoritmus a legkevésbé megfelelő („legalkalmatlanabb” stratégia) kiválasztásával.

érkezési sorrendben stratégia teljesítésében áll következő lépések:

  • növekvő címek;
  • a szükségesnél nem kisebb méretű információkat helyezzen el a fő memória elsőként talált részében.

„Legmegfelelőbb” stratégia a következő műveletsort hajtja végre:

  • rendezze el a szabad területek táblázatát növekvő méret szabad területek:

A „legnem megfelelőbb” stratégia a következő műveleteket hajtja végre:

  • rendezze el a szabad területek táblázatát csökkenő méretek régiók;
  • helyezze el az információkat a legalább a szükséges méretű szabad memória első szabad területére.

Nincsenek szigorú bizonyítékok egyik vagy másik stratégia előnyére a többiekkel szemben, ezért az operációs rendszerekben való felhasználásuk az operációs rendszer fejlesztőinek intuitív érvein alapul.

4.3. A virtuális memória szervezése

4.3.1. Alapvető virtuális memória fogalmak

Term virtuális memóriaáltalában egy adott számítógép elsődleges (valós, fizikai) memóriájának kapacitásánál jóval nagyobb memóriaterület megcímzésének képességével jár. A virtuális memória koncepcióját először egy 1960-ban a Manchesteri Egyetemen (Anglia) készített gépben valósították meg. A virtuális memóriarendszerek azonban csak a negyedik és az azt követő generációk számítógépeiben terjedtek el.

A virtuális memória megvalósításának két leghíresebb módja van - oldalonÉs szegmentális. Ezek kombinációját is használják - oldal-szegmens a virtuális memória szervezése.

Minden virtuális memóriarendszerre jellemző, hogy a végrehajtó programok által generált címek nem feltétlenül esnek egybe az elsődleges memória címeivel. A virtuális címek általában sokkal nagyobb címkészletet képviselnek, mint amennyi az elsődleges memóriában elérhető.

A virtuális memória fogalmának lényege az, hogy a futó folyamat által elért címeket elválasztják az elsődleges memóriában ténylegesen létező címektől.

Az elsődleges memóriában ténylegesen létező címeket hívják valós (fizikai) címeket.

A virtuális címek azon tartományát hívják meg, amelyhez egy futó folyamat hozzáférhet virtuális címtér Ennek a folyamatnak az V.

Az adott számítógépen létező valós címek tartományát hívják valódi R címtér ez a számítógép.

Bár a folyamatok csak virtuális címekhez férnek hozzá, valójában valós memóriával kell működniük. A virtuális és valós címek közötti megfelelés megteremtésére a DPA-címek (vagy DAT - az angol Dynamics Address Transformation szóból DAT) dinamikus átalakítására szolgáló mechanizmusokat fejlesztettek ki, amelyek biztosítják a virtuális címek valós címekké való átalakítását a folyamat végrehajtása során. Minden hasonló rendszerek van köztulajdon(lásd 4.6. ábra) - a folyamat virtuális címterében lévő szomszédos címek nem feltétlenül lesznek szomszédosak a valós memóriában.

Ezt a tulajdonságot „mesterséges szomszédságnak” nevezik. Ez megszabadítja a felhasználót attól, hogy figyelembe vegye a fizikai memóriát annak egyedi jellemzőivel.

A virtuális memória rendszerint kétszintű séma szerint épül fel (lásd 4.7. ábra).

Az első szint a tényleges memória, ahol a futó folyamatok és az általuk elért adatoknak kell lenniük.

A második szint a nagy kapacitású külső memória, például a tárolóeszközök mágneses lemezek, amely képes olyan programok és adatok tárolására, amelyek korlátozott kapacitása miatt nem férnek el egyszerre a valós memóriába. Második szintű memória ún másodlagos vagy külső.

Többprogramozási módban a valós memória megoszlik sok folyamat között. Mivel minden folyamatnak sokkal nagyobb virtuális címtere lehet, mint a valós memória, ezért a valós memóriában adott időpontban az egyes folyamatok programkódjainak és adatainak csak egy kis részét, sőt ezeket a kis kód- és adatrészeket is lehet tárolni. nem feltétlenül egy folytonos tömb valós memóriában található (tulajdonság mesterséges szomszédság”).

A dinamikus címfordítási mechanizmus nyomon követi, hogy éppen mely virtuális memóriacellák találhatók a valós memóriában, és pontosan hol találhatók. Ez a DPA motor által karbantartott leképezési táblák segítségével történik.

A virtuális memóriából a valós memóriába átvitt információk csoportosításra kerülnek blokkok, és a rendszer nyomon követi, hogy a valós memóriában hol vannak lefoglalva a különböző virtuális memóriablokkok. A blokk mérete befolyásolja, hogy a DPA a valódi memóriából mennyit használ fel nem produktívan a céljaira.

Ha a blokkok azonos méretűek, akkor hívják őket oldalakat lapozva. Ha a blokkok különböző méretűek lehetnek, akkor ún szegmensek, és a virtuális memória megfelelő szervezetét nevezzük szegmentális. Egyes rendszerekben mindkét megközelítést kombinálják, pl. A szegmensek fix méretű oldalakból kialakított változó méretű objektumokként valósulnak meg. A virtuális memória ezen szerveződését vagy az úgynevezett szegmens oldal, vagy oldal-szegmens.

A blokkleképezési rendszerben a címek kétkomponensű (kétdimenziós). Egy adott adatelem eléréséhez a program jelzi azt a blokkot, amelyben ez az elem található, és az elem eltolását a blokk elejéhez képest (lásd 4.8. ábra). Az n virtuális címet egy rendezett pár (b, d) segítségével adjuk meg, ahol b annak a blokknak a száma, amelyben a megfelelő adatelem található, d pedig az adott blokk kezdőcímétől való eltolást.

Az n =(b, d) virtuális memóriacím átalakítása r valós memóriacímmé a következőképpen történik (lásd 4.9. ábra). Minden folyamatnak megvan a sajátja blokk kijelző táblázat, amelyet az operációs rendszer a valós memóriában tart fenn. Ennek a táblázatnak a valódi a címe a központi processzor egy speciális regiszterébe van betöltve a folyamatblokk leképezési tábla kezdőcímregisztere.


A blokkleképezési táblák minden folyamatblokkhoz egy sort tartalmaznak, és ezek a blokkok szekvenciálisak: először 0, majd 1. blokk stb. A b blokk összeadódik a tábla a kezdőcímével, így a b blokk valós táblasorcíme jön létre. A talált sor a b blokk elejének valós b címét tartalmazza a valós memóriában. Ehhez a b kezdőcímhez hozzáadjuk a d eltolást, így létrejön a kívánt r=b’+d valós cím.

A szegmens-, oldal- és kombinált oldal-szegmens szervezetekkel rendelkező rendszerekben használt összes blokk-leképezési módszer hasonló az ábrán látható leképezési sémához. 4.9, az úgynevezett közvetlen leképezési séma.

4.3.2. A virtuális memória oldalszervezése

A tisztán oldalalapú memóriaszervezésben a virtuális cím egy rendezett pár (p, d), ahol p a virtuális memória oldalszáma, d pedig a p oldalon belüli eltolás. Egy folyamat akkor hajtható végre, ha az aktuális oldal az elsődleges memóriában van. Az oldalak a külső memóriából az elsődleges memóriába íródnak át, és ún oldalkeretekés pontosan ugyanolyan méretűek, mint a bejövő oldalak. Az oldalkeretek a valós memóriában olyan címeknél kezdődnek, amelyek a rögzített oldalméret többszörösei. A bejövő oldal bármely elérhető oldalkeretbe elhelyezhető.

Az oldalleképezési mechanizmus működésének biztosítására egy oldalleképezési táblázat kerül kialakításra, amelynek minden sora a leképezett virtuális memórialapról tartalmaz információkat:

r - egy oldal jelenlétének jele az elsődleges memóriában (r=0 - nincs oldal az elsődleges memóriában; 1 - az oldal az elsődleges memóriában van):

S - oldalcím a külső memóriában (r=0-nál):

p’ annak az oldalkeretnek a száma az elsődleges memóriában, ahol a virtuális oldal számmal p.

4.3.3. A virtuális memória szegmentális szervezése

A virtuális memória szegmentált szervezetében a virtuális cím egy n = (s, d) rendezett pár, ahol s a virtuális memória szegmens száma, d pedig a szegmensen belüli eltolás. Egy folyamat csak akkor hajtható végre, ha az aktuális szegmens az elsődleges memóriában van. A szegmenshez tartozó összes cella szomszédos elsődleges memóriacímeket foglal el. A külső memóriából érkező szegmensek az elsődleges memória szabad területeibe helyezéséhez ugyanazokat az elhelyezési stratégiákat alkalmazzuk, mint a változó, nem mozgatható partíciók elosztásánál – „első alkalmas”, „legmegfelelőbb”, „legnem megfelelő” (lásd a 4.2.3. szakaszt). . Dinamikus konverzió A virtuális címeket valós címekre a 2. ábrán látható közvetlen leképezési séma szerint hajtják végre. 4.9.

4.3.4. A virtuális memória oldalszegmenses szervezése

Az oldalszegmenses felépítésű rendszerek mindkét virtuális memória megvalósítási mód előnyeivel rendelkeznek. A szegmensek jellemzően egész számú oldalt tartalmaznak, és a szegmensben lévő összes oldalnak nem kell egyidejűleg az elsődleges memóriában lennie, és a szomszédos virtuális memórialapoknak nem kell szomszédosnak lenniük az elsődleges memóriában. Az oldalszegmenses felépítésű rendszerben háromkomponensű (háromdimenziós) címzést használnak. Az n virtuális cím itt egy rendezett n =(s, p, d) hármasként van definiálva, ahol s a szegmens száma, p az oldalszám, és d az oldal eltolása, ahol a kívánt elem található.

Az operációs rendszer minden folyamathoz létrehoz egy táblázatot a folyamatszegmensekről, másodszor pedig a szegmensoldalak táblázatait (minden folyamatszegmenshez egyet).

A folyamat szegmenstábla a soraiban információkat tartalmaz a szegmensben lévő oldalak számáról és a szegmensoldaltáblázatok számítógép elsődleges memóriájában való elhelyezésének kezdőcímeiről.

A szegmenstáblázatok minden oldala a saját soraiban információkat tartalmaz egy adott virtuális memórialap elsődleges memóriájában lévő oldalkeret-elhelyezés p’ kezdőcíméről.

A virtuális címek dinamikus átalakítása oldalszegmenses felépítésű rendszerekben abban különbözik a séma szerinti konverziótól, hogy a 4.10. ábra diagramja szerint a címszámítás egy másik szintje, valamint az egyes folyamatszegmensekhez tartozó oldaltáblázatok jelennek meg. .

4.4. Virtuális memóriakezelés

4.4.1. Virtuális memória kezelési stratégiák

A virtuális memóriakezelési stratégiák, akárcsak a fizikai memóriakezelési stratégiák, három kategóriába sorolhatók: push stratégiák, elhelyezési stratégiák és push stratégiák.

Célja push stratégiák annak meghatározása, hogy egy oldalt vagy szegmenst melyik ponton kell átírni a másodlagos memóriából az elsődleges memóriába.

Célja elhelyezési stratégiák célja annak meghatározása, hogy az elsődleges memóriában hova kell elhelyezni a bejövő oldalt vagy szegmenst.

Célja push stratégiák annak eldöntése, hogy melyik oldalt vagy szegmenst távolítsa el az elsődleges memóriából, hogy helyet biztosítson egy bejövő oldalnak vagy szegmensnek, ha az elsődleges memória megtelt.

A legtöbb virtuális memória kezelési stratégia ezen a koncepción alapul helység, melynek lényege az A memória-hozzáférési folyamatkérelmek eloszlása ​​általában egyenetlen természetű, nagyfokú helyi koncentráció mellett.

A lokalitás tulajdonsága időben és térben egyaránt megnyilvánul.

Helység időben azt jelenti, hogy a közelmúltban elért memóriahelyekhez valószínűleg hozzáférnek a közeljövőben.

Lokalitás a térben azt jelenti, hogy a memória-hozzáférések általában koncentráltak, így ha egy bizonyos memóriacellát elérnek, nagy valószínűséggel a közeli cellákhoz is hozzáférnek.

A lokalitás tulajdonsága nemcsak az alkalmazási programokban figyelhető meg, hanem az operációs rendszer programok működésében is. Ez a tulajdonság inkább empirikus (a gyakorlatban megfigyelhető), mint elméletileg igazolt. A lokalitás semmilyen módon nem garantálható, de a valószínűsége elég nagy. A lokalizáció legfontosabb következménye, hogy egy program akkor tud hatékonyan futni, ha a legnépszerűbb oldalainak vagy szegmenseinek egy része van az elsődleges memóriában.

Az operációs rendszerek memóriakezelési stratégiáinak hatékonyságának értékelésére tér-idő mutatót használnak, amelyet a képlet számít ki.

S = VC T, (4.6)

ahol S a „tér-idő” jelző; V a folyamat által elfoglalt elsődleges memória mennyisége; T az az időtartam, ameddig a folyamat vár a szükséges oldal vagy szegmens cseréjére.

Az összes memóriakezelési stratégia legfontosabb célja az S értékének csökkentése a folyamat által az oldalakra vagy szegmensekre várakozó idő csökkentésével.

4.4.2. Push (pumpáló) stratégiák

A következő stratégiákat használják a tolás szabályozására:

· nyomás (szivattyú) igény szerint (igény szerint);

· tolás (pumpálás) várakozással (haladó).

Nyomtatás (lapozás) kérésre feltételezi, hogy a rendszer egy futó folyamatból vár egy oldalra vagy szegmensre mutató hivatkozást, és csak azután kezdi el az újraírást ez az oldal vagy szegmentál az elsődleges memóriába. Az igény szerinti lapozásnak vannak pozitív és negatív oldalai.

NAK NEK pozitív nézőpont viszonyul:

  • garantált, hogy csak azok az oldalak (szegmensek) kerüljenek átírásra az elsődleges memóriába, amelyek a folyamat működéséhez szükségesek;
  • minimális költséget jelent annak meghatározása, hogy mely oldalakat vagy szegmenseket kell átvinni az elsődleges memóriába.

Az igény szerinti lapozás hátrányai közé tartozik, hogy a folyamat ebben az esetben egyesével az elsődleges memóriában halmozza fel a szükséges oldalakat (szegmenseket). Amikor minden új oldalra (szegmensre) hivatkozás jelenik meg, a folyamatnak meg kell várnia, amíg az oldal (vagy szegmens) átkerül az elsődleges memóriába. Attól függően, hogy egy adott folyamat hány oldala (szegmense) van már az elsődleges memóriában, ezek a várakozási idők a (4.5) képletből következően egyre drágábbak lesznek, mivel a várakozási folyamatok egyre több memóriát foglalnak el.

Nyomjon (pumpáljon) várakozással azt jelenti, hogy a rendszer megpróbálja előre meghatározni, hogy a folyamat mely oldalakat vagy szegmenseket éri el. Ha a hozzáférés valószínűsége nagy és van szabad hely, akkor a megfelelő oldalak vagy szegmensek átíródnak az elsődleges memóriába még azelőtt, hogy kifejezetten elérnék őket. Nál nél a helyes választás meghozatala A proaktív lapozáshoz szükséges oldalak (szegmensek) jelentősen csökkenthetők teljes idő ennek a folyamatnak a végrehajtását, és csökkenti a „tér-idő” indikátor értékét.

Az előrecsatolt lapozási stratégia hátrányai közé tartozik, hogy a kiszámíthatósági elmélet szerint általában lehetetlen pontosan megjósolni, hogy egy folyamat milyen úton fog fejlődni. Ezért nagyon is lehetségesek olyan helyzetek, amikor a proaktív pumpáláshoz szükséges oldalak (szegmensek) kiválasztásával kapcsolatos döntések a legtöbb esetben helytelenül születnek a rendszerben fejlődő egy vagy több folyamat esetében, ami viszont ezek sebességének meredek csökkenéséhez vezet. folyamatokat a megnövekedett várakozási idő miatt a szükséges oldalak vagy szegmensek.

4.4.3. Elhelyezési stratégiák

A rendszerben oldalon A virtuális memória rendszerezésével az újonnan betöltött oldalak elhelyezéséről szóló döntés meglehetősen egyszerű: új oldal bármely szabad oldalkeretbe elhelyezhető.

A rendszerekhez szegmentális A virtuális memória szervezése ugyanazokat az elhelyezési stratégiákat használja, mint amelyeket a változó partíciók szerinti memória lefoglalására szolgáló rendszerekben használnak (lásd a 4.2. szakaszt), nevezetesen:

· elhelyezés az első megfelelő ingyenes helyszín kiválasztásával;

· elhelyezés a legmegfelelőbb ingyenes helyszín kiválasztásával;

· elhelyezése a legkevésbé megfelelő ingyenes helyszín kiválasztásával.

Részletes leírás a felsorolt ​​elhelyezési stratégiák megvalósításához szükséges intézkedéseket a 4.2.3. pont tartalmazza.

4.4.4. Push stratégiák

Többprogramos rendszerekben általában az összes elsődleges memória foglalt. Ebben az esetben a memóriakezelő programnak el kell döntenie, hogy melyik oldalt vagy szegmenst távolítsa el az elsődleges memóriából, hogy helyet biztosítson a bejövő oldalnak vagy szegmensnek. Jelenleg a következő stratégiákat alkalmazzák az oldalak (szegmensek) tolására (pumpálására):

  • véletlenszerű oldalak vagy szegmensek kitolása;
  • Első oldal vagy szegmens (FIFO);
  • a leghosszabb használaton kívüli oldalak vagy szegmensek (LRU) kiadása;
  • a legkevésbé gyakran használt oldalak vagy szegmensek (LFU) kiadása;
  • kihasználatlan kidobása Utóbbi időben oldalak vagy szegmensek (NUR).

Stratégia véletlenszerű oldalak vagy szegmensek kitolására a legkönnyebben megvalósítható, alacsony költségű és nem tesz különbséget a rendszerben működő folyamatokkal szemben. Ennek a stratégiának megfelelően az elsődleges memóriában található oldalak vagy szegmensek egyenlő valószínűséggel kijelölhetők, beleértve a még Következő oldal vagy egy szegmens, amelyhez hozzá fog férni (és amelyet természetesen a leginkább helytelen eltávolítani a memóriából). Mivel egy ilyen stratégiát alapvetően a „vak” szerencsére terveztek, valódi rendszerek ritkán használják.

Stratégia az első beérkező oldal vagy szegmens kitolására (FIFO stratégia) az „első be, először ki” elvet valósítja meg. Ebben az esetben abban a pillanatban, amikor minden oldal (szegmens) belép az elsődleges memóriába, hozzá van rendelve egy időbélyeg. Ha szükségessé válik bármely oldal (szegmens) törlése az elsődleges memóriából, az az oldal (szegmens), amelynek időbélyegzője legkisebb érték. A push stratégia mellett az az érv, hogy ennek az oldalnak már volt lehetősége „megragadni az esélyét”, és ideje hasonló lehetőségeket adni egy másik oldalnak. A FIFO stratégia azonban valószínűleg az aktívan használt oldalak (szegmensek) eltávolítását eredményezi az elsődleges memóriából, mivel az a tény, hogy egy oldal (szegmens) hosszú ideje az elsődleges memóriában van, azt jelentheti, hogy ez az oldal vagy szegmens állandóan munkában.

Stratégia a leghosszabb használaton kívüli oldalak vagy szegmensek kitolására (LRU stratégia) előírja, hogy azokat az oldalakat (szegmenseket), amelyeket a többinél régebben nem használtak, ki kell választani a kidobásra. Az LRU-stratégia megköveteli, hogy az oldalak (szegmensek) minden egyes elérésekor az időbélyegek frissítésre kerüljenek. Ez jelentős költségekkel járhat, ezért az LRU-stratégia vonzereje ellenére ritkán kerül megvalósításra a modern operációs rendszerekben. Ezenkívül egy LRU stratégia megvalósítása során előfordulhat, hogy a leghosszabb ideig nem elért oldal (szegmens) ténylegesen a következő használt oldal (szegmens) lesz, ha a program ezen a ponton ismét egy nagy cikluson megy keresztül. több oldalra vagy szegmensre terjed ki.

Stratégia a legkevésbé használt oldalak vagy szegmensek kiszorítására (LFU stratégia) az egyik legközelebb álló LRU fentebb tárgyalt stratégiájához. Az LFU stratégiának megfelelően az adott időpontban legritkábban (legkevésbé intenzíven) használt oldalak vagy szegmensek kerülnek ki az elsődleges memóriából. Itt az oldalak (szegmensek) használatának intenzitását szabályozzák. Ehhez minden oldalhoz (szegmenshez) hozzárendelünk egy számlálót, amelynek értéke eggyel nő minden alkalommal, amikor egy adott oldalt (szegmenset) elérünk. Az LFU-stratégia, bár intuitívan indokolt, ugyanazokkal a hátrányokkal rendelkezik, mint az LRU-stratégia: egyrészt nagy a valószínűsége annak, hogy az elsődleges memóriából olyan oldalak vagy szegmensek kerülnek eltávolításra, amelyekre a folyamatoknak szükségük lesz, amikor legközelebb hozzáférnek a memóriához, másrészt pedig megvalósítása jelentős költségekkel járhat az oldalak vagy szegmensek használati intenzitása feletti ellenőrzés megszervezéséhez.

Stratégia a közelmúltban nem használt oldalak vagy szegmensek kiszorítására (NUR stratégia) szintén közel áll az LRU stratégiájához, és viszonylag alacsony megvalósítási költségek jellemzik. A NUR stratégia szerint azok az oldalak (szegmensek), amelyekhez mostanában nem jutottak hozzá, kiszorulnak az elsődleges memóriából. A helység időbeli tulajdonságának megfelelően (lásd 4.4.1. pont) az utóbbi időben nem használt oldalak (szegmensek) a közeljövőben valószínűleg nem lesznek elérhetők, így újonnan érkező oldalakkal helyettesíthetők.

Mivel kívánatos azokat az oldalakat (szegmenseket) lecserélni, amelyek a fő memóriában nem változtak, a NUR stratégia megvalósítása oldalanként (szegmensenként) két hardverbit bevezetését foglalja magában:

· egy oldalhoz (szegmenshez) való hozzáférés b 0 bitjele;

· bit-jel b Az oldal (szegmens) 1 módosítása.

Kezdetben minden b 0 és b 1 értéke 0. Egy oldal (szegmens) elérésekor a megfelelő b 0 attribútumbit 1-re van állítva. Ha az oldal (szegmens) tartalma megváltozik, a megfelelő b 1 attribútumbit 1-re állítva. A NUR stratégia négy oldalcsoport (szegmens) létezését biztosítja a táblázatban. 4.5.

4.5. táblázat.Oldalcsoportok (szegmensek)

Csoport

Az oldalak (szegmensek) először kikerülnek az elsődleges memóriából. csoportokhoz tartozó kisebb számokkal.

Az oldalak (szegmensek) el nem érésének időtartamának elszámolása az összes attribútumbit időszakos 0-ra állításával történik, amelyet az operációs rendszer hajt végre.

Szinte minden oldalak (szegmensek) kitolási stratégiája nem zárja ki az irracionális döntések veszélyét. Ez azzal magyarázható, hogy az operációs rendszer nem tudja pontosan megjósolni a feldolgozásra érkező folyamatok jövőbeli viselkedését.

Ellenőrző kérdések

1. Gyakran a virtuális memória egyetlen előnye az, hogy olyan folyamatot biztosít, amelynek virtuális címterülete meghaladja a valós memória mennyiségét. Nevezze meg a virtuális memória egyéb előnyeit!

2. Milyen előnyei és hátrányai vannak a virtuális címek valós címekké alakításának a program végrehajtása során? Az átalakítási munkából mennyit a hardver és mennyit az operációs rendszer végzi?

3. Néha úgy gondolják, hogy a virtuális memória csak olyan rendszerekben biztosítható, amelyek hardveres támogatással rendelkeznek a dinamikus címfordításhoz. Bizonyítsd be, hogy ez nem így van.

4. Miért bizonyul a „legjobban illeszkedő” stratégia rosszabbnak a szabad memória keresésekor, mint az „első illeszkedés” stratégia?

5. Hasonlítsa össze a virtuális memória szegmens- és oldalmodelljét. Szerintetek melyik a legjobb és miért?

6. Töltse ki a 3.5. pontban megadottakat. Oldalmérettel kapcsolatos szempontok.

7. Szimuláljon egy olyan helyzetet, ahol az FCFS elővételi fegyelmet alkalmazzák, és amelyben a valódi oldalak számának növekedése az oldalhibák számának növekedéséhez vezet.

8. Mi az a fürt lapozás? Miért válik egyre népszerűbbé a modern operációs rendszerekben?

9. Hogyan tudja az operációs rendszer meghatározni, hogy mely oldalak lesznek elérhetők a közeljövőben?

10. A folyamat virtuális memóriájának nagy mérete miatt még az oldaltábla sem fér el a valós memóriában. Hogyan oldják meg ezt a problémát a modern operációs rendszerekben?

11. Hogyan befolyásolja a csökkenő memóriaköltségek a memóriakezelési tudományokat?

12. Milyen alapvető változásokat idézhet elő a memória fogalmában a cím bitméretének növelése?



Kapcsolódó kiadványok