Изобретение относится к области обработки цифровых данных с помощью электрических устройств, в частности к средствам для программного управления.
Известны способы обработки цифровых данных, включающие этапы, на которых выполняют программное обеспечение в режиме процессора, обеспечивающем возможность программному обеспечению работать на уровне привилегии, намеченном программным обеспечением, генерирование одного из множества прерываний и переход к выполнению виртуальной машиной программного обеспечения, выполняющегося в адресном пространстве оперативной памяти (см., например RU 2003123112, G 06 F 9/40, 2005.02.27).
Наиболее близким аналогом заявляемого технического решения является способ обработки цифровых данных, включающий этапы, на которых выполняют программное обеспечение в режиме процессора, обеспечивающем возможность программному обеспечению работать на уровне привилегии, намеченном программным обеспечением, выход процессора в защищенный режим и переход к выполнению виртуальной машиной программного обеспечения, выполняющегося вне упомянутого режима процессора в адресном пространстве оперативной памяти (RU 2003123118, G 06 F 9/00, 2005.01.10).
Указанный способ обеспечивает совершенствование технологии выполнения различных процедур (например, начальной загрузки операционной системы, принятой в системе технологии обработки заданий пользователей и др.); способы использования различных устройств и организация их работы (например, организация системы прерываний или организация прямого доступа к памяти). Однако применение его не в полной мере сопровождается устранением такого негативного явления как фрагментация памяти.
Задачей заявляемого технического решения является создание средства для эффективной технологии выполнения различных процедур обработки цифровых данных.
Технический результат, который может быть достигнут при применении заявляемого способа, заключается в оптимизации использования емкости физической памяти.
Указанный технический результат достигается способом обработки цифровых данных, включающим этапы, на которых выполняют программное обеспечение в режиме процессора, обеспечивающем возможность программному обеспечению работать на уровне привилегии, намеченном программным обеспечением, выход процессора в защищенный режим и переход к выполнению виртуальной машиной программного обеспечения, выполняющегося вне упомянутого режима процессора в адресном пространстве оперативной памяти, за счет того, что виртуальной машиной вычисляют требуемый для модуля программного обеспечения размер свободного пространства оперативной памяти, инициализируют стек, блоки для управления страницами, таблицу распределения памяти с выделением блока оперативной памяти нужного размера для модуля программного обеспечения и добавлением строки в таблицу распределения оперативной памяти соответствующего формата, и устанавливают запрет на обращения к страницам, находящимся в блоке для управления страницами, а при выполнении обращений программного обеспечения к запрещенным страницам, перехватывают прерывание, генерируемое процессором, осуществляют переадресацию области данных или сегментных регистров программного обеспечения соответственно добавленной строке в таблице распределения памяти, вычисляют размер машинного кода в программном обеспечении, копируют машинный код в виртуальную машину, выполняют упомянутую команду на другом адресном пространстве и передают управление программному обеспечению.
В данном определении сущности заявляемого технического решения подразумевается следующее толкование терминов:
цифровые данные - информация, представленная в форме, воспринимаемой для формальной обработки автоматическими устройствами,
прерывание - операция процессора, состоящая в регистрации состояния процессора, предшествующего прерыванию и установлении нового состояния,
виртуальная машина - условная логическая модель управления конфигурациями вычислительной системы, воплощенная как программное обеспечение решения выполняемой задачи,
защищенный режим процессора - принцип формирования абсолютного адреса в физической памяти, благодаря чему возможно использование всей имеющейся в наличии дополнительной (расширенной) памяти,
модуль программного обеспечения - определенная функциональными свойствами часть массива данных, оформленная как программа в соответствии с внутренними стандартами операционной системы,
область данных или сегментный регистр программного обеспечения - часть программы, которая может быть адресована как блок памяти,
пространство оперативной памяти - область оперативной памяти, которая является областью значений функций адресации,
стек - программная или аппаратурная или программно-аппаратурная реализация записи и чтения данных через один и тот же регистр,
блоки управления - таблица данных управляющей информации,
таблица - данные с матричной структурой,
запрет - подача сигнала, в результате которой сигналы, инициирующие определенные действия, игнорируются или откладываются,
страница - область из числа одинаковых областей, на которые разделена физическая память для виртуальной реализации,
вызов программного обеспечения - действие по активизации машинной программы,
адресация - значение поля команды, по которому вычисляются исполнительные адреса операндов команды или соответствие объекта в адресном пространстве физической памяти,
массив машинного кода процессора - набор последовательно организованных на логическом уровне кодов представления команд процессора,
команда - управляющий сигнал, инициирующий исполнение определенной операции в исполнительном устройстве,
адресное пространство - упорядоченное множество адресов при определенной схеме адресации.
Сущность заявляемого способа поясняется чертежами, где на фиг.1 показана схема последовательности этапов, на фиг.2 - схема загрузки данных, относящихся к программе, в реальную память, а на фиг.3 - схема фрагментации реальной памяти.
Для реализации заявляемого способа либо создается, либо используется существующая вычислительная система, содержащая аппаратный интерфейс - PC и другую технику, которая поддерживает Intel архитектуру, а также программный интерфейс - Unix, Linux, Windows и любую операционную систему, которая поддерживает защищенный режим. Архитектура системы должна предусматривать, как минимум, процессор i80386 фирмы Intel и 4 Мб оперативной памяти для управляющих таблиц и свободной памяти для прикладных задач. Для реализации заявляемого способа виртуальная машина (далее ВМ) должна, например, представлять собой систему объединенных выполняемой задачей команд, созданных на языке Assembler с поддержкой Intel - архитектуры и транслированных в машинные коды операций. В функции такой ВМ входит обработка всех возможных прерываний, как аппаратных, так и программных, и возможность эффективно использовать страничную переадресацию. ВМ должна уметь работать с расширенной памятью и иметь встроенную возможность распознавания машинного кода.
Реализацию способа осуществляют следующим образом:
Выполняют программное обеспечение (приложение) пуском процессора в режиме, обеспечивающем возможность программному обеспечению работать на уровне привилегии, намеченном программным обеспечением. Для перехода к выполнению виртуальной машиной (далее ВМ) программного обеспечения, выполняющегося вне упомянутого режима процессора в адресном пространстве оперативной памяти ВМ, инициализируют управляющий блок памяти, находящийся, например, в пределах 1 мегабайта (см. фиг.2), выводят процессор в защищенный режим, вычисляют требуемый для модуля программного обеспечения размер свободного пространства оперативной памяти, инициализируют стек, блоки для управления страницами (по 4 кб, см. фиг.1), таблицу распределения памяти с выделением блока оперативной памяти нужного размера для модуля программного обеспечения и добавлением строки в таблицу распределения оперативной памяти соответствующего формата и устанавливают запрет на обращения к страницам, находящимся в блоке для управления страницами.
Если приложение требует от операционной системы выделить блок размером 64 кб или меньше, то ВМ перехватывают прерывание, генерируемое процессором, и сверяют его с допустимым адресным пространством. Если есть возможность выделить этот размер, то ВМ передают обработку операционной системе, если адресного пространства недостаточно, то ВМ запрашивают у диспетчера памяти выделить блок в верхней памяти. По запросу ВМ диспетчер памяти выделяет блок нужного размера и добавляет строку в таблицу распределения памяти соответствующего формата. После выделения блока ВМ осуществляют переадресацию области данных или сегментных регистров программного обеспечения соответственно добавленной строке в таблице распределения памяти, формируя в управляющем блоке соответствующую запись, которая ссылается на блок, расположенный в таблице распределения памяти и передает указатель (на элемент в управляющем блоке) приложению, эмулируя функцию выделений памяти, а при вызове функции удаления блока соответствующие записи заполняются нулями.
При каждом обращении к управляющему блоку генерируется исключение и ВМ вычисляют линейный адрес возникшего исключения, вычисляют размер машинного кода в программном обеспечении, копируют машинный код в виртуальную машину, после чего настраивают нужные сегменты на блоки хранения данных, выполняют упомянутую команду (текущий машинный код приложения) на другом адресном пространстве, восстанавливают сегменты и регистры и обратно передают управление программному обеспечению,
При такой работе вычислительной системы для реализации переадресации управляющие блоки размером 16 байт должны иметь формат, например
Size Byte
где Addr - линейный адрес блока в "Таблице распределения памяти",
Cs - адрес программы, инициализирующий блок памяти,
AddrCs - адрес машинного кода последнего вызова (адрес программы, которая последний раз вызывала этот блок памяти),
AddrIP - указатель на машинный код,
Ofs - последнее смещение в блоке памяти,
Flag - флаг состояния (popf) при вызове блока памяти,
Reserv - резервные байты (для возможности расширения),
а таблицы распределения памяти размером 17 байт - формат, например
где NumberTask - номер задачи или выделенного блока. Если он равен 0, то он чист или был удален,
Addr - линейный адрес на начало размещения блока данных в верхней памяти,
Size - размер блока данных,
Conf - это атрибут, показывающий, какой блок в памяти (0 - собсвенно виртуальной машины, 1 - драйвера, 2 - приложения, 3 - приложения DOS и т.д.),
NullSize - остаток после того, как блок удалили и снова заняли, т.е. после удаления блока устанавливается NumberTask = 0 и блок становиться пустым.
При новом запросе приложения (это может быть и другое приложение-программа) выделить блок данных, ВМ находит свободный блок (если такой имеется) нужных или больших размеров, выделяет его, устанавливая Size, равный запрашиваемому размеру, a NullSize, равный предыдущему размеру блока, - запрашиваемому размеру. То есть тем самым NullSize показывает, сколько осталось свободно памяти, и тем самым этот блок в размере NullSize можно использовать для других приложений.
Как видно каждый блок управления (16 байт) может открыть окно в 64 кб максимально. Соответственно одна страница в себе содержит 4 кб/16=4096/16=256 блоков управления. Значит одна страница при идеальных условиях может увеличить размер памяти до 256*65536=16777216 байт или 16384 кб. Но если учитывать, что страницы ложатся не ровно в управляющий блок, то потери оперативной памяти составят для одной страницы:
(256*64 кб)-По,
где По=Пн+Пк,
Пн - потери оперативной памяти в начале блока управления,
Пк - потери оперативной памяти в конце блока управления.
По - суммарные потери оперативной памяти в управляющем блоке.
Учитывая тот факт, что одна страница равна 4 кб и в ней можно разместить 256 блоков управления (по 16 байт), а также то, что размер запрашиваемый памяти может быть 64 кб или меньше, то общая формула по расширению примет вид:
количество блоков =N*4096/16, где N - кол. страниц в суммарном управляющем блоке (блок А на фиг.2),
а размер выделенной памяти для всех блоков, на которые есть указатели в памяти, составит
С учетом потерь эффективность (Э) использования памяти будет равна размеру выделенной памяти за вычетом суммарных потерь (По) оперативной памяти в суммарном управляющем блоке. В этом случае коэффициент (Кэ) эффективности для прикладных программ с учетом потерь составит:
Кэ=Э/Size, где Size - размер управляющего блока А;
Коэффициент (Кэ) эффективности показывает, во сколько раз больше выделяют памяти по сравнению с затраченной для служебных нужд.
При идеальных условиях: возьмем N=1, все Size = 64 кб = 65536 байт, По=0, SizeA = 4 кб = 4096 байт:
∑Size (все по 64 кб)=(к*4096/16)*65536=16777216;
Кэ=(16777216-0)/4096=4096;
То есть в 4096 раз выделяемый объем превосходит занимаемый. При идеальных условиях формула примет вид:
Кэ=Size/16.
Если все блоки будут выделены по 20 Кб (Size = 20 кб = 20480 байт), то Кэ=20480/16=1280.
Все это доказывает, что данный способ обработки цифровых данных эффективен.
Изобретение относится к области обработки цифровых данных, в частности к средствам для программного управления. Техническим результатом является оптимизация использования емкости памяти. Способ заключается в выполнении программного обеспечения в режиме процессора, обеспечивающего возможность программному обеспечению работать на уровне привилегии, выходе процессора в защищенный режим и переходе к выполнению виртуальной машиной программного обеспечения, выполняющегося вне упомянутого режима процессора в адресном пространстве оперативной памяти, причем вычисляют требуемый для модуля программного обеспечения размер свободного пространства оперативной памяти, инициализируют стек, блоки для управления страницами, таблицу распределения памяти и устанавливают запрет на обращения к страницам, находящимся в блоке для управления страницами, а при выполнении обращений программного обеспечения к запрещенным страницам перехватывают прерывание, генерируемое процессором, осуществляют переадресацию области данных или сегментных регистров программного обеспечения, вычисляют размер машинного кода в программном обеспечении, копируют машинный код в виртуальную машину, выполняют упомянутую команду на другом адресном пространстве и передают управление программному обеспечению. 3 ил.
Способ обработки цифровых данных, включающий этапы, на которых выполняют программное обеспечение в режиме процессора, обеспечивающем возможность программному обеспечению работать на уровне привилегии, намеченном программным обеспечением, выход процессора в защищенный режим и переход к выполнению виртуальной машиной программного обеспечения, выполняющегося вне упомянутого режима процессора в адресном пространстве оперативной памяти, отличающийся тем, что виртуальной машиной вычисляют требуемый для модуля программного обеспечения размер свободного пространства оперативной памяти, инициализируют стек, блоки для управления страницами, таблицу распределения памяти с выделением блока оперативной памяти нужного размера для модуля программного обеспечения и добавлением строки в таблицу распределения оперативной памяти соответствующего формата и устанавливают запрет на обращения к страницам, находящимся в блоке для управления страницами, а при выполнении обращений программного обеспечения к запрещенным страницам перехватывают прерывание, генерируемое процессором, осуществляют переадресацию области данных или сегментных регистров программного обеспечения соответственно добавленной строке в таблице распределения памяти, вычисляют размер машинного кода в программном обеспечении, копируют машинный код в виртуальную машину, выполняют упомянутую команду на другом адресном пространстве и передают управление программному обеспечению.
RU 2003123118 А, 10.01.2005 | |||
RU 2003123112 A, 27.02.2005 | |||
Прибор, замыкающий сигнальную цепь при повышении температуры | 1918 |
|
SU99A1 |
Способ и приспособление для нагревания хлебопекарных камер | 1923 |
|
SU2003A1 |
Авторы
Даты
2007-02-20—Публикация
2005-09-05—Подача