Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Konyukhova_arhitektura

.pdf
Скачиваний:
36
Добавлен:
12.03.2016
Размер:
6.11 Mб
Скачать

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

ипри любом изменении в распределении памяти. Пример сегментного распределения памяти представлен на рис. 45 [2].

Стрелками на рис. 45 показано размещение сегментов в ОП в соответствии с адресами, определяемыми ОС, а пунктирными линиями – обмены между сегментами ОП и ВЗУ при свопингах.

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

идополнительные атрибуты, используемые механизмом защиты процессора (см. гл. 6).

Виртуальное

Таблица соответствия

Физическая память

адресное

Бит

Базовый адрес

 

ОП

ВЗУ

пространство

сегмента

присут.

сегмента в ОП

 

 

 

 

 

 

 

 

 

 

Сегмент s

 

s

x

 

 

 

 

 

 

 

 

 

 

Сегмент m

Сегмент m

 

m

0

 

 

 

 

Сегмент l

 

 

 

 

 

 

 

 

 

Сегмент l

 

l

1

Базовый адрес

 

Сегмент l

 

 

 

 

 

 

 

 

 

 

Сегмент k

 

k

0

 

 

 

Сегмент k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 3

 

3

1

Базовый адрес

 

 

Сегмент 3

 

 

 

 

 

 

 

 

 

Сегмент 2

 

2

1

Базовый адрес

 

Сегмент 2

 

Сегмент 2

 

 

 

 

 

 

 

 

 

Сегмент 1

 

1

0

 

 

Сегмент 3

 

Сегмент 1

 

 

 

 

 

 

 

 

 

Рис. 45. Сегментное распределение памяти

Например, бит присутствия P (Present) показывает, где находится искомый сегмент: в ОП (P = 1) или на диске (P = 0). Бит доступа A (Access) помогает ОС выбрать сегмент, который возвращается в ВЗУ, когда в ОП нет достаточного места для нового сегмента.

Доступ к элементам дескрипторной таблицы осуществляется с помощью указателей (селекторов), для размещения которых используются сегментные регистры, например, в процессорах Pentium,

регистры CS, DS, ES, FS, CS, SS.

120

Способ формирования физического адреса операнда сегментированной памяти показан на рис. 46 [2]:

Логический адрес Селектор

Внутрисегментное смещение

 

операнда

 

 

 

 

 

 

 

 

 

 

Индекс

 

 

 

 

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дескрипторная таблица

 

 

Физическая

 

 

 

 

 

 

 

 

 

 

 

память

 

 

 

 

 

 

 

 

 

 

 

 

№ сег.

Бит прис.

Атрибуты

Базов. адрес

Предел

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операнд

 

 

 

 

 

 

 

 

 

 

Базовый адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сегмента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 46. Вычисление физического адреса в сегментной памяти

При обращении к сегменту памяти, присутствующему в ОП,

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

вОП. К этому адресу добавляется внутрисегментное смещение (вторая часть логического адреса), что и даёт требуемый физический адрес искомого операнда в ОП.

Если требуемый сегмент отсутствует в ОП, то возникает прерывание, по которому процедура обработки этого прерывания переписывает в ОП нужный сегмент. При наличии свободного места для загрузки сегмента никаких проблем не возникает, и после загрузки нового сегмента в ОП осуществляется повторный запуск команды обращения к памяти. Если в ОП недостаточно места для записи отсутствующего сегмента, то соответствующая процедура ОС сначала освобождает требуемое место, переписывая на диск один или несколько неиспользуемых в данный момент сегментов. Для этого наиболее часто используется алгоритм LRU (Last Recently Used), обеспечивающий замену сегмента, к которому не было обращения самое продолжительное время. ОС использует бит доступа A для определения приблизительного времени последнего использования сегмента. Используя механизм свопинга, ОС создаёт иллюзию, что все сегменты программы постоянно находятся в ОП.

121

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

