Вложенные обращения к подпрограммам



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

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-й виртуальной странице.

При замене процесса таблицу надо менять.

 

Виртуальное адресное пространствомножество виртуальных страниц, доступных для использования в программе. Количество виртуальных страниц определяется размером поля «номер виртуальной страницы» в адресе.

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


Дата добавления: 2018-08-06; просмотров: 336; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!