link0 link1 link2 link3 link4 link5 link6 link7 link8 link9 link10 link11 link12 link13 link14 link15 link16 link17 link18 link19 link20 link21 link22 link23 link24 link25 link26 link27 link28 link29 link30 link31 link32 link33 link34 link35 link36 link37 link38 link39 link40 link41 link42 link43 link44 link45 link46 link47 link48 link49 link50 link51 link52 link53 link54 link55 link56 link57 link58 link59 link60 link61 link62 link63 link64 link65 link66 link67 link68 link69 link70 link71 link72 link73 link74 link75 link76 link77 link78 link79 link80 link81 link82 link83 link84 link85 link86 link87 link88 link89 link90 link91 link92 link93 link94 link95 link96 link97 link98 link99 link100 link101 link102 link103 link104 link105 link106 link107 link108 link109 link110 link111 link112 link113 link114 link115 link116 link117 link118 link119 link120 link121 link122 link123 link124 link125 link126 link127 link128 link129 link130 link131 link132 link133 link134 link135 link136 link137 link138 link139

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Память. Верхний уровень

Память. Верхний уровень

Трансляция адреса в реальном режиме

В реальном режиме сегментный регистр содержит непосредственно компоненту адреса (см. рисунок ниже).

Схема трансляции адреса в реальном режиме

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

В реальном режиме сформированный линейный адрес подается непосредственно на физическую адресную шину, т.е. в реальном режиме понятия линейного и физического адресов совпадают. Таким образом, в реальном режиме размер сегмента фиксирован. Максимальный адрес, который можно сформировать по приведенной схеме, равен 0xFFFF0 + 0xFFFF = 0x10FFEF, что дает общее количество адресов 0x10FFF0 = 0x10000 + 0x1000 — 0x10 = 220+216-24.

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

Отладка и отладочные регистры

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

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

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

В число средств архитектуры, поддерживающих отладку, входят:

•Отладочные адресные регистры — задают адреса до четырех контрольных точек.

•Отладочный управляющий регистр — задает формы доступа к памяти для контрольных точек.

•Отладочный регистр состояния — сообщает об условиях, которые существовали в момент генерации исключения.

•Бит ловушки в TSS (T-бит) — генерирует отладочное исключение при попытке выполнить переключение задачи на задачу, для которой этот бит был установлен.

•Флаг возобновления (RF) — подавляет возобновление множественных исключений для одной и той же команды.

•Флаг трассировки (TF) — генерирует отладочное исключение после каждого выполнения команды.

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

•Резервируемый вектор прерывания для исключения контрольной точки — вызывает процедуру или задачу при выполнении команды контрольной точки.

Эти средства позволяют вызывать отладчик как отдельную задачу или процедуру в контексте текущей задачи.

Для вызова отладчика могут быть использованы следующие условия:

•Переключение на конкретную задачу.

•Выполнение команды контрольной точки.

•Выполнение любой команды.

•Выполнение команды по заданному адресу.

•Чтение или запись байта, слова или двойного слова по конкретному заданному адресу.

•Запись в байт, слово или двойное слово по заданному адресу.

•Попытка изменить содержимое отладочного регистра.

Формат регистров отладки


Правила выборки, размещения, замены страниц

Правила выборки страниц (fetch policy)

Методы выборки определяют правила выбора загружаемой в память страницы. Известны три правила:

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

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

3. Упреждающая подкачка. Страница в ОЗУ загружается еще до того момента, когда она потребуется, т.е. по предположению. Эта стратегия обеспечивает максимальное быстродействие в системе. Однако, трудно определить какая страница понадобиться в будущем и возможны случаи, когда загружается не нужная страница.

Правила размещения (placement policy)

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

Правила замены (replacement policy)

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

LRU ( Least Recently Used). Замещается та страница, к которой дольше всего не было обращения.

FIFO (First In First Out). Здесь заменяется страница, дольше всего находившаяся в памяти.

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

За счет виртуального механизма решаются следующие вопросы:

  1. Выполнение программы, объем которой превышает объем физической памяти.
  2. Независимость работоспособности программы от места ее расположения в физической памяти и от конфигурации этой памяти.
  3. Динамическое распределение памяти.
  4. Независимость (легкая сопрягаемость) разрядности компонентов логических адресов в программе (указателей), разрядности линейного адреса, разрядности физического адреса и реального объема памяти, установленной в системе.

Способы планирования

1. Невытесняемое планирование. Новая задача переходит в состояние Running, если предыдущая задача закончила свое выполнение или перешла в состояние Waiting.

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

Полностью вытесняемое планирование

3. Круговое планирование. Используется операция уступить новой задаче. Такое планирование может применяться для задач одного приоритета.

4. Завершение кванта. Каждой задаче выделяется квант времени. По окончании выполняется другая задача с текущим уровнем приоритета. Если такой нет, то второй квант времени выполняется первая задача. Вытесненная задача ставится в очередь задач данного приоритета (см. рисунок ниже) и переводится из состояния Running в состояние Ready. В Win 2000 у каждой задачи (потока) свое значение кванта. Это значение выражается не в единицах времени, а целым числом в так называемых квантовых единицах. Минимальный квант (6 единиц) по умолчанию равен двум интервалам системного таймера. Максимальный соответствует 36 единиц. Длительный квант в ряде случаев позволяет свести к минимому переключения контекста. Получая больший квант программы обслуживания клиентского запроса (в серверах) имеют больше шансов выполнить запрос и вернуться в состояние ожидания до истечения выделенного кванта. Длина временного интервала таймера зависит от аппаратной платформы и на большинстве однопроцессорных х86систем составляет 10 мс, а на бльшинстве многопроцессорных систем — 15 мс. Величиной выделенного кванта можно управлять, в частности динамически приращивая квант при круговом планировании.

Завершение кванта

5. Адаптивное планирование (см. рисунок ниже). Основано на динамическом изменении приоритетов задач. По истечении выделенного кванта приоритет задачи снижается. Если с текущим уровнем приоритета нет задач, задача выполняется следующий квант, и приоритет снова снижается и так далее до базового. Если задача долгое время не выполнялась, то ее приоритет возрастает до тех пор, пока она не начнет выполняться. На рис. показан этот процесс. Техника назначения приоритетов и их изменения полностью определяется уровнем ОС.

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

Адаптивное планирование

RAID 2: Матрица с поразрядным расслоением

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

Такая организация обеспечивает лишь один поток ввода/вывода для каждой группы, независимо от ее размера. Группы большого размера приводят к снижению избыточной емкости, идущей на обеспечение отказоустойчивости, тогда как при организации меньшего числа групп наблюдается снижение операций ввода/вывода, которые могут выполняться матрицей параллельно.

При записи больших массивов данных системы уровня 2 имеют такую же производительность, что и системы уровня 1, хотя в них используется меньше контрольных дисков и, таким образом, по этому показателю они превосходят системы уровня 1. При передаче небольших порций данных производительность теряется, так как требуется записать или считать группу целиком, независимо от конкретных потребностей. Таким образом, RAID уровня 2 предпочтительны для суперкомпьютеров, но не подходят для обработки транзакций. Компания “Thinking Machine” использовала RAID уровня 2 в ЭВМ Connection Machine при 32 дисках данных и 10 контрольных дисках, включая 3 диска горячего резерва.

Недостаток массива RAID 2 в том, что для его функционирования нужна структура из почти двойного количества дисков, поэтому такой вид массива не получил распространения.