Особенностью использования сегментированной памяти является то, что после многократных свопингов сегментов в ОП могут образовываться свободные участки памяти слишком малого размера и неудобные для использования. Это явление называется внешней фрагментацией (неиспользуемое пространство попадает не в сегменты, а в пустоты между ними). Чтобы избежать подобной ситуации, ОС выполняет уплотнение сегментов. При первом способе каждый раз при появлении пустого пространства следующие сегменты перемещаются ближе к адресу 0, удаляя таким образом это пустое пространство. При втором способе уплотнение выполняется только тогда, когда на долю пустот приходится больше некоторого процента от общего объёма памяти.

Несмотря на отмеченный недостаток, использование сегментной модели в значительной степени упрощает изолирование программных блоков отдельных задач друг от друга в мультизадачной системе. Для каждой задачи обычно выделяется собственная локальная память, и одновременно задача может разделять с другими задачами совместную память, которую называют глобальной. Соответствие между логическими и физическими адресами в мультизадачной системе устанавливаются с помощью глобальной GDT (общей для всех задач) и локальных LDT (отдельных для каждой задачи) дескрипторных таблиц. Общий объём адресуемой виртуальной памяти отдельной задачи определяется разрядностью адресных полей её логического адреса. Например, в процессорах Pentium пространство виртуальных адресов задачи не может превышать 64 Тбайт.

8.3. Страничная организация памяти

Согласно [2 – 4], при страничной организации памяти виртуальное и физическое адресные пространства разбиваются на блоки фиксированного размера – страницы. Размер страниц обычно выбирается равным 4 Кбайта (реже 4 Мбайта). Блок ОП, соответствующий виртуальной странице, часто называют страничным кадром, или фреймом. Страницам виртуальной и физической памяти присваивают номера. Страничная организация памяти создаёт иллюзию линейной ОП такого же размера, как и адресное пространство программы.

122

В модели виртуальной памяти со страничной организацией соответствие между виртуальными и физическими страницами устанавливается в процессе распределения памяти при заполнении специальной таблицы страниц, каждая строка которой (страничный дескриптор) содержит базовый адрес страничного кадра в ОП, а также биты управления виртуальной памятью и биты защиты информации на странице. Назначение и использование битов присутствия P и доступа A такое же, как у одноимённых битов при сегментной организации памяти. Признак модификации D устанавливается в страничном дескрипторе при выполнении операции записи в определяемую дескриптором страницу. ОС использует значение этого бита для исключения необязательных свопингов страницы. Если D = 1, то к странице было обращение для записи и перед удалением из ОП её необходимо переписать в ВЗУ, в противном случае (D = 0), этого делать не нужно. Страничное распределение памяти аналогично сегментному распределению памяти (см. рис. 46), только вместо сегментов используются страницы.

Принципы работы системы виртуальной памяти со страничной организаций похожи на принципы функционирования сегментной памяти. При обращении к памяти номер виртуальной страницы извлекается из виртуального адреса и используется как индекс для поиска нужного дескриптора в таблице страниц. Если страница присутствует в ОП, то из соответствующего дескриптора извлекается базовый адрес соответствующего страничного кадра, который совместно со смещением в виртуальном адресе определяет физический адрес требуемого операнда (рис. 47) [2].

Логический адрес № страницы

Смещение внутри страницы

 

операнда

 

 

 

 

 

 

 

 

 

 

 

 

Индекс

 

 

 

 

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дескрипторная таблица

 

 

Страничный

 

 

 

 

 

 

 

 

 

 

 

 

кадр

 

 

 

 

 

 

 

 

 

 

 

 

№ стр.

Биты управл. вирт. пам.

Базов. адрес

Биты защиты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операнд

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 47. Вычисление физического адреса в страничной памяти

123

Если требуемая страница отсутствует в ОП, то формируется прерывание, по которому ОС загружает из ВЗУ отсутствующую страницу. После этого управление возвращается к процессору, который повторно выполняет команду обращения к памяти. При необходимости освобождения памяти некоторые страницы выгружаются из ОП

вВЗУ. Для этого применяется алгоритм LRU (выгружается дольше всего неиспользовавшаяся страница) или алгоритм FIFO (выгружается страница, которая была загружена раньше всех, независимо от того, когда в последний раз производилось обращение к ней).

