Подсистема WOW. Прогресс неумолимо идет вперед - многие программы уже перешли 32-х разрядный барьер, начали штурмовать 64-х. Однако сохранилась большая масса старых 16-ти разрядных программ, которые выполняют различные функции начиная от простых утилит и заканчивая серьезными приложениями. Windows NT является 32-х разрядной операционной системой. Однако существует возможность выполнять 16-ти разрядные приложения. Для этого существует специальная подсистема WOW (Windows On Win32). Когда вы запускаете 16-разрядное приложение, Windows NT запускает подсистему WOW, которая, собственно говоря, и занимается тем, что следит за 16-разрядными приложениями. Все 16-разрядные приложения выполняются по умолчанию в одной области памяти, что иногда приводит к "зависаниям" этих задач. Можно указать Windows, чтобы каждой 16-разрядное приложение выполнялось в "собственной" области памяти - тогда для каждого запущенного 16-разрядного процесса будет генерироваться собственная виртуальная машина. Сделать это можно 2 способами: 1. Включить галочку "Run in separate memory space" в окошке Run 2. Запустить программу с командной строки: start /separate myprog.exe Возможно также указать, что все запускаемые 16-ти разрядные приложения будут стартовать в отдельных облястях памяти. Для этого необходимо в реестре изменить значение: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW\ DefaultSeparateVDM c "no" на "yes". Запуск 16-разрядных приложений в их собственном адресном пространстве повышает надежность всей системы, однако за это приходиться расплачиваться общим быстродействием и количеством памяти, так как каждая копия WOW требует не менее 1Mb памяти. Если вы запускаете 16-разрядные приложения, то вероятно заметили, что они стартуют дольше, чем родные 32-разрядные приложения. Это происходит потому, что при первой загрузке 16-разрядного приложения загружается подсистема WOW. Можно увеличить скорость загрузки 16-разрядных приложений, если заставить Windows NT загружать систему WOW при старте. Для этого найдите следующий ключ в реестре: HKLM/System/Software/Microsoft/Windows NT/CurrentVersion/Winlogon В этом ключе измените параметр Userinit - добавьте к уже существующему значению строчку ",win.com wowexec" Перезагрузите компьютер. Есть в реализации WOW и ошибки. В основном эти ошибки связаны с загрузкой ЦПУ или занятием памяти. Сама подсистема WOW запускается и обслуживается программой NTVDM.EXE. Так что если вы увидите, что процесс NTVDM.EXE использует 100% ресурсов процессора, то это значит, что 16-разрядная программа, которая сейчас выполняется, использует какие-либо функции, которые плохо поддерживатся подсистемой WOW. Часто такое возникает, когда программа опрашивает таймер. В этом случае сделать ничего нельзя. Постарайтесь перейти на более новую, 32-разрядную версию этой же или подобной программы. Существует несколько значений в реестре для настройки выполнения 16-разрядных задач. Все они находяться в ключе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW О значениях данного ключа вы можете прочитать в статье Q102986 К сожалению, практически невозможно настроить WOW. На RISC платформах еще можно указать количество памяти, которое будет выделено для подсистемы WOW, чего невозможно сделать на платформах Intel. Вот на такой грустной ноте я вынужден завершить небольшой рассказ о подсистеме Windows on Win32. Основная страница Куда идем? |