ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 4

Перевод всей документации выполнил Сергей АгАрков. Если возникли
какие-либо вопросы или  предложения по качеству  перевода, обра-
щайтесь:

Jew Smile MO Station 2:5040/22.3 Serg Agarkoff +7-(421)-626-8486
время работы станции с 15:00  до 23:30 по московскому времени  в
будние дни и круглосуточно в  выходные и праздники. По этому  же
телефону меня можно застать с 3:00 до 12:00 по московскому  вре-
мени. Спросить капитана Агаркова.

Домашний телефон +7-(421)-626-8486 чс 13:00 до 0:30 по москве.

                                                    Приложение C
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

		УПРАВЛЕНИЕ ВИРТУАЛЬНОЙ ПАМЯТЬЮ

Система управления памятью, включает в себя технологию Менеджера
Виртуальной Памяти (VMM). VMM автоматически управляет EMS и  XMS
(если, конечно, таковые имеются на складе :) а также виртуальной
памятью на диске.

Стандартная (conventional) память, это память, в которой  иногда
можно запускать программы, в диапазоне от 0K до 640K.

EMS (expanded, добавочная) - это память выше 640K, обслуживаемая
системным менеджером добавочной памяти типа QEMM или EMM386. До-
бавочная память  не занимает  какого-то определенного  диапазона
адресов, она использует отображение для выделения блоков  памяти
по 64Kг. EMS используется для хранения и подкачки данных, но  не
может использоваться для запуска программ.

XMS (extended, расширенная)  - это память  выше 1Mb. Она  не ис-
пользует "переключение страниц" как EMS, а просто копирует блоки
данных туда-сюда между стандартной памятью и областью выше 1 Mb.

Виртуальная память - это EMS (в стандарте LIM EMS 3.2 или выше),
XMS и место на диске. Дисковая виртуальная память может быть вы-
делена на любом устройстве,  к которому ДОС может  обратиться по
букве диска и (необязательно) пути. Виртуальные диски  (RAM-дис-
ки) или быстрые винчестеры дают большую производительность  дис-
ковой виртуальной памяти.

(Далее по тексту термин  "добавочная память" будет означать  как
EMS так и XMS, кроме тех случаев, где указано что-то конкретное)
(А.С.П. - Там,  где написано ...ВСЮ  ХХХ..., следует читать  как
...всю ДОСТУПНУЮ ххх...)

Прикладыне программы на  Кларионе используют виртуальную  память
для хранения ОЧЕРЕДЕЙ, ЭКРАНОВ и ГРАФИЧЕСКИХ ОБРАЗОВ. VMM Клари-
она самостоятельно занимается  перемещением даннх между  памятью
(стандартной и добавочной) и диском. Используя "верхние  области
памяти" и место на диске, приклдные программы на Кларионе  могут
обращаться к 64 МЕГАбайтам виртульной памяти.

При запуске программы на Кларионе, VMM автоматически определяет,
сколько имеется в наличии добавочной памяти (если вообще  имеет-
ся). По  умолчанию, VMM  использует всю  добавочную память кроме
64K (до 4М). Если в наличии меньше 4М добавочной памяти, VMM ис-
пользует диск для  получения 4М виртуальной  памяти. Виртуальная
дисковая память выделяется в текущем каталоге. Параметры  вирту-
альной памяти, задаваемые по умолчанию, могут быть изменены  пе-
ременной окружения CLAVM.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CLAVM                          (конфигурация виртуальной памяти)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
  CLAVM= іEMS Kбайті[,путь][,размер блока][,блоков одновременно]
         іXMS Kбайті                                 [,мегабайт]
         і  NOEMS  і
         і   OFF   і
         і         і
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

EMS Kбайт        Этот параметр сообщает VMM, сколько Kb EMS  ис-
		 пользовать. Субпараметр КБАЙТ нужен  обязатель-
		 но. Если  он отрицателен,  это значит,  что ис-
		 пользовать всю доступную EMS, кроме  указанного
		 количества. Минимальный размер выделяемой памя-
		 ти - 64К. Установка по умолчанию - EMS-64  (всю
		 EMS кроме 64K).

XMS Kбайт        Этот параметр сообщает VMM, сколько Kb XMS  ис-
		 пользовать. Он аналогичен параметру EMS во всем
		 кроме  типа  используемой  памяти. По умолчанию
		 установка XMS-64 (всю XMS кроме 64K).

