Вложенные обращения к подпрограммам

Некоторые проблемы

Прерывание по таймеру

Аппаратные средства компьютера, необходимые для поддержания мультипрограммного режима

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

А) пример защиты с помощью анализа, (применялся на заре программирования)

Программа – непрерывная область памяти. Выделялось два регистра: в одном адрес начала программы, в другом – конец. Каждый раз смотрим, не залезли ли в «чужую» область памяти.

Б) защита по ключу

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

Специальный режим операционной системы: все множество машинных команд разбивается на 2 группы. Первая группа – команды, которые могут исполняться всегда (пользовательские команды). Вторая группа – команды, которые могут исполняться только в том случае, если ЦП работает в режиме ОС. Если ЦП работает в режиме пользователя, то попытка выполнения специализированной команды вызовет прерывание – "Запрещенная команда”.

Как минимум в машине должно быть прерывание по таймеру, что позволит избежать “зависания“ всей системы при зацикливании одной из программ.

 

 

 

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

2. Накладные расходы при смене обрабатываемой программы:

•необходимость включения режима блокировки прерываний;

• программное сохранение / восстановление содержимого регистров при обработке прерываний;

3.Перемещаемость программы по ОЗУ

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

Программу с математическими адресами надо положить на физическую память. Или например, программа была прервана, следовательно после прерывания, нужно вернуть программу в память, 99% что она попадет на новое место. Возникает необходимость настроить программу на новое место.