Foreversoft.ru

IT Справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что называют адресным пространством

Введение. Виртуальное адресное пространство процесса

Введение

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

Для описания системы управления памятью активно используются понятия физической и логической (виртуальной) памяти.

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

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

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

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

Логические адреса внутри сегментов могут быть сформированы на этапе компиляции. При этом символические имена связываются с перемещаемыми адресами (такими, как n байт от начала модуля). Другим примером логического адреса может быть адрес , полученный программой в результате операции выделения области памяти (allocation). Иногда говорят, что логический адрес — это адрес , который генерирует процессор . Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.

Связывание адресов

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

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

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

Общее описание виртуальной сегментно-страничной памяти ОС Windows

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

Для определения схемы виртуальной памяти, реализованной в ОС Windows , лучше всего подходит термин «сегментно- страничная виртуальная память «. Подробное описание сегментно-страничной модели можно найти в [ Карпов ] . Для нее характерно представление адресного пространства процесса в виде набора сегментов переменного размера, содержащих однородную информацию (данные, текст программы, стек , сегмент разделяемой памяти и др.). Для удобства отображения на физическую память каждый сегмент делится на страницы — блоки фиксированного размера, при этом физическая память делится на блоки того же размера — страничные кадры (фреймы). Функция связывания логического адреса с физическим возлагается на таблицу страниц, которая каждой логической странице сегмента ставит в соответствие страничный кадр . В тех случаях, когда для нужной страницы не находится места в оперативной памяти ( page fault ), она подкачивается с диска. Заметим, что в каноническом виде данной схемы каждый сегмент процесса находится в отдельном логическом адресном пространстве и использует свою собственную таблицу страниц. Последнее обстоятельство, в силу сложной организации и большого объема таблицы страниц, имеет следствием тот факт, что реальные системы редко придерживаются канонической формы.

Читать еще:  Как правильно указать электронный адрес

Сегментно- страничная модель памяти, реализованная в ОС Windows , также имеет свою специфику. Например, аппаратная поддержка сегментации, предлагаемая архитектурой Intel, используется в минимальной степени, а такие фрагменты адресного пространства процесса, как код, данные и др., описываются при помощи специальных структур данных и называются регионами (regions).

Одна из задач, которая решается при этом, — избежать появления в системе большого количества таблиц страниц за счет организации неперекрывающихся регионов в одном виртуальном пространстве, для описания которого хватает одной таблицы страниц. Таким образом, одна таблица страниц будет отводиться для всех сегментов памяти процесса. То, как это делается можно увидеть на рис. 9.3. Задействовано всего четыре аппаратных сегмента с номерами селекторов 08, 10, 1b и 23 . Первый используется для адресации кода ОС и имеет атрибуты RE , второй с атрибутами RW — для данных и стека ОС, третий с атрибутами RE — для кода пользовательского процесса, а четвертый с атрибутами RW — для данных и стека пользовательского процесса. Первые два сегмента недоступны для непривилегированного режима работы процессора.

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

Любопытно, что наличие у аппаратного сегмента атрибута не является препятствием для нецелевого использования хранимой в сегменте информации. Например, код процесса, находящийся в сегменте 1b , может быть доступен через 23-й сегмент с атрибутами RW . Собственно защита регионов организована на уровне их описателей, которые хранятся в таблице описателей VAD ( virtual address descriptors) в адресном пространстве процесса . Таким образом, аппаратная поддержка сегментации обеспечивает лишь минимальную защиту — невозможность доступа к данным ОС из непривилегированного режима. Можно сказать, что в ОС Windows осуществляется программная поддержка сегментации (в данном случае регионов). Между прочим, многие другие ОС (например, Linux) ведут себя аналогично. Программная поддержка сегментов более универсальна и способствует большей переносимости кода. В дальнейшем для обозначения непрерывного фрагмента виртуального адресного пространства, содержащего однородную информацию, будет использоваться термин «регион».

Таблица страниц ставит в соответствие виртуальной странице номер страничного кадра в оперативной памяти. Для описания совокупности занятых и свободных страничных кадров ОС Windows использует базу данных PFN ( page frame number). В силу несоответствия размеров виртуальной и оперативной памяти достаточно типичной является ситуация отсутствия нужной страницы в оперативной памяти ( page fault ). К счастью, копии всех задействованных виртуальных страниц хранятся на диске (так называемые теневые страницы). В случае обращения к отсутствующей странице ОС должна разыскать соответствующую теневую страницу и организовать ее подкачку с диска.

