Тема 4_2010_Принципы функциональной и структурной организации ЭВМ (542581), страница 3
Текст из файла (страница 3)
Но ее не удается загрузить, так каксвободные участки памяти не являются смежными. Такое состояние называетсяфрагментацией реальной памяти. Оно характерно для систем со статическимперемещением.В системах с динамическим перемещением программ перемещающий загрузчикразмещает программу в свободной части памяти (рис.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. Виртуальная памятьИмея иерархическую структуру запоминающих устройств, на реальном объемепамяти, значительно меньшем максимального, можно имитировать работу смаксимальной памятью.
В этом случае программист работает так, как будто емупредоставлена реальная память максимально допустимого для данной ЭВМ объема, хотяимеющаяся реальная память значительно меньше по объему. Такой режим работыназывается режимом виртуальной памяти.Имея иерархическую структуру запоминающих устройств, на реальном объемепамяти, значительно меньшем максимального, можно имитировать работу смаксимальной памятью.