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

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

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

Win32k.sys создаСт Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \Windows ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ oбъeΠΊΡ‚Window-Station, \WinSta0. Π‘Ρ€Π΅Π΄Π° Terminal Services ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ для сохранСния иллюзии доступа ΠΊ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ WindowStation Π² Windows ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½Π° собствСнная вСрсия WinSta0. НаконСц, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \BaseNamedObjects прилоТСния ΠΈ систСма ΡΠΎΠ·Π΄Π°ΡŽΡ‚ раздСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ события, ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹ ΠΈ Ρ€Π°Π·Π΄Π΅Π»Ρ‹. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ двумя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСансС Π½ΡƒΠΆΠ½Π° своя вСрсия этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²Π° экзСмпляра прилоТСния Π½Π΅ мСшали Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

ДиспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ локальноС пространство ΠΈΠΌΠ΅Π½, создавая Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ вСрсии Ρ‚Ρ€Π΅Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, сопоставлСнном с сСансом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (\Sessions\X, Π³Π΄Π΅ X β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСанса). НапримСр, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΠ΅ Windows-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ врСмя ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСанса Π½ΠΎΠΌΠ΅Ρ€ 2 создаСт ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ событиС, диспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² пСрСнаправляСт имя этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· \BaseNamedObjects Π² \Sessions\2\BaseNamedObjects.


ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ диспСтчСра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², связанныС с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ пространством ΠΈΠΌΠ΅Π½, Π·Π½Π°ΡŽΡ‚ ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… экзСмплярах ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΈ иллюзии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… сСансах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎ ΠΆΠ΅ пространство ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ…. DLL-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ подсистСмы Windows Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ Windows-прилоТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² \DosDevices, прСфиксы \?? (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C: \Windows прСвращаСтся Π² \??\C: \Windows). Когда диспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ прСфикс \?? ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΈΠΌ дСйствия зависят ΠΎΡ‚ вСрсии Windows, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ½ всСгда полагаСтся Π½Π° ΠΏΠΎΠ»Π΅ DeviceMap Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ «процСсс», создаваСмом ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмой (executive process object) (EPROCESS, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² Π³Π»Π°Π²Π΅ 6). Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° структуру Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ сСансС. ПолС DosDevicesDirectory структуры DeviceMap ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ диспСтчСра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ \DosDevices процСсса. Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмы.


β€’ Если систСмой являСтся Windows 2000 ΠΈ Terminal Services Π½Π΅ установлСны, ΠΏΠΎΠ»Π΅ DosDevicesDirectory Π² структурС DeviceMap процСсса ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ \?? Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½ Π½Π΅Ρ‚.

β€’ Если систСмой являСтся Windows 2000 ΠΈ Terminal Services установлСны, Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ становится Π½ΠΎΠ²Ρ‹ΠΉ сСанс, систСма ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· глобального ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° \?? Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ для сСанса ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ \DosDevices, ΠΈ ΠΏΠΎΠ»Π΅ DosDevicesDirectory структуры DeviceMap ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° этот Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

β€’ B Windows XP ΠΈ Windows Server 2003 систСма Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ DosDevices. ДиспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², встрСтив ссылку Π½Π° \?? Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ для процСсса ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ \DosDevices, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»Π΅ DosDevicesDirectory структуры DeviceMap. Если Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½Π΅Ρ‚, ΠΎΠ½ провСряСт ΠΏΠΎΠ»Π΅ DeviceMap ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Β» ΠΈ, Ссли это допустимо, ΠΈΡ‰Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ GlobalDosDevicesDirectory структуры DeviceMap. Π­Ρ‚ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ всСгда являСтся \Global??.


B ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… прилоТСниям, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Terminal Services, Π½ΡƒΠΆΠ΅Π½ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π² консольном сСансС, Π΄Π°ΠΆΠ΅ Ссли сами прилоТСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСансС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ прилоТСниям для синхронизации со своими экзСмплярами, выполняСмыми Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… сСансах. B Ρ‚Π°ΠΊΠΈΡ… случаях для доступа ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ прСфикс \Global, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ диспСтчСром ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ \Global\ApplicationInitialized, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² сСансС Π½ΠΎΠΌΠ΅Ρ€ 2, направляСтся вмСсто ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° \Sessions\2\BaseNamedObjects\Application-Initialized Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ \BasedNamedObjects\ApplicationInitialized.