Адресное пространство и режимы адресации

Адресное пространство микропроцессора – множество адресов оперативной памяти, доступной для программ, выполняемых микропроцессором. Под размером адресного пространства понимают мощность этого множества, т.е. количество программно-доступных адресов основной памяти. Размер адресного пространства определяется максимальной длиной адреса и может выражаться либо в единицах минимальных адресуемых элементов (ячеек) памяти, либо в более крупных единицах (словах). Например, если исполнительный адрес в микро-ЭВМ формируется в виде 16-разрядного слова, то при минимальном адресуемом элементе, равном 1 байт, максимальный размер адресного пространства этой микро-ЭВМ составит 2 16 = 65535 байт = 64К байт или 32К слов (если в каждом слове содержится 2 байта).

Поскольку МП КР580ВМ80А имеет размер слова, равный минимальному размеру ячейки памяти – 1 байт, а шина адреса микропроцессора состоит из 16 линий, то его адресное пространство составляет 64К байт (или, что то же самое, слов).

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

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

Для микропроцессора КР580ВМ80А характерны четыре режима адресации памяти:

· косвенный режим адресации через пару регистров;

· использование указателя стека.

При режиме прямой адресации памяти длина команды равна 3 байт, причем в первом (левом) байте находится код операции, а в двух следующих байтах – адрес операнда. Микропроцессор КР580ВМ80А имеет ту особенность, что вслед за кодом операции в следующем байте записывается содержимое младшего байта адреса, а за ним – содержимое старшего байта адреса.

При режиме непосредственной адресации памяти длина команды составляет 2 байт, из которых первый байт хранит код операции, а второй – сам операнд. Следовательно для команды с непосредственной адресацией нет нужды отыскивать операнд в памяти, так как он входит в состав команды.

Если в команде используется режим косвенной адресации через пару регистров, то адрес операнда берется из двух регистров общего назначения. Чаще всего для этой цели применяются регистры H (для старшего байта адреса) и L (для младшего байта адреса). Сама команда при этом занимает всего 1 байт. Для ссылки на регистры H и L в команде на языке ассемблера записывается имя M. При режиме адресации памяти через указатель стека адресация выполняется с помощью 16-разрядного регистра SP, содержимое которого, в данном случае, является адресом ячейки памяти, откуда необходимо взять или куда поместить операнд. Команда с таким способом адресации либо помещает данное в стек, либо извлекает его. Данное, подлежащее занесению в стек, извлекается либо из пары 8-разрядных регистров общего назначения, либо из счетчика команд. По адресу, который на единицу меньше исходного значения указателя стека, в стек сначала записывается старший байт данного, а затем младший байт данного по адресу на два меньшему исходного значения указателя стека (рис. 2). Операция извлечения данного из стека осуществляется в обратном порядке по отношению к операции занесения. Предполагается, что программа, использующая стек, в самом начале своей работы выполняет инициализацию стека, т.е. установку исходного значения указателя. Здесь следует отметить следующую особенность рассматриваемого микропроцессора: во время инициализации стека его вершина располагается в верхней части оперативной памяти микро-ЭВМ; при заполнении стека его вершина смещается в направлении меньших адресов памяти, тогда как программа размещается в памяти начиная с младших адресов. Таким образом, области памяти, занятые программной и стеком, растут навстречу друг другу, что необходимо учитывать при разработке программ больших размеров.

Читать еще:  Адресация ячеек таблицы относительная абсолютная смешанная

Система команд

Система команд МП КР580ВМ80А содержит 78 базовых команд. Всего же, с учетом модификации команд за счет применения различных режимов адресации общее количество команд равно 244.

По функциональному назначению команды можно разделить на следующие группы:

· команды пересылки данных между оперативной памятью и регистрами микропроцессора;

· команды для выполнения арифметических и логических операций;

· команды связи с подпрограммами;

· команды сдвига данных в регистрах;

Коды всех команд микропроцессора представлены в таблице 3. С помощью этой таблицы можно легко и быстро сопоставить мнемонику команды с ее кодом операции. Мнемоника каждой команды располагается на пересечении строк и столбцов таблицы, причем строка определяет в шестнадцатеричном виде старшую часть кода операции, а столбец – младшую.

