БИЛЕТ. Аппаратная поддержка ОС и систем программирования
Мультипрограммный режим -режим при котором возможна организация переключения выполнения с одной программы на другую.
Аппаратные средства компьютера, необходимые для поддержания мультипрограммного режима:
· Аппарат защиты памяти.Если выполняется одна программа, то надо, чтобы она не смогла испортить память, занятую другой. Надо выделить каждой программе по «куску» памяти, установить права доступа до каждого куска и, если программа залезает не в свой кусок, выдавать прерывание.
· Специальный режим операционной системы: все множество машинных команд разбивается на 2 группы. Первая группа – команды, которые могут исполняться всегда (пользовательские команды). Вторая группа – команды, которые могут исполняться только в том случае, если ЦП работает в режиме ОС. Если
· прерывание по таймеру:как минимум в машине должно быть прерывание по таймеру, что позволит избежать “зависания“ всей системы при зацикливании одной из программ.
Некоторые проблемы:
Вложенные обращения к подпрограммам
В вызываемую подпрограмму нужно передать параметры. Возникает проблема сохранения регистров. Требуются лишние затраты времени.
2. Накладные расходы при смене обрабатываемой программы:необходимость включения режима блокировки прерываний; программное сохранение / восстановление содержимого регистров при обработке прерываний;
3.Перемещаемость программы по ОЗУ
Сложно перемещать программу по оперативной памяти так, чтоб не было привязки программы к определенному диапазону адресов. Программу с математическими адресами надо положить на физическую память. Или например, программа была прервана, следовательно после прерывания, нужно вернуть программу в память, 99% что она попадет на новое место. Возникает необходимость настроить программу на новое место.
Фрагментация памяти
Система работает в мультипрограммном режиме. Программы должны храниться в памяти. Программы находятся в разных частях памяти. Когда приходит новая программа, возникает вопрос, куда ее поместить. Если нет свободного куска памяти нужного размера, но есть много маленьких свободных фрагментиков, в суммарный объем которых возможно записать новую программу, а ни в один в отдельности нельзя.
Фрагментация памяти приводит к деградации системы.
Один из способов решения – это компрессия (но при этом возможны потери памяти).
БИЛЕТ
Регистровые окна (register window)
Один из способов решения проблемы вложенных процедур – регистровые окна.
В компьютере имеется k физических регистров. Система команд машины предоставляет l регистров общего назначения, l различных регистровых окна. Каждый из l регистров отображается на k физических регистров. В каждый момент времени программа работает с одним регистровым окном.
Каждое регистровое окно делится на части: область регистров, использующихся для получения и передачи параметров из\в внешние подпрограммы ; область локальных регистров подпрограмм ; область временных регистров .
Возможна кольцевая схема организации регистровых окон.
При вызове подпрограммы происходит переключение текущего регистрового окно на следующее регистровое окно, при этом возможно пересечение 3-тей части текущего окна с первой частью последующего окна. Этим достигается, во-первых, практически автоматическая передача и прием параметров, во-вторых, всегда создается новый комплект локальных регистров, которые присутствуют в программе.
Рассмотрим, что происходит при непосредственной работе:
Обращаемся к 1-й программе, ей выделяется 0-е регистровое окно. Дальше пошли в глубину на 2-й уровень, выделилось 1-е регистровое окно и т.д. до тех пор, пока не дошли до последнего. Когда этот круг обойдем – начинается откачка этих окон в ОП. Эта схема гарантирует эффективную работу программ с вложенностью не более фиксированного, если вложенность больше, то возникают проблемы, но все равно начинается работа с КЭШем и мы все равно не опускаемся на уровень общения с ОП. Соответственно система может иметь специальный регистр-указатель текущего окна и указатель сохраненного окна.
Системный стек
Находится в оперативной памяти. Элементы стека: основание стека, SP регистр–указатель стека(в данном регистре размещается адрес вершины стека. Содержимое изменяется автоматически при выполнении «стековых» команд ЦП), вершина стека. Команды для работы со стеком: PUSH, POP.
Использование системного стека может частично решать проблему минимизации накладных расходов при смене обрабатываемой программы и/или обработке прерываний. Частично стек реализуется на регистрах, таким образом существенно ускоряется работа.
БИЛЕТ. Виртуальная память.
Давайте рассмотрим схему подготовки исполняемого кода. Мы имеем исходный текст, который обрабатываем компилятором. В результате получается объектный модуль. Из достаточного количества объектных модулей с помощью редактора внешних связей сформировали исполнительный модуль. И потом когда-то этот исполнительный модуль мы запустим на выполнение. Т.е. исполнительный модуль – это есть уже программа в коде машины, которая использует определенную адресацию. Эта адресация называется программная или логическая или виртуальная адресация – т.е. те адреса, которые используются в программе, они программные, логические или виртуальные адреса. При выполнении программы имеется проблема установления соответствия между виртуальными адресами и реальными адресами ОП (физическими адресами).
Аппарат– это аппаратные средства компьютера, которые обеспечивают преобразование виртуальных адресов, используемых в программе в физические адреса ОП, в которых размещена данная программа при выполнении.
Базирование адресов.
Исходный текст программы‑> Транслятор‑> ОбъектныЙ модуль‑> Библиотека объектных модулей, редактор внешних связей-> Исполняемый модуль
Аппарат виртуальной памяти – аппаратные средства компьютера, обеспечивающие преобразование (установление соответствия) программных адресов, используемых в программе адресам физической памяти в которой размещена программа при выполнении.
Базирование адресов – реализация одной из моделей аппарата виртуальной памяти. При базировании выделяется регистр, в котором будет храниться адрес, начиная с которого размещается программа. Проблема: программы должны располагаться в одном блоке.
A исп.прог. -->>абсолютный адрес(А исп.физ=А исп.прог.) | относительный (отн. Нач. прог.) (А исп.физ.=А исп.прог. + <Rбазы>)
В <Rбазы> загружается адрес начала программы в памяти. Исполняемые адреса, используемые в модуле будут автоматически преобразовываться в адреса физического размещения данных путем их сложения с регистром Rбаз..
Базирование адресов – решение проблемы перемещаемости программы по ОЗУ.
Благодаря базированию адресов виртуальное адресное пространство программы отображается в физическую память взаимнооднозначно.
БИЛЕТ. Страничная память.
Память аппаратно разделена на блоки фиксированного размера – страницы.
Структура адреса:
|Номер страницы(k)|(k-1)номер в странице(0)|
Количество страниц ограничено размером «номер страницы».
Пусть одна система команд ЭВМ позволяет адресовать и использовать m страниц размером 2kкаждая.
Физическое адресное пространство, в общем случае может иметь произвольное число физических страниц. Структура физического и виртуального адресов будут различаться размером поля номер страницы.
В ЦП ЭВМ имеется аппаратная таблица страниц.
Исполнительный физический адрес будет отличаться от исполнительного виртуального адреса за счет поля ”номер страницы”.
Содержимое таблицы определяет соответствие виртуальной памяти физической для выполняющейся в данный момент программы/процесса. Соответствие определяется следующим образом: i-я строка таблицы соответствует i-й виртуальной странице.
При замене процесса таблицу надо менять.
Виртуальное адресное пространство –множество виртуальных страниц, доступных для использования в программе. Количество виртуальных страниц определяется размером поля «номер виртуальной страницы» в адресе.
Физическое адресное пространство –оперативная память, подключенная к данному компьютеру. Физическая память может иметь произвольный размер (число физических страниц может быть меньше, больше или равно числу виртуальных страниц).