Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Архитектура ЭВМ и систем. Учебное пособие
.pdf
Среди систем виртуальной памяти можно выделить два класса:
системы с фиксированным размером блоков (страничная организация)
и системы с переменным размером блоков (сегментная организация).
Оба варианта обычно совмещают (сегментно-страничная организация).
5.10.1. СТРАНИЧНАЯ ОРГАНИЗАЦИЯ ПАМЯТИ
Целям преобразования виртуальных адресов в физические служит
страничная организация памяти. Ее идея состоит в разбиении программы на части равной величины, называемые страницами. Размер
страницы обычно выбирают в пределах 4…8 Кбайт, но так, чтобы он
был кратен емкости одного сектора магнитного диска. Виртуальное и
физическое адресные пространства разбиваются на блоки размером в
страницу. Блок основной памяти, соответствующий странице, часто
называют страничным кадром или фреймом (page frame). Страницам
виртуальной и физической памяти присваивают номера.
Центральный процессор обращается к ячейке, указав ее виртуальный адрес, состоящий из номера виртуальной страницы и смещения относительно ее начала. Этот адрес поступает в систему преобразования адресов с целью
в основной памяти. Поскольку смещение в виртуальном и физическом
адресе одинаковое, преобразованию подвергается лишь номер страницы. Если преобразователь обнаруживает, что нужная физическая страница отсутствует в основной памяти (произошел промах или страничный сбой), то нужная страница считывается из внешней памяти и заносится
в ОП.
Преобразователь адресов – это часть операционной системы,
транслирующая номер виртуальной страницы в номер физической
страницы, расположенной в основной памяти, а также аппаратура,
обеспечивающая этот процесс и позволяющая ускорить его. Преобразование осуществляется с помощью так называемой страничной таблицы. При отсутствии нужной страницы в ОП преобразователь адресов вырабатывает
ная система приостанавливает вычисления, пока нужная страница не
будет считана из вторичной памяти и помещена в основную.
Виртуальное пространство полностью описывается двумя таблицами: страничной таблицей и картой диска (будем считать, что вторичная память реализована на магнитных дисках). Таблица страниц
определяет, какие виртуальные страницы
и в каких физических фреймах, а карта диска содержит информацию о
секторах диска, где хранятся виртуальные страницы на диске.
Число записей в страничной таблице (СТ) в общем случае равно
количеству виртуальных страниц. Каждая запись содержит поле номера физической страницы (НФС) и четыре признака: V, R, М и
получения из него физического адреса ячейки
признак страничного сбоя, по которому операцион-
находятся в основной памяти
А.
101

Признак присутствия V устанавливается в единицу, если виртуальная страница в данный момент находится в основной памяти.
В этом случае в поле номера физической страницы находится соответствующий номер. Если V = 0, то при попытке обратиться к данной
виртуальной странице преобразователь адреса генерирует сигнал
страничного сбоя (page fault), и операционная система предпринимает
действия по загрузке страницы
с диска в ОП, обращаясь для этого к
карте диска. В карте указано, на какой дорожке и в каком секторе диска расположена каждая из виртуальных страниц. Загрузка страницы с
диска в ОП сопровождается записью в соответствующую строку страничной таблицы (указывается номер физической страницы, куда была
загружена виртуальная страница).
В принципе карта диска может быть совмещена со страничной
таблицей путем добавления к последней еще одного поля. Другим вариантом может быть увеличение разрядности поля номера физической
страницы и хранение в нем номеров дорожек и секторов для виртуальных страниц, отсутствующих в основной памяти. В этом случае вид
хранимой информации будет
определять признак V.
Признак использования страницы R устанавливается при обращении к данной станице. Эта информация используется в алгоритме замещения страниц для выбора той из них, которую можно наиболее
безболезненно удалить из ОП, чтобы освободить место для новой.
Проблемы замещения информации в ОП решаются так же, как и для
кэш-памяти.
Поскольку в ОП находятся лишь копии страниц, а их оригиналы
хранятся на диске, необходимо обеспечить идентичность подлинников
и копий. В ходе вычислений содержимое отдельных страниц может
изменяться, что фиксируется путем установки в единицу признака модификации М. При удалении страницы из ОП проверяется состояние
признака М. Если М = 1, то перед удалением
страницы из основной
памяти ее необходимо переписать на диск, а при М = 0 этого можно не
делать.
Признак прав доступа А служит целям защиты информации и определяет, какой вид доступа к странице разрешен: только для чтения,
только для записи, для чтения и для записи.
Когда программа загружается в ОП, она
может быть направлена в
любые свободные в данный момент страничные кадры, независимо от
того, расположены ли они подряд или нет. Страничная организация
позволяет сократить объем пересылок информации между внешней
памятью и ОП, так как страницу не нужно загружать до тех пор, пока
она действительно не понадобится.
Способ реализации СТ жизненно важен
для эффективности тех-
ники виртуальной адресации, поскольку каждое обращение к памяти
102

предполагает обращение к страничной таблице. Наиболее быстрый
способ – хранение таблицы в специально выделенных для этого регистрах, но от него приходится отказываться при большом объеме СТ.
Остается практически один вариант – выделение страничной таблице
области основной памяти, несмотря на то что это приводит к двухкратному увеличению времени доступа к информации. Чтобы
сократить это время, в состав ВМ включают дополнительное ЗУ, называемое буфером быстрого преобразования адреса (TLB – Translation Lookaside 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
ДИСКОВОЙ ПОДСИСТЕМЫ
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
