Независимость подготовки пользовательских программ и их защита от взаимных помех.
При разработке своей программы пользователь не должен учитывать взаимное расположение своей и других программ в оперативной памяти и может рассчитывать на любое место в памяти. Микропроцессор при этом предусматривает возможность локализации негативных последствий программных ошибок в пределах адресных пространств соответствующих программ. Это решается механизмом управления виртуальной памяти. Виртуальная память предусматривает гибкое программное распределение ресурсов памяти, динамическую переадресацию и разделение адресных пространств совместно выполняемых программ.
Виртуальная память допускает многопрограммное выполнение прикладных программ, но при этом программы изолируются друг от друга таким образом, что ошибки в одной из них не влияют на корректное выполнение других программ. Когда программа осуществляет некорректное обращение к памяти, механизм виртуальной памяти блокирует обращение и сообщает ОС о попытке нарушения защиты. В МП INTEL реализованы два уровня виртуальной памяти - верхний и нижний. Верхний уровень реализован механизмом трансляции сегментов, а нижний уровень – механизмом трансляции страниц.
На уровне трансляции сегментов разделение адресных пространств пользовательских программ осуществляется при помощи локальных таблиц дескрипторов (LDT) сегментов. Доступ к сегментам осуществляется только через таблицы дескрипторов. Загрузка сегмента в память (оперативную или внешнюю) производится в любую ее свободную область. При этом в дескрипторе сегмента фиксируется базовый (начальный) адрес сегмента. Таким образом, таблица дескрипторов определяет не только общий объем адресного пространства программы, но и конкретное размещение сегментов программы в физической памяти за счет указания базовых адресов и размеров сегментов. Это является основой разделения адресных пространств программ пользователей, поскольку у каждой пользовательской программы есть своя локальная таблица дескрипторов (LDT), недоступная программам других пользователей. Эта таблица определяет доступ к физическим адресам соответствующих сегментов. Следовательно, пользовательские программы могут видеть только свое адресное пространство.
Многопользовательские режимы должны не только разделять программы пользователей. В некоторых случаях требуется совместная работа нескольких пользовательских программ. Для этого требуется не локальная , а разделяемая память. Разделяемая между несколькими программами память легко организуется при помещении дескрипторов соответствующих сегментов в общую глобальную таблицу дескрипторов (GDT) или дублированием дескрипторов разделяемых сегментов в локальных таблицах дескрипторов (LDT).
На уровне трансляции страниц разделение адресных пространств пользователей проводится при разделении таблиц страниц. Каждая программа использует свою таблицу страниц, которая определяет доступ только к своим страницам.
Таким образом, используя механизм виртуальной памяти удается эффективно разделить программы так, что они не влияют друг на друга и взаимно защищены друг от друга.
Дата добавления: 2015-08-14; просмотров: 646;