Виртуальная память в ОС с аппаратной платформой Intel Pentium.

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

Формат селектора:

 
  Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru

Индекс определяет номер записи в таблице дескрипторов сегмента. Во время загрузки селектора в сегментный регистр соответствующий дескриптор извлекается из локальной или глобальной таблицы, управляющий бит 0 или 1, и загружается в микропрограммные регистры, что обеспечивает к нему быстрый доступ.

Формат дескриптора:

 
  Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru

G:

0 - в битах;

1 - в байтах.

D:

0 - 16-разрядный адрес сегмента;

1 - 32-разрядный адрес сегмента.

Предел - предельный адрес.

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

P:

0 - отсутствует;

1 - присутствует в ОП.

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

Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru

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

 
  Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru

       
    Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru
 
  Виртуальная память в ОС с аппаратной платформой Intel Pentium. - student2.ru

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

Защита памяти.

Как правило, поддерживается 4 уровня защиты: 0 самый привилегированный, 3 наименее привилегированный. В каждый момент времени процесс находится на определенном уровне защиты, что отмечается в PSW процесса. Попытки доступа процесса к рамкам памяти более высокого класса привелегированности вызывают прерывание. Для перехода в тот или иной режим защиты используются инструкции, выполняемые на уровне ядра.

Ввод-вывод.

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

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

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

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

Контроллеры устройств.

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

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

Чтение информации из порта 1 в регистр 1: IN R1,PORT1.

Запись в порт 2 из регистра 2: OUT PORT2, R2.

Для передачи информации во внешние устройства, буфер данных контроллера которых находится в реальной ОП, наиболее часто используется команда asm MOV A(L),B.

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

Наши рекомендации