- •Введение
- •7. Иерархия памяти
- •7.1. Основы
- •7.2. Организация кэш-памяти
- •7.2.1. Параметры описания кэш-памяти и ее иерархия
- •7.2.2. Увеличение производительности кэш-памяти
- •7.3. Принципы организации основной памяти в современных компьютерах
- •7.3.1. Общие положения
- •7.3.2. Увеличение разрядности основной памяти
- •7.3.3. Память с расслоением
- •7.3.4. Использование специфических свойств динамических зупв
- •7.4. Виртуальная память и организация защиты памяти
- •7.4.1. Концепция виртуальной памяти
- •7.4.2. Страничная организация памяти
- •7.4.3. Сегментация памяти
- •8. Современные микропроцессоры
- •8.1. Процессоры с архитектурой 80x86 и Pentium
- •8.2. Особенности процессоров с архитектурой sparc компании Sun Microsystems
- •8.3. Процессоры pa-risc компании Hewlett-Packard
- •8.4. Процессор mc88110 компании Motorola
- •8.5. Особенности архитектуры mips компании mips Technology
- •8.6. Особенности архитектуры Alpha компании dec
- •8.7. Особенности архитектуры power компании ibm и PowerPc компаний Motorola, Apple и ibm
- •8.7.1. Архитектура power
- •8.7.2. Эволюция архитектуры power в направлении архитектуры PowerPc
- •8.7.4. Процессор PowerPc 603
- •9. Организация ввода/вывода
- •9.1. Общие положения
- •9.2. Системные и локальные шины
- •9.2.1. Центральная шина
- •9.2.2. Стандарты шин
- •9.3. Устройства ввода/вывода
- •9.3.1. Основные типы устройств ввода/вывода
- •9.3.2. Магнитные и магнитооптические диски
- •9.3.3. Дисковые массивы и уровни raid
- •9.3.4. Устройства архивирования информации
- •10. Многопроцессорные системы
- •10.1. Классификация систем параллельной обработки данных
- •10.2. Модели связи и архитектуры памяти
- •10.3. Многопроцессорные системы с общей памятью
- •10.3.1. Мультипроцессорная когерентность кэш-памяти
- •10.3.2. Альтернативные протоколы
- •10.4. Основы реализации
- •11. Системы высокой готовности и отказоустойчивые системы
- •11.1. Основные определения
- •11.2. Подсистемы внешней памяти высокой готовности
- •11.3. Требования, предъявляемые к системам высокой готовности
- •11.3.1. Конфигурации систем высокой готовности
- •11.3.2. Требования начальной установки системы
- •11.3.3. Требования к системному программному обеспечению
- •11.3.4. Журнализация файловой системы
- •11.3.5. Изоляция неисправного процесса
- •11.3.6. Мониторы обработки транзакций
- •11.3.7. Другие функции программного обеспечения
- •11.3.8. Требования высокой готовности к прикладному программному обеспечению
- •11.3.9. Требования к сетевой организации и к коммуникациям
- •11.4. "Кластеризация" как способ обеспечения высокой готовности системы
- •11.4.1. Базовая модель vax/vms кластеров
- •11.4.2. Системное программное обеспечение vax-кластеров
- •11.4.3. Критерии оценки кластеров Gartner Group
- •11.4.4. Кластеры Alpha/osf компании dec
- •11.4.5. Unix-кластеры компании ibm
- •11.4.6. Кластеры at&t gis
- •11.4.7. Кластеры Sequent Computer Systems
- •11.4.8. Системы высокой готовности Hewlett-Packard
- •11.4.9. Кластерные решения Sun Microsystems
- •11.4.10. Отказоустойчивые решения Data General
- •Список использованных источников
7.4.3. Сегментация памяти
Другой подход к организации памяти опирается на тот факт, что программы обычно разделяются на отдельные области-сегменты. Каждый сегмент представляет собой отдельную логическую единицу информации, содержащую совокупность данных или программ и расположенную в адресном пространстве пользователя. Сегменты создаются пользователями, которые могут обращаться к ним по символическому имени. В каждом сегменте устанавливается своя собственная нумерация слов, начиная с нуля.
Обычно в подобных системах обмен информацией между пользователями строится на базе сегментов. Поэтому сегменты являются отдельными логическими единицами информации, которые необходимо защищать, и именно на этом уровне вводятся различные режимы доступа к сегментам. Можно выделить два основных типа сегментов: программные сегменты и сегменты данных (сегменты стека являются частным случаем сегментов данных). Поскольку общие программы должны обладать свойством повторной входимости, то из программных сегментов допускается только выборка команд и чтение констант. Запись в программные сегменты может рассматриваться как незаконная и запрещаться системой. Выборка команд из сегментов данных также может считаться незаконной и любой сегмент данных может быть защищен от обращений по записи или по чтению.
Для реализации сегментации было предложено несколько схем, которые отличаются деталями реализации, но основаны на одних и тех же принципах.
В системах с сегментацией памяти каждое слово в адресном пространстве пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер сегмента, а младшие - как номер слова внутри сегмента. Наряду с сегментацией может также использоваться страничная организация памяти. В этом случае виртуальный адрес слова состоит из трех частей: старшие разряды адреса определяют номер сегмента, средние - номер страницы внутри сегмента, а младшие - номер слова внутри страницы.
Как и в случае страничной организации, необходимо обеспечить преобразование виртуального адреса в реальный физический адрес основной памяти. С этой целью для каждого пользователя операционная система должна сформировать таблицу сегментов. Каждый элемент таблицы сегментов содержит описатель (дескриптор) сегмента (поля базы, границы и индикаторов режима доступа). При отсутствии страничной организации поле базы определяет адрес начала сегмента в основной памяти, а граница - длину сегмента. При наличии страничной организации поле базы определяет адрес начала таблицы страниц данного сегмента, а граница - число страниц в сегменте. Поле индикаторов режима доступа представляет собой некоторую комбинацию признаков блокировки чтения, записи и выполнения.
Таблицы сегментов различных пользователей операционная система хранит в основной памяти. Для определения расположения таблицы сегментов выполняющейся программы используется специальный регистр защиты, который загружается операционной системой перед началом ее выполнения. Этот регистр содержит дескриптор таблицы сегментов (базу и границу), причем база содержит адрес начала таблицы сегментов выполняющейся программы, а граница - длину этой таблицы сегментов. Разряды номера сегмента виртуального адреса используются в качестве индекса для поиска в таблице сегментов. Таким образом, наличие базово-граничных пар в дескрипторе таблицы сегментов и элементах таблицы сегментов предотвращает возможность обращения программы пользователя к таблицам сегментов и страниц, с которыми она не связана. Наличие в элементах таблицы сегментов индикаторов режима доступа позволяет осуществить необходимый режим доступа к сегменту со стороны данной программы. Для повышения эффективности схемы используется ассоциативная кэш-память.
Отметим, что в описанной схеме сегментации таблица сегментов с индикаторами доступа предоставляет всем программам, являющимся частями некоторой задачи, одинаковые возможности доступа, т. е. она определяет единственную область (домен) защиты. Однако для создания защищенных подсистем в рамках одной задачи для того, чтобы изменять возможности доступа, когда точка выполнения переходит через различные программы, управляющие ее решением, необходимо связать с каждой задачей множество доменов защиты. Реализация защищенных подсистем требует разработки некоторых специальных аппаратных средств.