Организация управления основной памятью ЭВМРаспределение и защита памятиВиртуальная память
Основные функции управления ОП, реализуемые процессором ЭВМ, сводятся к формированию исполнительных (физических) адресов фактического обращения к ОП, а также к распределению и защите областей памяти при мультипрограммном режиме работы. В конечном счете необходимо наиболее эффективно отобразить адресное пространство программ в адресном пространстве ОП, которое требуется для их размещения и выполнения.
Наименьшей адресуемой единицей данных, хранящейся в памяти, является байт. В персональных ЭВМ число байтов памяти, имеющих уникальные адреса, определяется количеством m линий в шине адреса системной магистрат и. При m - 16 это количество равно 64 Кбайта, при m = 20 - 1 Мбайт, при m = 24 - 16 Мбайт, при m = 32 - 4 Гбайт. Несогласованность разрядности адресов машинных команд и разрядности физических адресов фактического обращения к памяти приводит к необходимости формирования последних с использованием тех или иных способов адресации.
При загрузке в ОП программы, подлежащей выполнению, ей выделяется определенный ресурс (объем) памяти, необходимый для размещения команд, данных, управляющих таблиц и др., т.е. производится трансляция адресного пространства программы в соответствующее местоположение ее в реальной памяти.
Эффективное распределение ресурса памяти между различными программами не может быть статическим, т.е. производиться программистом (пользователем) перед их выполнением. В процессе обработки программ
176
потребности в ресурсе памяти отдельных программ изменяются, что заранее не всегда можно учесть. Необходимо осуществлять динамическое распределение памяти, т.е. распределять ресурс памяти непосредственно в ходе вычислительного процесса. Эти функции, в основном, берет на себя операционная система. Динамическое распределение памяти позволяет перемещать программы, размещать их в свободных или освобождающихся областях памяти, допускает использование несмежных участков и т.д. Все это существенно снижает фрагментацию памяти, характерную для статического распределения.
Одним из распространенных способов динамического распределения памяти является сегментная организация программ, при которой адресное пространство программы разбивается на отдельные сегменты, мало связанные между собой. Каждый сегмент имеет собственный номер (адрес) S, а внутри сегмента адрес необходимого байта задается соответствующим смещением i. Сегментный адрес программы (или ее части) размещается в сегментном регистре процессора, а смещение задается адресным полем каждой команды программы.
Разрядность сегментного регистра вместе с разрядностью смещения в адресном поле команды определяются адресной структурой ЭВМ, т.е. допустимой для данной ЭВМ разрядностью шины адреса системной магистрали. Адресная структура ЭВМ физически ограничивает, с одной стороны, максимальное число сегментов, которое может существовать в адресном пространстве программ, а с другой, ограничивает максимальное смещение любого адреса в сегменте.
Если ЭВМ имеет 32 - х битовую адресную структуру, то максимальная длина адреса в единственном сегменте будет составлять 32 разряда. Если же 16 разрядов из 32 отвести под сегментный адрес S, a 16 разрядов - под смещение i, то адресное пространство программ будет состоять из 216 сегментов, каждый из которых может содержать 216 = 64 Кбайт.
Сегментированная программа загружается в реальную память без трансляции адресного пространства, т.е. без изменения адресов в программе с учетом физического размещения в памяти команд и данных. Сегменты вводимой программы содержат лишь относительные адреса, задаваемые смещением. Каждый сегмент перемещается в реальную память отдельно, при этом участки основной памяти могут быть или не быть смежными.
Динамическая трансляция адресов каждой команды производится в процессе ее выполнения. При этом формируются реальные физические адреса памяти по известным относительным адресам, содержащим номер сегмента и смещение относительно начала сегмента. Процессор обращается к памяти, используя только реальные физические адреса.
Для динамической трансляции адресов операционная система формирует для каждой программы специальные сегментные таблицы, которыми устанавливается соответствие между номерами сегментов данной
177
программы и действительными адресами сегментов в реальной памяти. Таблицу сегментов содержит каждая выполняемая программа. В дополнение к таблицам сегментов, хранящимся в памяти, используется специальный управляющий регистр процессора называемый регистром начала таблицы сегментов (РНТС). В этот регистр заносится адрес таблицы сегментов для той программы, которая выполняется в данный момент времени.
На рис. 8.7 показана технология формирования исполнительного (физического) адреса при сегментной организации памяти. Для каждой n - ой программы, подлежащей выполнению, в адресном поле команд указывается относительный адрес заданием номера сегмента S и смещения i.
Рис. 8.7. Структурная схема преобразования адресовпри сегментной организации памяти
При этом в РНТС заносится начальный адрес сегментной таблицы этой программы. Номер сегмента в относительном адресе команды используется как индекс при обращении к сегментной таблице. Адрес, хранимый в выбранной строке этой таблицы, является адресом начала сегмента в реальной памяти. Смещение i в относительном адресе команды добавляется к начальному адресу сегмента, образуя физический адрес реальной памяти.
178
Использование сегментации программ позволяет уменьшить фрагментацию памяти, но полностью фрагментация не устраняется, так как остаются фрагменты, длина которых меньше длины сегмента программы.
Если сегменты разделить на более мелкие единицы, называемые страницами, то неиспользуемые фрагменты ОП значительно сократятся в объеме, так как при этом останется фрагментация лишь внутри страниц, имеющих незначительный объем.
Сегментно - страничная организация добавляет еще один уровень в структуре адресного пространства программ. Теперь иерархия в организации размещения программ состоит из четырех ступеней: 1) программа, 2) сегмент, 3) страница, 4) байт. В каждой команде структура адреса содержит три составляющих; S, P, i, где S - имя (номер) сегмента внутри адресного пространства программы; Р - имя (номер) страницы внутри сегмента; i - адрес байта относительно начала страницы.
Для 32 - разрядной ЭВМ адресная структура при сегментно - страничной организации может быть такой, как показана на рис. 8.8.
Рис. 8.8. Адресная структура при сегментно - страничнойорганизации памяти
При сегментно - страничной организации процесс преобразования адресов, показанный на рис. 8.9, требует формирования как сегментных, так и страничных управляющих таблиц. Эти функции выполняет операционная система совместно с техническими средствами процессора.
На первом этапе начальный адрес сегментной таблицы суммируется с номером сегмента S из относительного адреса. В результате образуется адрес, по которому из ОП считывается строка сегментной таблицы, содержащая адрес начала страничной таблицы для данного сегмента.
179
Рис. 8.9. Структурная схема преобразования адресовпри сегментно - страничной организации памяти
На втором этапе полученный адрес начала страничной таблицы суммируется с номером страницы из относительного адреса. В результате образуется адрес, по которому из ОП считывается соответствующая строка страничной таблицы, указывающая номер физической страницы памяти. Соединив этот номер со смещением из относительного адреса, получим физический адрес обращения к байту реальной памяти.
Если нужная физическая страница оказывается во внешней памяти, то происходит прерывание по страничному сбою. Операционная система инициирует передачу этой страницы в ОП (при этом меняется номер физической страницы) и корректирует соответствующим образом страничную таблицу, находящуюся в ОП. В старшие разряды физического адреса передается новый номер физической страницы, а в младшие - номер байта (смещение i) из относительного адреса. Физический адрес сформирован.
Дальнейшим развитием систем организации управления памятью служит режим виртуального памяти, при котором имитируется работа с максимально возможным объемом памяти, определяемым адресностью системной магистрали. В этом режиме все виды памяти (оперативная, постоянная, внешняя) объединяются в единую виртуальную память, которая делится на страницы, содержащие фиксированное число байтов.
Программист (пользователь) не делает различия между оперативной и внешней памятью. Программирование ведется в виртуальных адресах.
180
Страницам виртуальной и физической памяти присваивают соответствующие номера. Каждой физической странице соответствует виртуальная страница, и наоборот. Адреса байтов в пределах одной виртуальной страницы полностью совпадают с адресами байтов в соответствующей физической странице.
Когда новая программа загружается в память, она может быть направлена в любые свободные в данный момент физические страницы независимо от того, расположены они подряд или нет. Не требуется перемещения данных в остальной части памяти. Страничная организация виртуальной памяти позволяет сократить объем передачи информации между внешней и оперативной памятью, так как страница программы не должна загружаться в ОП до тех пор, пока она, действительно, не потребуется. Сначала в ОП загружается начальная страница программы, и ей передается управление. Если по ходу вычислительного процесса делается попытка выборки данных из другой страницы, то производится автоматическое обращение к операционной системе, которая осуществляет загрузку требуемой страницы. Этот механизм называется принудительным страничным обменом.
В памяти современных ЭВМ одновременно могут находиться десятки независимых программ, поэтому необходимы специальные меры для предотвращения или ограничения обращений одной программы к областям памяти, используемым другими программами. Реализация такого "механизма" называется защитой памяти.
Программы могут содержать также ошибки, которые, если этому не воспрепятствовать, приводят к искажению данных, принадлежащих другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергаются программы операционной системы. Другими словами, надо исключить воздействие программы пользователя на работу программ других пользователей и программ операционной системы.
Защита памяти осуществляется на уровне физических страниц и состоит в проверке всех физических адресов, формируемых командами программ при обращении к памяти.
Если адрес относится к выделенному для данной программы массиву ячеек, то обращение к памяти разрешается, в противном случае выполнение программы приостанавливается и вырабатывается запрос прерывания по нарушению защиты памяти.
Защита памяти может выполняться как по записи, так и по считыванию. Первая предотвращает искажение информации, не относящейся к данной программе, а вторая позволяет исключить возможность использования несанкционированных данных посторонними пользователями.
Для организации защиты памяти обычно применяется метод ключей защиты. Каждому блоку памяти (физическому сегменту или физической странице) ставится в соответствие двоичное число, получившее название ключа защиты памяти. Каждой программе, в свою очередь, соответствует число той же разрядности, называемое ключом защиты для данной программы. При каждом обращении к памяти осуществляется проверка совпадения ключа защиты памяти и ключа защиты программы. Если ключи
181
защиты памяти и программы совпадают или при любом ключе защиты памяти ключ защиты программы состоит из нулей, то доступ к памяти разрешается; в противном случае формируется запрос прерывания по защите памяти.
Программам операционной системы может потребоваться обращение к любым областям памяти, поэтому этим программам присваивается нулевой ключ защиты, который является универсальной "отмычкой" для всех физических блоков памяти.
182
176 :: 177 :: 178 :: 179 :: 180 :: 181 :: 182 :: Содержание