Команды пересылки данныхможно разделить на две группы: команды однобайтовых пересылок – наиболее многочисленная группа команд. С их помощью осуществляется обмен данными между внутренними регистрами МП, а также между внутренними регистрами и ячейками памяти. Внутренние межрегистровые пересылки осуществляются командами MOV R1, R, где R1иR –любые внутренние 8-разрядные регистры микропроцессора. При выполнении этих команд содержимое регистра R пересылается в регистр R1, причем в регистре R сохраняется прежнее значение данных. Например, после выполнения команды MOV C, A данные из регистра A будут переписаны в регистр C. Содержимое регистра A при этом сохранится.

В качестве операнда этой команды может быть также определена ячейка памяти, адрес которой находится в регистровой паре HL. Например по команде MOV C, M произойдет пересылка данных из ячейки памяти M, адрес которой содержится в регистровой паре HL во внутренний регистр микропроцессора. Содержимое ячейки памяти при этом не изменится. Другой пример: по команде MOV M, E данные из регистра E запишутся в ячейку памяти M, адрес которой содержится в регистровой паре HL, а данные в регистре E останутся неизменными.

Для пересылок данных между аккумулятором и ячейками памяти адрес ячейки может задаваться также содержимым регистровых пар BC или DE. Тогда для записи в память данных из аккумулятора используют однобайтовые команды STAX B или STAX D, а при обратной пересылке – LDAX B или LDAX D. Адрес ячейки памяти для обмена с аккумулятором можно задать также с помощью трехбайтовых команд с непосредственной адресацией. В этом случае для записи данных из аккумулятора в память служит команда STA ADR, для обратной пересылки – LDA ADR.

С помощью двухбайтовой команды MVI R, D8 можно записать операнд D8 (байт) в любой 8-разрядный регистр МП. Запись операнда D8 можно также осуществить в ячейку памяти, адресуемую содержимым регистровой пары HL, командой MVI M, D8. Операндом здесь является второй байт команды.

В группу команд двухбайтовых пересылок входят трехбайтовые команды LXI B, D16, LXI D, D16, LXI H, D16, которые служат для непосредственной записи операнда D16 в регистровые пары BC, DE, HL.

Используя команды SHLD ADR, LHLD ADR, можно организовать пересылки данных между регистровой парой HL и ячейкой памяти, непосредственно адресуемой по содержимому второго и третьего байта команды. Остальные команды этой группы осуществляют пересылки с адресацией по указателю стека SP. С помощью команд PUSH B, PUSH D, PUSH H содержимое регистровых пар BC, DE, HL засылается в стек. По команде PUSH PSW в стек засылаются данные из аккумулятора и регистра признаков. Команды POP B, POP D, POP H служат для пересылки 16-разрядного слова из ячеек памяти, адресуемых указателем стека SP в соответствующую пару регистров. Командой POP PSW данные из стека пересылаются в аккумулятор и регистр признаков F. Таким образом, команда POP PSW может изменить все биты регистра признаков F. Команда SPHL позволяет занести адрес из регистровой пары HL в указатель стека SP.

Команды ввода/вывода Микропроцессор КР580ВМ80А имеет всего две команды для ввода/вывода данных.

С помощью команды ввода IN N можно переписать байт данных в регистр A микропроцессора из одного из 256 портов ввода. Номер порта ввода определяется вторым байтом команды.

Аналогично по команде вывода OUT N байт данных из регистра A микропроцессора буде переписан в любой из 256 портов вывода, адресуемых вторым байтом команды.

Группа команд обмена.В этой группе также всего две команды: XTHG – команда обмена содержимым между регистровыми парами HL и DE и команда XTHL – команда обмена содержимым между регистровой парой HL и SP.

Группа команд арифметических и логических операций с одним операндом.С помощью команды CMC можно изменять значение бита переноса на противоположное, т.е. инвертировать признак переноса. Команда STC позволяет установить значение признака переноса в 1. Значение всех битов регистра A можно инвертировать, применив команду CMA.

Читать еще:  В чем заключается принцип адресности

Адресные пространства и модели оперативной памяти

Адресация и распределение памяти

Синтаксическая конструкция, с помощью которой обеспечивается доступ к определенному объекту (переменной, полю записи, массиву или его элементу, файлу), называется неявным адресом (implied address). Примеры неявных адресов дают следующие конструкции: Point^.Name, arrA[4], intValue, D:DelProjTable.xls. Используя неявный адрес, программист или пользователь предполагает, что адресуемый объект хранится в некотором участке памяти. Доступ к этому участку со стороны программы осуществляется по логическому адресу (logical address), который идентифицирует объект в виртуальной памяти. Логический адрес преобразуются в реальный физический адрес (physical address) ячейки оперативной памяти или порта.

