Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы Экзамен АрхЭВМ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.08 Mб
Скачать

26. Виртуальная память, преобразование адресов.

Виртуальная память – картина памяти, формируемая операционной системой для процесса (вспомним, что одна из функций ОС – предоставление виртуальной машины; естественно предположить, что память такой машины тоже должна быть виртуальной). Деятельность ОС по созданию такой картины правомерно назвать виртуализацией памяти.

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

Виртуальная память – это возможность адресовать пространство памяти, больше чем первичная память ЭВМ. Два класса схем структуризации – схемы страничной структуризации и схемы сегментной структуризации. Страничная структуризация : в каждую группу должно входить одинаковое число адресов. Группировку проводят последовательно от начала исходного адреса пространства в порядке возрастания адресов, и каждой вновь образованной странице присваивается номер. Второй шаг: производится перенумерация адресов в пределах каждой страницы и её рассматривают как отдельное адресное пространство. Адреса в пределах каждой страницы получают значения от 0 до 2m-1(размер страницы) в порядке возрастания от начала страницы. Адреса внутри страницы – смещение. Адрес задаётся двумя координатами: номер страницы и смещение.

26.1.

Страничная организация – это преобразование адресов виртуальной памяти в адреса ОЗУ.

Процесс обращается по виртуальному адресу V=(p,d), где р – номер страницы, d – смещение. Необходимые страницы из ВЗУ переписываются в ОЗУ. Страница в ОЗУ называется кадром. Перемещаемая страница может быть в любом страничном кадре. Формируется таблица страниц, где строка представляет собой тройку- (r, s, p’). r – бит признака присутствия страницы, s – адрес внешней памяти, если страницы в ВЗУ нет, p’ – номер страничного кадра, если страница находится в ВЗУ.

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

Процесс обращается только по виртуальному адресу и преобразование происходит только когда страница находится в ОЗУ, т.к. существует другой механизм загрузки страниц. Механизм отображения страниц ищет номер страницы p в таблице отображения и находит p’. Путем конкатенации к p’ добавляется смещение и формируется физический адрес ОЗУ. Конкатенация – объединение 2-ичных изображений с целью получения третьего.

27.

Прерывания. Источники прерываний, средства управления прерываниями.

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

В зависимости от источника возникновения сигнала прерывания делятся на:

асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);

синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;

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

Термин «ловушка» (англ. trap) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.

Источники прерываний

Когда требуется прервать программу? Обычно, когда происходит какое-нибудь важное событие. Что является важным событием — необходимо определить самим, настроив разрешения прерываний от используемых модулей. Например, пришел байт на UART. Если его не обработать вовремя, то следующий пришедший байт затрет уже имеющийся, и, информация будет потеряна. Поэтому по приходу байта на UART необходимо «все бросить» и считать байт из приемного буфера. Итак, если в проекте используется UART, его необходимо настроить так, чтобы он генерировал прерывание по заполнению приемного буфера. Если это сделано — UART является источником прерывания. Кроме UART источниками прерываний обычно служат модули:

АЦП

Таймеры

Внешние прерывания

I2C

SPI

CAN

EEPROM

и т.д.

Можно сказать, что практически вся периферия может генерировать прерывания. Если периферия какого-либо микроконтроллера не может генерировать прерывания — это сильно ограничивает возможности микроконтроллера.

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

Каждый раз перед выполнением очередной команды CPU производит проверку наличия запроса прерывания INTR. При наличии запроса прерывания останавливается выполнение основной программы и происходит переход к обработке прерывания. Выясняется, разрешены ли прерывания (анализ состояния разряда IF регистра флагов). Если разрешены, то процессором выдается сигнал INTA в контроллер прерываний для получения номера вектора прерывания. В стеке сохраняется содержимое регистров и адрес текущей команды, чтобы был возможен возврат к выполнению основной программы. Затем выставляется запрет прерываний (IF=0). По номеру прерывания в таблице векторов определяется адрес обработчика прерывания. По этому адресу находится начало программы обработки прерывания. По окончании работы этой программы из стека извлекается содержимое регистра флагов и счетчика команд, происходит возврат к основной программе.

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

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

Каждая программа обработки прерывания завершается командой IRET, выполнение которой обеспечивает возврат к прерванной программе для продолжения ее выполнения.

Логическая схема обработки прерывания реализуется в виде программируемого контроллера прерываний (PIC), который располагается на кристалле вместе с CPU.