Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«2.Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Windows (Π³Π». 5-7)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 31

Автор ΠœΠ°Ρ€ΠΊ Руссинович

Активизация Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ выполнСния для 32-разрядных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ зависит ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π° /NOEXECUTE= Π² Boot.ini. Π­Ρ‚ΠΈ настройки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Data Execution Prevention, которая открываСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ My Computer, Properties, Advanced, Performance Settings (см. рис. 7–2.) Когда Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ выполнСния Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ настройки DEP, Ρ„Π°ΠΉΠ» Boot.ini модифицируСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° /NOEXECUTE. Бписок Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для этого ΠΊΠ»ΡŽΡ‡Π° ΠΈ ΠΈΡ… описаниС см. Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 7–4. 32-разрядныС прилоТСния, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ выполнСния, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ рССстра HKLM\Software\Microsoft\Windows NT \CurrentVersion\AppCompatFlags\Layers; ΠΏΡ€ΠΈ этом Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ, Π° Π² качСствС Π΅Π³ΠΎ значСния β€” Β«DisableNXShowUIΒ».

Рис. 7–2. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Data Execution Protection


B Windows XP (Π² 64- ΠΈ 32-разрядных вСрсиях) Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ выполнСния для 32-разрядных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ исполняСмым ΠΎΠ±Ρ€Π°Π·Π°ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows (/NOEXECUTE=OPTIN), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ 32-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² страницах, Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ исполняСмыС. B Windows Server 2003 такая Π·Π°Ρ‰ΠΈΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ распространяСтся Π½Π° всС 32-разрядныС прилоТСния (/NOEXECUTE=OPTOUT).


ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π• Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, установитС Windows Application Compatibility Toolkit (Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с microsoft.com) ΠΈ запуститС CompatibilityAdministrator Tool. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ System Database, Applications ΠΈ Windows Components. B ΠΏΡ€Π°Π²ΠΎΠΉ сСкции ΠΎΠΊΠ½Π° появится список Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².



ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ DEP

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ процСссоров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСгодня Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Windows, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ выполнСния, Windows XP Service Pack 2 ΠΈ Windows Server 2003 Service Pack 1 (ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ DEP (data execution prevention). Одна ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ DEP β€” ΡΡƒΠΆΠ°Ρ‚ΡŒ возмоТности Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ² Π² использовании ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Windows. (ОписаниС структурной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ см. Π² Π³Π»Π°Π²Π΅ 3.) Если Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±Ρ€Π°Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (новая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ компилятора Microsoft Visual C++ 2003), Ρ‚ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, систСма провСряСт, зарСгистрирован Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ этого ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, которая помСщаСтся Π² Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°. Если Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΎΠ±Ρ€Π°Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ бСзопасная структурная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π΅ примСняСтся, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ DEP провСряСт, находится Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² области памяти, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ исполняСмая, Π΅Ρ‰Π΅ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.


ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи

Π—Π°Ρ‰ΠΈΡ‚Π° страницы Ρ‚ΠΈΠΏΠ° Β«ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи» β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ диспСтчСром памяти для экономии физичСской памяти. Когда процСсс ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈ записи прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«Ρ€Π°Π·Π΄Π΅Π»Β» со страницами, доступными для чтСния ΠΈ записи, диспСтчСр памяти β€” вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ копию этих страниц Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ проСцирования прСдставлСния (ΠΊΠ°ΠΊ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Hewlett Packard OpenVMS) β€” ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ созданиС ΠΊΠΎΠΏΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ закончится запись Π² Π½ΠΈΡ…. Π­Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ всСми соврСмСнными UNIX-систСмами. Ha рис. 7–3 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ситуация, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° процСсса совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Ρ€ΠΈ страницы, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ копируСмая ΠΏΡ€ΠΈ записи, Π½ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· процСссов Π΅Ρ‰Π΅ Π½Π΅ пытался ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Если ΠΏΠΎΡ‚ΠΎΠΊ любого ΠΈΠ· этих процСссов Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ записываСт Π½Π° Ρ‚Π°ΠΊΡƒΡŽ страницу, гСнСрируСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, связанноС с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ², Ρ‡Ρ‚ΠΎ запись вСдСтся Π½Π° страницу с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Β«ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи», диспСтчСр памяти, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ доступа, выдСляСт Π² физичСской памяти Π½ΠΎΠ²ΡƒΡŽ страницу, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ для чтСния ΠΈ записи, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π² Π½Π΅Π΅ содСрТимоС исходной страницы, обновляСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ страницах, ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ процСсс, ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. B Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ°Ρ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, выполняСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, ΠΈ опСрация записи ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Ho, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 7–4, новая страница Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся Π»ΠΈΡ‡Π½ΠΎΠΉ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ процСсса, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ запись, ΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ страницу с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Β«ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи». ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс, Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° эту Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ страницу, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² своС распоряТСниС Π΅Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ копию.

Одно ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ копирования ΠΏΡ€ΠΈ записи β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ для ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠ². НапримСр, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ страницы ΠΊΠΎΠ΄Π° доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для выполнСния. Если программист ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ устанавливаСт Ρ‚ΠΎΡ‡ΠΊΡƒ прСрывания, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Для этого ΠΎΠ½ сначала мСняСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ страницы Π½Π° PAGE_EXECUTE_READWRITE, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ страница ΠΊΠΎΠ΄Π° являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, диспСтчСр памяти создаСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ копию для процСсса с установлСнной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ прСрывания, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ страницу ΠΊΠΎΠ΄Π°.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ (lazy evaluation), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ диспСтчСр памяти примСняСт ΠΏΡ€ΠΈ любой возмоТности. B Ρ‚Π°ΠΊΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ€Π΅Π²Π°Ρ‚Ρ‹Π΅ большими ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ, Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ станут Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ, β€” Ссли опСрация Ρ‚Π°ΠΊ ΠΈ Π½Π΅ понадобится, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° POSIX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСимущСства копирования ΠΏΡ€ΠΈ записи Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fork. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ссли UNIX-прилоТСния Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚fork для создания Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ процСсс, β€” обращаСтся ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exec для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ адрСсного пространства исполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ВмСсто копирования всСго адрСсного пространства ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ fork Π½ΠΎΠ²Ρ‹ΠΉ процСсс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ страницы Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса, помСчая ΠΈΡ… ΠΊΠ°ΠΊ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ записи. Если Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ записываСт Π½Π° эти страницы, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΡ… Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ копию. B ΠΈΠ½ΠΎΠΌ случаС ΠΎΠ±Π° процСсса ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ страницы Π±Π΅Π· копирования. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ диспСтчСр памяти ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ лишь Ρ‚Π΅ страницы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ процСсс пытаСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π° Π½Π΅ всС содСрТимоС адрСсного пространства.

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ частоту срабатывания ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° копирования ΠΏΡ€ΠΈ записи ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ счСтчика Memory: Write Copies/Sec (ΠŸΠ°ΠΌΡΡ‚ΡŒ: Π—Π°ΠΏΠΈΡΡŒ ΠΊΠΎΠΏΠΈΠΉ страниц/сСк).


ДиспСтчСр ΠΊΡƒΡ‡

МногиС прилоТСния Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ нСбольшими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ (ΠΌΠ΅Π½Π΅Π΅ 64 Кб β€” ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ функциями Ρ‚ΠΈΠΏΠ° VirtuaLAlloc). Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡ‚ΠΎΠ»ΡŒ большой области (64 Кб) для ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° вСсьма Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния использования памяти ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для устранСния этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Windows имССтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€” диспСтчСр ΠΊΡƒΡ‡ (heap manager), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт распрСдСлСниСм памяти Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… областСй, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΡŒΡ‰Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² соотвСтствии с Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ страниц. Π“Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ выдСлСния памяти Π² диспСтчСрС ΠΊΡƒΡ‡ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»Π°: 8 Π±Π°ΠΉΡ‚ΠΎΠ² Π² 32-разрядных систСмах ΠΈ 16 Π±Π°ΠΉΡ‚ΠΎΠ² Π² 64-разрядных. ДиспСтчСр ΠΊΡƒΡ‡ обСспСчиваСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС памяти ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² памяти.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ диспСтчСра ΠΊΡƒΡ‡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π΄Π²ΡƒΡ… мСстах: Π² NtdlLdll ΠΈ Ntoskrnl.exe. API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ подсистСм (Π²Ρ€ΠΎΠ΄Π΅ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Windows-ΠΊΡƒΡ‡) Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Ntdll, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств β€” ΠΈΠ· NtoskrnL Π ΠΎΠ΄Π½Ρ‹Π΅ интСрфСйсы (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с прСфиксом Rtl) доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Windows ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ устройств Ρ€Π΅ΠΆΠΈΠΌΠ° ядра. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс Windows API для ΠΊΡƒΡ‡ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с прСфиксом Heap) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· NtdlLdll ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Windows-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ унаслСдованныС API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (с прСфиксом Local ΠΈΠ»ΠΈ GlobaP). K Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Windows-функциям ΠΊΡƒΡ‡ относятся:


β€’ HeapCreate ΠΈΠ»ΠΈ HeapDestroy β€” соотвСтствСнно создаСт ΠΈΠ»ΠΈ удаляСт ΠΊΡƒΡ‡Ρƒ. ΠŸΡ€ΠΈ создании ΠΊΡƒΡ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ памяти;

β€’ HeapAlloc β€” выдСляСт Π±Π»ΠΎΠΊ памяти ΠΈΠ· ΠΊΡƒΡ‡ΠΈ;

β€’ HeapFree β€” освобоТдаСт Π±Π»ΠΎΠΊ, Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· HeapAlloc

β€’ HeapReAlloc β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠΆΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°;

β€’ HeapLock ΠΈ HeapUnlock β€” ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠ½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ (mutual exclusion) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, связанных с ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΊΡƒΡ‡Π΅;

β€’ HeapWalk β€” пСрСчисляСт записи ΠΈ области Π² ΠΊΡƒΡ‡Π΅.


Π’ΠΈΠΏΡ‹ ΠΊΡƒΡ‡

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСсса имССтся ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° ΠΊΡƒΡ‡Π° β€” ΠΊΡƒΡ‡Π°, выдСляСмая процСссу ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (default process heap). ΠšΡƒΡ‡Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ создаСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запуска процСсса ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ удаляСтся Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ срока ΠΆΠΈΠ·Π½ΠΈ этого процСсса. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Мб, Π½ΠΎ Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½, Ссли Π² Ρ„Π°ΠΉΠ»Π΅ ΠΎΠ±Ρ€Π°Π·Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π° /HEAP ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ°. Однако этот объСм памяти рСзСрвируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости автоматичСски увСличиваСтся (Π² Ρ„Π°ΠΉΠ»Π΅ ΠΎΠ±Ρ€Π°Π·Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ памяти).