Вирусы и средства борьбы с ними


RASPM с присоединенным вспомогательным хранилищем


Дальнейшее приближение модели к реальным компьютерам и операционным системам основывается на идее присоединенных внешних хранилищ (данных и программ).

Описанные в предыдущем пункте модели ограничены тем, что в чистом виде пригодны только для анализа отдельного алгоритма или программы. Для анализа взаимодействия алгоритмов потребовались бы значительные усилия. Чтобы упростить анализ таких ситуаций имеет смысл ввести в модель вычислительной машины специальную область или ленту, на которой будут храниться данные других программ. Назовем эту область присоединенным вспомогательным хранилищем (Attached Background Storage, ABS). Кроме этого имеет смысл потребовать, чтобы любая выполняющаяся программа имела полный доступ (чтение и запись) к этому хранилищу.

Определение 2.6. Вычислительная машина G с хранением программ в памяти с произвольной выборкой и с присоединенным вспомогательным хранилищем (RASPM с ABS) определяется шестью элементами:

G = \langle V, U, T, f, q, M \rangle,

где V - алфавит, состоящий из входных символов, выходных символов, а также символов, которые могут быть записаны на присоединенном вспомогательном устройстве и в ячейках памяти (регистрах), U - непустое конечное подмножество кодов инструкций, U V, T- непустое множество возможных действий процессора, f - однозначная функция f: U

T, ставящая в соответствие различным кодам инструкций различные действия процессора, действие процессора f(x), соответствующее коду инструкции x
U будет называться командой, q - стартовое значение счетчика операций, M - стартовое наполнение памяти

Без потери общности можно допустить, что существует взаимно однозначное кодирование символов алфавита V целыми числами. При этом каждая инструкция должна сопровождаться значением операнда, таким образом каждая команда задается двумя ячейками: код инструкции в одной ячейке и значение операнда в следующей ячейке. Один из вариантов кодирования инструкций представлен в таблице:

ИнструкцияПараметрКод инструкцииЗначение
LOADОперанд10Загружает в аккумулятор значение, определяемое операндом
STOREОперанд20Копирует значение аккумулятора в ячейку, определяемую операндом
ADDОперанд30Прибавляет к аккумулятору значение, определяемое операндом
SUBОперанд40Вычитает из аккумулятора значение, определяемое операндом
MULTОперанд50Умножает аккумулятор на значение, определяемое операндом
DIVОперанд60Делит аккумулятор на значение, определяемое операндом
ANDОперанд70Выполняет побитовую операцию "И" между аккумулятором и значением, определяемым операндом
ORОперанд80Выполняет побитовую операцию "ИЛИ" между аккумулятором и значением, определяемым операндом
XORОперанд90Выполняет побитовую операцию "исключающее ИЛИ" между аккумулятором и значением, определяемым операндом
READОперандA0Считывает значение с входной ленты в ячейку, определяемую операндом
WRITEОперандB0Записывает на выходную ленту значение ячейки, определяемой операндом
GETОперандC0Считывает значение с вспомогательного хранилища в ячейку, определяемую операндом
PUTОперандD0Записывает на вспомогательное хранилище значение ячейки, определяемой операндом
SEEKОперандE0Перемещает считывающую/записывающую головку вспомогательного хранилища в позицию, определяемую операндом
JUMPМеткаFCПрисваивает счетчику инструкций значение метки
JGTZМеткаFDПрисваивает счетчику инструкций значение метки, если аккумулятор содержит положительное число
JZEROМеткаFEПрисваивает счетчику инструкций значение метки, если аккумулятор равен нулю




- Начало -  - Назад -  - Вперед -