Рассмотренный метод работы с виртуальной памятью, при котором страницы переносятся в ОП только в случае необходимости, на-

зывается вызовом страниц по требованию.

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

вфизический выполняется автоматически и быстрее, чем при сегментной организации виртуальной памяти.

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

внезанятый страничный кадр, либо вытеснить другую страницу, освободив таким образом требуемое место. В любом случае, не требуется по-новому располагать страницы в ОП.

Если в сегментной памяти сегменты загружаются целиком, то страничная организация позволяет сократить объём передаваемой между ОП и ВЗУ информации за счёт того, что страницы программы могут не загружаться в ОП, пока они действительно не понадобятся. Сначала в ОП загружается начальная страница программы, и ей передаётся управление. Если в процессе выполнения программы потребуется выборка операндов из другой страницы, ОС загрузит отсутствующую страницу. Особенно заметны преимущества страничной организации памяти при реализации мультизадачных систем. В таких системах при загрузке новой задачи её страницы могут быть направлены в любые свободные в данный момент страничные кадры, независимо от того, расположены они подряд или нет.

Однако страничная память тоже подвержена фрагментации. Если пользовательская программа и данные занимают ровно целое число

124

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

8.4. Сегментно-страничная организация памяти

В соответствии с [2, 3, 8], достоинства сегментной и страничной организации сочетает в себе сегментно-страничный способ распределения памяти, при котором память разбивается на сегменты, а сегменты, в свою очередь, разделены на страницы фиксированной длины. При этом размер сегмента выбирается не произвольно, а задаётся кратным размеру страницы. Сегмент может содержать произвольное, но обязательно целое число страниц, даже если одна из страниц заполнена частично. Для преобразования логических адресов в физические используются две таблицы соответствия. Каждый сегмент имеет отдельную таблицу страниц. В дескрипторной таблице сегментов перечисляются все сегменты с указанием начальных адресов страничных таблиц, относящихся к каждому сегменту. Каждая таблица страниц, в свою очередь, определяет положение каждой из страниц сегмента в памяти. Страницы сегмента могут располагаться не подряд – часть их может находиться в ОП, остальные – в ВЗУ. Схема вычисления физического адреса операнда при сегментно-страничной организации памяти представлена на рис. 48 [3]. Виртуальный адрес операнда состоит из трех составляющих: номера сегмента, номера страницы в этом сегменте и смещения внутри данной страницы. Для получения физического адреса операнда сначала по номеру сегмента в таблице сегментов определяется начальный адрес соответствующей ему страничной таблицы, затем по номеру страницы в таблице страниц определяется начальный адрес конкретной страницы в ОП и, наконец, к базовому адресу страницы в ОП добавляется смещение внутри страницы.

125

Логический адрес

№ сегмента

№ страницы

Смещение внутри страницы

операнда

 

 

 

 

 

 

 

i

 

j

 

 

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица сегментов

Таблица страниц i-го сегмента

Страничный

кадр j-ой страни-

 

 

 

 

цы i-го сегмента

Адрес i-ой стр.

Адрес j-ой страни-

 

таблицы в ОП

цы в ОП

 

 

 

Операнд

Рис. 48. Вычисление физического адреса при сегментно-страничной организации памяти

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

Вследующей главе рассмотрим принципы организации и функционирования подсистемы ввода – вывода ВМ.

Вопросы для самопроверки

1.В чём заключается динамическое распределение памяти? Дайте определение виртуальной памяти, свопингу. Что даёт использование виртуальной памяти?

2.В чём заключаются особенности модели сегментной организации памяти? Опишите схему сегментного распределения памяти. Что представляет собой дескрипторная сегментная таблица? Поясните схему вычисления физического адреса операнда при сегментной организации памяти. Какими преимуществами и недостатками обладает сегментная модель виртуальной памяти? Каким образом осуществляется вызов сегментов по требованию?

3.В чём заключаются особенности модели страничной организации памяти? Опишите схему страничного распределения памяти. Что представляет собой страничная таблица? Какими преимуществами

