Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

4.1. ПОНЯТИЕ АДРЕСНОГО ПРОСТРАНСТВА

Для одновременного размещения в памяти нескольких программ и для избегания ситуаций возникновения взаимных помех необходимо решить задачи по защите и перемещению.

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

Чтобы понять, как реализовано адресное пространство, то есть как достигается соответствие адресов в памяти, выделяемых для приложений, и физической памяти, для начала рассмотрим самое простое решение, называемое динамическим перераспределением памяти. Адресное пространство процесса в данном решении проецируется на различные части физической памяти. Центральный процессор получает два специальных аппаратных регистра, называемых базовым и ограничительным регистрами. Используя данные регистры, приложения помещаются в последовательно расположенные незанятые области памяти, причем в процессе загрузки адреса не подвергаются изменению. В момент запуска процесса базовый регистр центрального процессора получает физический адрес, с которого размещается в памяти запущенная программа, а ограничительный регистр получает значение длины программы.

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

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

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

Предыдущий раздел Оглавление Следующий раздел