B Windows XP ΠΈ Windows Server 2003 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π² глобальном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \DosDevices, Π½Π΅ трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфикс \Global, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Ρ‚ Π² локальном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \DosDevices. Π­Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ диспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² автоматичСски ΠΈΡ‰Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² глобальном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π΅ найдя Π΅Π³ΠΎ Π² локальном. Однако ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ Π² Windows 2000 с Terminal Services, Π΄ΠΎΠ»ΠΆΠ½ΠΎ всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ прСфикс \Global для доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π² глобальном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ \Dos-Devices.


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: просмотр экзСмпляров пространства ΠΈΠΌΠ΅Π½

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ диспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² создаСт экзСмпляры пространства ΠΈΠΌΠ΅Π½, создав сСанс, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ консольного, ΠΈ просмотрСв Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ описатСлСй для процСсса Π² этом сСансС. B Windows XP Home Edition ΠΈΠ»ΠΈ Windows XP Professional Π² систСмС, которая Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄ΠΎΠΌΠ΅Π½, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ сСанс [ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ мСню Start (ΠŸΡƒΡΠΊ), Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Log Off (Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· систСмы) ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Disconnect and Switch User (Π‘ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш Win-dows+L]. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму ΠΏΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Windows 2000 Server, Advanced Server ΠΈΠ»ΠΈ Datacenter Server, запуститС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Terminal Services, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ сСрвСру ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму.

Войдя Π² систСму Π² Π½ΠΎΠ²ΠΎΠΌ сСансС, запуститС Winobj, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ \Sessions ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с числовым ΠΈΠΌΠ΅Π½Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСанса. ΠžΡ‚ΠΊΡ€Ρ‹Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ \DosDevices, \Windows ΠΈ \Base-NamedObjects, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½ сСанса. Одно ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΈΠΆΠ΅.

Π”Π°Π»Π΅Π΅ запуститС Process Explorer ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ процСсс Π² Π½ΠΎΠ²ΠΎΠΌ сСансС (Π²Ρ€ΠΎΠ΄Π΅ Explorer.exe). ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ описатСлСй, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² View, Lower Pane View ΠΈ Handles. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ \Windows\Windowstations\WinStaO ΠΏΠΎΠ΄ \Sessions\n, Π³Π΄Π΅ n β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСанса. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ появятся Π² \Ses-sions\n\BaseNamedObjects.


Бинхронизация

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (mutual exclusion) являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Ee смысл Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ рСсурсу ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ β€” ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ β€” ΠΏΠΎΡ‚ΠΎΠΊ. Π’Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΊΠΎΠ³Π΄Π° рСсурс Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для раздСлСния ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСпрСдсказуСмыС послСдствия. НапримСр, Ссли Π±Ρ‹ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΡ€Ρ‚ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°, ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прСдставлял Π±Ρ‹ собой Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ ΠΌΠ΅ΡˆΠ°Π½ΠΈΠ½Ρƒ. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ считывал ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ участок памяти, ΠΊΠΎΠ³Π΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ записывал Π±Ρ‹ Ρ‚ΡƒΠ΄Π° Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π±Ρ‹ нСпрСдсказуСмый Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. B ΠΎΠ±Ρ‰Π΅ΠΌ случаС доступныС для записи рСсурсы нСльзя Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Рис. 3-23 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, выполняСмыС Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… процСссорах, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля Π½Π° ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, Π²Ρ‚ΠΎΡ€ΠΎΠΉ вставил свои Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚ΠΎ ΠΆΠ΅ мСсто, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π±Ρ‹Π»ΠΈ пСрСзаписаны Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π° ΠΎΠ΄ΠΈΠ½ участок ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ остался пустым. Π₯отя рис. 3-23 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² многопроцСссорной систСмС, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π±Ρ‹Π»ΠΎ Π±Ρ‹ нСльзя ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π² однопроцСссорной систСмС β€” ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ контСкста Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ успСл Π±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Π Π°Π·Π΄Π΅Π»Ρ‹ ΠΊΠΎΠ΄Π°, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ нСраздСляСмым рСсурсам, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ критичСскими сСкциями (critical sections). B критичСской сСкции Π΅Π΄ΠΈΠ½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. Пока ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ записываСт Π² Ρ„Π°ΠΉΠ», обновляСт Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, доступ ΠΊ этому рСсурсу со стороны Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½. ПсСвдокод, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 3-23, прСдставляСт собой ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ, которая Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ обращаСтся ΠΊ раздСляСмой структурС Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π’Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π²Π°ΠΆΠ½ΠΎΠ΅ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, особСнно Π·Π½Π°Ρ‡ΠΈΠΌΠΎ (ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ) Π² случаС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы с ТСстко связанной симмСтричной ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ (tightly-coupled symmetric multiprocessing), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Windows, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ систСмный ΠΊΠΎΠ΄, выполняСмый Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… процСссорах ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, раздСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, хранящиСся Π² глобальной памяти. B Windows ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ двумя ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ структуры, возлагаСтся Π½Π° ядро. Оно прСдоставляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы для синхронизации доступа ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ структурам Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ синхронизируСт доступ ΠΊ своим структурам Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ IRQL уровня Β«DPC/dispatchΒ», ядро ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ систСма Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ синхронизации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ привСсти ΠΊ ошибкС страницы ΠΈΠ»ΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ IRQL уровня Β«DPC/dispatchΒ» ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ (эти ΡƒΡ€ΠΎΠ²Π½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ извСстны ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «высокий IRQLΒ»). Из ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ядро ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ систСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ своих Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ высоком IRQL ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ синхронизации ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… уровнях IRQL (Π½ΠΈΠΆΠ΅ Β«DPC/dispatchΒ»).