инедостатками обладает страничная модель виртуальной памяти? Каким образом осуществляется вызов страниц по требованию?

4.В чём заключаются особенности модели сегментно-страничной организации памяти? Поясните схему вычисления физического адреса операнда при сегментно-страничной организации памяти.

126

9.ОРГАНИЗАЦИЯ ВВОДА – ВЫВОДА ИНФОРМАЦИИ. СИСТЕМНАЯ ШИНА

Согласно [2 – 4, 6, 7, 18], ВМ представляет собой сложную систему, включающую в себя большое количество различных устройств, в том числе периферийных (внешних). Передача информации с периферийного устройства (ПУ) в ВМ называется операцией ввода, а передача данных из ВМ в ПУ – операцией вывода. Для информационного обмена между устройствами ВМ применяются магистрали (шины), к которым эти устройства подключаются. В современных ВМ используется иерархия шин, которые различаются между собой пропускной способностью, набором сигналов и протоколом.

Далее рассмотрим принципы организации шин ВМ [2 – 4, 6, 7,

18].

9.1. Организация шин. Системная шина

9.1.1. Структура системной шины

Шина – это группа проводников, соединяющая различные устройства [8].

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

Системная шина – это шина, которая служит для физического и логического объединения всех устройств ВМ. Совокупность линий шины можно подразделить на три функциональные группы: шину данных, шину адреса и шину управления [3] (рис. 49).

В общем, функционирование системной шины можно описать следующим образом:

1.Если одно из устройств хочет передать данные другому, оно должно получить в своё распоряжение шину и передать по ней данные.

2.Если какое-то устройство хочет получить данные от другого устройства, оно должно получить доступ к шине и с помощью соответствующих линий управления и адреса передать другому устройству запрос. Далее оно должно ожидать, пока устройство, получившее запрос, пошлёт данные.

127

Операции на шине называются транзакциями. Основными ви-

дами транзакций являются транзакция чтения (ввода) и транзакция записи (вывода). Шинная транзакция включает в себя две части: посылку адреса и приём (или посылку) данных.

Системная шина

Процессор

Память

УВВ

УВВ

ШД

ША

ШУ

Рис. 49. Структура системной шины

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

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

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

128

Ширина шины адреса – число сигнальных линий системной шины, выделенных для передачи адреса. Это одна из базовых характеристик шины, поскольку от неё зависит потенциальная ёмкость адресуемой памяти и число обслуживаемых портов ввода-вывода.

Шиной данных называется совокупность линий системной шины, служащих для пересылки данных между устройствами ВМ. Важнейшими характеристиками шины данных являются ширина и пропу-

скная способность.

Ширина шины данных – это количество битов информации, которое может быть передано по шине за одну транзакцию (цикл шины). Цикл шины не следует путать с периодом тактовых импульсов – одна транзакция по шине может занимать несколько тактовых периодов. В настоящее время ширина шины данных составляет обычно 32, 64 или 128 бит. Ширину шины данных выбирают кратной целому числу байтов, которое, как правило, представляет собой целую степень числа 2.

Элемент данных, который задействует всю ширину шины данных, принято называть словом, хотя в архитектуре ВМ понятие «слово» трактуется иначе. То есть слово может иметь разрядность, не совпадающую с шириной шины данных.

Ширина шины данных существенно влияет на производительность ВМ. Например, если шина данных имеет ширину вдвое меньшую длины команды процессора, то последний вынужден осуществлять доступ к памяти дважды.

Пропускная способность шины данных – это количество еди-

ниц информации (байтов), передаваемых по шине за единицу времени (секунду). Измеряется в бит/с. Определяется физическим построением шины и природой подключаемых к ней устройств. Чем больше ширина данных, тем выше её пропускная способность. Общее время передачи данных в современных ВМ составляет примерно 7,5 нс.

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

Если адрес и данные передаются по независимым (выделенным) линиям, то ширина шины адреса и шины данных выбирается независимо. Если адрес и данные передаются по одним и тем же линиям, то передача осуществляется в разных тактах шины. Этот приём называ-

ется временным мультиплексированием.

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

129

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]