Архив рассылки за ноябрь 1999 года


№ 35 

   А теперь - рассказ о системных ресурсах Windows 9х.

   Возможно, вам случалось получать сообщение, извещающее о нехватке системных ресурсов и предлагающее закрыть одну из программ. А если вы запускали индикатор системных ресурсов и следили за его показаниями, то, возможно, с удивлением обнаруживали, что завершение работы программы, занимавшей несколько десятков мегабайт памяти, лишь незначительно изменяло количество свободных системных ресурсов.

   Так что же это за ресурсы такие? Те, кто работал в Windows 3.x, хорошо помнят, как часто их нехватка мешала работе. В Windows 9х острота этой проблемы значительно снята, и я, например, получил подобное сообщение лишь однажды, да и то из-за ошибки в Орфо 5.0.

   Системными ресурсами со времен Windows 3.х называются две области памяти ("кучи") размером 64 килобайта каждая: USER и GDI (в Windows 3.0 использовалась одна общая куча). В первой хранилась информация об объектах, используемых модулем USER.EXE, во второй - об объектах, используемых модулем KRNL386.EXE (или KRNL286.EXE при работе в стандартном режиме). Размер куч определялся максимальным размером сегмента данных при 16-разрядной адресации. (Справедливости ради следует заметить, что в одном из документов упоминается об использовании модулем USER.EXE _двух_ куч по 64 КБ каждая). Количество свободной памяти в каждой куче и есть количество соответствующих свободных ресурсов, а меньшая величина из двух - количество свободных системных ресурсов. Очевидно, что изменение количества свободной памяти, как оперативной, так и виртуальной, никак не влияет на количество системных ресурсов.

   В Windows 95 информация о многих из таких объектов (но не о всех) была перемещена в общую системную память (32-разрядную кучу). Информация о некоторых объектах по-прежнему помещается в 16-разрядные кучи, но в подавляющем большинстве случаев для каждого объекта требуется не более 10-20 байт памяти.

   Как следствие, в Windows 9х пользователь практически не сталкивается с нехваткой системных ресурсов, даже если запущено большое число программ. А в Windows 3.х часто было невозможно запустить больше 4-6 программ одновременно.

   Если вы все же получаете сообщение о нехватке системных ресурсов, то представляется весьма вероятным, что какая-то из программ страдает утечкой системных ресурсов. То есть она создает объекты, занимающие системные ресурсы, а по миновании надобности не разрушает их, не освобождая тем самым занятую память. Иногда из-за ошибок в программе она начинает постоянно создавать все новые и новые объекты, расходуя тем самым системные ресурсы. Это именно та ситуация, с которой я столкнулся, используя ОРФО 5: при открытии некоторых документов в Word количество свободных системных ресурсов начинало постоянно уменьшаться, через несколько минут падая почти до ноля. Закрытие Word восстанавливало исходное значение свободных ресурсов, тогда как при их утечке закрытие программ приводит лишь к частичному освобождению ресурсов.


   Если вам доводилось работать в ДОС и/или Windows 3.х, то после перехода на Windows 9х вы, возможно, замечали, что диск стал фрагментироваться заметно меньше. Причина заключается в том, что модуль VFAT использует иной алгоритм поиска свободного места на диске, нежели использовала ДОС. Если в ДОС поступал запрос на запись, то она искала первый свободный кластер, выделяла его, затем искала следующий свободный и так далее. В результате файлы часто записывались в несколько несвязанных областей и становились фрагментированными.

   Модуль VFAT поступает иначе: при поступлении запроса на запись файла он ищет на диске непрерывную свободную область размером 0,5 МБ и выполняет запись в нее. При этом небольшие файлы оказываются нефрагментированными. И только если поиск оказывается неудачен, то используется тот же алгоритм, что и в ДОС.

   Используемое по умолчанию значение 0,5 МБ можно изменить, указав новое значение в параметре ContigFileAllocSize, создав его в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem. Вот только нигде не указано, надо ли задавать новое значение в байтах или в килобайтах.

   Напомню, что модуль VFAT (и VCACHE тоже) впервые появился в Windows 3.11. Но загружался и работал только при включенном 32-битном доступе к файлам.


   Если вы хотите, чтобы программы семейства MSOffice при открытии автоматически загружали файлы документов, поместите ярлыки этих файлов в папку StartUp, расположенную в папке, в которой установлен Office (или отдельная программа из этого семейства). Исключение - Excel, который ищет загружаемые документы в папке XLStart.


