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

Архитектура ЭВМ и систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Среди систем виртуальной памяти можно выделить два класса: системы с фиксированным размером блоков (страничная организация) и системы с переменным размером блоков (сегментная организация). Оба варианта обычно совмещают (сегментно-страничная организация).
5.10.1. СТРАНИЧНАЯ ОРГАНИЗАЦИЯ ПАМЯТИ
Целям преобразования виртуальных адресов в физические служит страничная организация памяти. Ее идея состоит в разбиении про­граммы на части равной величины, называемые страницами. Размер страницы обычно выбирают в пределах 4…8 Кбайт, но так, чтобы он был кратен емкости одного сектора магнитного диска. Виртуальное и физическое адресные пространства разбиваются на блоки размером в страницу. Блок основной памяти, соответствующий странице, часто называют страничным кадром или фреймом (page frame). Страницам виртуальной и физической памяти присваивают номера.
Центральный процессор обращается к ячейке, указав ее вирту­альный адрес, состоящий из номера виртуальной страницы и смеще­ния относительно ее начала. Этот адрес поступает в систему преобра­зования адресов с целью в основной памяти. Поскольку смещение в виртуальном и физическом адресе одинаковое, преобразованию подвергается лишь номер страни­цы. Если преобразователь обнаруживает, что нужная физическая стра­ница отсутствует в основной памяти (произошел промах или странич­ный сбой), то нужная страница считывается из внешней памяти и за­носится
в ОП.
Преобразователь адресов – это часть операционной системы, транслирующая номер виртуальной страницы в номер физической страницы, расположенной в основной памяти, а также аппаратура, обеспечивающая этот процесс и позволяющая ускорить его. Преобра­зование осуществляется с помощью так называемой страничной таб­лицы. При отсутствии нужной страницы в ОП преобразователь адре­сов вырабатывает ная система приостанавливает вычисления, пока нужная страница не будет считана из вторичной памяти и помещена в основную.
Виртуальное пространство полностью описывается двумя табли­цами: страничной таблицей и картой диска (будем считать, что вто­ричная память реализована на магнитных дисках). Таблица страниц определяет, какие виртуальные страницы и в каких физических фреймах, а карта диска содержит информацию о секторах диска, где хранятся виртуальные страницы на диске.
Число записей в страничной таблице (СТ) в общем случае равно количеству виртуальных страниц. Каждая запись содержит поле номе­ра физической страницы (НФС) и четыре признака: V, R, М и
получения из него физического адреса ячейки
признак страничного сбоя, по которому операцион-
находятся в основной памяти
А.
101
Признак присутствия V устанавливается в единицу, если вирту­альная страница в данный момент находится в основной памяти. В этом случае в поле номера физической страницы находится соответ­ствующий номер. Если V = 0, то при попытке обратиться к данной виртуальной странице преобразователь адреса генерирует сигнал страничного сбоя (page fault), и операционная система предпринимает действия по загрузке страницы
с диска в ОП, обращаясь для этого к карте диска. В карте указано, на какой дорожке и в каком секторе дис­ка расположена каждая из виртуальных страниц. Загрузка страницы с диска в ОП сопровождается записью в соответствующую строку стра­ничной таблицы (указывается номер физической страницы, куда была загружена виртуальная страница).
В принципе карта диска может быть совмещена со страничной таблицей путем добавления к последней еще одного поля. Другим ва­риантом может быть увеличение разрядности поля номера физической страницы и хранение в нем номеров дорожек и секторов для виртуаль­ных страниц, отсутствующих в основной памяти. В этом случае вид хранимой информации будет
определять признак V.
Признак использования страницы R устанавливается при обраще­нии к данной станице. Эта информация используется в алгоритме за­мещения страниц для выбора той из них, которую можно наиболее безболезненно удалить из ОП, чтобы освободить место для новой. Проблемы замещения информации в ОП решаются так же, как и для кэш-памяти.
Поскольку в ОП находятся лишь копии страниц, а их оригиналы хранятся на диске, необходимо обеспечить идентичность подлинников и копий. В ходе вычислений содержимое отдельных страниц может изменяться, что фиксируется путем установки в единицу признака мо­дификации М. При удалении страницы из ОП проверяется состояние признака М. Если М = 1, то перед удалением
страницы из основной памяти ее необходимо переписать на диск, а при М = 0 этого можно не делать.
Признак прав доступа А служит целям защиты информации и оп­ределяет, какой вид доступа к странице разрешен: только для чтения, только для записи, для чтения и для записи.
Когда программа загружается в ОП, она
может быть направлена в любые свободные в данный момент страничные кадры, независимо от того, расположены ли они подряд или нет. Страничная организация позволяет сократить объем пересылок информации между внешней памятью и ОП, так как страницу не нужно загружать до тех пор, пока она действительно не понадобится.
Способ реализации СТ жизненно важен
для эффективности тех-
ники виртуальной адресации, поскольку каждое обращение к памяти
102
предполагает обращение к страничной таблице. Наиболее быстрый способ – хранение таблицы в специально выделенных для этого реги­страх, но от него приходится отказываться при большом объеме СТ. Остается практически один вариант – выделение страничной таблице области основной памяти, несмотря на то что это приводит к двух­кратному увеличению времени доступа к информации. Чтобы
сокра­тить это время, в состав ВМ включают дополнительное ЗУ, называе­мое буфером быстрого преобразования адреса (TLB – Translation Look­aside Buffer), или буфером ассоциативной трансляции, или буфером опережающей выборки и представляющее собой кэш-память. При ка­ждом преобразовании номера виртуальной страницы в номер физиче­ской страницы результат заносится в TLB: номер физической страни­цы в память
данных, а виртуальнойв память тегов. Таким образом, в
TLB попадают результаты нескольких последних операций трансля-
ции адресов. При каждом обращении к ОП преобразователь адресов сначала производит поиск в памяти тегов TLB номера требуемой вирту­альной страницы. При попадании адрес соответствующей физической страницы берется из памяти данных TLB. Если в TLB зафиксирован промах, то
процедура преобразования адресов производится с помощью страничной таблицы, после чего осуществляется запись новой пары «номер виртуальной страницы – номер физический страницы» в TLB.
Буфер преобразования адресов обычно реализуется в виде полно­стью ассоциативной или множественно-ассоциативной кэш-памяти с высокой степенью ассоциативности и временем доступа, сопоставимым с аналогичным показателем для кэш-памяти
первого уровня (L1). Число входов у типовых TLB невелико (64-256). Так, TLB микропроцессора Pentium III имеет 64 входа при размере страницы 4 Кбайт, что позволяет получить быстрый доступ к адресному пространству в 256 Кбайт.
Серьезной проблемой в системе виртуальной памяти является большой объем страничных таблиц, который пропорционален числу виртуальных страниц. Таблица занимает значительную часть ОП, а на поиск уходит
много времени, что крайне нежелательно.
Один из способов сокращения длины таблиц основан на введении многоуровневой организации таблиц. В этом варианте информация оформляется в виде нескольких страничных таблиц сравнительно не­большого объема, которые образуют второй уровень. Первый уровень представлен таблицей с каталогом, где указано местоположение каж­дой из страничных таблиц (адрес
начала таблицы в памяти) второго уровня. Сначала в каталоге определяется расположение нужной стра­ничной таблицы и лишь затем производится обращение к нужной таб­лице. О достигаемом эффекте можно судить из следующего примера. Пусть адресная шина ВМ имеет ширину 32 бита, а размер страницы равен 4 Кбайт. Тогда количество виртуальных страниц, а следователь-
103
но, и число входов в единой страничной таблице составит 220. При двухуровневой организации можно обойтись одной страницей первого уровня на 1024 (210) входов и 1024 страничными таблицами на такое же число входов.
Другой подход называют способом обращенных или инвертиро­ванных страничных таблиц. Такую таблицу в каком-то смысле можно рассматривать как увеличенный эквивалент TLB, отличающийся тем что она хранится в ОП и реализуется не аппаратурой, а программными средствами. Число входов в таблицу определяется емкостью ОП и равно числу страниц, которое может быть размещено в основной па­мяти. Одновременно с этим имеется и традиционная СТ, но хранится она не в ОП, а на диске. Для поиска нужной
записи в инвертированной таблице используется хэширование, когда номер записи в таблице вы­числяется в соответствии с некой хэш-функцией. Аргументом этой функции служит номер искомой виртуальной страницы. Хэширование позволяет ускорить операцию поиска. Если нужная страница в ОП от­сутствует, производится обращение к основной таблице на диске и по­сле загрузки страницы
в ОП корректируется и инвертированная таблица.
Сегментно-страничная организация памяти. При страничной
организации предполагается, что виртуальная память – это непрерыв­ный массив со сквозной нумерацией слов, что не всегда можно признать оптимальным. Обычно программа состоит из нескольких частей – кодо­вой, информационной и стековой. Так как заранее неизвестны длины этих составляющих, то удобно, чтобы при программировании каждая из них имела собственную нумерацию
слов, отсчитываемых с нуля. Для этого организуют систему сегментированной памяти, выделяя в виртуальном пространстве независимые линейные пространства пере­менной длины, называемые сегментами. Каждый сегмент представляет собой отдельную логическую единицу информации, содержащую со­вокупность данных или программный код и расположенную в адрес­ном пространстве пользователя. В каждом сегменте устанавливается своя собственная нумерация
слов, начиная с нуля. Виртуальная память также разбивается на сегменты, с независимой адресацией слов внутри сегмента. Каждой составляющей программы выделяется сегмент памя­ти. Виртуальный адрес определяется номером сегмента и адресом внутри сегмента. Для преобразования виртуального адреса в физиче­ский используется специальная сегментная таблица.
Недостатком такого подхода является то, что неодинаковый
раз­мер сегментов приводит к неэффективному использованию ОП. Так, если ОП заполнена, то при замещении одного из сегментов требуется вытеснить такой, размер которого равен или больше размера нового. При многократном повторе подобных действий в ОП остается множе­ство свободных участков, недостаточных по размеру для загрузки
104
,
полного сегмента. Решением проблемы служит сегментно-страничная организация памяти. В ней размер сегмента выбирается не произволь­но, а задается кратным размеру страницы. Сегмент может содержать то или иное, но обязательно целое число страниц, даже если одна из страниц заполнена частично. Возникает определенная иерархия в ор­ганизации доступа к данным, состоящая из
трех ступеней: сегмент >
> страница > слово. Этой структуре соответствует иерархия таблиц,
служащих для перевода виртуальных адресов в физические. В сег­ментной таблице программы перечисляются все сегменты данной про­граммы с указанием начальных адресов СТ, относящихся к каждому сегменту. Количество страничных таблиц равно числу сегментов и любая из них определяет расположение каждой
из страниц сегмента в памяти, которые могут располагаться не подряд – часть страниц может находиться в ОП, остальные – во внешней памяти.
Для получения физического адреса необходим доступ к сегмент­ной и одной из страничных таблиц, поэтому преобразование адреса может занимать много времени.
Современные вычислительные машины, как правило, работают в многопользовательском и многозадачном режимах, когда в основной памяти одновременно находятся программы, относящиеся как к раз­ным пользователям, так и к различным задачам одного пользователя. Если даже ВМ выполняет только одну программу, в ОП, помимо этой программы и относящихся к ней данных, всегда присутствуют фраг менты операционной системы. Каждой задаче в основной памяти вы­деляется свое адресное пространство. Такие пространства, если только это специально не предусмотрено, обычно независимы. В то же время в программах могут содержаться ошибки, приводящие к вторжению в адресное пространство других задач. Следствием этих ошибок может стать искажение информации, принадлежащей другим программам. Следовательно, в ВМ обязательно должны быть предусмотрены меры, предотвращающие несанкционированное воздействие программ одно­го пользователя на работу программ других пользователей и на опера­ционную систему. Особенно опасны последствия таких ошибок при нарушении адресного пространства операционной системы.
Чтобы воспрепятствовать разрушению одних программ другими, достаточно защитить область памяти данной программы от попыток записи случаев необходимо иметь возможность защиты и от чтения со сторо­ны других программ, например при ограничениях на доступ к систем­ной информации.
5.10.2. ОРГАНИЗАЦИЯ ЗАЩИТЫ ПАМЯТИ
в него со стороны других программ (защита от записи). В ряде
105
-
Защита от вторжения программ в чужие адресные пространства реализуется различными средствами и способами, но в любом вариан­те к системе защиты предъявляются два требования: ее реализация не должна заметно снижать производительность ВМ и требовать слиш­ком больших аппаратных затрат.
Задача обычно решается за счет сочетания программных и аппа­ратных средств, хотя
ответственность за охрану адресных пространств от несанкционированного доступа обычно возлагается на операцион­ную систему. В учебнике рассматриваются главным образом аппарат­ные аспекты проблемы защиты памяти.
Защита отдельных ячеек памяти. Этим видом защиты обычно
пользуются при отладке новых программ параллельно с функциониро­ванием других программ. Реализовать подобный режим можно за счет выделения в каждой ячейке памяти специального «разряда защиты» и связывания его со схемой управления записью в память. Установка этого разряда в 1 блокирует запись в данную ячейку. Подобный режим использовался в
вычислительных машинах предыдущих поколений
(для современных ВМ он не типичен).
Кольца защиты. Защиту адресного пространства операционной
системы от несанкционированного вторжения со стороны пользова­тельских программ обычно организуют за счет аппаратно реализован­ного разделения системного и пользовательского уровней привилегий. Предусматриваются как минимум два режима работы процессора: сис­темный (режим супервизора – «надзирателя») и пользовательский. Такую структуру принято называть кольцами защиты и изображать в виде концентрических
окружностей, где пользовательский режим представлен внешним кольцом, а системный – внутренней окружно­стью. В системном режиме программе доступны все ресурсы ВМ, а возможности пользовательского режима существенно ограничены. Переключение из пользовательского режима в системный осуществля­ется специальной командой. В большинстве современных ВМ число уровней привилегий (колец защиты) увеличено. Так, в микропроцес-
класса Pentium предусмотрено четыре уровня привилегий.
сорах
Метод граничных регистров. Данный вид защиты наиболее
распространен. Метод предполагает наличие в процессоре двух гра­ничных регистров, содержимое которых определяет нижнюю и верх­нюю границы области памяти, куда программа имеет право доступа. Заполнение граничных регистров производится операционной систе­мой при загрузке программы. При каждом обращении к памяти прове­ряется, попадает ли используемый адрес в
установленные границы. Такую проверку, например, можно организовать на этапе преобразо­вания виртуального адреса в физический. При нарушении границы доступ к памяти блокируется, и формируется запрос прерывания, вы-
106
зывающий соответствующую процедуру операционной системы. Нижнюю границу разрешенной области памяти определяет сегмент­ный регистр. Верхняя граница подсчитывается операционной систе­мой в соответствии с размером размещаемого в ОП сегмента.
В рассмотренной схеме необходимо, чтобы в ВМ поддерживались два режима работы: привилегированный и пользовательский. Запись информации в граничные регистры возможна лишь в привилегирован ном режиме.
Метод ключей защиты. Метод позволяет организовать защиту
несмежных областей памяти. Память условно делится на блоки одина­кового размера. Каждому блоку ставится в соответствие некоторый код, называемый ключом защиты памяти. Каждой программе, в свою очередь, присваивается код защиты программы. Условием доступа программы к конкретному блоку памяти служит совпадение ключей защиты памяти и программы, либо равенство
одного из этих ключей нулю. Нулевое значение ключа защиты программы разрешает доступ ко всему адресному пространству и используется только программами операционной системы. Распределением ключей защиты программы ведает операционная система. Ключ защиты программы обычно пред­ставлен в виде отдельного поля слова состояния программы, храняще­гося в специальном регистре. Ключи защиты памяти
хранятся в специ­альной памяти. При каждом обращении к ОП специальная комбинаци­онная схема производит сравнение ключей защиты памяти и програм­мы. При совпадении доступ к памяти разрешается. Действия в случае несовпадения ключей зависят от того, какой вид доступа запрещен: при записи, при чтении или в обоих случаях. Если выяснилось, что данный вид доступа запрещен, то так же как и в методе граничных регистров формируется запрос прерывания и вызывается соответст­вующая процедура операционной системы.
5.11. ВНЕШНЯЯ ПАМЯТЬ
Важным звеном в иерархии запоминающих устройств является внешняя, или вторичная память, реализуемая на базе различных ЗУ. Наиболее распространенные виды таких ЗУ – это магнитные и оптиче­ские диски и магнитоленточные устройства.
5.11.1. МАГНИТНЫЕ ДИСКИ
Информация в ЗУ на магнитных дисках (МД) хранится на пло­ских металлических или пластиковых пластинах (дисках), покрытых магнитным материалом. Данные записываются и считываются с диска с помощью электромагнитной катушки, называемой головкой считы­вания/записи, которая в процессе считывания и записи неподвижна, в
107
-
то время как диск вращается относительно нее. При записи на головку подаются электрические импульсы, намагничивающие участок по­верхности под ней, причем характер намагниченности поверхности различен в зависимости от направления тока в катушке. Считывание базируется на электрическом токе, наводимом в катушке головки, под воздействием перемещающегося относительно нее магнитного поля. Когда под головкой
проходит участок поверхности диска, в катушке наводится ток той же полярности, что использовался для записи ин­формации. Несмотря на разнообразие типов магнитных дисков, прин­ципы их организации обычно однотипны.
Организация данных и форматирование. Данные на диске ор-
ганизованы в виде набора концентрических окружностей, называемых дорожками. Каждая из них имеет ту же ширину, что и головка. Сосед­ние дорожки разделены промежутками. Это предотвращает ошибки из-за смещения головки или из-за интерференции магнитных полей. Как правило, для упрощения электроники принимается, что на всех дорожках может
храниться одинаковое количество информации. Та­ким образом, плотность записи увеличивается от внешних дорожек к внутренним.
Обмен информацией с МД осуществляется блоками. Размер блока обычно меньше емкости дорожки, и данные на дорожке хранятся в виде последовательных областей – секторов, разделенных между собой про­межутками. Размер сектора равен минимальному размеру блока.
Типовое число
секторов на дорожке колеблется от 10 до 100. При такой организации должны быть заданы точка отсчета секторов и спо­соб определения начала и конца каждого сектора. Все это обеспечива­ется с помощью форматирования, в ходе которого на диск заносится служебная информация, недоступная пользователю и используемая только аппаратурой дискового ЗУ.
Характеристики дисковых систем. В ЗУ с фиксированными го-
ловками приходится по одной головке считывания/записи на каждую дорожку. Головки смонтированы на жестком рычаге, пересекающем все дорожки диска. В дисковом ЗУ с подвижными головками имеется только одна головка, также установленная на рычаге, однако рычаг способен перемещаться в радиальном направлении над поверхностью диска, обеспечивая возможность позиционирования
головки на любую
дорожку.
Диски с магнитным носителем устанавливаются в дисковод, со­стоящий из рычага, шпинделя, вращающего диск, и электронных схем, требуемых для ввода и вывода двоичных данных. Несъемный диск зафиксирован на дисководе. Съемный диск может быть вынут из дис­ковода и заменен на другой аналогичный диск. Преимущество систе-
со съемными дисками – возможность хранения неограниченного
мы
108
объема данных при ограниченном числе дисковых устройств. Кроме того, такой диск может быть перенесен с одной ВМ на другую.
Большинство дисков имеет магнитное покрытие с обеих сторон. В этом случае говорят о двусторонних (double-sided) дисках. Односто­ронние (single-sided) диски в наше время встречаются достаточно редко.
На оси может располагаться один или несколько дисков
. В по-
следнем случае используют термин «дисковый пакет».
В зависимости от применяемой головки считывания/записи мож­но выделить три типа дисковых ЗУ. В первом варианте головка уста­навливается на фиксированной дистанции от поверхности так, чтобы между ними оставался воздушный промежуток. Второй вариант – это когда в процессе чтения и записи головка
и диск находятся в физиче­ском контакте. Такой способ используется, например, в накопителях на гибких магнитных дисках (дискетах).
Для правильной записи и считывания головка должна генериро­вать и воспринимать магнитное поле определенной интенсивности, поэтому чем уже головка, тем ближе должна она размещаться к по­верхности диска (более узкая головка означает и
более узкие дорожки, а значит, и большую емкость диска). Однако приближение головки к диску означает и больший риск ошибки за счет загрязнения и дефек­тов. В процессе решения этой проблемы был создан диск типа винче­стер. Головки винчестера и диски помещены в герметичный корпус, защищающий их от загрязнения. Кроме того,
головки имеют очень малый вес и аэродинамическую форму. Они спроектированы для рабо­ты значительно ближе к поверхности диска, чем головки в обычных жестких дисках, тем самым повышается плотность хранения данных. При остановленном диске головка прилегает к его поверхности. Дав­ления, возникающего при вращении диска, достаточно для подъема головки над поверхностью. В
результате создается неконтактная сис­тема с узкими головками считывания/записи, обеспечивающая более плотное прилегание головки к поверхности диска, чем в обычных же­стких дисках.
Массивы магнитных дисков с избыточностью. Магнитные
диски, будучи основой внешней памяти любой ВМ, одновременно ос­таются и одним из «узких мест» из-за сравнительно высокой стоимо­сти, недостаточной производительности и отказоустойчивости. Харак­терно, что если в плане стоимости и надежности ситуация улучшается, то разрыв в производительности между МД и ядром ВМ постоянно растет. Так, при удвоении
быстродействия процессоров примерно ка­ждые два года для МД такое удвоение было достигнуто лишь спустя десять лет. Ясно, что уже с самого начала использования подсистем памяти на базе МД не прекращаются попытки улучшить их характери­стики. Одно из наиболее интересных и универсальных усовершенство-
109
ваний было предложено в 1987 году учеными университета Беркли (Калифорния). Проект известен под аббревиатурой RAID (Redundant Array of Independent (or Inexpensive) Disks) – массив независимых (или
недорогих) дисков с избыточностью. В основе концепции RAID лежит переход от одного физического МД большой емкости к массиву недоро­гих, независимо и параллельно работающих физических дисковых ЗУ, рассматриваемых операционной системой как одно большое логическое дисковое
запоминающее устройство. Такой подход позволяет повысить производительность дисковой памяти за счет возможности параллельно­го обслуживания запросов на считывание и запись, при условии, что данные находятся на разных дисках. Повышенная надежность достига­ется тем, что в массиве дисков хранится избыточная информация, по­зволяющая обнаружить и исправить возможные ошибки. На период,
концепция RAID была впервые предложена, определенный выиг-
когда рыш достигался и в плане стоимости. В настоящее время с развитием технологии производства МД утверждение об экономичности массивов RAID становится проблематичным, что однако вполне компенсируется их повышенными быстродействием и отказоустойчивостью.
В настоящее время производители RAID-систем, объединившиеся в ассоциацию RAB (RAID Advisory Board), договорились о единой классификации RAID, включающей в себя
шесть уровней (добавлен уровень RAID 0). Известны также еще несколько схем RAID, не вклю­ченных в эту классификацию, поскольку, по сути, они представляют собой различные комбинации стандартных уровней. Хотя ни одна из схем массива МД не может быть признана идеальной для всех случаев, каждая из них позволяет существенно улучшить какой-то из показате-
(производительность, отказоустойчивость) либо добиться наибо-
лей лее подходящего сочетания этих показателей. Для всех уровней RAID характерны три общих свойства:
RAID представляет собой набор физических дисковых ЗУ,
управляемых операционной системой и рассматриваемых как один логический диск;
данные распределены по физическим дискам массива;
избыточное дисковое пространство используется для хранения
дополнительной информации, гарантирующей восстановление данных в случае отказа диска.
5.12. ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
Повышение производительности дисковой подсистемы в RAID достигается с помощью приема, называемого расслоением или расще­плением (striping). В его основе лежит разбиение данных и дискового
110
ДИСКОВОЙ ПОДСИСТЕМЫ
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]