Независимость подготовки пользовательских программ и их защита от взаимных помех.

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

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

На уровне трансляции сегментов разделение адресных пространств пользовательских программ осуществляется при помощи локальных таблиц дескрипторов (LDT) сегментов. Доступ к сегментам осуществляется только через таблицы дескрипторов. Загрузка сегмента в память (оперативную или внешнюю) производится в любую ее свободную область. При этом в дескрипторе сегмента фиксируется базовый (начальный) адрес сегмента. Таким образом, таблица дескрипторов определяет не только общий объем адресного пространства программы, но и конкретное размещение сегментов программы в физической памяти за счет указания базовых адресов и размеров сегментов. Это является основой разделения адресных пространств программ пользователей, поскольку у каждой пользовательской программы есть своя локальная таблица дескрипторов (LDT), недоступная программам других пользователей. Эта таблица определяет доступ к физическим адресам соответствующих сегментов. Следовательно, пользовательские программы могут видеть только свое адресное пространство.

Многопользовательские режимы должны не только разделять программы пользователей. В некоторых случаях требуется совместная работа нескольких пользовательских программ. Для этого требуется не локальная , а разделяемая память. Разделяемая между несколькими программами память легко организуется при помещении дескрипторов соответствующих сегментов в общую глобальную таблицу дескрипторов (GDT) или дублированием дескрипторов разделяемых сегментов в локальных таблицах дескрипторов (LDT).

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

Таким образом, используя механизм виртуальной памяти удается эффективно разделить программы так, что они не влияют друг на друга и взаимно защищены друг от друга.

 








Дата добавления: 2015-08-14; просмотров: 646;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.