Тема 6 ЭВМ с магистр_организ (987271), страница 3
Текст из файла (страница 3)
Эти программы будутждать друг друга либо их нужно заново редактировать с другого адреса.При работе в мультипрограммном режиме может сложиться ситуация,когда между программами образуются незанятые участки памяти. На рис.4Рис.5. Размещение программы в свободной части ОПобщий объем незанятой памяти, составляющий 50 Кбайт, достаточен,чтобы загрузить и программу D, находящуюся в ожидании. Но ее не удаетсязагрузить, так как свободные участки памяти не являются смежными. Такоесостояние называется фрагментацией реальной памяти. Оно характерно длясистем со статическим перемещением.В системах с динамическим перемещением программ перемещающийзагрузчик размещает программу в свободной части памяти (рис.5) идопускает использование несмежных ее участков.В этом случае имеется больше возможностей для организациимультипрограммной работы, следовательно, и для более эффективногоиспользования временных ресурсов ЭВМ.4.1.
Адресная структура команд микропроцессора ипланирование ресурсовПри больших размерах реализуемых программ возникают некоторыепротиворечия при организации мультипрограммного режима работы, трудностидинамического распределения ресурсов.В настоящее время разработано несколько способов решения этихпротиворечий. Например, для борьбы с фрагментацией основной памяти адресноепространство программы может быть разбито на отдельные сегменты, слабосвязанные между собой.
Тогда (рис.6) программа D общей длиной 50 Кбайт можетбыть представлена в виде ряда сегментов, загружаемых в различные области ОП.Это позволяет использовать реальную память, теряемую из-за фрагментации.Рис. 6. Фрагментация ОП. Загрузка сегментированной программыАдреса в каждом сегменте начинаются с 0. При статическом перемещениипрограммы в процессе загрузки ее в основную память адреса должны бытьпривязаны к конкретному месту в памяти, на что уходит много времени,отвлекаются вычислительные ресурсы. Более эффективной является динамическаятрансляция адресов (ДТА), которая заключается в том, что сегменты загружаютсяв основную память без трансляции адресного пространства (т.е.
без измененияадресов в программе с учетом физического размещения в памяти команд иданных), а трансляция адресов каждой команды производится в процессе еевыполнения. Этот тип трансляции называется динамическим перемещением иосуществляется специальными аппаратурными средствами ДТА.Каждый сегмент программы должен иметь свое имя. Форма имени сегментаможет быть любой, например номер (рис.7 а, б).При таком представлении адрес будет состоять из двух частей: s, i, где s -имясегмента, i - адрес внутри сегмента.Если ЭВМ имеет 32-битовую адресную структуру, максимальная длинаадреса в единственном сегменте будет длиной 32 разряда.
Если 16 разрядов из 32отвести под номер сегмента (а 16 - под смещение), то в этом случае все адресноепространство программы может состоять из 216= 64 Кбайта сегментов. Сегментможет содержать 216= 64 Кбайта (т.е. иметь адреса от 0 до 65535). При другойструктуре адреса изменяются количество сегментов и их длина.Рис.7. Форма имени сегмента: а - при выделении 8 разрядов; б - при выделении 16разрядовСтруктура адресов накладывает два важных ограничения:• ограничивается максимальное число сегментов, которое можетсуществовать в адресном пространстве программы;• ограничивается максимальное смещение любого адреса в сегменте.При загрузке в основную память сегментированной программы каждыйсегмент перемещается в реальную память отдельно, причем участкиосновной памяти могут быть или не быть смежными.
Трансляция адресов непроисходит - сегменты по-прежнему содержат свои относительные адреса.Для динамической трансляции адресов при определении абсолютныхадресов по известным относительным, содержащим номер сегмента и смещение,операционная система строит специальные таблицы, устанавливающиесоответствие между сегментируемым адресным пространством программы идействительными адресами сегментов в реальной памяти (рис.8).Рис.8.
Динамическая трансляция адресов при сегментной организации программыПроцессор может обращаться к основной памяти, используя толькоабсолютные адреса.Каждая строка таблицы сегментов содержит адрес начала сегмента вреальной памяти. Для каждого сегмента имеется одна строка таблицы.Таблицу сегментов содержит каждая выполняемая программа.В дополнение к таблице сегментов для динамической трансляции адресаиспользуется специальный управляющий регистр, называемый регистром началатаблицы сегментов (РНТС или STOR (segment table origin register)). В этот регистрзанесен адрес таблицы сегментов выполняемой в данный момент программы.На рис.9 изображено выполнение программы D.
В РНТС находится адрестаблицы сегментов этой программы. Если программа В прервет выполнениепрограммы D, то в РНТС будет занесен начальный адрес таблицы сегментовпрограммы В.Допустим, для выполняемой программы D начальный адрес таблицысегментов 68000. В реальной вычислительной машине все действия выполняются вшестнадцатеричной системе счисления, мы же проведем вычисления для простотыв десятичной системе счисления.Рис.
9. Технология динамической трансляции адресовДля обращения к адресу 15000 сегмента 1 производятся следующиедействия:• РНТС указывает на начало таблицы сегментов программы D - 68000;• номер сегмента в относительном адресе используется как индекс приобращении к таблице сегментов. В данном примере обращение производится к 1-йстроке;• адрес, хранимый в выбранной строке таблицы сегментов, есть адрес началасегмента в реальной памяти. Смещение в относительном адресе добавляется кначальному адресу, и результат является адресом в реальной памяти:15000+75000=90000. Для относительного адреса (сегмент 3, смещение 13000) будетполучен абсолютный адрес 218000.При ДТА такое определение адресов ведется в процессе выполнения каждойкоманды.Если операционной системе понадобится переместить исполняемуюпрограмму в другую часть памяти (например, чтобы исключить фрагментацию),сначала надо будет переслать команды и данные сегмента.
Затем строку таблицысегментов для данного сегмента нужно изменить так, чтобы она содержала новыйадрес, и выполнение программы может быть продолжено. Это дает возможностьдинамического управления реальной памятью в процессе выполнения программы.Использованием сегментации программ достигается уменьшениефрагментации основной памяти, но полностью фрагментация не устраняется остаются фрагменты, длина которых меньше длины сегмента программы.Если сегменты разделить на одну или несколько единиц, называемыхстраницами, которые имеют фиксированный размер, то поскольку размерстраницы достаточно мал по сравнению с обычным размером сегментов,неиспользуемые фрагменты ОП значительно сокращаются в объеме - будет иметьместо так называемая фрагментация внутри страниц.
Следовательно, потери всетаки останутся, но они будут существенно меньше.Сегментно-страничная организация добавляет еще один уровень вструктуре адресного пространства программы. Теперь адресное пространствопрограммы дробится на сегменты, внутри сегментов - на страницы и адреса внутристраниц.
Структура адреса: (s, p, i) - рис.10, где s - имя сегментаРис.10. Адресная структура при сегментно-страничной организации памяти внутриадресного пространства программы; p - имя страницы; i - адрес внутри страницы.Формирование сегментно-страничной структуры выполняетсяавтоматически с помощью операционной системы.Для динамической трансляции адресов (ДТА) каждому сегментунеобходимы одна таблица сегментов и несколько таблиц страниц (рис.4.11).ДTА будет выполняться следующим образом:• регистр начала таблицы сегментов содержит начальный адрес таблицысегментов выполняемой программы 28000;• номер сегмента в относительном адресе используется как индекс дляобращения к записи таблиц сегментов.
Эта запись идентифицирует начало таблицыстраницы (реальный адрес) 30000;• номер страницы в относительном адресе используется как индекс дляобраще0ния к записи таблицы страниц. Эта запись идентифицирует началостраничного блока, содержащего эту страницу - 128000;• смещение в относительном адресе и местоположение страничного блокаобъединяются вместе, формируя абсолютный адрес 129564. В реальной системеадрес страничного блока и смещение связываются, т.е.
соединяются вместе дляобразования абсолютного адреса. Все преимущества динамического перемещения сиспользованием сегментации и страничной организации достигаются благодаряаппаратуре и программному обеспечению, а не пользователям системы.Специальные программы во время загрузки разбивают адресное пространствопрограммы на сегменты и страницы, строят таблицы сегментов и страниц.Средства ДТА автоматически транслируют адрес в процессе выполненияпрограммы.4.2. Виртуальная памятьИмея иерархическую структуру запоминающих устройств, на реальномобъеме памяти, значительно меньшем максимального, можно имитировать работус максимальной памятью.
В этом случае программист работает так, как будто емупредоставлена реальная память максимально допустимого для данной ЭВМобъема, хотя имеющаяся реальная память значительно меньше по объему. Такойрежим работы называется режимом виртуальной памяти.Имея иерархическую структуру запоминающих устройств, на реальномобъеме памяти, значительно меньшем максимального, можно имитировать работус максимальной памятью. В этом случае программист работает так, как будто емупредоставлена реальная память максимально допустимого для данной ЭВМобъема, хотя имеющаяся реальная память значительно меньше по объему.
Такойрежим работы называется режимом виртуальной памяти.Рис. 11. Структурная схема формирования абсолютного адреса при сегментно-страничнойорганизации ОПРис. 12. Структура виртуальной памятиТеоретически доступная пользователю ОП, объем которойопределяется только разрядностью адресной части команды и которая несуществует в действительности, называется виртуальной памятью.Виртуальная память имеет сегментно-страничную организацию иреализована в иерархической системе памяти ЭВМ. Часть ее размещается встраничных блоках основной памяти, а часть - в ячейках внешней страничнойпамяти (slot).
Внешняя страничная память является частью внешней памяти.Ячейка (слот) - это записываемая область во внешней страничной памяти(например, на жестком магнитном диске). Она того же размера, что и страница.Вычислительная система с 24-разрядным адресом может иметь адресноепространство в 16 777 216 байт (16 Мбайт), с 32-разрядным адресом - 4 Гбайт.Структура такой памяти показана на рис.12.Все программные страницы физически располагаются в ячейках внешнейстраничной памяти. Виртуальная же память существует только как продуктдеятельности операционной системы (функционирующей на основе совместногоиспользования внешней и страничной памяти).Загрузить программу в виртуальную память - значит переписать несколькопрограммных страниц из внешней страничной памяти в основную память.