Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Виртуальная память и организация защиты памяти

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

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

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

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

Системы виртуальной памяти можно разделить на два класса: системы с фиксированным размером блоков, называемых страницами, и системы с переменным размером блоков, называемых сегментами. Ниже рассмотрены оба типа организации виртуальной памяти.

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

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

Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB traнсlation-lookaside buffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую.

Поиск в таблицах страниц, расположенных в основной памяти, и загрузка TLB может осуществляться либо программным способом, либо специальными аппаратными средствами. В последнем случае для того, чтобы предотвратить возможность обращения пользовательской программы к таблицам страниц, с которыми она не связана, предусмотрены специальные меры. С этой целью в процессоре предусматривается дополнительный регистр защиты, содержащий описатель (дескриптор) таблицы страниц или базово-граничную пару. База определяет адрес начала таблицы страниц в основной памяти, а граница - длину таблицы страниц соответствующей программы. Загрузка этого регистра защиты разрешена только в привилегированном режиме. Для каждой программы операционная система хранит дескриптор таблицы страниц и устанавливает его в регистр защиты процессора перед запуском соответствующей программы.

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

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

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

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

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

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

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

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

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

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

Практически не тратя рабочие циклы на ожидание доступа. Это достигается методом копирования данных из ОЗУ в кэш при первичном обращении процессора к ним. В случае повторного обращения к тем же данным они уже поступают из кэша. Обратная операция происходит при записи данных в память. Расположенную на системной плате кэш-память обычно относят ко второму уровню (Level 2), так как во всех процессорах (начиная с модели Intel 80486) имеется встроенная, аналогично организованная кэш-память первого уровня (Level 1). Современные модели процессоров Intel и AMD имеют кэш-память второго уровня на модуле самого процессора. Поэтому кэш на материнской плате в таких системах относится уже к третьему уровню (Level 3) – рис. 5.5. Кэш-память типа SRAM применяют также в качестве буфера в устройствах хранения данных, например в жестких дисках, CD-ROM, DVD-ROM.

Рис. 5.5. Принципиальная схема организации трехуровневой кэш-памяти

Параметры работы кэш-памяти чрезвычайно сильно влияют на производительность подсистемы памяти в целом. Кэш-память первого уровня практически у всех ныне выпускаемых процессоров для IBM PC работает на частоте ядра. То есть, у Pentium III или Athlon может функционировать на частотах 1 ГГц и более. Однако объем такой памяти сравнительно невелик и обычно составляет 16-64 Кбайт, которые, как правило, делят пополам между адресами и данными. Сложнее обстоит дело с кэш-памятью второго уровня.

Обеспечить стабильную работу SRAM большой емкости на высоких частотах чрезвычайно трудно, так как количество транзисторов, выделяющих энергию во время переключений, нередко превышает число таковых в ядре процессора. Например, при объеме кэш - памяти второго уровня 2 Мбайт (процессор Хеоn) число транзисторов в ней около 10 миллионов.

Для решения этой проблемы найдено два обходных пути. Во-первых, на изделиях для массового рынка объем кэш - памяти, интегрированной с ядром процессора, уменьшается до приемлемых величин. Например, у процессора Celeron кэш L2 составляет 128 Кбайт. Во-вторых, кэш-память второго уровня изымается из ядра, но остается на процессорной плате, связанная с ядром специальной высокоскоростной шиной. Работает она при этом на половинной частоте ядра. Так сделано в процессорах Pentium II/III.

При этом не забыты и прямые, лобовые решения: совершенствование производства и ужесточение технологических норм. Например, переход на нормы 0,18 микрон позволил Intel разместить на Pentium III с ядром Coppermine 256 Кбайт кэш-памяти второго уровня, работающей на частоте ядра. Имеются модели процессора Хеоn с кэш-памятью до 4 Мбайт, но они чрезвычайно дороги.

Модули памяти

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

Объем физической памяти компьютера зависит от типа используемого процессора и архитектуры системной платы. В процессорах 8086 и 8088 с 20 линиями адреса объем памяти не превышает 1 Мбайт (1 024 Кбайт). Процессоры 286 и 386SX имеют 24 линии адреса и могут адресовать до 16 Мбайт памяти. Процессоры 386DX, 486, Pentium, Pentium ММХ и Pentium Pro имеют 32 линии адреса и могут взаимодействовать с памятью объемом до 4 Гбайт. Процессоры Pentium 1VUVA, а также AMD Athlon и Duron имеют 36 линий адреса и в состоянии обрабатывать 64 Гбайт. Новый процессор Itanium, с другой стороны, имеет 44-разрядную адресацию, что позволяет обрабатывать до 16 Тбайт (терабайт) физической памяти!

Режим эмуляции процессора 8088 микропроцессорами 286 и выше называется реальным режимом работы системы. Это единственно возможный режим процессоров 8088 и 8086 в компьютерах PC и XT. В реальном режиме все процессоры, даже всемогущий Pentium, могут адресовать только 1 Мбайт памяти, при этом 384 Кбайт зарезервировано для системных нужд. Полностью возможности адресации памяти процессоров 286 и последующих могут быть реализованы только в защищенном режиме.

Системы класса Р5 могут адресовать до 4 Гбайт памяти, системы класса Р6/Р7 — до 64 Гбайт. Если внедрить поддержку 64 Гбайт (65 536 Мбайт) памяти в современную систему, то ее стоимость достигла бы примерно 70 тыс. долларов! Более того, объем наибольших модулей памяти DIMM, существующих сегодня, равен 1 Гбайт. Поэтому для установки 64 Гбайт оперативной памяти потребуется системная плата, содержащая 64 разъема DIMM. Следует заметить, что в большинстве систем поддерживается только до четырех разъемов DIMM.

Системные платы обычно содержат от трех до шести разъемов DIMM, которые позволяют при полном их заполнении достичь максимального объема 0,75-1,5 Гбайт. Максимальный объем установленной памяти определяется не процессором, а в основном свойствами набора микросхем. Существующие процессоры позволяют адресовать, как уже отмечалось, до 64 Гбайт памяти, но возможности наборов микросхем ограничены объемом в 1 Гбайт.

Модули памяти DIMM и RIMM содержат встроенное ПЗУ (ROM), передающее параметры синхронизации и скорости модулей, поэтому рабочая частота контроллера памяти и шины памяти в большинстве систем соответствует наименьшей частоте установленных модулей DIMM/SIMM. Большинство модулей DIMM содержат микросхемы памяти SDRAM, т. е. передача данных происходит в виде высокоскоростных пакетов, использующих синхронизируемый интерфейс. В модулях DDR DIMM также используются микросхемы SDRAM, но передача данных выполняется дважды в течение одного такта, т. е. вдвое быстрее.

Оперативное запоминающее устройство микро-ЭВМ служит для размещения на определенное время программ и данных пользователя. Постоянное запоминающее устройство используется для размещения команд на машинном языке, которые представляют собой программу-монитор (сокращенно — монитор). Монитор содержит в себе неизменяющиеся подпрограммы инициализации, ввода/вывода и арифметических алгоритмов.

Последнее изменение этой страницы: 2017-07-07

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...