№ 36

   Знаете ли вы, что паневропейской версии Windows 98 не существует? Ее разработка было прекращена еще осенью 1997 года, после того, как поддержка кириллицы была добавлена в английскую версию. В отличие от Windows 95, которая имела несколько вариантов с английским интерфейсом, поддерживающих использование различных языков (английская, паневропейская, ближневосточная, азиатская) Windows 98 имеет только один вариант с английским интерфейсом: английский. Зато этот вариант можно настроить на работу с любым из поддерживаемых языков, выбрав при установке соответствующую страну, в нашем случае - Россию.


   Знаете ли вы, что "Майкрософт" не разрабатывает сама модули проверки правописания, а лицензирует их у других компаний? Одним из немногих, если не единственным, исключением, был модуль проверки русской орфографии, входивший в Word 6 и получившийся не совсем удачным. Список компаний, у которых приобретены лицензии, вы можете увидеть, например, выбрав из меню "Справка" (?) редактора Word пункт "О программе".

   Модули проверки русского правописания, в частности, лицензированы у АО "Информатик" и выполнены на базе программы "Орфо" 4.0. Любопытно, что "Информатик" отказывается принимать любые замечания по качеству работы этих модулей, мотивируя это тем, что Word делают не они, а "Майкрософт" и предлагая обращаться туда. Хотя "Майкрософт" затем все равно пересылает такие замечания в "Информатик".


   Возможно, вы задавались вопросом, почему для исправления ошибки в русской версии Office 2000 (я уже писал о ней), требующей лишь замены одного файла Lvreg.dll на исправленную версию, выпущен специальный файл установки. И этот файл запускает довольно продолжительную процедуру и даже требует установочный диск Office. А причина проста: новая возможность пакета Office 2000, которая называется "Найти и устранить" (Detect and repair). Соответствующая команда находится в меню "Справка".

   Эта команда запускает программу установки в режиме проверки, чтобы найти измененные или удаленные файлы и восстановить возможно поврежденные настройки. При простой замене дефектного файла его правильной версией запуск процедуры "Найти и устранить" привел бы к восстановлению дефектной версии. Чтобы избежать этого, необходимо внести исправления в служебный файл с информацией об установленных файлах. Именно это и делает файл "заплатки". Возможно, процедура написана не лучшим образом и ее выполнение можно было бы ускорить, Но в момент ее написания гораздо более важной задачей было выпустить исправление как можно быстрее.


   Довольно большое число подписчиков "Городского кота" вообще и этой рассылки, в частности, живет за пределами России. И зачастую они сталкиваются с невозможностью использовать русскоязычные программы в локализованной для страны пребывания версии Windows. Все русские буквы оказываются заменены на символы местного алфавита, или на всякие загогулины. При установке русской же версии Windows становится невозможным использовать программы, сделанные на местном языке, поскольку текст их меню и сообщений заменяется на русские буквы и понять их уже нельзя. Можно только догадываться.

   Исправить эту ситуацию, увы, невозможно. Причина заключается в том, что все ОС семейства Win3x/9x и ОС семейства Windows NT до версии 4.0 включительно используют для вывода меню и сообщений однобайтовую кодировку. То есть система не может определить, что именно вы имеете в виду, требуя вывести символ с кодом, например, 128 - русскую букву А, символ одного из западноевропейских алфавитов с диакритическим знаком, имеющий то же самое значение кода, или символ какого-либо иного алфавита. Она использует символ, который стоит на этом месте в кодовой странице той страны, которая выбрана при установке Windows. Поэтому в русской версии практически невозможно пользоваться, например, итальянскими или греческими версиями программ и наоборот, поскольку система не может отобразить два _разных_ символа, имеющих одинаковые коды.

   Чтобы решить эту проблему, необходимо использовать отдельный код для любой буквы любого алфавита, как это сделано в кодировке "Уникод". Именно этот подход реализован в Windows 2000. Однако для полноценной работы программ одной системной поддержки мало, необходимо также, чтобы прикладная программа формировала свой вывод также в двухбайтовой кодировке. Но практически все современные программы используют однобайтную кодировку (единственное известное мне исключение - Office 2000). И только в будущих версиях может появиться (а может и не появиться) использование "Уникода" в меню и текстах сообщений.

   Тем не менее, Windows 2000 упрощает использование и "старых" (т.е. сегодняшних) программ, написанных на разных языках. Хотя вы по-прежнему не сможете одновременно использовать, скажем, израильский вариант Word 97 и русский "Стилус", но зато можно будет переключать кодировку при переходе от одной программы к другой. Правда, процедура переключения системной кодировки потребует перезагрузки системы, но это все же проще, чем держать на компьютере две версии ОС с разными локализациями.

   А тот же самый израильский, итальянский или греческий Word 2000 уже сейчас можно использовать совместно с русскоязычными старыми программами (напомню: только в Windows 2000), если выбрать русскую системную кодировку. При этом можно указать, что так называемой "пользовательской" локализацией (user locale) должны являться настройки для любой другой нужной вам страны (формат времени, разделители, символ валюты и пр.).


Назад

На главную страничку