Почему концепция виртуальной памяти базируется на ее страничном разбиении
Страничная память — способ организации виртуальной памяти, при котором единицей отображения виртуальных адресов на физические является регион постоянного размера (т. н. страница). [1] Типичный размер страницы — 4096 байт, для некоторых архитектур — до 128 КБ.
Поддержка такого режима присутствует в большинстве 32-битных и 64-битных процессоров. Такой режим является классическим для почти всех современных ОС, в том числе Windows и семейства UNIX. Широкое использование такого режима началось с процессора VAX и ОС VMS с конца 70-х годов (по некоторым сведениям, первая реализация). В семействе x86 поддержка появилась с поколения 386, оно же первое 32-битное поколение.
Содержание
Решаемые задачи
- Поддержка изоляции процессов и защиты памяти путём создания своего собственного виртуального адресного пространства для каждого процесса
- Поддержка изоляции области ядра от кода пользовательского режима
- Поддержка памяти «только для чтения» и неисполняемой памяти
- Поддержка отгрузки давно не используемых страниц в область подкачки на диске
- Поддержка отображённых в память файлов, в том числе загрузочных модулей
- Поддержка разделяемой между процессами памяти, в том числе с копированием-по-записи для экономии физических страниц
- Поддержка системного вызова fork() в ОС семейства UNIX
- Уменьшение внешней фрагментации – использование блоков фиксированного размера в виртуальной и физической памяти, все запросы на выделение памяти будут кратны, не будет оставаться некратных зон.
Механизм работы
Логический адрес в страничной системе – упорядоченная пара (p,d), где p – номер страницы в виртуальной памяти(селектор), а d – смещение в рамках страницы p, на которой размещается адресуемый элемент. Разбиение адресного пространства на страницы осуществляется вычислительной системой незаметно для программиста. Поэтому адрес является двумерным лишь с точки зрения операционной системы, а с точки зрения программиста адресное пространство процесса остается линейным. На самом деле адрес в памяти также можно указать другими способами - через константы и значения переменных, но всегда используется пара значений p и d, в явном или неявном виде. Каждый раз, при выполнении команды, процессор производит преобразование логического адреса в линейный адрес - 32-разрядный абсолютный адрес в памяти. После вычисления линейного адреса процессор преобразует его в физический адрес, по которому и производит обращение к памяти.
Описываемая схема позволяет загрузить процесс, даже если нет непрерывной области кадров, достаточной для размещения процесса целиком.
Число записей в одной таблице ограничено и зависит от размера записи и размера страницы. Используется многоуровневая организация таблиц, часто 2 или 3 уровня, иногда 4 уровня (для 64-разрядных архитектур).
Основное применение страничного преобразования адреса - организация виртуальной памяти. Виртуальная память позволяет использовать программы, требующие больший объем памяти, чем установленный на компьютере физический объем памяти. Остальная информация может быть сброшена на внешний носитель.
Управление страничным разбиением памяти обычно возлагается на специальную микросхему MMU (Memory Managment Unit - устройство управления памятью). В микропроцессоре i80486 и выше это устройство встроено в процессор.
Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса (в данном случае линейного) в физический. В страничном преобразовании базовым объектом памяти является блок фиксированного размера, называемый страницей (page).
В процессе страничного преобразования старшие 20 бит 32-х битного линейного адреса заменяются новым значением - номером физической страницы. Младшие же 12 бит линейного адреса определяют положение байта внутри страницы и остаются неизменными.
Для уменьшения размера таблицы страниц в микропроцессорах x86 предусмотрена двухуровневая схема преобразования адреса. Основой страничного преобразования служит регистр управления CR3, содержащий 20-ти битный физический базовый адрес каталога страниц текущей задачи. Предполагается, что каталог выровнен по границе страничного кадра, постоянно находится в памяти и не участвует в свопинге. Корневая страница, называемая каталогом страниц, содержит 1024 32-х битных дескриптора, называемых элементами каталога страниц PDE (Page Directory Entry). Каждый из них адресует подчиненную таблицу страниц. Каждая из этих таблиц содержит 1024 32-х битных дескриптора, называемая элементами таблицы страниц. PTE (Page Table Entry). Каждый PTE содержит адрес страничного кадра в физической памяти. Собственно преобразование линейных адресов в физические состоит из следующих действий:
- Старшие 10 бит 31 - 22 линейного адреса, дополненные двумя младшими нулями, служат индексом PDE.
- Средние 10 бит 21 - 12 линейного адреса, дополненные двумя младшими нулями, индексируют таблицу страниц PTE. Элемент PTE содержит 20-битный базовый адрес страничного кадра в физической памяти.
Этот базовый адрес из элемента PTE объединяется с младшими 12-ю битами линейного адреса, образуя 32-х битный физический адрес.
Страничная память x86
Исторически x86 использует 32-битные PTE, 32-битные виртуальные адреса, 4KB-страницы, 1024 записи в таблице, двухуровневые таблицы. Старшие 10 бит виртуального адреса — номер записи в директории, следующие 10 — номер записи в таблице, младшие 12 — адрес внутри страницы. [2]
Начиная с Pentium Pro, процессор поддерживает страницы размером 4Мб. Однако, чтобы система и программы, запущенные в ней, могли использовать страницы такого размера, технология 4-х Мб страниц (hugepages) должна быть соответствующим образом активирована, а приложение настроено на использование страниц такого размера. Процессор x86 в режиме PAE (Physical Address Extension) и в режиме x86_64 (long mode) использует 64-битные PTE (из них реально задействованы не все биты физического адреса, от 36 в PAE до 48 в некоторых x86_64), 32-битные виртуальные адреса, 4KB-страницы, 512 записей в таблице, трехуровневые таблицы с четыремя директориями и четыремя записями в супер-директории. Старшие 2 бита виртуального адреса — номер записи в супер-директории, следующие 9 — в директории, следующие 9 — в таблице. Физический адрес директории или же супер-директории загружен в один из управляющих регистров процессора.
При использовании PAE вместо 4МБ больших страниц используются двухмегзбайтные. В архитектуре x86_64 возможно использовать страницы размером 4 килобайта (4096 байт), 2 мегабайта, и (в некоторых AMD64) 1 гигабайт.
Страничное прерывание
Если обращение к памяти не может быть оттранслировано через TLB, то микрокод процессора обращается к таблицам страниц и пытается загрузить PTE оттуда в TLB. Если и после такой попытки сохранились проблемы, то процессор исполняет специальное прерывание, называемое «отказ страницы» (page fault). [3] Обработчик этого прерывания находится в подсистеме виртуальной памяти ядра ОС.Некоторые процессоры (MIPS) не имеют обращающегося к таблице микрокода, и генерируют отказ страницы сразу после неудачи поиска в TLB, обращение к таблице и её интерпретация возлагаются уже на обработчик отказа страницы. Это лишает таблицы страниц требования соответствовать жёстко заданному на уровне аппаратуры формату.
Причины отказа страницы (page fault):
- Не существует таблицы, отображающей данный регион
- PTE не имеет взведённого флага «страница отображена».
- Попытка обратиться из пользовательского режима к странице «только для ядра».
- Попытка записи в страницу «только для чтения».
- Попытка исполнения кода из страницы «исполнение запрещено».
Алгоритм работы страничного прерывания:
- Когда страница выгружается, ОС устанавливает бит присутствия (valid – является ли валидной ячейка) PTE=0. И там же в РТЕ записывает куда она была соответственно выгружена.
- Когда же процесс обращается к этой странице, то происходит исключение, т.к. Valid=0,т.е. бит валидности установлен в 0 – страница не использовалась.
- После того, как произошло исключение ОС передает управление обработчику страничного прерывания
- Обработчик находит то место, куда была выгружена страница
- Считывает эту страницу в фрейм физической памяти, обновляет РТЕ, ставит бит валидности (присутствия) в 1.
- В физической памяти появляется новая страница.
Обработчик отказов в ядре может загрузить нужную страницу из файла или же из области подкачки, может создать доступную на запись копию страницы «только для чтения», а может и возбудить исключительную ситуацию (в терминах UNIX — сигнал SIGSEGV) в данном процессе.
Таблицы страниц
Таблица страниц (Page Table) состоит из 4-байтовых элементов (Entries). Эти элементы называются PTE (Page Table Entries) и представляют собой по сути - указатели на страницы, по формату - структуры данных.
Структура таблицы:
Если страница не присутствует в памяти (бит P=0), то процессор не использует все остальные биты элемента PTE и программа может их использовать по своему усмотрению.
Таблицы страниц процессов
Каждый процесс имеет свой собственный набор таблиц страниц. Регистр «директория страниц» перегружается при каждом переключении контекста процесса. Также необходимо очистить ту часть TLB, которая относится к этому процессу.
Память региона ядра часто одинакова для всех процессов, но некоторые подрегионы ядра (например, регион, где находится подсистема графики и видео-драйвер) могут быть различным для разных групп процессов.
Потому что память ядра одинакова для всех процессов, соответствующие к ней записи в TLB не нужно перезагружать после переключения процесса. Для этой оптимизации архитектура x86 поддерживает флажок «глобальный» в PTE.
Работа менеджера памяти Windows
Для управления виртуальной памятью в операционной системе Windows предусмотрен специальный менеджер Virtual Memory Manager (VMM). Он является составной частью ядра операционной системы и представляет собой отдельный процесс, постоянно находящийся в оперативной памяти. Основная задача VMM заключается в управлении страницами виртуальной памяти. [4]
Каждому процессу VMM выделяет часть физической памяти, которая называется рабочим набором (Working Set). Кроме того, VMM создает базу состояния страниц (page-frame database), которая организована как шесть списков страниц одного типа. Выделяют следующие типы страниц:
Свободные страницы могут применяться, однако прежде они подлежат процедуре обнуления (заполнения нулями). Процедурой обнуления страниц занимается специальная подпрограмма менеджера памяти Zero Page Thread;
- Zeroed — пустая страница, которая является свободной и обнуленной. Такие страницы готовы к использованию любым процессом;
- Bad — страница, которая вызывает аппаратные ошибки и не может применяться ни одним процессом.
Как уже отмечалось, если какой-нибудь процесс обращается к странице, которой нет в рабочем наборе (в списке Valid), то возникает ошибка обращения к странице. В этом случае задача VMM заключается в том, чтобы разрешить данную ситуацию и выделить странице свободной физической памяти для хранения данных, к которым обратился процесс. Существует два варианта развития событий:
- VMM может расширить рабочий набор процесса, добавив к нему необходимую страницу.
- Если в памяти нет места для выделения дополнительных страниц, то VMM замещает страницу, находящуюся в рабочем наборе, новой страницей.
В идеале замещению должна подлежать та страница, к которой в будущем не будет обращений, или страница, которая не будет использоваться дольше других. Однако достоверного способа определить, какая именно страница отвечает перечисленным критериям, нет. Поэтому менеджер памяти применяет следующий алгоритм. Он периодически просматривает список рабочих страниц (Valid) и помечает их как отсутствующие (P = 0). Однако данные страницы не удаляются из рабочего процесса — они остаются на месте и просто переводятся из категории Valid в категорию модифицированных (Modified) или резервных (Standby) страниц ( никаких изменений в содержимом этих страниц не производится). Если измененная таким образом страница требуется какому-нибудь процессу, то происходит обращение к ней и возникает ошибка обращения к странице. Но поскольку в действительности страница находится в физической памяти и ее содержимое не подвергалось изменению, то менеджеру памяти достаточно перевести данную страницу обратно в категорию Valid, сделав ее доступной для процесса. Если же страница не используется в течение длительного времени процессами и обращений к ней не происходит, она со временем переводится в категорию свободных (Free) страниц, а затем обнуляется и переводится в категорию пустых (Zeroed) страниц.
Таким образом, менеджер памяти автоматически забирает страницы из рабочих наборов неактивных процессов, то есть процессы, не проявляющие активности в течение длительного времени и автоматически освобождает всю физическую память.
Отображаемые в память файлы
Обработчик отказа страницы в ядре способен прочитать данную страницу из файла.
Это приводит к возможности легкой реализации отображенных в память файлов. Концептуально это то же, что выделение памяти и чтение в неё отрезка файла, с той разницей, что чтение осуществляется неявно «по требованию», выраженному отказом страницы при попытке обращения к ней.
Вторым преимуществом такого подхода является — в случае отображения «только для чтения» — разделение одной и той же физической памяти между всеми процессами, отображающими данный файл (выделенная же память своя у каждого процесса).
Третьим преимуществом является возможность «забывания» (discard) некоторых отображенных страниц без выгрузки их в область подкачки, обязательной для выделенной памяти. В случае повторной потребности в странице она может быть быстро загружена из файла снова.
Четвертым преимуществом является не-использование дискового кэша в этом режиме, что означает экономию на копировании данных из кэша в запрошенный регион. Преимущества дискового кэша, оптимизирующего операции небольшого размера, а также повторное чтение одних и тех же данных, полностью исчезают при чтениях целых страниц и тем более их групп, недостаток же в виде обязательного лишнего копирования — сохраняется.
Отображаемые в память файлы используется в ОС Windows, а также ОС семейства UNIX, для загрузки исполняемых модулей и динамических библиотек. Они же используются утилитой GNU grep для чтения входящего файла, а также для загрузки шрифтов в ряде графических подсистем.
Сегментно-страничная виртуальная память
Существуют две другие схемы организации управления памятью: сегментная и сегментно-страничная. [5] Сегменты, в отличие от страниц, могут иметь переменный размер. При сегментной организации виртуальный адрес является двумерным как для программиста, так и для операционной системы, и состоит из двух полей – номера сегмента и смещения внутри сегмента. Главное отличие сегментной организации от страничной в том, что в последней линейный адрес преобразован в двумерный операционной системой для удобства отображения, а сегментной двумерность адреса является следствием представления пользователя о процессе не в виде линейного массива байтов, а как набор сегментов переменного размера.
Логическое адресное пространство – набор сегментов. Каждый сегмент имеет имя, размер и другие параметры (уровень привилегий, разрешенные виды обращений, флаги присутствия). В отличие от страничной схемы, где пользователь задает только один адрес, в сегментной схеме пользователь специфицирует каждый адрес двумя величинами: именем сегмента и смещением.
Каждый сегмент – линейная последовательность адресов, начинающаяся с 0. Максимальный размер сегмента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт). Размер сегмента может меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента обычно содержится и длина сегмента. Если размер смещения в виртуальном адресе выходит за пределы размера сегмента, возникает исключительная ситуация.
Логический адрес – упорядоченная пара v=(s,d), номер сегмента и смещение внутри сегмента.
В системах, где сегменты поддерживаются аппаратно, эти параметры обычно хранятся в таблице дескрипторов сегментов, а программа обращается к этим дескрипторам по номерам-селекторам. При этом в контекст каждого процесса входит набор сегментных регистров, содержащих селекторы текущих сегментов кода, стека, данных и т. д. и определяющих, какие сегменты будут использоваться при разных видах обращений к памяти. Это позволяет процессору уже на аппаратном уровне определять допустимость обращений к памяти, упрощая реализацию защиты информации от повреждения и несанкционированного доступа.
Хранить в памяти сегменты большого размера целиком так же неудобно, как и хранить процесс непрерывным блоком. Отсюда получается идея разбиения сегментов на страницы. При сегментно-страничной организации памяти происходит двухуровневая трансляция виртуального адреса в физический. В этом случае логический адрес состоит из трех полей: номера сегмента логической памяти, номера страницы внутри сегмента и смещения внутри страницы. Соответственно, используются две таблицы отображения – таблица сегментов, связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента.
Огромным достоинством страничной виртуальной памяти по сравнению с сегментной является отсутствие «ближних» и «дальних» указателей. Наличие таких концепций в программировании уменьшает применимость арифметики указателей, и приводит к огромным проблемам с переносимостью кода с/на такие архитектуры. Так, например, значительная часть ПО с открытым кодом изначально разрабатывалась для бессегментных 32-битных платформ со страничной памятью и не может быть перенесена на сегментные архитектуры без серьёзной переработки.
Правильные ответы выделены зелёным цветом.
Все ответы: В лекциях рассматриваются схемотехнические основы ЭВМ. Представлены основные устройства ЭВМ. Рассматривается взаимодействие устройств ЭВМ при автоматическом выполнении программы. Описана работа мультипрограммной ЭВМ.
Какое состояние имеет выход 7 трехвходового дешифратора с инверсными выходами, если состояние его входов равно 101 ?
(3) информации для определения состояния данного выхода недостаточно
С каким этапом совмещается этап формирования адреса следующей команды?
Какие преимущества обеспечивает конвейерный принцип обработки информации (при идеальном конвейере)?
(3) повышение скорости загрузки блоков микропроцессора
(4) уменьшение количества обращений к оперативной памяти
Что характерно для мультипрограммного режима работы ЭВМ?
(1) возможность перехода от выполнения одной задачи к другой
(2) в памяти ЭВМ одновременно содержатся программы и данные для выполнения нескольких задач
(3) ЭВМ содержит несколько процессоров, на которых возможно параллельное выполнение нескольких задач
(4) взаимная защита программ и данных, относящихся к различным задачам
Укажите основные режимы работы мультипрограммной ЭВМ.
Чем отличается обработка прерывания от выполнения подпрограммы?
(1) при вызове обработчика прерывания адрес возврата в основную программу определяют аппаратные средства микропроцессора, а при обращении к подпрограмме адрес возврата указывает программист
(2) вызов обработчика прерывания связан с необходимостью реакции системы на особую ситуацию, сложившуюся при выполнении программы, или на сигнал от внешнего устройства, а вызов подпрограммы запланирован программистом в программе
(3) вызов обработчика прерывания данного типа может быть осуществлен не более одного раза за время выполнения одной программы, а вызов подпрограммы может осуществляться многократно
Какая часть программного обеспечения всегда располагается в оперативной памяти?
Какой принцип логической организации памяти используется в персональной ЭВМ?
Какие действия должны предотвращаться средствами защиты памяти?
(1) неразрешенное взаимодействие пользователей друг с другом
(2) несанкционированный доступ пользователей к данным
(3) обращение к информации, которая в данный момент отсутствует в оперативной памяти
(4) использование информации в памяти не в соответствии с ее функциональным назначением
(5) повреждение программ и данных из-за ошибок в программах
(6) обращение к программам с более высоким уровнем привилегий
Что из перечисленного не входит в понятие интерфейса?
Какое состояние имеет трехразрядный суммирующий счетчик, предварительно сброшенный в "0", после поступления на его счетный вход 10-ти сигналов?
Какова минимальная адресуемая ячейка памяти в современных ЭВМ?
Какую длину может иметь непосредственный операнд в 16-разрядном микропроцессоре?
Представьте следующую команду в машинном виде минимальной длины (при ответе на этот вопрос можно пользоваться таблицами кодирования команд и режимов адресации): ADD CL, 12h
Определить смещение, которое должно быть указано в команде короткого внутрисегментного перехода, расположенной по адресу (IP)=243Ch и осуществляющей переход на команду по адресу 24C3h .
Почему арифметические команды формата "память-регистр" выполняются дольше, чем команды формата "регистр-память" при одинаковом режиме адресации памяти?
(1) больше времени требуется на считывание операндов
(2) команда имеет большую длину, поэтому больше времени требуется на ее считывание
(3) запись результата в память требует больше времени, чем запись результата в регистр
Какое состояние входов является запрещенным для запоминающей ячейки, реализованной на элементах "И-НЕ"?
На каком этапе происходит запись результата операции по адресу приемника результата?
Чем определяется длительность такта работы микропроцессора при конвейерной обработке информации?
(1) длительностью самого длинного этапа выполнения команды при последовательной обработке
(2) имеющимися на данный момент технологическими возможностями производства микропроцессорных БИС
(3) длительностью самого короткого этапа выполнения команды при последовательной обработке
Какое из соотношений между последовательностями состояний процесса является верным?
(1) порождение всегда предшествует активному состоянию
(2) готовность всегда предшествует активному состоянию
(4) активное состояние всегда предшествует окончанию
На основе какой одноочередной дисциплины распределения ресурсов обычно строятся многоочередные дисциплины?
Какие из действий по обработке прерывания выполняются процессором автоматически?
(2) формирование адреса программы – обработчика прерывания
(4) определение адреса возврата в прерванную программу
Каковы особенности статического распределения памяти?
(1) вся необходимая оперативная память выделяется процессу в момент его порождения
(2) процессу может выделяться оперативная память в размерах, превышающих физически существующую память
(3) выделение памяти единым блоком необходимой длины
(4) возникновение свободных участков памяти, которые невозможно без предварительного преобразования использовать для вычислительного процесса, вследствие наличия программ различной длины
Каковы основные недостатки метода граничных регистров?
(2) метод поддерживает работу лишь с областями памяти фиксированной длины
(3) метод поддерживает работу лишь с непрерывными областями памяти
Какие задачи возлагаются на интерфейсные схемы устройств ввода-вывода?
(1) обеспечение функциональной и электрической совместимости сигналов и протоколов обмена модуля и системной магистрали
(2) преобразование внутреннего формата данных модуля в формат данных системной магистрали и обратно
(3) обеспечение восприятия единых команд обмена информацией и преобразование их в последовательность внутренних управляющих сигналов
(4) изменение разрядности шины данных системной магистрали в зависимости от внутреннего формата устройства ввода-вывода
От чего зависит время задержки асинхронного счетчика?
(2) от времени задержки триггеров, составляющих счетчик
(3) от величины периода сигнала, поступающего на счетный вход счетчика
(4) от длительности высокого уровня сигнала, поступающего на счетный вход счетчика
Какие функции должен выполнять регистр множимого RGX в АЛУ, выполняющем операцию умножения чисел, заданных в прямом коде, со старших разрядов множителя?
Как называется совокупность микрокоманд, предназначенная для выполнения некоторой функционально законченной последовательности действий?
Чем определяется быстродействие запоминающего устройства при записи информации?
(1) временем, затрачиваемым на поиск нужной информации в памяти
(2) временем, затрачиваемым на поиск места в памяти, предназначаемого для хранения информации
Какой из сегментных регистров используется по умолчанию при формировании физического адреса операндов, находящихся в оперативной памяти, при режимах адресации, не использующих для формирования эффективного адреса регистр BP ?
Представьте следующую команду в машинном виде минимальной длины (при ответе на этот вопрос можно пользоваться таблицами кодирования команд и режимов адресации): SUB [SI+12h], DX
Определите адрес команды, которая будет выполняться после команды перехода 7007h , расположенной по адресу (IP)=FFFDh , при следующих значениях флагов: ZF = 1 , SF = 0 , CF = 0 , OF = 1 .
В каком случае команда условного перехода выполняется дольше?
(3) в любом случае время выполнения команды одинаково
При каком значении синхросигнала переключается динамический триггер?
Сколько сегментных регистров содержит микропроцессор с архитектурой IA-32?
Какова длительность выполнения 20 команд в идеальном 5-ступенчатом конвейере при длительности такта 10 нс?
Как в общем случае изменяется время выполнения программы при увеличении коэффициента мультипрограммирования?
Какая из модификаций многоочередной дисциплины распределения ресурсов предназначена для того, чтобы устранить недопустимо большое время выполнения длинных запросов?
(1) система со статическим указанием приоритетов программ
(2) обслуживание программ с абсолютными приоритетами
(3) система с динамическим изменением приоритетов программ
Какими средствами можно запретить все аппаратные маскируемые прерывания?
(1) с помощью сброса флага разрешения в таблице векторов прерываний
(2) с помощью сброса флага разрешения прерываний в регистре флагов микропроцессора
(3) с помощью регистра маски в контроллере приоритетных прерываний
Как преобразуется смещение в странице при переводе виртуальных адресов в физические?
(1) умножается на n , где n – определяется размером страницы ( V=2 n )
(2) смещение в физической странице есть сумма по модулю 2 смещения в виртуальной странице и величины n , где n – определяется размером страницы ( V=2 n )
Какое минимальное количество обращений к оперативной памяти выполняется в персональной ЭВМ при вычислении физического адреса в сегментно-страничном адресном пространстве без использования средств сокращения времени преобразования?
Какие проверки выполняются в персональной ЭВМ средствами защиты при управлении памятью?
(2) возможность программы выполнять некоторые команды
(3) проверка прав доступа к сегменту на запись или только на чтение
В каких случаях программно-управляемый обмен между памятью и устройством ввода-вывода эффективнее обмена в режиме прямого доступа к памяти?
(2) в случаях, когда быстродействие процессора намного больше быстродействия оперативной памяти
(3) в случаях, когда быстродействие процессора намного больше быстродействия устройства ввода-вывода
Какие типы триггеров можно использовать для построения регистра хранения?
Какой сигнал необходимо подавать на вход С0 сумматора в АЛУ, выполняющем операцию умножения чисел, заданных в обратном коде?
Какие блоки входят в состав схемного устройства управления?
Сколько БИС с организацией 1К слов по 1 разряд потребуется для построения ЗУ с организацией 4К слов по 4 разряда?
Значения каких регистров изменяются при выполнении команд условных переходов?
Представьте следующую команду в машинном виде минимальной длины (при ответе на этот вопрос можно пользоваться таблицами кодирования команд и режимов адресации): ADD AX, 1234h
Представьте в символическом виде команду, имеющую следующий машинный код (при ответе на этот вопрос можно пользоваться таблицами кодирования команд и режимов адресации): 2В871234h
Какое количество тактов будет выполняться следующая команда ES: SUB [123h], DX Операнды в памяти выровнены по границе слова. При ответе на этот вопрос можно пользоваться таблицами времени выполнения команд и времени вычисления эффективного адреса
При каком состоянии входов запоминающая ячейка, реализованная на элементах "И-НЕ", не изменит своего состояния?
Какие из блоков, входящих в состав 32-разрядного микропроцессора, отсутствовали в структуре 16-разрядного микропроцессора?
(1) максимально возможным на данном уровне технологии количеством ступеней
(1) это время между порождением и окончанием процесса
(2) это время между порождением и окончанием процесса за вычетом времени ожидания
(3) это время между порождением и окончанием процесса за вычетом времени ожидания и готовности
Для каких целей в мультипрограммной ЭВМ используется алгоритм планирования Корбато?
(1) для выбора времени кванта, на который ресурс предоставляется программе
(2) для определения номера очереди, в которую помещается новая программа при многоочередной дисциплине распределения ресурсов
(1) номер, присваиваемый каждому из прерываний для определения адреса обработчика прерывания
(2) адрес обработчика прерывания от данного источника
(3) номер, присваиваемый каждому из прерывания для определения его приоритета
Почему концепция виртуальной памяти базируется на ее страничном разбиении?
(1) страницы имеют меньший объем, по сравнению с программой, что позволяет проводить более плотную упаковку оперативной памяти
(2) страницы используются программистом при написании программы, поэтому могут быть легко интерпретированы средства управления памяти для организации виртуальной памяти
(3) при страничном разбиении памяти объемы физической и виртуальной страниц совпадают, что позволяет заменять страницу оперативной памяти новой страницей из внешней памяти без возникновения проблем фрагментации памяти
(4) страницы имеют меньший объем по сравнению с сегментами
Как определяется номер виртуальной страницы при сегментно-страничном преобразовании адреса?
(2) содержится в старших разрядах линейного адреса, полученного после сегментного преобразования
Каковы основные механизмы защиты памяти в персональной ЭВМ?
Как организуется параллельная во времени работа процессора над вычислительной частью программы и выполнение периферийными устройствами процедур ввода-вывода?
(2) за счет использования контроллеров устройств ввода-вывода
(4) за счет конвейерной организации работы микропроцессора
(1) счетчик, состояние которого уменьшается на "1" при каждом поступлении сигнала на счетный вход
(2) счетчик, состояние которого может как увеличиваться, так и уменьшаться на "1" в зависимости от того, на какой счетный вход поступает сигнал
(3) счетчик, который имеет асинхронный вход сброса в "0"
Какие функции должен выполнять регистр множителя RGY в АЛУ, выполняющем операцию умножения чисел, заданных в прямом коде, с младших разрядов множителя?
Какие схемные решения используются при построении датчика сигналов?
Чем определяется время обращения к регистровой памяти?
Какую длину имеет непосредственный операнд в 16-разрядном микропроцессоре при значении признака w=1 ?
Представьте следующую команду в машинном виде минимальной длины (при ответе на этот вопрос можно пользоваться таблицами кодирования команд и режимов адресации): SUB [DI+12h], DX
Определите адрес команды, которая будет выполняться после команды перехода 7808h , расположенной по адресу (IP)=FFFDh , при следующих значениях флагов: ZF = 1 , SF = 0 , CF = 0 , OF = 1 .
Для сокращения времени выполнения программы, имеющей циклические участки, требуется
(1) организовать выполнение обработки информации по месту нахождения операндов, использующихся на циклическом участке
(2) максимально сократить время выполнения участка программы с начальными установками цикла
(3) обработку информации на циклических участках проводить, по возможности, в регистровой памяти микропроцессора
Содержимое каких регистров меняется при формировании адреса следующей команды в персональной ЭВМ при отсутствии команд перехода?
Как называются конфликты в конвейере, возникающие при конвейеризации команд переходов?
Чем характеризуется мультипрограммный режим работы ЭВМ?
(1) возможность перехода от выполнения одной задачи к другой
(2) в памяти ЭВМ одновременно содержатся программы и данные для выполнения нескольких задач
(3) ЭВМ содержит несколько процессоров, на которых возможно параллельное выполнение нескольких задач
(4) взаимная защита программ и данных, относящихся к различным задачам
В какой из одноочередных дисциплин распределения ресурсов время нахождения в очереди длинных и коротких запросов зависит только от момента их поступления?
Чем отличается обработка прерывания от выполнения подпрограммы?
(1) при вызове обработчика прерывания адрес возврата в основную программу определяют аппаратные средства микропроцессора, а при обращении к подпрограмме адрес возврата указывает программист
(2) вызов обработчика прерывания связан с необходимостью реакции системы на особую ситуацию, сложившейся при выполнении программы, или на сигнал от внешнего устройства, а вызов подпрограммы запланирован программистом в программе
(3) вызов обработчика прерывания данного типа может быть осуществлен не более одного раза за время выполнения одной программы, а вызов подпрограммы может осуществляться многократно
Каковы основные требования пользователей к распределению памяти?
(1) получение оперативной памяти в размерах, превышающих физически существующую
(2) увеличение степени использования оперативной памяти при параллельном развитии нескольких процессов в мультипрограммном режиме
(3) обеспечение быстрого выполнения коротких программ
(4) легкость и простота взаимодействия между программами при использовании общих процедур
Эта форма организации виртуальной памяти во многом похожа на сегментную. Основные различия заключаются в том, что все страницы, в отличие от сегментов, имеют одинаковые размеры, а разбиение виртуального адресного пространства процесса на страницы выполняется системой автоматически. Типичный размер страницы – несколько килобайт. Для процессоров Pentium, например, страница равна 4 Кб.
Все виртуальные адреса одного процесса относятся к единому линейному пространству, Проще сказать, виртуальный адрес выражается одним числом, от 0 до некоторого максимума. Старшие разряды двоичного представления этого адреса определяют номер виртуальной страницы, а младшие разряды – смещение от начала страницы. Например, для страниц по 4 Кб смещение занимает 12 младших разрядов адреса.
Физическая память также считается разбитой на части, размеры которых совпадают с размером виртуальной страницы. Эти части называются физическими страницами или страничными кадрами (page frames). Таблица страниц процесса по структуре похожа на таблицу сегментов. Для каждой виртуальной страницы она содержит режим доступа, флаг присутствия страницы в памяти, номер страничного кадра, флаг чистоты. Если страница отсутствует в памяти, ее данные сохраняются в файле подкачки, который в этом случае чаще называют страничным файлом (page file).
В отличие от случая сегментной организации, вместо сложения базового адреса со смещением в данном случае можно просто собрать вместе номер физической страницы и смещение.
При переключении текущего процесса система просто изменяет адрес используемой таблицы страниц, тем самым полностью изменяя отображение виртуальных адресов на физические.
Страничная организация памяти не может привести к фрагментации, поскольку все страницы одинаковы по размеру, а потому каждая высвобожденная физическая страница может быть затем использована для любой понадобившейся виртуальной страницы.
Размер пространства виртуальных адресов каждого процесса может быть огромным, ибо он определяется только разрядностью адреса. Для 32-разрядных процессоров этот размер равен 2 32 = 4 Гб. В настоящее время трудно представить программу, которой может всерьез понадобиться столько памяти, да и компьютер с таким объемом памяти – вещь не рядовая[12]. На самом деле, программа обычно использует лишь небольшую часть своего адресного пространства, не более нескольких десятков или, в крайнем случае, сотен мегабайт. Только эти используемые страницы и должны быть отображены на физическую память. Тем не менее, суммарный объем страниц, используемых всеми процессами в системе, обычно превосходит объем имеющейся физической памяти, поэтому использование страничного файла становится неизбежным.
Управление замещением страниц в физической памяти в современных РС строится по принципу загрузки по требованию (demand paging). Это означает следующее. Когда программа только лишь планирует использование определенной области виртуальной памяти (например, для хранения массива переменных, описанного в программе), соответствующие виртуальные страницы помечаются в таблице страниц как существующие, но находящиеся в данный момент на диске. В некоторых системах при этом за виртуальной страницей действительно закрепляются конкретные блоки в страничном файле, хотя из соображений экономии дисковой памяти это можно сделать позже, когда реально потребуется записать страницу на диск. Выделение страниц физической памяти не выполняется до тех пор, пока программа не обратится к одной из ячеек виртуальной страницы. При этом происходит аппаратное прерывание по отсутствию страницы в памяти. Это прерывание обрабатывает часть ОС, которая называется менеджером памяти. Менеджер должен выполнить следующие действия:
· найти свободную физическую страницу;
· если свободной страницы нет (а ее чаще всего нет), то по определенному алгоритму выбрать занятую страницу, которая будет вытеснена на диск;
· если выбранная страница «грязная», т.е. ее содержимое изменялось после того, как она последний раз была прочитана с диска, то «очистить» страницу, т.е. записать ее в соответствующий блок страничного файла;
· на освободившуюся физическую страницу прочитать блок страничного файла, закрепленный за запрошенной виртуальной страницей;
· откорректировать таблицу страниц, пометив вытесненную страницу как отсутствующую в физической памяти, а прочитанную – как присутствующую и при этом «чистую»;
· повторить обращение к запрошенному виртуальному адресу, теперь уже присутствующему в физической памяти.
Последующие обращения к виртуальным адресам той же страницы будут успешно выполняться, пока страница не будет, в свою очередь, вытеснена на диск.
Приведенная схема работы менеджера памяти с загрузкой страниц по требованию очень похожа на кэширование диска, рассмотренное в п. 2.6.6. Эффективность работы системы базируется на том же самом эффекте локальности ссылок, но только примененном не к блокам диска, а к страницам памяти.
Однако есть и очень существенное отличие. Обращение программы к дисковому кэшу происходит только при запросе на выполнение операции чтения с диска или записи на диск, что происходит не столь часто. Поэтому система может позволить себе затратить некоторое время на выполнение операций по поддержанию кэша в должном порядке. Например, если для выбора вытесняемого блока используется алгоритм LRU, то при каждом обращении к кэш-буферу этот буфер должен переставляться в конец очереди.
Менеджер памяти работает в иной ситуации. Обращения к памяти происходят с огромной частотой, при выполнении почти каждой команды процессора. Абсолютно нереально при каждом обращении предпринимать какие-то программные действия. Из этого следует, что алгоритм выбора вытесняемой страницы должен опираться на аппаратную поддержку. Поскольку алгоритм LRU не так просто реализовать аппаратно, вместо него часто используют алгоритмы, более простые в реализации, пусть даже они менее эффективны.
Недостатком страничной организации является то, что при большом объеме виртуального адресного пространства сама таблица страниц должна быть очень большой. При размере страницы 4 Кб и адресном пространстве 4 Гб таблица должна содержать миллион записей! Однако вряд ли программа процесса постоянно использует весь огромный диапазон адресов. Как правило, на каждом интервале времени интенсивно используются только некоторые части таблицы страниц (это еще одно проявление локальности ссылок). Желательно иметь возможность вытеснять на диск временно неиспользуемые части таблицы страниц. Такая возможность в современных процессорах обеспечивается использованием более сложной, двухуровневой схемы страничной адресации. В этой схеме все адресное пространство делится на разделы равной величины, каждый из которых описывается отдельной небольшой таблицей страниц. Имеется также каталог таблиц страниц, который описывает текущее состояние каждой таблицы точно так же, как сама таблица страниц описывает состояние страниц памяти. Те таблицы страниц, которые долго не используются, вытесняются на диск и соответствующим образом помечаются в каталоге. Виртуальный адрес делится не на две, а на три части. Старшие разряды адреса указывают позицию таблицы в каталоге, средние разряды – позицию страницы в таблице, младшие – смещение адреса от начала страницы.
Суть концепции: адреса, к которым обращается выполняемая программа, отделяются от адресов, реально существующих в основной памяти. Те адреса, на которые делает ссылки программа, называются виртуальными (логическими) адресами, а адреса в основной памяти, называются реальными (физическими).
Диапазон виртуальных адресов, к которым может обращаться выполняющаяся программа, называется пространством виртуальных адресов этой программы. Диапазон физических адресов, реально существующих в МП, называется пространством физических адресов этого процессора.
Для программы создается единое виртуальное адресное пространство – виртуальная (логическая) память, в которой физическая ограниченность емкости основной памяти скрыта, т. е. создается видимость произвольной адресации с отсутствием ограничения на емкость используемой памяти, что облегчает программирование.
Для установления соответствия между виртуальными и физическими адресами на практике используется механизм динамического преобразования адресов DAT. Имеет свойство искусственной смежностью: смежные адреса виртуального адресного пространства не обязательно будут смежными в физической памяти. Это свойство позволяет устранять фрагментацию физической памяти.
Страничная организация виртуальной памяти.
Виртуальный адрес – пара v = (p, d), где p – номер страницы, содержащей адрес v, d – смещение адреса v относительно начала страницы p.
Основная память разделяется на страничные кадры того же самого размера, что и виртуальные страницы. Поступающая в основную память страница может быть помещена в любой свободный страничный кадр.
Номеру каждой страницы виртуального пространства p ставится в соответствие номер страницы физического адресного пространства p’. Взаимосвязь между номерами страниц обоих типов устанавливается таблицей страниц, при этом полная таблица страниц размещается в основной памяти.
Прежде чем программа начинает выполняться, ОС загружает физический адрес таблицы отображения страниц в регистр начального адреса таблицы. Этот базовый адрес a таблицы прибавляется к номеру страницы p, образуя адрес основной памяти a + p для строки страницы p в таблице. В этой строке указано, что виртуальной странице p соответствует страничный кадр p’. Затем к значению p’ пристыковывается (путем конкатенации) смещение d, так что образуется физический адрес r. Такой подход называется способом прямого отображения.
Способ прямого отображения
Способ ассоциативно-прямого отображения
Используется для ускорения процедуры преобразования виртуального адреса в физический (т.к. как таблица страниц ведется в основной памяти).
Суть метода: использование специального буфера – ассоциативной памяти, способной хранить небольшую часть полной таблицы отображения страниц, в который записываются номера наиболее часто используемых в последнее время страниц и номера соответствующих им страничных кадров в основной памяти.
В ходе преобразования адресов сначала проверяется ассоциативная память, и если в ней есть сведения о необходимой странице, преобразование происходит без использования полной таблицы страниц в основной памяти.
Такой буфер называется буфером динамической трансляции или буфером ассоциативной трансляции адресов виртуальной памяти TLB – Translation Look aside Buffer.
Способ ассоциативно-прямого отображения
Многоуровневое разбиение на страницы
Расширение виртуального пространства влечет за собой увеличение таблицы страниц, а следовательно, и время поиска соответствующих адресов. Одним из способов решения этой проблемы является многоуровневое разбиение на страницы.
Суть разбиения: одномерное виртуальное пространство подразделяется на 2 (возможно и более) уровня – разделов и страниц, а преобразование виртуального адреса производится по двухуровневой таблице. На первом уровне находится таблица разделов, которая содержит ссылки на таблицы страниц каждого раздела. На втором уровне находятся таблицы страниц разделов.
Такой подход позволяет экономить объем памяти, выделяемый для информации отображения адресов, так как можно вести таблицы страниц не для всех разделов, в отличие от одноуровневого подхода, который требует хранения в основной памяти полной таблицы всех страниц виртуального пространства.
Читайте также: