Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по ВС.doc
Скачиваний:
227
Добавлен:
22.03.2016
Размер:
1.1 Mб
Скачать

Свопинг

Как уже неоднократно подчеркивалось, объем оперативной памяти ограничен. Но чтобы выполнить задачу необходимо «загрузить» ее в ОП. Обычно процессор, работающий в режиме мультипрограммирования (например, в сервере), выполняет несколько задач: одна задача находится на стадии выполнения в процессоре, а для других осуществляется ввод-вывод или они находятся в стадии ожидания. Из-за ограниченности объема ОП повышать степень мультипрограммирования оказывается невозможно.

Преодолеть эту трудность можно при использовании свопинга. Свопинг – это способ организации вычислительного процесса, при котором задачи, находящиеся в состоянии ожидания, переносятся на жесткий диск, освобождая часть ОП. При этом планировщик операционной системы следит за изменением условий, складывающихся для этих задач, а при благоприятных условиях (т.е. когда можно занять ресурсы процессора, для данной задачи завершен ввод-вывод, свободны необходимые устройства для выполнения задачи и т.д.) он возвращает задачу из области свопинга на диске в ОП. Таким образом, свопинг можно рассматривать как своеобразный способ организации виртуальной памяти.

6.7 Защита памяти

Хотя принято называть этот механизм защитой памяти, на самом деле осуществляется защита хранящейся в ней информации. Обычно в процессорах предусматривают специальные средства для защиты памяти от несанкционированного доступа со стороны других программ. Нужно помнить, что в памяти компьютера всегда находится несколько программ, даже если он выполняет только одну. Из-за ошибок или по каким-либо иным причинам программа может вторгаться в «чужую» область памяти, искажая находящуюся там информацию. Чтобы этого не происходило, в компьютере предусматривают систему привилегий, которая регулирует доступ к той или иной области памяти в зависимости от уровня ее защищенности и привилегированности запроса к ней.

Защиту отдельных ячеек памяти можно осуществить, выделяя в каждой ячейке специальный «разряд защиты». Наличие единицы в этом разряде приводит к блокированию записи в эту ячейку и сообщении об ошибке, тем самым обеспечивается защита ячейки от попыток записи. Но этот механизм неудобен и в современных компьютерах он практически не используется.

Вторым механизмом защиты служат так называемые «кольца защиты». Так в микропроцессоре Pentium (как и в ранее выпускавшихся микропроцессорах 286, 386 и 486, а также в ЕС ЭВМ и ряде других машин) предусмотрены четыре кольца, или уровня привилегий, имеющие номера от 0 до 3. Чем меньше номер, тем выше уровень защищенности. Наивысшим уровнем защиты обладает ядро ОС; ему присвоен уровень 0. В это ядро входят команды, обеспечивающие инициализацию системы, управление доступом в память и ряд других важнейших функций. Уровень 1 имеют утилиты ОС, а к уровню 2 обычно относят всевозможные служебные программы, драйверы, систему управления базами данных и т.п. Наименее защищены прикладные программы пользователя; им присваивается уровень с номером 3.

Для доступа к программам и данным, хранящимся в ОП, используются следующие правила:

  • Данные из сегмента ОП с некоторым уровнем защиты могут быть выбраны программой с таким же или более высоким уровнем привилегий.

  • Программная процедура может быть вызвана программой с таким же или более низким уровнем привилегий.

Уровни защиты определяются двумя битами (указывающими уровень защищенности). Естественно, что при обращении в ОП должно быть произведено сравнение разрешенного уровня запроса (указывается в двух битах специального описателя) с фактическим (указанным в специальном регистре-селекторе). Если уровень запроса, указанный в селекторе, ниже разрешенного уровня, то данные ячейки ОП оказываются «закрытыми» для доступа к ним. Доступ к менее привилегированной процедуре может осуществляться только через специальный шлюз вызова.

Самый распространенный метод защиты памяти – это метод граничных регистров. В процессоре предусматривают два специальных регистра, которые содержат верхнюю и нижнюю границы области памяти, к которой может обращаться текущая программа, рисунок 6.х. Занесение границ в эти регистры производится операционной системой «в привилегированном режиме» при загрузке программы.

Рисунок 6.х Защита памяти методом граничных регистров

При запросе информации из ОП, осуществляемом «в пользовательском режиме», адрес сравнивается с установленными границами и, если он находится между верхней и нижней границами, передается в память. Если же происходит нарушение защиты, т.е. адрес выходит за установленные рамки, то доступ в память блокируется и формируется сигнал нарушения защиты.

Для организации защиты несмежных областей памяти в машинах ЕС ЭВМ использовали ключи защиты – каждому блоку памяти присваивался некоторый код, или ключ защиты. Каждая программа получала свой код – код защиты программы. Доступ к любому блоку памяти возможен только при совпадении значений ключа и кода защиты или при равенстве ключа нулю. Нулевое значение ключа определяет возможность доступа ко всему адресному пространству памяти со стороны ОС. Код (или ключ) защиты программы находится в специальном регистре, хранящем слово состояния программы. При обращении к ОП производится сравнение ключей защиты памяти и программы: при совпадении ключей доступ к памяти разрешается, а при несовпадении – формируется сигнал нарушения защиты.