Диссертация (1091136), страница 10
Текст из файла (страница 10)
Формальный подход к контролю использования оперативнойпамяти программным продуктом с целью выявления дефектов ипотенциальных угрозВ результате работы алгоритма контроля обращений процессора к областямпамяти используемой программным продуктом, получен массив командпроцессора, выполняющих операции с памятью (Рисунок 22).Как говорилось ранее, исследования проводились в операционной системеDOS, в которой распределение памяти по адресам осуществляется следующимобразом (Рисунок 23).Полученные результаты возможно распространить под операционныесистемы семейства Windowsи Unix.За такт процессор выполняет одну операцию, меняя состояние однойячейки области памяти, содержащейся в строке.
Это может быть любой типпамяти из семи представленных на рисунке 22. За N тактов получено построчное73заполнение областей, схематичное представление которых имеет следующийвид (Рисунок 24).Темным цветом выделены ячейки, использованные при выполненииопераций. Линию, соединяющую ячейки, назовем трассой. Существуют толькотри операции исполняемые процессором на областях оперативной памяти.Композицию множества операций на семи типах областей памяти представим ввиде матрицы, изображенной в виде Таблицы 8.Таблица 8-Множество операций процессора на областях памятиОбласть памятиТаблица прерываний (I)Данные BIOS (II)Память программ (III)Видеопамять (IV)BIOS (V)ACPI (VI)APIC (VII)Тип операции процессораRIRIIRIIIRIVRVRVIRVIIWIWIIWIIIWIVWVWVIWVIIXIXIIXIIIXIVXVXVIXVII[CPU0 RD]: LIN 0x0000ffc8 PHY 0x00000000ffc8 (len=2, pl=0): 0xFFD2[CPU0 RD]: LIN 0x0000ffca PHY 0x00000000ffca (len=2, pl=0): 0x081D[CPU0 RD]: LIN 0x0000ffda PHY 0x00000000ffda (len=2, pl=0): 0x0166[CPU0 WR]: LIN 0x0000ffda PHY 0x00000000ffda (len=2, pl=0): 0x0167[CPU0 RD]: LIN 0x0000ffd8 PHY 0x00000000ffd8 (len=2, pl=0): 0xF000[CPU0 WR]: LIN 0x0000ffce PHY 0x00000000ffce (len=2, pl=0): 0xF000Условные обозначения:- Отчет о работе с памятью- Номер такта процессора- Операция записи в память- Линейный адрес памяти- Физический адрес памяти- Операция чтения из памятиРисунок 22- Массив отобранных данных из журнала после примененияалгоритма74Интервалы адресов (линейные в 16-ричном представлении)0-3FF400-4FF500-9FFFFA0000-BFFFFC0000-FFFFFТаблицапрерыванийДанныеBIOSДоступнаяпамятьпрограммВидеопамятьBIOSFEE00000-…7FF0000-…Областьуправления ACPIчерез маппингпамяти, доступ кпрошивке BIOSОбластьуправленияAPIC черезмаппинг памятиНазначениеРисунок 23 - Распределение оперативной памяти по адресам воперационной системе DOSДанные BIOSПамять программВидеопамятьBIOSACPIAPICМашинное времяТаблицапрерыванийNтактовпроцессораРисунок 24 - Использованные ячейки оперативной памяти за N тактовТрассаработывычислительнойсистемыформируетсянаосноветактирования процессора и представляется в виде конъюнкции использованияпрограммой оперативной памяти.
Математическая модель, построенная на базеисчисления высказываний, имеет следующий вид (29).F= RI& WIII& XI& WIV& XI& RII· · · · · · · · · XII(29)Приведенное выражение имеет громоздкий вид, количество членовконъюнкции равно количеству команд работы процессора с оперативнойпамятью, и при 10 минутах работы вычислительной системы их число доходитдо десятков миллионов.75С целью упрощения получаемоговыражения, представим трассуследующим образом: при использовании ячейки памяти в конкретной областибудем присваивать ей значении 1, а неиспользованным ячейкам в областяхназначение 0. Таким образом, получим следующий вид областей оперативнойпамяти, изображенный на Рисунке 25.Выполним свертку повторяющихся символов, так как это не отражается назначении результата (Рисунок 26).Переведя значения, отраженные на Рисунке 26 в табличный вид, получимматрицу размера 7 на N, Таблица 9.Таблица 9 -Матричное представление использования процессором областейпамятиТаблицапрерываний1010000...1ДанныеBIOS0100010...0Памятьпрограмм0001001...0Видеопамять BIOS ACPI APIC0010000...00000100...00000000...00000000...0Машинное времяТаблицапрерыванийДанные BIOSВидеопамятьПамять программAPICACPIBIOS01000000 0 000000 0 0000000000000010 0 000000 0 0000000000000 0 0000000000000 0 00000000000 0 00000000001000000000000 0 00 0 110000000 0 00000000000001000 0 0000000000000000001 0 00 0 00000000000000 0 00000000000000000010000 0 00 0 00 0 000000100 0 000NтактовпроцессораРисунок 25- Присвоение использованным ячейкам оперативной памяти значения 1Машинное время76ТаблицапрерыванийДанные BIOSПамять программВидеопамятьBIOSACPIAPIC100000001000001000000100100000000000000001001000100000000100000Рисунок 26- Оптимизированный вид использованных областей памятиNтактовпроцессора773.4 Определение оптимальной длины последовательности командпроцессора, оперирующих с адресами оперативной памяти, для полученияхарактеристической сигнатуры программного продуктаПри оценке качества ПП часто применяются системы виртуализации,которые позволяют на более низком уровне выполнять контроль за обращениемпрограммного продукта к физическим ресурсам вычислительных систем.Неоднократно упоминалось, что использование программного продукта, непрошедшего проверку на наличие недокументированных возможностей, можетприводить к техногенным катастрофам [89].
В [44] подробно описан алгоритмполучения и интерпретации данных из журнала работы виртуальной машины.Исследования, произведенные в разделе 3.3, показали, что формализацияпроцедурыобращенияпроцессоракобластямоперативнойпамятивычислительной системы описывается математической моделью, основанной наисчислении высказываний (29).F= RI&WIII&XI&WIV&XI&RII· · · · · · · · ·XIIИнформацияоработевычислительнойсистемы,(29)основаннаянаисследовании потактного обращения процессора к областям оперативнойпамяти представляется, в виде матрицы размером 7 на N, где 7 – это количествообластей оперативной памяти, используемой операционной системой, а N – этоколичество тактов процессора.
Фрагмент матрицы показан в Таблице 8раздела 3.3.Строка матрицы содержит информацию об изменении состояния ячейкиконкретной области оперативной памяти, при этом остальные области не меняютсвоего состояния. Приняв за бит значения строк матрицы, получим семибитноепредставление значения каждой строки. Согласно кодировке KOI-7 значениястрокинтерпретируетсякакнекоторыесимволы.Другимисловами,формируется алфавит работы программы, из которого складываются слова ипредложенияфункционированиявычислительнойсистемывцелом.KOI-7 является кодировкой для русского языка, основанной на ASCII. Дополним78матрицу слева нулевым столбцом до получения полного байта (Таблица 10).Дополнение до байта позволит применить автоматизированную обработку.Таблица 10 - Фрагмент матрицы состоящей из 10 строк№такта1Дополнение00000000002345678910Таблицапрерываний1000000001ДанныеBIOS0100010000Памятьпрограмм0001001000Видеопамять0010000100BIOSACPIAPIC000010001000000000000000000000Значению строки соответствует символ из таблицы Unicode.
Unicodeпозволяет закодировать символ 16 битами. В данном случае используется только8 бит, оставшиеся 8 бит полагаются резервными, так как могут бытьиспользованы при дальнейших исследованиях. Имеем следующее представлениеячейки используемой области оперативной памяти – {0,Х}, где 0 – резервныйбит, Х – бит, формируемый в соответствии с разработанным алгоритмом.Соответствие значения строки матрицы символу по таблице приведено вТаблице 11.Таблица 11 - Соответствие значения строки символу по таблице Unicode№тактаДополнениеТаблицаДанныеПамятьпрерыванийBIOSпрограммВидеопамятьBIOSACPIAPICЗначение01000000@200100000-300001000BS400010000DLE500000100BS600100000-700010000DLE800001000BS900000100EOT1001000000@79180Из примера видно, что в большинстве случаев значение строкисоответствуетспециальномусимволу,которыйтяжелоподвергнутьавтоматической обработке.
Поэтому если получаемое (базовое) значениеменьше пятидесяти, то прибавим к нему величину, равную 50, если больше, тооставим без изменения. С учетом этого получаем интервал допустимых значенийпо таблице Unicode от 50 до 127.Процессор вычислительной системы за 10 минут работы выполняетдесятки миллионов тактов, следовательно, получаемый алфавит будет оченьгромоздким и тяжелым для восприятия и дальнейшего анализа.
Выполнимсвертку строк для уменьшения объема получаемой информации следующимобразом: если в столбце присутствует более одной единицы, то результирующеезначение равно единице, в противном случае значение столбца равно 0 (Таблица12).Для выражения из десяти тактов N10=01111100,значением в десятичномвиде 124 по таблице Unicode является символ вертикальная черта {ǀ}.Определение оптимального количества строк, подвергаемых свертке позволитисключитьсущественныепотериинформацииоработепрограммввычислительной системе.В ходе многочисленных экспериментов установлено, что оптимальнаясвертка без потери информативности - от 10 до 30 строк в одну.
Значительныепотери происходят при свертке более 150 строк в одну. Фрагментоптимизированного выражения работы программы из журнала виртуальноймашины имеет вид:«F6F6F6F6F6F6F6VFVFVFVF6F6F6F6F6F6FBT6F6F6VFVF6F6F6F6F6F6F6VFVFVFVF6F6F6F6F6F6FBPBT6F6F6VFVF6F6F6F6F6F6F6VFVFVFVF6F6F6F6F6F6FBPBT6F6F6VFV».Таблица 12 - Результат свертки строк для уменьшения объема получаемой информации№тактаДополнениеТаблицаДанныеПамятьпрерыванийBIOSпрограммВидеопамятьBIOSACPIAPIC010000002001000003000010004000100005000001006001000007000100008000010009000001001001000000Итог0111110081182По результатам исследований, выполненных в разделах 3.1 – 3.4 можносделать предварительные выводы:1. Надежность ПП напрямую зависит от отработки требований по качеству,проектированию и тестированию.2.