NOEMS            Приказывает  VMM  использовать под  виртуальную
		 память только диск.

OFF              Отключает VMM, вынуждая бедную программу  обхо-
		 диться только стандартной памятью.

путь             Задает диск (необязательно) и путь, для выделе-
		 ния  виртуальной  дисковой  памяти. VMM создает
		 дисковую память после того, как забьет всю  до-
		 бавочную. Если нету никакой добавочной  памяти,
		 то вся виртуальная память размещается на диске.
		 Этот параметр может содержать любую разрешенную
		 в ДОС спецификацию. VMM проверяет существование
		 пути. Если путь  задан неправильно, то  диск не
		 используется вообще. По умолчанию ПУТЬ=.  (точ-
		 ка), что вынуждает VMM ипользовать текущие диск
		 и каталог. ПУТЬ=* означает, что для виртуальной
		 памяти диск использовать не разрешается.

размер блока     Должен быть от 8 до 64 включительно. Этим зада-
		 ется размер (в килобайтах) максимального  блока
		 памяти, который  можно подкачивать  из/в вирту-
		 альной памяти. Если для блока заданного размера
		 не хватает памяти, то выделяется блок  меньшего
		 размера. Этот параметр не проверяется  системой
		 виртуальной памяти.  По умолчанию  РАЗМЕР БЛОКА
		 равен 32K.

блоков           Число виртуальных блоков, одновременно содержа-
одновременно     щихся в стандартной памяти прежде чем  происхо-
		 дит выгрузка. Число БЛОКОВ ОДНОВРЕМЕННО  должно
		 быть 3 или больше. По умолчанию - 3.

мегабайт         Максимальный размер виртуальной памяти для VMM.
		 Это общее количество памяти, которое может быть
		 выгружено в добавочную  память, на диск,  или и
		 туда и туда. Эта настройка не должна быть боль-
		 ша параметра РАЗМЕР БЛОКА. Значение по  умолча-
		 нию - 4 мегабайта. (А.С.П. - т.е. размер вирту-
		 алки в  МЕГах не  больше размера  блока в КИЛО-
		 граммах)

Для управления виртуальной  памятью, VMM использует  выгружаемые
блоки данных, размер  которых задается параметром  РАЗМЕР БЛОКА.
Если используется EMS а не XMS, то первый виртуальный блок  дан-
ных (весом до 64K) создается в Кадре Страницы EMS (см. рис.  1).
VMM не использует стандартную память до тех пор, пока не  запол-
нится виртуальный блок в  Кадре Страницы EMS. Когда  потребуются
еще виртуальные блоки, VMM разместит до БЛОКОВ ОДНОВРЕМЕННО вир-
туальных блоков данных в стандартной памяти.

ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і          32MegДДДЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї    і
і                  |           Добавочная память          |    і
і                  іЪДДДДДДДДДДї ЪДДДДДДДДДДї ЪДДДДДДДДДДїі    і
і                  іі::::::::::і і::::::::::і і::::::::::іі    і
і                  іі::::::::::і і::::::::::і і::::::::::іі    і
і                  іі::::::::::і і::::::::::і і::::::::::іі    і
і                  іАДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДДДДДДДЩі    і
і           1MegДДДГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ    і
і                  і######################################іДДї і
і                  і######### Кадр страницы EMS ##########і 64Kі
і                  і######################################іДДЩ і
і          E000HДДДГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ    і
і                  і          Периферийная BIOS           і    і
і                  ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ    і
і                  і            Видеопамять               і    і
і   ЪДДДДДДA000HДДДГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґДДї і
і   і              іЪДДДДДДДДДДї ЪДДДДДДДДДДї ЪДДДДДДДДДДїі  і і
і   і              іі::::::::::і і::::::::::і і::::::::::іі  і і
і   і              іі::::::::::і і::::::::::і і::::::::::іі  і і
і Стандартная      іі::::::::::і і::::::::::і і::::::::::іі640Kі
і Память           іАДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДДДДДДДЩі  і і
і   і              і        ЪДДДДДДДДДДДДДДДДДДДДДДї      і  і і
і   і              і        і Таблица отслеживания і      і  і і
і   і              і        АДДДДДДДДДДДДДДДДДДДДДДЩ      і  і і
і   і              і             Данные программы         і  і і
і   і              ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ  і і
і   і              і             Код программы            і  і і
і   і              ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ  і і
і   і              і                 DOS                  і  і і
і   АДДДДДД0000HДДДАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩДДЩ і
і        ЪДДДДДДДДДДї                                          і
і        і::::::::::і                                          і
і        і:::32 K:::і  =     Выгружаемый блок данных           і
і        і::::::::::і    [Образы экранов, очереди и т.д.]      і
і        АДДДДДДДДДДЩ                                          і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рисунок 1. Распределение памяти по умолчанию

