Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2007.doc
Скачиваний:
116
Добавлен:
20.05.2014
Размер:
3.24 Mб
Скачать

Свопинг

Разновидностью виртуальной памяти является свопинг. На рисунке 8.7 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.

Рис. 8.7 Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

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

Выводы

Логическая организация памяти необходима для устранения несоответствия между адресным пространством памяти и ее реальным, физическим объемом.

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

Стековая организация памяти применяется при вызове подпрограмм, временном хранении данных.

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

Вопросы и задания

  1. Оцените, какой процент адресного пространства вашего компьютера реально заполнен под память.

  2. Какие методы адресации вы знаете?

  3. Что такое виртуальная память?

  4. Что такое свопинг?

  5. В каких режимах может работать IA-32?

  6. Как формируется физический адрес при сегментной адресации?

  7. Как формируется физический адрес при страничной адресации?

Лекция 9. Методы адресации

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

Прямая или абсолютная адресация.Физический адрес операнда содержится в адресной части команды. Формальное обозначение:

Операндi = (Аi),

где Аi– код, содержащийся вi-мадресном поле команды.

Рис. 9.1  Прямая адресация

Пример: mov al,[2000] – передать операнд, который содержится по адресу 2000h в регистр AL.

Add R1,[1000] – сложить содержимое регистра R1 с содержимым ячейки памяти по адресу 1000h и результат переслать в R1.

Допускается использование прямой адресациипри обращении, как к основной, так и к регистровой памяти.

Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд.

Операндi= Аi.

Рис. 9.2  Непосредственная адресация

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

Пример: mov eax,0f0f0f0f0– загрузить константу 0f0f0f0f0hв регистрeax.

Косвенная (базовая) адресация. Адресная часть команды указывает адрес ячейки памяти (рис. 7.3,а) или номер регистра (рис. 7.3,б), в которых содержится адрес операнда:

Операндi = ((Аi)).

Рис. 9.3   Косвенная адресация

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

Пример: mov al,[ecx]– передать в регистрALоперанд (содержимое) ячейки памяти, адрес которой находится в регистреECX.

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

В этом случае речь идет о базовой адресации со смещением.

Пример: mov eax,[eci+4]– передать вEAXоперанд, который содержится по адресуECIсо смещением плюс 4.

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

Регистровая адресация. Предполагается, что операнд находится во внутреннем регистре процессора.

Например: mov eax,cr0– передать вEAXсодержимоеCR0 или

mov ecx,ecx– сбросить регистрECX.

Индексная адресация(со смещением) – содержимое РОН используется в качестве компоненты эффективного адреса (как правило, работа с массивами).

Пример: sub array [esi],2– вычесть 2 из элемента массива, на который указывает регистрESI.

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

Операндi = (базаi + смещениеi).

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

Рассмотрим два примера.

  1. Адресное поле команды состоит из двух частей, в одной указывается номер регистра, хранящего базовое значение адреса (начальный адрес сегмента), а в другом адресном поле задается смещение, определяющее положение ячейки относительно начала сегмента. Именно такой способ представления адреса обычно и называют относительной адресацией.

Рис. 9.4   Относительная адресация

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

Рис. 9.5  Базово-индексная адресация

Главный недостаток относительной адресации– большое время вычисления физического адреса операнда. Но существенное преимущество этогоспособа адресациизаключается в возможности создания "перемещаемых" программ – программ, которые можно размещать в различных частях памяти без изменения команд программы. То же относится к программам, обрабатывающим по единому алгоритму информацию, расположенную в различных областях ЗУ. В этих случаях достаточно изменить содержимое базового адреса начала команд программы или массива данных, а не модифицировать сами команды. По этой причинеотносительная адресацияоблегчает распределение памяти при составлении сложных программ и широко используется при автоматическом распределении памяти в мультипрограммных вычислительных системах.