Под адресным пространством компьютера понимается множество адресов памяти. Адресное пространство, понимаемое как множество адресов, доступных программе, еще называют виртуальным адресным пространством, а элемент этого пространства – виртуальным адресом. Определение «виртуальный», относящееся к техническим средствам или данным, указывает на то, что некоторый элемент представляется прикладному программисту существующим, тогда как фактически в представляемом виде он отсутствует. Например, при запуске приложения современная 32-разрядная операционная система, работая в так называемом защищенном режиме, представляет ему для кода и данных блок памяти размером 4 Гбайт. Понятно, что далеко не каждый пользователь может выделить 4 Гбайт ОЗУ под одно приложение. Фактически предоставляется пространство логических адресов, по которым, теоретически может храниться до 4 Гбайт информации. Это и есть виртуальное пространство. Компьютер незаметно для программиста компенсирует недостаток физической памяти, используя специальный страничный механизм, организующий обмен блоков данных или программ между оперативной и внешней памятью.

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

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

Микропроцессор аппаратно поддерживает две модели оперативной памяти:

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

страничная модель, которую можно рассматривать как надстройку над сегментированной моделью. Основное применение этой модели связано с организацией виртуальной памяти, что позволяет операционной системе использовать для работы программ пространство памяти большее, чем объем физической памяти. Для микропроцессоров Pentium размер доступной виртуальной памяти может достигать 4 Тбайт (терабайт – 2 40 байт).

Особенности использования и реализации этих моделей зависят от режима работы микропроцессора:

— режим реальных адресов, или просто реальный режим,

Не нашли то, что искали? Воспользуйтесь поиском:

Адресные пространства и модели оперативной памяти

Адресация и распределение памяти

Синтаксическая конструкция, с помощью которой обеспечивается доступ к определенному объекту (переменной, полю записи, массиву или его элементу, файлу), называется неявным адресом (implied address). Примеры неявных адресов дают следующие конструкции: Point^.Name, arrA[4], intValue, D:DelProjTable.xls. Используя неявный адрес, программист или пользователь предполагает, что адресуемый объект хранится в некотором участке памяти. Доступ к этому участку со стороны программы осуществляется по логическому адресу (logical address), который идентифицирует объект в виртуальной памяти. Логический адрес преобразуются в реальный физический адрес (physical address) ячейки оперативной памяти или порта.

Под адресным пространством компьютера понимается множество адресов памяти. Адресное пространство, понимаемое как множество адресов, доступных программе, еще называют виртуальным адресным пространством, а элемент этого пространства – виртуальным адресом. Определение «виртуальный», относящееся к техническим средствам или данным, указывает на то, что некоторый элемент представляется прикладному программисту существующим, тогда как фактически в представляемом виде он отсутствует. Например, при запуске приложения современная 32-разрядная операционная система, работая в так называемом защищенном режиме, представляет ему для кода и данных блок памяти размером 4 Гбайт. Понятно, что далеко не каждый пользователь может выделить 4 Гбайт ОЗУ под одно приложение. Фактически предоставляется пространство логических адресов, по которым, теоретически может храниться до 4 Гбайт информации. Это и есть виртуальное пространство. Компьютер незаметно для программиста компенсирует недостаток физической памяти, используя специальный страничный механизм, организующий обмен блоков данных или программ между оперативной и внешней памятью.

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

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

Микропроцессор аппаратно поддерживает две модели оперативной памяти:

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

страничная модель, которую можно рассматривать как надстройку над сегментированной моделью. Основное применение этой модели связано с организацией виртуальной памяти, что позволяет операционной системе использовать для работы программ пространство памяти большее, чем объем физической памяти. Для микропроцессоров Pentium размер доступной виртуальной памяти может достигать 4 Тбайт (терабайт – 2 40 байт).

Особенности использования и реализации этих моделей зависят от режима работы микропроцессора:

— режим реальных адресов, или просто реальный режим,

|следующая лекция ==>
Алгоритм и примеры задач, решаемых с помощью алгоритмов|Формирование физического адреса в реальном режиме

Дата добавления: 2014-01-07 ; Просмотров: 261 ; Нарушение авторских прав?

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Ссылка на основную публикацию
Adblock
detector