Защищенный режим процессоров Intel 80286 80386 80486

       

Мы уже говорили вам, что


Мы уже говорили вам, что операционная система MS-DOS, использующая реальный режим работы процессора, не защищена от прикладных программ. Подсистема управления памятью MS-DOS основана на разбиении всей памяти на участки, в начале которых помещаются блоки управления памятью MCB (Memory Control Block). При запуске программы MS-DOS выделяет ей необходимое количество блоков и загружает соответствующим образом сегментные регистры. Если программа не изменяет содержимое сегментных регистров, она будет работать только с теми сегментами памяти, которые выделены ей операционной системой. Однако ничто не может помешать любой программе загрузить в сегментные регистры любое значение, в том числе адреса сегментов самой операционной системы. Поэтому, строго говоря, MS-DOS не имеет сколько-нибудь надёжного механизма управления памятью - всё основано на выполнении программами "джентльменского соглашения" о неразрушении операционной системы. Для повышения надёжности работы всей системы в целом необходимо запретить обычным пользовательским программам модифицировать области памяти, принадлежащие операционной системе. Если система работает одновременно с несколькими пользователями (мультипользовательская операционная система), необходимо также закрыть программам пользователя доступ к памяти, распределённой другим пользователям. Иначе говоря, необходимо разделить адресные пространства операционной системы от пользовательских программ с одной стороны, и адресные пространства отдельных пользователей друг от друга с другой стороны. Такие операционные системы, как WINDOWS и OS/2, являются однопользовательскими, но многозадачными системами. Пользователь может запустить одновременно несколько программ. В этом случае было бы желательно разделить адресные пространства этих программ с целью исключения их влияния друг на друга (и, разумеется, на операционную систему). Аварийное завершение одной запущенной задачи не должно вызывать аварийного завершения остальных задач или, тем более, всей операционной системы. Кроме того, необходимо разрешить модулям операционной системы доступ к памяти всех запущенных программ для выполнения эффективного управления работой всей системы. Отсюда с одной стороны, вытекает идея наделения программ операционной системы некоторыми привилегиями по сравнению с пользовательскими программами, с другой стороны - идея наделения отдельных участков памяти средствами защиты от доступа к ним со стороны непривилегированных программ. Многие мини-ЭВМ и большие ЭВМ реализуют схему "супервизор-пользователь".
Операционная система работает в режиме "супервизор" и ей доступны все ресурсы компьютера - вся память, любые команды процессора и т.д. Запущенные программы работают в режиме "пользователь" и имеют доступ только к тем участкам памяти, которые выделены им операционной системой. Кроме того, эти программы ограничены в использовании некоторых команд процессора (например, команд ввода/вывода). Для предотвращения доступа программам, работающим в режиме "пользователь" к чужим блокам памяти используются так называемые "ключи" (это просто целые числа). Отдельным блокам памяти операционная система назначает свои "ключи". Кроме того, запущенные программы также снабжаются "ключами". Программа может иметь доступ только к таким блокам памяти, к которым подходит "ключ", имеющийся в распоряжении программы. Такая схема не обеспечивает полного изолирования адресных пространств отдельных задач. Адресное пространство здесь одно, но для обычных программ разрешён доступ только к своему участку памяти в соответствии с имеющимся ключом. Однако в системе может работать несколько программ с одинаковым ключом памяти!

Содержание раздела