ÏÅÐÅË²Ê ÄÈÑÖÈÏ˲Í:
  • Àäì³í³ñòðàòèâíå ïðàâî
  • Àðá³òðàæíèé ïðîöåñ
  • Àðõ³òåêòóðà
  • Àñòðîëîã³ÿ
  • Àñòðîíîì³ÿ
  • Áàíê³âñüêà ñïðàâà
  • Áåçïåêà æèòòºä³ÿëüíîñò³
  • Á³îãðàô³¿
  • Á³îëîã³ÿ
  • Á³îëîã³ÿ ³ õ³ì³ÿ
  • Áîòàí³êà òà ñ³ëüñüêå ãîñ-âî
  • Áóõãàëòåðñüêèé îáë³ê ³ àóäèò
  • Âàëþòí³ â³äíîñèíè
  • Âåòåðèíàð³ÿ
  • ³éñüêîâà êàôåäðà
  • Ãåîãðàô³ÿ
  • Ãåîäåç³ÿ
  • Ãåîëîã³ÿ
  • Åòèêà
  • Äåðæàâà ³ ïðàâî
  • Öèâ³ëüíå ïðàâî ³ ïðîöåñ
  • ijëîâîäñòâî
  • Ãðîø³ òà êðåäèò
  • Ïðèðîäíè÷³ íàóêè
  • Æóðíàë³ñòèêà
  • Åêîëîã³ÿ
  • Âèäàâíè÷à ñïðàâà òà ïîë³ãðàô³ÿ
  • ²íâåñòèö³¿
  • ²íîçåìíà ìîâà
  • ²íôîðìàòèêà
  • ²íôîðìàòèêà, ïðîãðàìóâàííÿ
  • Þðèñò ïî íàñëåäñòâó
  • ²ñòîðè÷í³ îñîáèñòîñò³
  • ²ñòîð³ÿ
  • ²ñòîð³ÿ òåõí³êè
  • Êèáåðíåòèêà
  • Êîìóí³êàö³¿ ³ çâ'ÿçîê
  • Êîìï'þòåðí³ íàóêè
  • Êîñìåòîëîã³ÿ
  • Êîðîòêèé çì³ñò òâîð³â
  • Êðèì³íàë³ñòèêà
  • Êðèì³íîëîã³ÿ
  • Êðèïòîëîãèÿ
  • Êóë³íàð³ÿ
  • Êóëüòóðà ³ ìèñòåöòâî
  • Êóëüòóðîëîã³ÿ
  • Ðîñ³éñüêà ë³òåðàòóðà
  • ˳òåðàòóðà ³ ðîñ³éñüêà ìîâà
  • Ëîã³êà
  • Ëîã³ñòèêà
  • Ìàðêåòèíã
  • Ìàòåìàòèêà
  • Ìåäèöèíà, çäîðîâ'ÿ
  • Ìåäè÷í³ íàóêè
  • ̳æíàðîäíå ïóáë³÷íå ïðàâî
  • ̳æíàðîäíå ïðèâàòíå ïðàâî
  • ̳æíàðîäí³ â³äíîñèíè
  • Ìåíåäæìåíò
  • Ìåòàëóðã³ÿ
  • Ìîñêâîâåäåíèå
  • Ìîâîçíàâñòâî
  • Ìóçèêà
  • Ìóí³öèïàëüíå ïðàâî
  • Ïîäàòêè, îïîäàòêóâàííÿ
  •  
    Áåñïëàòíûå ðåôåðàòû
     

     

     

     

     

     

         
     
    ³ðòóàëüíà ïàì'ÿòü â Microsoft Windows
         

     

    ²íôîðìàòèêà, ïðîãðàìóâàííÿ

    ³ðòóàëüíà ïàì'ÿòü â Microsoft Windows

    Òóò ìè ðîçãëÿíåìî àðõ³òåêòóðó ïàì'ÿò³, ÿêà çàñòîñîâóºòüñÿ â Microsoft Windows.

    ³ðòóàëüíå àäðåñíèé ïðîñò³ð ïðîöåñó

    Êîæíîìó ïðîöåñó âèä³ëÿºòüñÿ âëàñíèé â³ðòóàëüíèé àäðåñíèé ïðîñò³ð. Äëÿ 32-ðîçðÿäíèõ ïðîöåñ³â éîãî ðîçì³ð ñêëàäຠ4 Ãá. ³äïîâ³äíî 32-á³òíèé ïîêàæ÷èê ìîæå áóòè áóäü-ÿêèì ÷èñëîì â³ä 0x00000000 äî 0xFFFFFFFF. Âñüîãî, òàêèì ÷èíîì, ïîêàæ÷èê ìîæå ïðèéìàòè 4 294 967 296 çíà÷åíü, ùî ÿê ðàç ³ ïåðåêðèâຠ÷åòèðåõã³ãàáàéòîâèé ä³àïàçîí. Äëÿ 64-ðîçðÿäíèõ ïðîöåñ³â ðîçì³ð àäðåñíîãî ïðîñòîðó äîð³âíþº 16 åêçàáàéò, îñê³ëüêè 64-á³òíèé âêàç³âíèê ìîæå áóòè áóäü-ÿêèì ÷èñëîì â³ä 0x00000000 00000000 äî 0xFFFFFFFF FFFFFFFF ³ ïðèéìàòè 18 446 744 073 709 551 616 çíà÷åíü, îõîïëþþ÷è ä³àïàçîí â 16 åêçàáàéòîâ.Ïîñêîëüêó êîæíîìó ïðîöåñó â³äâîäèòüñÿ çàêðèòå àäðåñíèé ïðîñò³ð, òî, êîëè â ïðîöåñ³ âèêîíóºòüñÿ ÿêèéñü ïîò³ê, â³í îòðèìóº äîñòóï ò³ëüêè äî ò³º¿ ïàì'ÿò³, ÿêà íàëåæèòü éîãî ïðîöåñó. Ïàì'ÿòü, â³äâåäåíà ³íøèì ïðîöåñàì, ïðèõîâàíà â³ä öüîãî ïîòîêó ³ íåäîñòóïíà éîìó. Ó Windows 2000 ïàì'ÿòü, ùî íàëåæèòü âëàñíå îïåðàö³éí³é ñèñòåì³, òåæ ïðèõîâàíà â³ä áóäü-ÿêîãî âèêîíóºòüñÿ ïîòîêó. ²íøèìè ñëîâàìè, í³ îäèí ïîò³ê íå ìîæå âèïàäêîâî ïîøêîäèòè ¿¿ äàííèå. Windows 2000, í³ îäèí ïîò³ê íå ìîæå îòðèìàòè äîñòóï äî ïàì'ÿò³ ÷óæîãî ïðîöåñó. Îòæå, àäðåñíèé ïðîñò³ð ïðîöåñó çàêðèòî. Çâ³äñè âèïëèâàº, ùî ïðîöåñ À ó ñâîºìó àäðåñíîìó ïðîñòîð³ ìîæå çáåð³ãàòè ÿêóñü ñòðóêòóðó äàíèõ çà àäðåñîþ 0x12345678, ³ îäíî÷àñíî ó ïðîöåñó  çà ò³ºþ æ àäðåñîþ - àëå âæå â éîãî àäðåñíîìó ïðîñòîð³ - ìîæå çíàõîäèòèñÿ çîâñ³ì ³íøà ñòðóêòóðà äàíèõ. Çâåðòàþ÷èñü äî ïàì'ÿò³ çà àäðåñîþ 0x12345678, ïîòîêè, ùî âèêîíóþòüñÿ â ïðîöåñ³ À, îòðèìóþòü äîñòóï äî ñòðóêòóðè äàíèõ ïðîöåñó À, Àëå, êîëè çà ò³ºþ æ àäðåñîþ çâåðòàþòüñÿ ïîòîêè, âèêîíóâàí³ ï³ä ÷àñ Â, âîíè îòðèìóþòü äîñòóï äî ñòðóêòóðè äàíèõ ïðîöåñó Â. ²íàêøå êàæó÷è, ïîòîêè ïðîöåñó À íå ìîæóòü çâåðíóòèñÿ äî ñòðóêòóðè äàíèõ ó àäðåñíîìó ïðîñòîð³ ïðîöåñó Â, ³ íàâïàêè

    ßê àäðåñíèé ïðîñò³ð ðîçáèâàºòüñÿ íà ðîçä³ëè

    ³ðòóàëüíå àäðåñíèé ïðîñò³ð êîæíîãî ïðîöåñó ðîçáèâàºòüñÿ íà ðîçä³ëè. ¯õ ðîçì³ð ³ ïðèçíà÷åííÿ â ÿê³éñü ì³ð³ çàëåæàòü â³ä êîíêðåòíîãî ÿäðà Windows (òàáëèöÿ 13-1)        

    Ðîçä³ë         

    32-ðîçðÿäíà Windows 2000 (íà õ86 ³ Alpha)         

    32-ðîçðÿäíà Windows 2000 (íà õ86 ç êëþ÷åì/3GB)         

    64-ðîçðÿäíà Windows 2000 (íà Alpha ³ À-64)         

    Windows 98             

    Äëÿ âèÿâëåííÿ         

    0x00000000         

    0x00000000         

    0x00000000 00000000         

    0x00000000             

    íóëüîâèõ ïîêàæ÷èê³â         

    0x0000FFFF         

    0x0000FFFF         

    0x00000000 0000FFFF         

    0x00000FFF             

    Äëÿ ñóì³ñíîñò³ ç ïðîãðàìàìè DOS ³ 16-ðîçðÿäíî¿ Windows            

    Håò         

    ͳ         

    ͳ         

    0x00001000 0x003FFFFF             

    Äëÿ êîäó òà äàíèõ         

    0x00010000         

    0x00010000         

    0x00000000 00010000         

    0x00400000             

    ðåæèìó êîðèñòóâà÷à         

    0x7FFEFFFF         

    0xBFFFFFFF         

    0x000003FF FFFEFFFF         

    0x7FFFFFFF             

    Çàêðèòèé,         

    0x7FFF0000         

    0xBFFF0000         

    0x000003FF FFFF0000         

    ͳ             

    ðîçì³ðîì 64 Êá         

    0x7FFFFFFF         

    0xBFFFFFFF         

    0x000003FF FFFFFFFF                      

    Äëÿ çàãàëüíèõ MMF (ôàéë³â, ùî ïðîåêòóþòüñÿ â ïàì'ÿòü)         

    ͳ         

    ͳ         

    ͳ         

    0x80000000 0xBFFFFFFF             

    Äëÿ êîäó òà äàíèõ         

    0x800000000         

    0xC0000000         

    0x00000400 00000000         

    0xC0000000             

    ðåæèìó ÿäðà         

    0xFFFFFFFF         

    0xFFFFFFFF         

    0xFFFFFFFF FFFFFFFF         

    0xFFFFFFFF     

    Òàáëèöÿ 13-1. Òàê àäðåñíèé ïðîñò³ð ïðîöåñó ðîçáèâàºòüñÿ íà ðîçä³ëè

    Ðîçä³ë äëÿ âèÿâëåííÿ íóëüîâèõ ïîêàæ÷èê³â (Windows 2000 ³ Windows 98)

    Öåé ðîçä³ë àäðåñíîãî ïðîñòîðó ðåçåðâóºòüñÿ äëÿ òîãî, ùîá ïðîãðàì³ñòè ìîãëè âèÿâëÿòè íóëüîâ³ ïîêàæ÷èêè. Áóäü-ÿêà ñïðîáà ÷èòàííÿ ÷è çàïèñó â ïàì'ÿòü çà öèìè àäðåñàìè âèêëèêຠïîðóøåííÿ äîñòóïó. Äîñèòü ÷àñòî â ïðîãðàìàõ, íàïèñàíèõ íà Ñ/Ñ + +, â³äñóòíÿ ñêðóïóëüîçíà îáðîáêè ïîìèëîê. Íàïðèêëàä, â íàñòóïíîìó ôðàãìåíò³ êîäó òàêî¿ îáðîáêè âçàãàë³ íåìàº:

    int * pnSomeInteger = (int *) malloc (sizeof (int));

    * pnSomeInteger = 5;

    Ïðè íåäîñòà÷³ ïàì'ÿò³ malloc ïîâåðíå NULL. Ho êîä íå âðàõîâóº öþ ìîæëèâ³ñòü ³ ïðè ïîìèëêó çâåðíåòüñÿ äî ïàì'ÿò³ çà àäðåñîþ 0x00000000 À îñê³ëüêè öåé ðîçä³ë àäðåñíîãî ïðîñòîðó çàáëîêîâàíèé, âèíèêíå ïîðóøåííÿ äîñòóïó ³ äàíèé ïðîöåñ çàâåðøèòüñÿ Öÿ îñîáëèâ³ñòü äîïîìàãຠïðîãðàì³ñòàì çíàõîäèòè "æó÷ê³â * â ñâî¿õ äîäàòêàõ. Ó Windows 2000 ïðîãðàìè äëÿ MS-DOS ³ 16-ðîçðÿäíî¿ Windows âèêîíóþòüñÿ ó âëàñíèõ àäðåñíèõ ïðîñòîðàõ; 32-ðîçðÿäí³ ïðîãðàìè âïëèíóòè íà íèõ íå ìîæóòü.

    Ðîçä³ë äëÿ êîäó òà äàíèõ ðåæèìó êîðèñòóâà÷à (Windows 2000 ³ Windows 98)

     öüîìó ðîçä³ë³ ðîçòàøîâóºòüñÿ çàêðèòà (íåïîä³ëüí³) ÷àñòèíà àäðåñíîãî ïðîñòîðó ïðîöåñó. Æîäåí ïðîöåñ íå ìîæå îòðèìàòè äîñòóï äî äàíèõ ³íøîãî ïðîöåñó, ðîçì³ùåíèì ó öüîìó ðîçä³ë³. Îñíîâíèé îáñÿã äàíèõ, ùî íàëåæàòü ïðîöåñó, çáåð³ãàºòüñÿ ñàìå òóò (öå ñòîñóºòüñÿ âñ³õ äîäàòê³â) Òîìó ïðîãðàìè ìåíø çàëåæí³ â³ä âçàºìíèõ "êàïðèç³â", ³ âñÿ ñèñòåìà ôóíêö³îíóº ñò³éê³øå. Ó Windows 2000 ñþäè çàâàíòàæóþòüñÿ âñ³ EXE-òà DLL-ìîäóë³ Ó êîæíîìó ïðîöåñ³ ö³ DLL ìîæíà çàâàíòàæóâàòè çà ð³çíèìè àäðåñàìè â ìåæàõ äàíîãî ðîçä³ëó, àëå òàê ðîáèòüñÿ âêðàé ð³äêî. Íà öåé æå ðîçä³ë â³äîáðàæàþòüñÿ âñ³ ïðîåêòóþòüñÿ â ïàì'ÿòü ôàéëè, äîñòóïí³ äàíîìó ïðîöåñó. Ó 64-ðîçðÿäíî¿ Windows 2000 ÿäðî íàðåøò³ îòðèìຠòîé ïðîñò³ð, ùî éîìó ïîòð³áíî íàñïðàâä³.

    Çá³ëüøåííÿ ðîçä³ëó äëÿ êîäó òà äàíèõ ðåæèìó êîðèñòóâà÷à äî 3 Ãá íà ïðîöåñîðàõ x86 (ò³ëüêè Windows 2000)

    Microsoft ïåðåäáà÷èëà ó âåðñ³ÿõ Windows 2000 Advanced Server ³ Windows 2000 Data Center äëÿ ïðîöåñîð³â x86 ìîæëèâ³ñòü çá³ëüøåííÿ öüîãî ïðîñòîðó äî 3 Ãá. Ùîá âñ³ ïðîöåñè âèêîðèñòîâóâàëè ðîçä³ë äëÿ êîäó òà äàíèõ ðåæèìó êîðèñòóâà÷à ðîçì³ðîì 3 Ãá, à ðîçä³ë äëÿ êîäó òà äàíèõ ðåæèìó ÿäðà - îáñÿãîì 1 Ãá, Âè ïîâèíí³ äîäàòè êëþ÷/3GB äî ïîòð³áíîãî çàïèñó â ñèñòåìíîìó ôàéë³ Boot.ini. ßê âèãëÿäຠàäðåñíèé ïðîñò³ð ïðîöåñó â öüîìó âèïàäêó, ïîêàçàíî ó ãðàô³ "32-ðîçðÿäíà Windows 2000 (íà x86 ç êëþ÷åì / 3GB) "òàáëèö³ 13-1.

    Çìåíøåííÿ ðîçä³ëó äëÿ êîäó òà äàíèõ ðåæèìó êîðèñòóâà÷à äî 2 Ãá â 64-ðîçðÿäíî¿ Windows 2000

    Áàãàòî ðîçðîáíèê áàæຠÿêíàéøâèäøå ïåðåíåñòè ñâî¿ 32-ðàçðíäíèå ïðîãðàìè â 64-ðîçðÿäíó ñåðåäó. Àëå ó âèõ³äíîìó êîä³ áóäü-ÿêèõ ïðîãðàì ïîâíî òàêèõ ì³ñöü, äå ïåðåäáà÷àºòüñÿ, ùî ïîêàæ÷èêè º 32-ðîçðÿäíèìè çíà÷åííÿìè. Ïðîñòà ïåðåêîìï³ëÿö³ÿ âèõ³äíîãî êîäó ïðèçâåäå äî ïîìèëêîâîãî óñ³êàííÿ ïîêàæ÷èê³â ³ íåêîðåêòíîãî ïîâîäæåííÿ äî ïàì'ÿò³. Îäíàê, ÿêùî á ñèñòåìà ÿêîñü ãàðàíòóâàëà, ùî ïàì'ÿòü í³êîëè íå áóäå âèä³ëÿòèñÿ çà àäðåñàìè âèùå 0x00000000 7FFFFFFF, äîäàòîê ïðàöþâàëî á íîðìàëüíî. ² óñ³êàííÿ 64-ðîçðÿäíî¿ àäðåñè äî 32-ðîçðÿäíîãî, êîëè ñòàðø³ 33 á³òè ð³âí³ 0, íå ñòâîðèëî á í³ÿêèõ ïðîáëåì. Òàê îñü, ñèñòåìà äຠòàêó ãàðàíò³þ ï³ä ÷àñ çàïóñêó ïðîãðàìè â "àäðåñíî¿ ï³ñî÷íèö³ "(address space sandbox), ÿêà îáìåæóº êîðèñíå àäðåñíå ïðîñò³ð ïðîöåñó äî íèæí³õ 2 Ãá. Çà çàìîâ÷óâàííÿì, êîëè Âè çàïóñêàºòå 64-ðîçðÿäíå äîäàòîê, ñèñòåìà ðåçåðâóº âñ³ àäðåñíèé ïðîñò³ð ðåæèìó êîðèñòóâà÷à, ïî÷èíàþ÷è ç 0x0000000 80000000, ùî çàáåçïå÷óº âèä³ëåííÿ ïàì'ÿò³ âèêëþ÷íî â íèæí³õ 2 Ãá 64-ðîçðÿäíîãî àäðåñíîãî ïðîñòîðó. Öå ³ º "àäðåñíà ï³ñî÷íèöÿ". Á³ëüøîñò³ äîäàòê³â öüîãî ïðîñòîðó á³ëüø í³æ äîñòàòíüî. À ùîá 64-ðîçðÿäíå ïðîãðàìà âèçíà÷ຠàäðåñóâàòèñÿ äî âñüîãî ðîçä³ëó ðåæèìó êîðèñòóâà÷à (îáñÿãîì 4 Òá), éîãî ñë³ä ñêîìïîíóâàòè ç êëþ÷åì/LARGEADDRESSAWARE.

    Çàêðèòèé ðîçä³ë ðîçì³ðîì 64 Êá (ò³ëüêè Windows 2000)

    Öåé ðîçä³ë çàáëîêîâàíèé, ³ áóäü-ÿêà ñïðîáà çâåðíåííÿ äî íüîãî ïðèçâîäèòü äî ïîðóøåííÿ äîñòóïó Microsoft ðåçåðâóº öåé ðîçä³ë ñïåö³àëüíî, ùîá ñïðîñòèòè âíóòð³øíþ ðåàë³çàö³þ îïåðàö³éíî¿ ñèñòåìè. Çãàäàéòå, êîëè Á. ïåðåäàºòå Windows-ôóíêö³¿ àäðåñó áëîêó ïàì'ÿò³ ³ éîãî ðîçì³ð, òî âîíà (ôóíêö³ÿ), ïåðø ÷ñì ïðèñòóïèòè äî ðîáîòè, ïåðåâ³ðÿº, ÷è ä³éñíèé äàíèé áëîê. Ïðèïóñòèìî, Âè íàïèñàëè êîä:

    BYTE bBuf [70000]; DWORD dwNumBytesWritTen; WriteProcessMemory (GetCurrentProcess (), (PVOID) 0x7FFEEE90, bBuf, sizeof (bBuf), & dwNumBytesWntten);

     âèïàäêó ôóíêö³é òèïó WriteProcessMemory îáëàñòü ïàì'ÿò³, äî ÿêî¿ ïåðåäáà÷àºòüñÿ çàïèñ, ïåðåâ³ðÿºòüñÿ êîäîì, ùî ïðàöþº â ðåæèì³ ÿäðà, - ò³ëüêè â³í ìຠïðàâî çâåðòàòèñÿ äî ïàì'ÿò³, ùî âèä³ëÿºòüñÿ ï³ä êîä ³ äàí³ ðåæèìó ÿäðà (â 32-ðîçðÿäíèõ ñèñòåìàõ - çà àäðåñàìè âèùå 0x80000000). ßêùî çà ö³ºþ àäðåñîþ º ïàì'ÿòü, âèêëèê WriteProcessMemory, ïîêàçàíèé âèùå, áëàãîïîëó÷íî çàïèøå äàí³ â òó îáëàñòü ïàì'ÿò³, ÿêà, ïî ³äå¿, äîñòóïíà ò³ëüêè êîäó, ùî ïðàöþº â ðåæèì³ ÿäðà. Ùîá çàïîá³ãòè öüîìó ³ â òîé æå ÷àñ ïðèñêîðèòè ïåðåâ³ðêó òàêèõ îáëàñòåé ïàì'ÿò³, Microsoft ââàæàëà çà êðàùå çàáëîêóâàòè öåé ðîçä³ë, ³ òîìó áóäü-ÿêà ñïðîáà ÷èòàííÿ àáî çàïèñó â íüîìó çàâæäè âèêëèêຠïîðóøåííÿ äîñòóïó.

    Ðîçä³ë äëÿ êîäó òà äàíèõ ðåæèìó ÿäðà (Windows 2000 ³ Windows 98)

     öåé ðîçä³ë ì³ñòèòüñÿ êîä îïåðàö³éíî¿ ñèñòåìè, ó òîìó ÷èñë³ äðàéâåðè ïðèñòðî¿â ³ êîä íèçüêîð³âíåâîãî óïðàâë³ííÿ ïîòîêàìè, ïàì'ÿòòþ, ôàéëîâîþ ñèñòåìîþ, ìåðåæåâèé ï³äòðèìêîþ. Âñå, ùî çíàõîäèòüñÿ òóò, º áóäü-ÿêîìó ïðîöåñó. Ó Windows 2000 ö³ êîìïîíåíòè ïîâí³ñòþ çàõèùåí³. Ïîò³ê, ÿêèé ñïðîáóº çâåðíóòèñÿ ïî îäí³ºþ ç àäðåñ ïàì'ÿò³ â öüîìó ðîçä³ë³, âèêëè÷å ïîðóøåííÿ äîñòóïó, à öå ïðèçâåäå äî òîãî, ùî ñèñòåìà â ê³íöåâîìó ðàõóíêó ïðîñòî çàêðèº éîãî ïðîãðàìó. 64-ðîçðÿäíî¿ Windows 2000 ðîçä³ë ðåæèìó êîðèñòóâà÷à (4 Òá) âèãëÿäຠíåïðîïîðö³éíî ìàëèì â ïîð³âíÿíí³ ç 16 777 212 Òá, â³äâåäåíèìè ï³ä ðîçä³ë äëÿ êîäó òà äàíèõ ðåæèìó ÿäðà. Ñïðàâà íå â òîìó, ùî ÿäðà òàê âæå íåîáõ³äíî âñå öå â³ðòóàëüíèé ïðîñò³ð, a ïðîñòî 64-ðîçðÿäíå àäðåñíèé ïðîñò³ð íàñò³ëüêè âåëèêèé, ùî éîãî á³ëüøà ÷àñòèíà íå çàä³ÿíà. Ñèñòåìà äîçâîëÿº íàøèì ïðîãðàìàì âèêîðèñòîâóâàòè 4 Òá, à ÿäðà - ñò³ëüêè, ñê³ëüêè éîìó ïîòð³áíî. Äî ùàñòÿ, áóäü-ÿê³ âíóòð³øí³ ñòðóêòóðè äàíèõ äëÿ óïðàâë³ííÿ íåçàä³ÿíèìè ÷àñòèíàìè ðîçä³ëó äëÿ êîäó òà äàíèõ ðåæèìó ÿäðà íå ïîòð³áí³.

    Ðåã³îíè â àäðåñíîìó ïðîñòîð³

    Àäðåñíå ïðîñò³ð, ùî âèä³ëÿºòüñÿ ïðîöåñó â ìîìåíò ñòâîðåííÿ, ïðàêòè÷íî âñ³ â³ëüíî (íåçàðåçåðâ³ðîâàíî). Òîìó, ùîá ñêîðèñòàòèñÿ ÿêîþ-íåáóäü éîãî ÷àñòèíîþ, ïîòð³áíî âèä³ëèòè â íüîìó ïåâí³ ðåã³îíè ÷åðåç ôóíêö³þ WirtualAlloc.Îïåðàö³ÿ âèä³ëåííÿ ðåã³îíó íàçèâàºòüñÿ ðåçåðâóâàííÿì (reserving). Ïðè ðåçåðâóâàííÿ ñèñòåìà îáîâ'ÿçêîâî âèð³âíþº ïî÷àòîê ðåã³îíó ç óðàõóâàííÿì òàê çâàíî¿ øîðñòêîãî âèä³ëåííÿ ïàì'ÿò³ (allocation granularity). Îñòàííÿ âåëè÷èíà â ïðèíöèï³ çàëåæèòü â³ä òèïó ïðîöåñîðà, àëå äëÿ ïðîöåñîð³â, ùî ðîçãëÿäàþòüñÿ â êíèç³ (x86, 32 - ³ 64-ðîçðÿäíèõ Alpha ³ IA-64), - âîíà îäíàêîâà ³ ñòàíîâèòü 64 Êá.Ðåçåðâ³ðóÿ ðåã³îí â àäðåñíîìó ïðîñòîð³, ñèñòåìà çàáåçïå÷óº ùå é êðàòí³ñòü ðîçì³ðó ðåã³îíó ðîçì³ðó ñòîð³íêè. Òàê íàçèâàºòüñÿ îäèíèöÿ îáñÿãó ïàì'ÿò³, ùî âèêîðèñòîâóºòüñÿ ñèñòåìîþ ïðè óïðàâë³íí³ ïàì'ÿòòþ. ßê ³ øîðñòêîãî âèä³ëåííÿ ðåñóðñ³â, ðîçì³ð ñòîð³íêè çàëåæèòü â³ä òèïó ïðîöåñîðà Çîêðåìà, äëÿ ïðîöåñîð³â x86 â³í äîð³âíþº 4 Êá, à äëÿ Alpha (ï³ä êåðóâàííÿì ÿê 32-ðîçðÿäíî¿, òàê ³ 64-ðàçÿäíîé Windows 2000) - 8 Êá. ²íîä³ ñèñòåìà ñàìà ðåçåðâóº äåÿê³ ðåã³îíè àäðåñíîãî ïðîñòîðó â ³íòåðåñàõ.Åñë³ Âè ñïðîáóºòå çàðåçåðâóâàòè ðåã³îí ðîçì³ðîì 10 Êá, ñèñòåìà àâòîìàòè÷íî îêðóãëèòè çàäàíèé Âàìè çíà÷åííÿ äî á³ëüøî¿ êðàòíî¿ âåëè÷èíè. À çòî çíà÷èò ÷òî íà x86 áóäå âèä³ëåíèé ðåã³îí ðîçì³ðîì 12 Êá, à íà Alpha - 16 Êá.Êîãäà çàðåçåðâîâàíèé ðåã³îí àäðåñíîãî ïðîñòîðó ñòຠíå ïîòð³áåí, íåþ ñë³ä ïîâåðíóòè â çàãàëüí³ ðåñóðñè ñ³ñòåìè.Åòà îïåðàö³ÿ - çâ³ëüíåííÿ (releasing) ðåã³îíó -- çä³éñíþºòüñÿ âèêëèêîì ôóíêö³¿ VirtualFree

    Ïåðåäà÷à ðåã³îíó ô³çè÷íî¿ ïàì'ÿò³

    Ùîá çàðåçåðâîâàíèé ðåã³îí àäðåñíîãî ïðîñòîðó ìîæíà áóëî âèêîðèñòîâóâàòè, Âè ïîâèíí³ âèä³ëèòè ô³çè÷íó ïàì'ÿòü ³ ñïðîåêòóâàòè ¿¿ íà öåé ðåã³îí. Òàêà îïåðàö³ÿ íàçèâàºòüñÿ ïåðåäà÷åþ ô³çè÷íî¿ ïàì'ÿò³ (committing physical storage). Ùîá ïåðåäàòè ô³çè÷íó ïàì'ÿòü çàðåçåðâîâàíîãî ðåã³îíó, Âè çâåðòàºòåñÿ âñå äî ò³º¿ æ ôóíêö³¿ VirtualAlloc.Ïåðåäàâàÿ ô³çè÷íó ïàì'ÿòü ðåã³îíàõ, íåìຠïîòðåáè â³äâîäèòè ¿¿ ö³ëîãî ðåã³îíó. Ìîæíà, ñêàæ³ìî, çàðåçåðâóâàòè ðåã³îí ðîçì³ðîì 64 Êá ³ íåðåäàòü ô³çè÷íó ïàì'ÿòü ò³ëüêè éîãî äðóãî¿ ³ ÷åòâåðòî¿ ñòîð³íîê. Êîëè ô³çè÷íà ïàì'ÿòü, ïåðåäàíà çàðåçåðâîâàíîãî ðåã³îíó, á³ëüøå íå ïîòð³áíà, ¿¿ çâ³ëüíÿþòü. Öÿ îïåðàö³ÿ - ïîâåðíåííÿ ô³çè÷íî¿ ïàì'ÿò³ (decommitting physical storage) - âèêîíóºòüñÿ âèêëèêîì ôóíêö³¿ VirtualFree.  

    Ô³çè÷íó ïàì'ÿòü ñë³ä ðîçãëÿäàòè ÿê äàí³, ùî çáåð³ãàþòüñÿ â äèñêîâîìó ôàéë³ ç ñòîð³íêîâî¿ ñòðóêòóðîþ. Òîìó, êîëè ïðîãðàìà ïåðåäຠô³çè÷íó ïàì'ÿòü ÿêîãî-íåáóäü ðåã³îíó àäðåñíîãî ïðîñòîðó (âèêëèêàþ÷è VirtualAttoc), âîíà íà Íàñïðàâä³ âèä³ëÿºòüñÿ ç ôàéëó, ðîçì³ùåíîãî íà æîðñòêîìó äèñêó. Ðîçì³ð ñòîð³íêîâîãî ôàéëó â ñèñòåì³ - ãîëîâíèé ôàêòîð, ùî âèçíà÷ຠê³ëüê³ñòü ô³çè÷íî¿ ïàì'ÿò³, äîñòóïíå äîäàòê³â. Ðåàëüíèé îáñÿã îïåðàòèâíî¿ ïàì'ÿò³ ìຠíàáàãàòî ìåíøå çíà÷åííÿ. Ô³çè÷íà ïàì'ÿòü â ñòîð³íêîâîìó ôàéë³ íå çáåð³ãàºòüñÿ Windows 2000 ìîæå âèêîðèñòîâóâàòè äåê³ëüêà ñòîð³íêîâèõ ôàéë³â, ³, ÿêùî âîíè ðîçòàøîâàí³ íà ð³çíèõ ô³çè÷íèõ äèñêàõ, îïåðàö³éíà ñèñòåìà ïðàöþº íàáàãàòî øâèäøå, îñê³ëüêè çäàòíà âåñòè çàïèñ îäíî÷àñíî íà äåê³ëüêîõ äèñêàõ. Ùîá äîäàòè àáî âèäàëèòè ñòîð³íêîâèé ôàéë, â³äêðèéòå â Control Panel àïëåò System, âèáåð³òü âêëàäêó Advanced ³ êëàöí³òü êíîïêó Performance Options. Ía åêðàí³ ç'ÿâèòüñÿ òàêå ä³àëîãîâå â³êíî.

    Îäíàê ñèñòåìà 䳺 íå òàê, ³íàêøå äëÿ çàâàíòàæåííÿ òà ï³äãîòîâêè ïðîãðàìè äî çàïóñêó éøëî á íàäòî áàãàòî âðåìåí³.Ïð³ çàïóñêó ïðîãðàìè ñèñòåìà â³äêðèâຠéîãî âèêîíóâàíèé ôàéë ³ âèçíà÷ຠîáñÿã êîäó ³ äàíèõ. Ïîò³ì ðåçåðâóº ðåã³îí àäðåñíîãî ïðîñòîðó ³ ïîçíà÷àº, ùî ô³çè÷íà ïàì'ÿòü, ïîâ'ÿçàíà ç öèì ðåã³îíîì, - ñàì ÅÕÅ-ôàéë, òîáòî çàì³ñòü âèä³ëåííÿ ÿêîãîñü ïðîñòîðó ç ñòîð³íêîâîãî ôàéëó ñèñòåìà âèêîðèñòîâóº ³ñòèííå âì³ñò, àáî îáðàç (image) ÅÕÅ-ôàéëà ÿê çàðåçåðâîâàíèé ðåã³îí àäðåñíîãî ïðîñòîðó ïðîãðàìè. Çàâäÿêè öüîìó ïðîãðàìà çàâàíòàæóºòüñÿ äóæå øâèäêî, à ðîçì³ð ñòîð³íêîâîãî ôàéëó âäàºòüñÿ ïîì³òíî çìåíøèòè. Îáðàç âèêîíóâàíîãî ôàéëó (ò. e. EXE-àáî DLL-ôàéë), ðîçì³ùåíèé íà æîðñòêîìó äèñêó ³ âæèâàºòüñÿ ÿê ô³çè÷íà ïàì'ÿòü äëÿ òîãî ÷è ³íøîãî ðåã³îíó àäðåñíîãî ïðîñòîðó, íàçèâàºòüñÿ ùî ïðîåêòóþòüñÿ â ïàì'ÿòü ôàéëîì (memory-mapped file). Ïðè çàâàíòàæåíí³ EXF, àáî DLL ñèñòåìà àâòîìàòè÷íî ðåçåðâóº ðåã³îí àäðåñíîãî ïðîñòîðó ³ ïðîåêòóº íà íüîãî îáðàç ôàéëó. Êð³ì öüîãî, ñèñòåìà äîçâîëÿº (çà äîïîìîãîþ íàáîðó ôóíêö³é) ïðîåêòóâàòè íà ðåã³îí àäðåñíîãî ïðîñòîðó ùå é ôàéëè äàíèõ

    Êîëè EXE-àáî DLL-ôàéë çàâàíòàæóºòüñÿ ç äèñêåòè Windows 2000 ö³ëêîì êîï³þþòü éîãî â îïåðàòèâíó ïàì'ÿòü, à â ñòîð³íêîâîìó ôîòî âèä³ëÿþòü òàêèé ïðîñò³ð, ùîá ó íüîìó ì³ã âì³ñòèòèñÿ îáðàç çàâàíòàæåííÿ. ßêùî íàâàíòàæåííÿ íà îïåðàòèâíó ïàì'ÿòü â ñèñòåì³ íåâåëèêà, EXE-àáî DLLôàéë çàâæäè çàïóñêàºòüñÿ áåçïîñåðåäíüî ç îïåðàòèâíî¿ ïàìÿò³.Òàê çðîáëåíî äëÿ êîðåêòíî¿ ðîáîòè ïðîãðàì óñòàíîâêè. Çâè÷àéíî ïðîãðàìà óñòàíîâêè çàïóñêàºòüñÿ ç ïåðøîãî äèñêåòè, ïîò³ì ïî ÷åðç³ âñòàâëÿþòüñÿ íàñòóïí³ äèñêè, íà ÿêèõ, âëàñíå, ³ ì³ñòèòüñÿ âñòàíîâëþºòüñÿ äîäàòîê. ßêùî ñèñòåì³ çíàäîáèòüñÿ ÿêèéñü ôðàãìåíò êîäó EXE-àáî DLLìîäóëÿ ïðîãðàìè óñòàíîâêè, íà ïîòî÷íîìó äèñêåò³ éîãî, çâè÷àéíî æ, íåìàº. Àëå, îñê³ëüêè ñèñòåìà ñêîï³þâàëà ôàéë â îïåðàòèâíó ïàì'ÿòü (³ ïåðåäáà÷èëà äëÿ íüîãî ì³ñöå â ñòîð³íêîâîìó ôîòî), ó íå¿ íå âèíèêíå ïðîáëåì ç äîñòóïîì äî ïîòð³áíî¿ ÷àñòèíè êîäó ïðîãðàìè óñòàíîâêè

    Àòðèáóòè çàõèñòó

    Îêðåìèì ñòîð³íîê ô³çè÷íî¿ ïàì'ÿò³ ìîæíà ïðèñâî¿òè ñâî¿ àòðèáóòè çàõèñòó ïîêàçàí³ â íàñòóïí³é òàáëèö³.        

    Àòðèáóò çàõèñòó         

    Îïèñ             

    PAGE_NOACCESS         

    Ñïðîáè ÷èòàííÿ, çàïèñó àáî âèêîíàííÿ âì³ñòó ïàì'ÿò³   íà ö³é ñòîð³íö³ âèêëèêàþòü ïîðóøåííÿ äîñòóïó             

    PAGE_READONLY         

    Ñïðîáè çàïèñó àáî âèêîíàííÿ âì³ñòó ïàì'ÿò³ íà ö³é   ñòîð³íö³ âèêëèêàþòü ïîðóøåííÿ äîñòóïó             

    PAGE_READWRITE         

    Ñïðîáè âèêîíàííÿ âì³ñòó ïàì'ÿò³ íà ö³é ñòîð³íö³   âèêëèêàþòü ïîðóøåííÿ äîñòóïó             

    PAGE_EXECUTE         

    Ñïðîáè ÷èòàííÿ àáî çàïèñó íà ö³é ñòîð³íö³ âèêëèêàþòü   ïîðóøåííÿ äîñòóïó             

    PAGE_EXECUTE_READ         

    Ñïðîáè çàïèñó íà ö³é ñòîð³íö³ âèêëèêàþòü ïîðóøåííÿ äîñòóïó                

    PAGE_EXECUTE_READWRITE         

    Íà ö³é ñòîð³íö³ ìîæëèâ³ áóäü-ÿê³ îïåðàö³¿             

    PAGE_WRITECOPY         

    Ñïðîáè âèêîíàííÿ âì³ñòó ïàì'ÿò³ íà ö³é ñòîð³íö³   âèáóâàþòü ïîðóøåííÿ äîñòóïó, ñïðîáà çàïèñó ïðèçâîäèòü äî òîãî, ùî ïðîöåñó   íàäàºòüñÿ "îñîáèñòà" êîï³ÿ äàíî¿ ñòîð³íêè             

    PAGE_EXECUTE_WRITECOPY         

    Íà ö³é ñòîð³íö³ ìîæëèâ³ áóäü-ÿê³ îïåðàö³¿, ñïðîáà çàïèñó   ïðèçâîäèòü äî òîãî, ùî ïðîöåñó íàäàºòüñÿ "îñîáèñòà" êîï³ÿ äàíî¿   ñòîð³íêè     

    Çàõèñò òèïó "êîï³þâàííÿ ïðè çàïèñ³"

    Àòðèáóòè çàõèñòó, ïåðåðàõîâàí³ â ïîïåðåäí³é òàáëèö³, äîñèòü çðîçóì³ë³, êð³ì äâîõ îñòàíí³õ: PAGE_WRITECOPY ³ PAGE_EXECUTE_WRITECOPY. Âîíè ïðèçíà÷åí³ ñïåö³àëüíî äëÿ åêîíîìíîãî âèòðà÷àííÿ îïåðàò³âíîé ïàì'ÿò³ ³ ì³ñöÿ â ñòîð³íêîâîìó ôàéë³. Windows ï³äòðèìóº ìåõÿí³çì, ùî äîçâîëÿº äâîì ³ á³ëüøå ïðîöåñàì ðîçä³ëÿòè îäèí ³ òîé æå áëîê ïàì'ÿò³. Íàïðèêëàä, ÿêùî Âè çàïóñò³òü 10 ïðèì³ðíèê³â ïðîãðàìè Notepad, âñ³ åêçåìïëÿðè áóäóòü ñï³ëüíî âèêîðèñòîâóâàòè îäí³ é ò³ æ ñòîð³íêè ç êîäîì ³ äàíèìè ö³º¿ ïðîãðàìè. ² çâè÷àéíî í³êÿê³õ ïðîáëåì íå âèíèêຠ- ïîêè ïðîöåñè í³÷îãî íå çàïèñóþòü ó çàãàëüí³ áëîêè ïàì'ÿò³. Ò³ëüêè óÿâ³òü, ùî ä³ÿëîñÿ á ó ñèñòåì³, ÿêùî ïîòîêè ç ð³çíèõ ïðîöåñ³â ïî÷àëè á îäíî÷àñíî çàïèñóâàòè â îäèí ³ òîé æå áëîê ïàì'ÿò³!

    Ùîá çàïîá³ãòè öåé õàîñ, îïåðàö³éíà ñèñòåìà ïðèâëàñíþº ñï³ëüíîãî áëîêó ïàì'ÿò³ àòðèáóò çàõèñòó "êîï³þâàííÿ ïðè çàïèñ³" (copy-on-write). Êîëè ïîò³ê â îäíîìó ïðîöåñ³ ñïðîáóº ùî-íåáóäü çàïèñàòè â çàãàëüíèé áëîê ïàì'ÿò³, ó ñïðàâó òóò æ òàêè âñòóïèòü ñèñòåìà ³ âèêîíຠíàñòóïí³ îïåðàö³¿:

    Çíàéäå â³ëüíó ñòîð³íêó â îïåðàòèâí³é ïàì'ÿò³. Çàóâàæòå, ùî ïðè ïåðø³é ïðîåêòóâàíí³ ìîäóëÿ íà àäðåñíèé ïðîñò³ð ïðîöåñó öÿ ñòîð³íêà áóäå ñêîï³éîâàíà íà îäíó ç³ ñòîð³íîê, âèä³ëåíèõ ó ñòîð³íêîâîìó ôàéë³. Îñê³ëüêè ñèñòåìà âèä³ëÿº ïîòð³áíå ïðîñò³ð ó ñòîð³íêîâîìó ôîòî ùå ïðè ïåðøîìó ïðîåêòóâàíí³ ìîäóëÿ, çáî¿ íà öüîìó åòàï³ ìàëîéìîâ³ðí³.

    ñêîï³þº ñòîð³íêó ç äàíèìè, ÿê³ ïîò³ê íàìàãàºòüñÿ çàïèñàòè â çàãàëüíèé áëîê ïàì'ÿò³, íà â³ëüíó ñòîð³íêó îïåðàòèâíî¿ ïàì'ÿò³, îòðèìàíó íà åòàï³ 1. Îñòàííüîþ ïðèâëàñíþºòüñÿ àòðèáóò çàõèñòó PAGE_WRITECOPY àáî PAGE_EXECUTE_WRITECOPY. Àòðèáóò çàõèñòó ³ âì³ñò âèõ³äíî¿ ñòîð³íêè íå çì³íþþòüñÿ.

    Ïîêàçàòè â³ðòóàëüíèé àäðåñó ö³º¿ ñòîð³íêè â ïðîöåñ³ íà íîâó ñòîð³íêó â îïåðàòèâí³é ïàì'ÿò³.

    Êîëè ñèñòåìà âèêîíຠö³ îïåðàö³¿, ïðîöåñ îòðèìຠñâîþ êîï³þ ïîòð³áíî¿ ñòîð³íêè ïàì'ÿò³.

    Êð³ì òîãî, ïðè ðåçåðâóâàííÿ àäðåñíîãî ïðîñòîðó àáî ïåðåäà÷³ ô³çè÷íî¿ ïàì'ÿò³ ÷åðåç VirtualAlloc íå ìîæíà âêàçóâàòè àòðèáóòè PAGE_WRITECOPY àáî PAGE_EXECUTE_WRITECOPY. ²íàêøå âèêëèê VirtualAlloc äàñòü ïîìèëêó, a GetLastError ïîâåðíå êîä ERROR_INVALID_PARAMETER. Ñïðàâà â òîìó, ùî ö³ äâà àòðèáóòè âèêîðèñòîâóþòüñÿ îïåðàö³éíîþ ñèñòåìîþ, ò³ëüêè êîëè âîíà ïðîåêòóº îáðàçè EXE-àáî DLL-ôàéë³â.        

    Áàçîâèé àäðåñà         

    Òèï         

    Ðîçì³ð         

    Áëîêè         

    Àòðèáóò (è) çàõèñòó         

    Îïèñ             

    00000000         

    Free         

    65536                                        

    00010000         

    Private         

    4096         

    1         

    -RW-                      

    00011000         

    Free         

    G1440                                        

    00020000         

    Private         

    4096         

    1         

    -RW-                      

    000? 1000         

    Free         

    61440                                        

    00030000         

    Private         

    1048576         

    3         

    -HW-         

    Ñòåê ïîòîêó             

    00130000         

    Private         

    1048576         

    2         

    -RW-                      

    00230000         

    Mapped         

    65536         

    2         

    -RW-                      

    00240000         

    Mapped         

    90112         

    1         

    -R-         

    DeviceHarddiskVolume1WINN7system32unicode.nls                

    00256000         

    Free         

    40960                                        

    00260000         

    Mapped         

    208896         

    1         

    -R-         

    DeviceHarddiskVolume1WINNTsystem32locale.nIs                

    00293000         

    Free         

    53248                                        

    002A0000         

    Happed         

    266240         

    1         

    -R-         

    PeviccHarddiskVolume1WINNTsystem32sortkey.nls                

    002E1000         

    Free         

    61440                                        

    002F0000         

    Mapped         

    16384         

    1         

    -R-         

    DeviceHarddiskVolume1WINNTsystem32sorttbls.nls                

    002F4000         

    Free         

    49152                                        

    00300000         

    Mapped         

    819200         

    4         

    ER-                      

    0003Ñ8000         

    Free         

    229376                                        

    00400000         

    Image         

    106496         

    5         

    ERWC         

    Ç CDx86Debug14_VMMap.åõå             

    0041A000         

    Free         

    24576                                        

    00420000         

    Mapped         

    274432         

    1         

    -R-                      

    00463000         

    Free         

    53248                                        

    00470000         

    Mapped         

    3145728         

    2         

    ER                      

    00770000         

    Private         

    4096         

    1         

    -RW-                      

    00771000         

    Free         

    61440                                        

    00780000         

    Private         

    4096         

    1         

    -RW-                      

    00781000         

    Free         

    61440                                        

    00790000         

    Private         

    65536         

    2         

    -RW-                      

    007A0000         

    Mapped         

    8192         

    1         

    -R-         

    DeviceHarddiskVolume1WINNTsystem32ctype.nls                

    007À2000         

    Free         

    1763893248                                        

    699D0000         

    Image         

    45056         

    4         

    ERWC         

    C: WINNTSystpm32PSAPI   dll             

    6990Â000         

    Free         

    238505984                                        

    77D50000         

    Image         

    450560         

    4         

    ERWC         

    Ñ: WINNTsystem32RPCRT4   DLL             

    770ÂÅ000         

    Free         

    8192                                        

    770Ñ0000         

    Image         

    344064         

    5         

    ERWC         

    Ñ: WINNTsystem32ADVAPI32   dll             

    77Å14000         

    Free         

    49152                                        

    77E20000         

    Image         

    401408         

    4         

    ERWC         

    C: WINNTsystem32USER32   dll             

    77Å82000         

    Free         

    57344                                        

    77Å90000         

    Image         

    720896         

    5         

    ERWC         

    Ç WINNTsystem32KERNEL32.dll                

    77F40000         

    Image         

    241664         

    4         

    ERWC         

    Ç   WINKTsystem32GUI32 DLL             

    77F7Â000         

    Free         

    20480                                        

    77FB0000         

    image         

    483328         

    5         

    ERWC         

    Ç   WINNTSystem32ntdll.dll             

    77FF000         

    Free         

    40960                                        

    78000000         

    Image         

    290816         

    6         

    bMWC         

    Ç   WINNTsystem32MSVCRI.dll             

    78047000         

    Free         

    124424192                                        

    7F6F0000         

    Mapped         

    1048576         

    2         

    ER -                      

    7F7F0000         

    Free         

    8126464                                        

    7FFB0000         

    Mapped         

    147456         

    1         

    -R -                      

    7FFD4000         

    Free         

    40960                                        

    7FFDE000         

    Private         

    4096         

    1         

    ERW-                      

    7FFDF000         

    Private         

    4096         

    1         

    ERW-                      

    7FFE0000         

    Private         

    65536         

    2         

    -R -              

    Òàáëèöÿ 13-2. Çðàçîê êàðòè àäðåñíîãî ïðîñòîðó ïðîöåñó â Windows 2000 íà 32-ðîçðÿäíèé ïðîöåñîð òèïó x86

    ϳä äðóãîìó ïîë³ â³äîáðàæàºòüñÿ òèï ðåã³îíó Free (â³ëüíèé), Private (çàêðèòèé), Image (îáðàç) àáî Mapped (ùî ïðîåêòóºòüñÿ). Ö³ òèïè îïèñàí³ â ö³é òàáëèö³,        

    Òèï         

    Îïèñ             

    Free         

    Öåé ä³àïàçîí â³ðòóàëüíèõ àäðåñ íå ï³äòâåðäæåíî í³ ç   ÿêèì òèïîì ô³çè÷íî¿ ïàì'ÿò³. Éîãî àäðåñíèé ïðîñò³ð íå çàðåçåðâîâàíî,   äîäàòîê ìîæå çàðåçåðâóâàòè ðåã³îí çà âêàçàíîþ àäðåñîþ àáî ó áàçîâîìó   áóäü-ÿêîìó ì³ñö³ â ìåæàõ â³ëüíîãî ðåã³îíó             

    Private         

    Öåé ä³àïàçîí â³ðòóàëüíèõ àäðåñ ñîïîñòàâëåí ç   ñòîð³íêîâèì ôàéëîì.             

    Image         

    Öåé ä³àïàçîí â³ðòóàëüíèõ àäðåñ â³ä ïî÷àòêó áóâ   ï³äòâåðäæåíî ÷èíîì ÅÕÅ-àáî DLL-ôàéëó, ïðîåêòîâàíîãî â ïàì'ÿòü, àëå òåïåð,   ìîæëèâî, âæå íåìàº. Íàïðèêëàä, ïðè çàïèñ³ â ãëîáàëüíó çì³ííó ç îáðàçó   ìîäóëÿ ìåõàí³çì ï³äòðèìêè "êîï³þâàííÿ ïðè çàïèñ³" âèä³ëÿº   â³äïîâ³äíó ñòîð³íêó ïàì'ÿò³ ç ñòîð³íêîâîãî ôàéëó, à íå îðèã³íàë îáðàçó   ôàéëó.             

    Mapped         

    Öåé ä³àïàçîí â³ðòóàëüíèõ àäðåñ â³ä ïî÷àòêó áóâ   ñîïîñòàâëåí ç ôàéëîì äàíèõ, ùî ïðîåêòóþòüñÿ â ïàì'ÿòü, àëå òåïåð, ìîæëèâî, âæå   íåìàº. Íàïðèêëàä, ôàéë äàíèõ ì³ã áóòè ñïðîåêòîâàíà ç âèêîðèñòàííÿì ìåõàí³çìó   ï³äòðèìêè "êîï³þâàííÿ ïðè çàïèñó". Áóäü-ÿê³ îïåðàö³¿ çàïèñó â öåé   ôàéë ïðèâåäóòü äî òîãî, ùî â³äïîâ³äí³ ñòîð³íêè ïàì'ÿò³ áóäóòü âèä³ëåí³ ç   ñòîð³íêîâîãî ôàéëó, à íå ç âèõ³äíîãî ôàéëó äàíèõ.     

     òðåòüîìó ïîë³ ïîâ³äîìëÿºòüñÿ ðîçì³ð ðåã³îíó â áàéòàõ. Íàïðèêëàä, ñèñòåìà ñïðîåêòóâàëè îáðàç User32.dll çà àäðåñîþ 0x77E20000. Êîëè âîíà ðåçåðâóâàëà àäðåñíèé ïðîñò³ð äëÿ öüîãî îáðàçó, ¿é çíàäîáèëîñÿ 401 408 áàéò³â. ×è íå çàáóäüòå, ùî â òðåòüîìó ïîë³ çàâæäè ì³ñòÿòüñÿ çíà÷åííÿ, êðàòí³ ðîçì³ðîì ñòîð³íêè, õàðàêòåðíîìó äëÿ äàíîãî ïðîöåñîðà (4096 áàéò³â äëÿ x86). Ó ÷åòâåðòîìó ïîëå ïîêàçàíî ê³ëüê³ñòü áëîê³â ó çàðåçåðâîâàíå ðåã³îí³. Áëîê - öå íåðîçðèâíèé ãðóïà ñòîð³íîê ç îäíàêîâèìè àòðèáóòàìè çàõèñòó, ïîâ'ÿçàíà ç îäíèì ³ òèì æå òèïîì ô³çè÷íî¿ ïàì'ÿò³. Äëÿ â³ëüíèõ ðåã³îí³â öå çíà÷åííÿ çàâæäè äîð³âíþº 0, òîìó ùî ¿ì íå ïåðåäàºòüñÿ ô³çè÷íà ïàì'ÿòü. (Òîìó ó ÷åòâåðò³é ãðàô³ í³ÿêèõ äàíèõ äëÿ â³ëüíèõ ðåã³îí³â íå íàâîäèòüñÿ.) Àëå äëÿ çàéíÿòèõ ðåã³îí³â öå çíà÷åííÿ ìîæå êîëèâàòèñÿ â ìåæàõ â³ä 1 äî ìàêñèìóìó (éîãî îá÷èñëþþòü ïîä³ëîì ðîçì³ðó ðåã³îíó íà ðîçì³ð ñòîð³íêè). Ñêàæ³ìî, ó ðåã³îíó, ùî ïî÷èíàºòüñÿ ç àäðåñè Ox77E20000, ðîçì³ð - 401 408 áàéò³â. Îñê³ëüêè ïðîöåñ âèêîíóºòüñÿ íà ïðîöåñîð³ x86 (ñòîð³íêè ïàì'ÿò³ ïî 4096 áàéò³â), ìàêñèìàëüíà ê³ëüê³ñòü áëîê³â â öüîìó ðåã³îí³ îäíî 98 (401 408/4096); íó à, ñóäÿ÷è ïî êàðò³, â íüîìó ì³ñòèòüñÿ 4 áëîêó.

     ï'ÿòà ïîë³ - àòðèáóòè çàõèñòó ðåã³îíó. Òóò âèêîðèñòîâóþòüñÿ òàê³ ñêîðî÷åííÿ: E - execute (âèêîíàííÿ), R - read (÷èòàííÿ), W - write (çàïèñ), Ñ -- copy-onwrite (êîï³þâàííÿ ïðè çàïèñ³). ßêùî í³ îäèí ç àòðèáóò³â â ö³é ãðàô³ íå âêàçàíèé, ðåã³îí äîñòóïíèé áåç îáìåæåíü. Àòðèáóòè çàõèñòó íå ïðèñâîþþòüñÿ ³ â³ëüíèì ðåã³îíàõ. Êð³ì òîãî, òóò Âè í³êîëè íå ïîáà÷èòå ïðàïîð³â àòðèáóò³â çàõèñòó PAGE_ GUARD àáî PAGE_NOCACHE - âîíè ìàþòü ñåíñ ò³ëüêè äëÿ ô³çè÷íî¿ ïàì'ÿò³, à íå äëÿ çàðåçåðâîâàíîãî àäðåñíîãî ïðîñòîðó. Àòðèáóòè çàõèñòó ïðèñâîþþòüñÿ ðåã³îíàõ ò³ëüêè åôåêòèâíîñò³ ðàäè ³ çàâæäè çàì³ùàþòüñÿ àòðèáóòàìè çàõèñòó, ïðèñâîºíèìè ô³çè÷íî¿ ïàì'ÿò³.

     øîñòîìó (³ îñòàííüîìó) ïîëå êîðîòêî îïèñóºòüñÿ âì³ñò ïîòî÷íîãî ðåã³îíó. Äëÿ â³ëüíèõ ðåã³îí³â âîíî çàâæäè ïóñòå, à äëÿ çàêðèòèõ - çàçâè÷àé ïóñòå

    Áëîêè âñåðåäèí³ ðåã³îí³â

    Ñïðîáóºìî çá³ëüøèòè äåòàë³çàö³þ àäðåñíîãî ïðîñòîðó (â ïîð³âíÿíí³ ç òèì, ùî ïîêàçàíî ó òàáëèö³ 13-2). Íàïðèêëàä, òàáëèöÿ 13-3 ïîêàçóº òó ñàìó êàðòó àäðåñíîãî ïðîñòîðó, àëå â ³íøîìó "ìàñøòàá³": ïî í³é ìîæíà ä³çíàòèñÿ, ç ÿêèõ áëîê³â ñêëàäàºòüñÿ êîæåí ðåã³îí.        

    Áàçîâèé àäðåñà         

    Òèï         

    Ðîçì³ð         

    Áëîêè         

    Àòðèáóò (è) çàõèñòó         

    Îïèñ             

    00000000         

    Free         

    65536                                        

    00010000         

    Private         

    4096         

    1         

    -RW-                      

    00010000         

    Private         

    4096                  

    -RW-                      

    00011000         

    Free         

    61440                                        

    00020000         

    Private         

    4096         

    1         

    -HW-                      

    00020000         

    Private         

    4096                  

    -HW----                      

    00021000         

    Free         

    61440                                        

    00030000         

    Private         

    1048576         

    3         

    -RW-         

    Ñòåê ïîòîêó             

    00030000         

    Reserve         

    905216                  

    -RW-s-                      

    0010D000         

    Private         

    4096                  

    -RW-G-                      

    0010E000         

    Private         

    139264                  

    -RW----                      

    00130000         

    Private         

    1048576         

    ?         

    -RW-                      

    00130000         

    Private         

    36864                  

    -RW----                      

    00139000         

    Reserve         

    1011712                  

    -RW----                      

    00230000         

    Mapped         

    65536         

    2         

    -RW-                      

    00230000         

    Mapped         

    4096                  

    -RW--                      

    00231000         

    Reserve         

    61440                  

    -RW----                      

    00240000         

    Mapped         

    90112         

    1         

    -R -         

    DeviceHarddiskVoluume1WTNNTsystem32unicode.nls                

    00240000         

    Happed         

    90112                  

    R                      

    00256000         

    Free         

    409GO                                        

    00260000         

    Mapped         

    208896         

    1         

    -R -         

    DeviceHarddiskVoluume1WTNNTsystem32locale.nls                

    00260000         

    Mapped         

    208896                  

    -R - ---                      

    00293000         

    Free         

    53248                                        

    002À0000         

    Happed         

    266240         

    1         

    -R -         

    DeviceHarddiskVoluume1WTNNTsystem32sortkey.nls                

    002À0000         

    Mapped         

    266240                  

    -R - ---                      

    002Å1000         

    Free         

    61440                                        

    002F0000         

    Mapped         

    16384         

    1         

    -R-         

    DeviceHarddiskVoluume1WTNNTsystem32sorttbls.nls                

    002F0000         

    Mapped         

    16384                  

    -R - ---                      

    002F4000         

    Free         

    49152                                        

    00300000         

    Mapped         

    819200         

    4         

    ER-                      

    00300000         

    Mapped         

    16384                  

    ÅR - ---                      

    00304000         

    Reserve         

    770048                  

    ER - ---                      

    003C0000         

    Mapped         

    8192                  

    ER - ---                      

    ÎÎ3Ñ2000         

    Reserve         

    24576                  

    ER - ---                      

    ÎÎ3Ñ8000         

    Free         

    229376                                        

    00400000         

    Image         

    106496         

    5         

    ERWC         

    Ñ: CDx86Debug14_VMMap.exe                

    00400000         

    Image         

    4096                  

    -R - ---                      

    00401000         

    Image         

    81920                  

    ÅR - ---                      

    00415000         

    Image         

    4096                  

    -R - ---                      

    00416000         

    Image         

    8192                  

    -RW----                      

    00418000         

    Image         

    8192                  

    -R - ---                      

    0041À000         

    Free         

    24576                                        

    00420000         

    Mapped         

    274432         

    1         

    -R-                      

    00420000         

    Mapped         

    274432                  

    -R----                      

    00463000         

    Free         

    53248                                        

    00470000         

    Mapped         

    3145726         

    2         

    ER -                      

    00470000         

    Mapped         

    274432                  

    ER - ---                      

    004B3000         

    Reserve         

    2871296                  

    ER - ---                      

    00770000         

    Private         

    4096         

    1         

    -RW----                      

    00770000         

    Privale         

    4096                  

    -RW----                      

    00771000         

    Free         

    61440                                        

    00780000         

    Pr ivate         

    4096         

    1         

    -RW----                      

    00780000         

    Private         

    4096                  

    -RW----                      

    00781000         

    Free         

    61440                                        

    00790000         

    Private         

    65536         

    2         

    -RW----                      

    00790000         

    Private         

    20480                  

    -RW----                      

    00795000         

    Reserve         

    45056                  

    -RW----                      

    007À0000         

    Mapped         

    8192         

    1         

    -R - ---         

    DeviceHarddiskVolume1WINNTsystem32ctype.nls                

    007À0000         

    Mapped         

    8192                  

    -R - ---                      

    007A2000         

    Free         

    57344                                        

    007Â0000         

    Private         

    524288         

    2         

    -RW----                      

    007Â0000         

    Private         

    4096                  

    -RW----                      

    007Â1000         

    Reserve         

    520192                  

    -RW----                      

    00830000         

    Free         

    1763311616                                        

    699D0000         

    Image      

    45056         

    4         

    ERWC         

    Ñ: WINNTSystern32PSAPI.dll                

    699D0000         

    Image         

    4096                  

    -R - ---                      

    69901000         

    Image         

    16384                  

    ER----                      

    699D5000         

    Image         

    16384                  

    -RWC ---                      

    699D9000         

    Image         

    8192                  

    -R - ---                      

    699DB000         

    Free         

    238505984                                        

    77D50000         

    Imago         

    450560         

    4         

    ERWC         

    C: WINNTsystem32RPCRT4.DLL                

    77D50000         

    Image         

    4096                  

    -R - ---                      

    77D51000         

    image         

    421888                  

    ER - ---                      

    77DB8000         

    Image         

    409G                  

    -RW----                      

    77DB9000         

    Image         

    20480                  

    -R - ---                      

    77DBE000         

    Free         

    8192                                        

    77DC0000         

    Image         

    344064         

    5         

    ERWC         

    Ñ: WINNTsyatem32ADVAPI32.dll                

    77DC0000         

    Image         

    4096                  

    -R - ---                      

    77DÑ1000         

    Image         

    307200                  

    ER - ---                      

    77Å0Ñ000         

    Image         

    4096                  

    -RW----                      

    77E00000         

    Image         

    4096                  

    -RWC ---                      

    77Å0E000         

    Image         

    24576                  

    -R - ---                      

    77Å14000         

    Free         

    49152                                        

    77E20000         

    Image         

    401408         

    4         

    ERWC         

    Ñ: WINNTsystem32USER32.dll                

    /7Å20000         

    Image         

    4096                  

    -R - ---                      

    77Å21000         

    Image         

    348160                  

    ER - ---                      

    77Å76000         

    Image         

    4096                  

    -RW----                      

    77Å77000         

    Image         

    45056                  

    -R - ---                      

    77Å82000         

    Free         

    57344                                        

    77Å90000         

    Image         

    720896         

    5         

    ERWC         

    Ç   WINNTsystem32KERNEL32.dll             

    77Å90000         

    Image         

    4096                  

    -R - ---                      

    77Å91000         

    Image         

    368640                  

    ER - ---                      

    77ÅÅÂ000         

    Image         

    8192                  

    -RW----                      

    77EED000         

    Image         

    4096                  

    -RWC ---                      

    77ÅÅÅ000         

    Image         

    335872                  

    -R - ---                      

    77F40000         

    Image         

    241664         

    4         

    ERWC         

    Ç   WINNTsystem32GDI32.DLL             

    77F40000         

    Image         

    4096                  

    -R - ---                      

    77F41000         

    Image         

    221184                  

    ER - ---                      

    77F77000         

    Image         

    409

         
     
         
    Ðåôåðàò Áàíê
     
    Ðåôåðàòû
     
    Áåñïëàòíûå ðåôåðàòû
     

     

     

     

     

     

     

     
     
     
      Âñå ïðàâà çàùèùåíû. Reff.net.ua - óêðà¿íñüê³ ðåôåðàòè ! DMCA.com Protection Status