Megosztás a következőn keresztül:


Memóriavédelem

A folyamathoz tartozó memóriát implicit módon védi a saját virtuális címtere. A Windows emellett memóriavédelmet is biztosít a virtuális memória hardverével. A védelem megvalósítása a processzortól függ, például a folyamat címterében lévő kódlapok írásvédettként jelölhetők meg, és felhasználói módú szálakkal védhetők a módosítástól.

Az attribútumok teljes listáját Memóriavédelmi állandókcímű témakörben találja.

Másolás-írás elleni védelem

Az írásra másolás elleni védelem olyan optimalizálás, amely lehetővé teszi, hogy több folyamat leképozza a virtuális címtereket, így azok fizikai oldalt osztanak meg, amíg az egyik folyamat módosítja a lapot. Ez egy lusta kiértékelésinevű technika része, amely lehetővé teszi a rendszer számára a fizikai memória és idő megőrzését azáltal, hogy nem hajt végre műveletet, amíg feltétlenül szükséges.

Tegyük fel például, hogy két folyamat betölti az oldalakat ugyanabból a DLL-ből a virtuális memóriájukba. Ezek a virtuális memórialapok ugyanazon fizikai memórialapokra vannak leképezve mindkét folyamat esetében. Mindaddig, amíg egyik folyamat sem ír ezekre a lapokra, ugyanazokkal a fizikai lapokkal lehet megfeleltetni és megosztani őket, mint az alábbi ábrán.

1. és 2. folyamat mezői és nyílai azonos fizikai memóriára

Ha az 1. folyamat ezen lapok egyikére ír, a rendszer a fizikai lap tartalmát egy másik fizikai lapra másolja, és a virtuális memóriatérkép frissül az 1. folyamathoz. Mindkét folyamat rendelkezik a lap saját példányával a fizikai memóriában. Ezért az egyik folyamat nem írhat megosztott fizikai lapra, a másik pedig a módosítások megtekintésére.

folyamatok és a fizikai memória

Alkalmazások és DLL-ek betöltése

Ugyanazon Windows-alapú alkalmazás több példányának betöltésekor minden példány a saját védett virtuális címterében fut. A példányleírók (hInstance) azonban általában ugyanazt az értéket használják. Ez az érték az alkalmazás alapcímét jelöli a virtuális címtérben. Ha minden példány betölthető az alapértelmezett alapcímébe, leképezheti és megoszthatja ugyanazokat a fizikai lapokat a többi példánysal a másolás-írásvédelem használatával. A rendszer lehetővé teszi, hogy ezek a példányok ugyanazokat a fizikai lapokat osszák meg, amíg az egyik módosít egy lapot. Ha valamilyen okból az egyik példány nem tölthető be a kívánt alapcímbe, saját fizikai lapokat kap.

A DLL-ek alapértelmezett alapcímmel jönnek létre. Minden DLL-t használó folyamat megpróbálja betölteni a DLL-t a saját címterén belül a DLL alapértelmezett virtuális címére. Ha több alkalmazás is betölthet egy DLL-t az alapértelmezett virtuális címére, ugyanazokat a fizikai lapokat oszthatja meg a DLL-hez. Ha egy folyamat valamilyen okból nem tudja betölteni a DLL-t az alapértelmezett címen, akkor máshol tölti be a DLL-t. Az írás közbeni másolás elleni védelem arra kényszeríti a DLL egyes lapjait, hogy a folyamat különböző fizikai lapjaira másolja őket, mivel a ugróutasítások javításai a DLL-lapokon belül vannak megírva, és a folyamathoz eltérőek lesznek. Ha a kódszakasz sok adatszakaszra mutató hivatkozást tartalmaz, az a teljes kódszakaszt átmásolhatja az új fizikai lapokra.