Аппарат привилегированных команд.
Сейчас мы рассмотрим ещё одно необходимое свойство аппаратуры, без которого невозможно реализовать мультипрограммный режим работы ЭВМ. Это свойство заключается в следующем: все команды, которые может выполнять центральный процессор, разбиваются на два класса. Команды из одного класса называются обычными командами или командами пользователя, а команды из другого класса – привилегированными или запрещёнными командами.
Далее, в центральном процессоре располагается специальный одноразрядный регистр режима работы, который может, естественно, принимать только два значения. Значение этого регистра и определяют тот режим, в котором в данный момент работает центральный процессор: обычный режим (или режим пользователя) или привилегированный режим.[81] В привилегированном режиме центральному процессору разрешается выполнять все команды языка машины, а в режиме пользователя – только обычные (не привилегированные) команды. При попытке выполнить привилегированную команду в пользовательском режиме вырабатывается сигнал прерывания, а сама команда, естественно, не выполняется. Из этого правила выполнения команд легко понять и другое название для привилегированных команд – запрещённые команды, так как их выполнение запрещено в режиме пользователя. Объясним теперь, почему без аппарата привилегированных команд невозможно реализовать мультипрограммный режим работы ЭВМ.
Легко понять, что, например, команды, которые заносят на регистры защиты памяти Анач и Акон новые значения, должны быть привилегированными. Действительно, если бы это было не так, то любая программа могла бы занести на эти регистры адреса начала и конца оперативной памяти, после чего получила бы возможность записывать данные в любые области памяти.
Привилегированными должны быть и все команды, которые обращаются к внешним (периферийным) устройствам. Например, нельзя разрешать запись на диск в режиме пользователя, так как диск – это тоже общая память для всех программ, только внешняя, и одна программа может испортить на диске данные, принадлежащие другим программам. То же самое относится и к печатающему устройству: если разрешить всем программам бесконтрольно выводить свои данные на печать, то, конечно, разобраться в том, что же получится на бумаге, будет невозможно.
Итак, в мультипрограммном режиме программе пользователя запрещается выполнять команды, работающие с внешними устройствами (дисками, принтерами, линиями связи и т.д.). Как же быть, если программе необходимо, например, считать данные из своего файла на диске в оперативную память? Выход один – программа пользователя должна обратиться к служебной процедуре с просьбой, выполнить для неё ту работу, которую сама программа пользователя сделать не в состоянии. Служебная программа, естественно, должна работать в привилегированном режиме. Перед выполнением запроса служебная процедура проверяет, имеет ли программы пользователя право на запрашиваемое действие, например, что эта программа имеет необходимые полномочия на чтение из указанного файла.[82]
Переключение из привилегированного режима в режим пользователя обычно производится по специальной (не привилегированной) машинной команде. Значительно сложнее обстоит дело с такой опасной операцией, как переключение центрального процессора в привилегированный режим работы. Это переключение невозможно выполнить по какой-либо машинной команде (поймите, почему это так!). Обычно переключение в привилегированный режим производится автоматически при обработке центральным процессором сигнала прерывания, а иногда – при вызове специальных системных процедур, которые имеют полномочия для работы в привилегированном режиме.
Дата добавления: 2015-10-05; просмотров: 1344;