Когда все возможные выгружаемые  блоки в стандартной памяти  за-
полнены, самый редко используемый блок выгружается в EMS.  Когда
EMS исчерпана,  выгружаемые блоки  данных создаются  на диске  в
файле с расширением SWP.

Настройки VMM, принимаемые по умолчанию, можн изменит, используя
CLAVM из командной строки ДОС, из файла конфигурации или из  пе-
ременной окружения.  Командная строка  имеет высший  приоритет и
перекрывает все прочие методы. У файла конфигурации второй прио-
ритете, и у переменной окружения - самый низкий.

Это важно: НИКОГДА не ставьте пробелов между словом CLAVM и зна-
ком равенства,  поскольку ДОС  рассматривает CLAVM=  and CLAVM =
как две  разные переменные  - "CLAVM"  и "CLAVMя".  Программы на
Кларионе распознают только CLAVM=.

Настройка из командной строки

Установки Системы Виртуальной Памяти,сделанные по умолчанию, мо-
гут быть перекрыты из командной строки вводом CLAVM=, за которой
идут желаемые параметры. Параметры должны быть заключены в двой-
ные кавычки (скажем, CLAVM="EMS-64,.,32,3,4") если  используется
инициализация командной  строки. НЕЛЬЗЯ  использовать SETCOMMAND
для установки параметров CLAVM  (слишком много времени уйдет  на
выполнение SETCOMMAND).

Настройка из файла конфигурации

Во время исполнения, программа ищет в текущем каталоге файл, под
именем program.INI (где program - это имя .EXE-файла программы).
Скажем, программа FUCK'EM!.EXE может использовать файл  конфигу-
рации под именем FUCK'EM!.INI. Это обычный текстовый файл, в ко-
тором могут содержаться параметры  программы, в том числе  и на-
стройки для CLAVM. Каждый параметр программы в этом файле должен
занимать отдельную строку.

Настройка из переменной окружения

VMM,  также,  можно  подстроить,  установив CLAVM как переменную
окружения, с помощью досовской команды SET. Это может быть  сде-
лано в пакетном файле (типа AUTOEXEC.BAT) или из командной стро-
ки ДОС.

Оптимизируем производительность

На производительность программы влияет как количество добавочной
памяти, так  и скорость  устройства, используемого  для дисковой
виртуальной памяти. Для получения оптимальной производительности
может понадобиться подстроить параметры РАЗМЕР БЛОКА, БЛОКОВ ОД-
НОВРЕМЕННО и МЕГАБАЙТ.

Оптимальный РАЗМЕР БЛОКА зависит от программы. Наиболее подходя-
щий РАЗМЕР блока определяется  размером самой большой ОЧЕРЕДИ  в
программе, размером наибольшего  сохраненного ЭКРАНА и  размером
графических образов. В общем,  РАЗМЕР БЛОКА не должен  превышать
максимально выделяемого участка памяти, выделенного, скажем  под
сохраненный ЭКРАН или под ОЧЕРЕДЬ, и не стоит его делать  меньше
16K. Для  большинства программ,  оптимумом является  стандартный
размер в 32К.

Увеличение количества БЛОКОВ ОДНОВРЕМЕННО приводит, с одной сто-
роны к большему расходу стандартной памяти, а с другой - к мень-
шей перекачке  данных между  стандартной и  виртуальной памятью.
Если стандартной памяти достаточно, то можно увеличить этот  па-
раметр для повышения  производительности. РАЗМЕР БЛОКА  и БЛОКОВ
ОДНОВРЕМЕННО тесно связаны между собой. Уменьшение РАЗМЕРА БЛОКА
позволяет хранить в стандартной памяти больше БЛОКОВ ОДНОВРЕМЕН-
НО.

