Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ КСУ 1.doc
Скачиваний:
0
Добавлен:
18.09.2019
Размер:
604.16 Кб
Скачать

Характеристики api /os/2

API OS/2 является интерфейсом динамического вызова. Прикладные программы обращаются к системным функциям по имени. Передача параметров каждой функции из вызывающей программы осуществляется посредством их записи в стек. Переданное число параметров остается постоянным в течение обращения.

Адреса этих параметров также помещаются в стек. Каждый адрес в операционной системе OS/2 состоит из двух частей—16-бит селектора (сегмента), и 16-бит смещения. Селектор – это значение регистра сегментов в защищенном режиме.

Для возврата в прикладную программу после вызова системной функции система помещает код адреса возврата в регистр АХ. Для возврата параметров системной функции программа помещает адреса в стек перед вызовом функции (об этом уже упоминалось). Затем функция удаляет из стека (обязательно!) все входные параметры. При обращении к системной функции все регистры кроме регистров АХ и FLAGS, остаются защищенными.

Реальная и виртуальная память большого объема.

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

В реальном режиме работы МП 80286 – адресное пространство между 640 Кбайт и 1 Мбайт зарезервировано для памяти адаптеров ввода/вывода и размещения команд ВIOS. Объем памяти, которой распоря­жается микропроцессор 80286 в реальном режиме, не может превышать 640 Кбайт.

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

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

Часть всей этой памяти в OS/2 на самом деле расположена на диске, и операционная система перекачивает ее с диска в ОЗУ, когда программа обращается к данной области памяти. Программы «не знают» о том, что их программные сегменты или данные не находятся в физической памяти, когда пытаются их выполнить или считать. Программы «не знают» и того, каков реальный объем физической памяти.

Превышение объема оперативной памяти

Многозадачные ОС, в том числе OS/2 используют для организации работы с памятью перекачку (или выталкивание) сегментов памяти на диск.

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

ОС может также расформировать этот сегмент, если программа создает сегмент данных, который может быть расформирован.

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

Поскольку сегмент в OS/2 может иметь переменный размер (вплоть до 64 Кбайт), расформирование сегментов и их пере­качка на диск и подкачка с диска могут привести к появлению хаотически расположенных в памяти участков, не содержащих полезной информации. При этом, если, например, имеются два отделенных друг от друга участка памяти объемом 32 Кбайт и требуется записать в память сегмент объемом 64 Кбайт, операционная система не сможет этого сделать, так как сегмент дол­жен располагаться в едином участке памяти. В таких случаях OS/2 может переместить имеющиеся в памяти рабочие сегмен­ты, чтобы получить единый свободный участок памяти. Эта операция называется перемещением сегментов.

Такой способ организации работы системы в защищенном режиме МП 80286 освобождает пользователя от организации памяти, что важно при написании больших программ и имеет преимущество по сравнению с оверлейными структурами, когда потребный объем необходимой памяти превышал реальный доступный объем памяти системы. В этом случае было необходимо структурировать программы так, чтобы обеспечить правильность выполнения этих программ в оверлейном режиме. При написании оверлей­ных программ пользователь также должен был решить проблему соотношения адресного пространства самой программы и адресного пространства для данных. При организации виртуальной памяти в операционной системе OS/2 необходимо только знать сколько сегментов можно использовать, учитывая максимальное число поддерживаемых системой сегментов, и каковы будут затраты системы на выполнение операции перекачки сегментов.

Архитектура микропроцессора i 80286

Рассмотрим выполнение адресации в i 80286.

РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ РЕГИСТРЫ СЕГМЕНТОВ

Четыре 16-бит регистра Четыре 16-бит регистра

Каждый регистр может быть исполь-

­зован как два 8-бит регистра

AX-AH:AL CS — программный сегмент

BX-BH:BL DS — сегмент данных

CX-CH:CL ES — дополнительный сегмент

DX-DH:DL SS — сегмент стека

Еще четыре 16-бит регистра СПЕЦИАЛЬНЫЕ РЕГИСТРЫ

ВР —указатель базового адреса F — флаговый

SI —индекс источника IP —указатель команды

DI — индекс получателя MSW — слово состояния

SP — указатель стека

ДРУГИЕ ЭЛЕМЕНТЫ

  • кэш-регистры дескрипторов сегментов;

  • таблица глобальных дескрипторов (GDT);

  • таблица локальных дескрипторов (LDT);

  • таблица дескрипторов прерываний (IDТ);

  • регистр задачи, сегмент состояния задачи.

Рисунок 1 – Внутренняя память i 80286.

Каждый адрес состоит из двух 16-бит компонентов: 16-бит значения одного из регистров сегментов и 16-бит смещения. Значение регистра сегментов определяет сегмент, к которому выполняется обращение, значение смещения определяет положение элемента данных в сегменте.

Размер сегмента может быть 64 Кбайт или 65536 байт. Смещение с учетом разрядности в 16 бит также может достигать 216 – 1 = 65535 байт.

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

Некоторые команды типа условного перехода вызывают изменение значения регистра IP. Если же значение регистра IP не изменяется текущей командой, то для получения адреса оче­редной команды процессора следует к текущему значению IP прибавить длину последней выполненной команды. Когда со­держимое регистра IP изменяется в результате выполнения те­кущей команды, очередная команда выбирается процессором по адресу того же регистра CS со смещением, равным изменен­ному значению IP. Существуют команды, изменяющие значения обоих регистров CS и IP. В этом случае микропроцессор пере­ходит к выполнению команд из нового сегмента памяти.

Раздел памяти, называемый стеком, используется для хранения информации в случаях, когда:

1) одна процедура (набор команд процессора - подпрограмма) обращается к другой процедуре;

2) для выполнения программы требуется временный рабочий раздел памяти, а программа явно выделяет эту память.

Текущий стековый сегмент памяти задается содержимым регистра SS, а для указания заданного смещения в стеке обычно используется регистр SP и BP (в зависимости от того, для какой цели служит стек).

Процессор обычно обращается к данным, адрес сегмента которых задает регистр DS или ES. Смещение в сегменте данных может быть указано различными способами. Смещение может быть задано в выполняемой команде, вычислено в результате некоторых арифметических действий или явно задано 16-бит значением.

Существует ряд ограничений на использование регистров общего назначения для определения смещения в различных ситуациях.

Большинство выполняемых микропроцессором команд имеет дело с источником и получателем данных. Данные источника могут быть явно заданы в самой команде, могут быть в регистре общего назначения или просто находится в памяти. Получателем данных может быть регистр общего назначения или адресуемый раздел памяти. Большинство команд не может одновременно работать с источником и получателем данных, однако некоторые команды процессора специально созданы для таких операций. Эти команды используют регистры SI и DI для задания смещения источника и получателя, а регистры DS и ES для указания адреса начала сегментов источников и получателя данных.

Регистр флагов (F) содержит информацию о результате предыдущей операции (например, знак, перенос, переполнение и т.д.) и о разрешении прерываний. Слово состояния машины – MSW – определяет текущее состояние микропроцессора, в частности указывает, в каком из режимов – реальном или защищенном – он находится.

Содержимое всех упомянутых выше регистров (и остальной автономной памяти) в момент включения (или перезапуска) микропроцессора определяет его начальное состояние. После перезапуска микропроцессор 80286 всегда находится в реальном режиме со следующими значениями двух основных регистров: CS = F000H и IP = FFF0H. При таком значении регистров процессор начинает выборку команд по физическому адресу FFFF0H, который расположен чуть ниже 1 Мбайт. Остальные три регистра сегментов после перезапуска обнуляются.