VMM создает в стандартной памяти "таблицу отслеживания", которая
содержит указатели на  данные, хранящиеся в  виртуальной памяти.
Для вычисления размера это таблицы можно использовать формулу:

РАЗМЕР_ТАБЛИЦЫ = (1024 / (РАЗМЕР_БЛОКА / МЕГАБАЙТ)) * 22

По  умолчанию,  VMM  создает  "таблицу отслеживания" длиной 2816
байт в стандартной памяти (2816=(1024/(32/4))*22).

Параметр МЕГАБАЙТ влияет на размер этой "таблицы  отслеживания".
Чрезмерное завышение этого параметра приводит к напрасному  рас-
ходу стандартной памяти и к увеличению времени доступа к  вирту-
альным данным. Добавочное время, требуемое для поиска  указателя
в большей таблице, снижает производительность.

Возвращаемые ошибки:

	8 Недостаточно памяти
       68 Ошибка виртуальной памяти

Если VMM отключен (CLAVM=OFF), то испольуется только стандартная
память. Когда стандартная память исчерпывается, программа  выле-
тает по ошибке "Недостаточно памяти".

При исчерпании виртуальной памяти, программа вылетает по "Ошибке
виртуальной памяти", а в информационном окне выводится расширен-
ное описание ошибки:

(А.С.П. -  Поскольку еще  нет локализованной  для России  версии
 Клариона, то расширенные описания ошибок я оставляю в том виде,
 в котором  они могут  появиться, хотя  стандартные сообщения об
 ошибках я, иногда, перевожу.)

  Расширенное описание           Возможная причина
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іOversized allocation or memoryі Слишком мал РАЗМЕР БЛОКА      і
іcorrupt                       і                               і
і                              і                               і
іПопытка выделить памяти боль- і                               і
іше, чем есть или память не в  і                               і
іпорядке                       і                               і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і No memory to save VM mapping і Исчерпана стандартная память  і
і                              і                               і
іНе хватает памяти для сохране-і                               і
іния "таблицы отслеживания"    і                               і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Attempt to exceed tracking   і Исчерпана виртуальная память  і
і tables                       і                               і
і                              і                               і
іПопытка выйти за пределы "таб-і                               і
ілицы отслеживания"            і                               і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Write failure saving data    і Аппаратная проблема либо с    і
і                              і ОЗУ либо с диском             і
іСбой при записи данных        і                               і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Attempt to exceed tracking   і Слишком мал параметр МЕГАБАЙТ і
і tables, increase Meg         і                               і
і                              і                               і
іПопытка выйти за пределы "таб-і                               і
ілицы отслеживания", попробуй  і                               і
іувеличить параметр МЕГАБАЙТ   і                               і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

Пример:

Перекрытие настроек VMM из файла конфигурации:

  CLAVM=EMS-64,C:\SWAP,32,3,4
                    (используем всю  EMS кроме  64K, а  на диске
                    выделяем место в подкаталоге C:\SWAP)

  CLAVM=XMS-64,C:\SWAP,32,3,4
                    (используем всю  XMS кроме  64K, а  на диске
                    выделяем место в подкаталоге C:\SWAP)

  CLAVM=NOEMS,C:\SWAP,32,3,4
                    (забудем про EMS и  XMS и все будем  сбрасы-
                    вать на диск в подкаталог C:\SWAP)

  CLAVM=EMS-64,*,32,3,4
                    (запрещаем свопинг на диск)

Перекрытие настроек VMM из командной строки:

C> Program.exe CLAVM="EMS-64.*,32.3,4"
                 (из командной строки запрещаем свопинг на диск)

C> Program.exe CLAVM=OFF
                 (вообще отключаем VMM из командной строки)

Перекрытие настроек VMM из пакетного файла или командной строки
ДОС:

C> SET CLAVM=EMS-64,C:\SWAP.32,3,4
                   (сохраняем стандартные настройки, только сво-
                   пинг на диск будет в каталог C:\SWAP)

C> SET CLAVM=XMS-64,C:\SWAP.32.3,4
                   (сохраняем стандартные настройки, только сво-
                   пинг на диск будет в каталог C:\SWAP)

C> SET CLAVM=OFF
                    (запрещаем VMM переменной окружения)


Яндекс цитирования