Отображение адресного пространства программы на основную память. Статическое и динамическое перемещение

Автор работы: Пользователь скрыл имя, 11 Марта 2015 в 16:41, контрольная работа

Описание работы

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

Файлы: 1 файл

контрольная вычислит сети.docx

— 660.89 Кб (Скачать файл)

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

Режимы работы процессора

Главным недостатком работы процессора в реальном режиме (он устанавливается с .момента запуска процессора, и в нем работает ДОС) является то, что любое приложение .может нарушить работу системы. Каким образом: занять адресное пространство, .отведенное в ОЗУ для ОС (см. наши рисунки).

Чтобы избежать этого был разработан защищенный режим (начиная с i80386).

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

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

История организации памяти

  1. Подавляющее большинство владельцев персональных компьютеров, совместимых .с IBM PC, используют операционную систему Microsoft MS-DOS или аналогичную .(IBM PC DOS или Digital Research DR DOS). Все эти операционные системы изначально разрабатывались для микропроцессора фирмы Intel i8086 или его более дешёвого аналога i8088. Именно такие микропроцессоры были установлены в первых персональных компьютерах фирмы IBM -IBM PC и IBM XT. Процессоры i8086 и i8088 относятся к 16-разрядным процессорам. Максимальный объём адресуемой ими оперативной памяти составляет 1 мегабайт, что определяется использованием 20-разрядной адресации памяти.
  2. Разработчики фирмы IBM из всего мегабайтного адресного пространства отвели для оперативной памяти 640 килобайт, зарезервировав остальное для BIOS и аппаратуры. Именно на такую конфигурацию адресного пространства и рассчитана операционная система MS-DOS (и её аналоги). Поэтому максимальный размер оперативной памяти, доступной программам, работающим под управлением MSDOS, обычно составляет 500-620 килобайт, в зависимости от версии операционной .системы и её настройки, от типа компьютера, от конфигурации драйверов и .резидентных программ.
  3. По мере внедрения персональных компьютеров в различные сферы деятельности человека быстро возрастала сложность программного обеспечения и требования к аппаратуре персонального компьютера. Скоро стало ясно, что для успешного решения многих задач объёма памяти в 640 килобайт явно недостаточно.
  4. Следующая удачная модель процессора фирмы Intel -16-разрядный процессор i80286 - принципиально отличается от i8086. Этот процессор может работать в двух .режимах - реальном и защищённом
  5. .В реальном режиме процессор i80286 является практически полным аналогом .i8086, но имеет большее быстродействие. В реальный режим процессор переключается после аппаратного сброса или после включения питания компьютера. Реальный режим обеспечивает полную совместимость процессора i80286 с .программным обеспечением, подготовленным для i8086. Поэтому компьютер .IBM AT (и его аналоги), в котором установлен процессор i80286, способен без труда работать с операционной системой MS-DOS и программами, разработанным ранее для процессора i8086. Однако полностью возможности i80286 реализуются в так называемом .защищённом режиме, в который процессор может переключиться специальной .командой из реального режима.
  6. В защищённом режиме процессор i80286 полностью преображается. Используя совершенно иной метод адресации памяти, процессор i80286 расширяет .адресное пространство до 16 мегабайт. Процессор i80286 в защищённом режиме имеет встроенную поддержку мультизадачных операционных систем, значительно ускоряющую и упрощающую процесс переключения задач. Эта поддержка активно используется всеми мультизадачными операционными системами и оболочками, разработанными для компьютера IBM PC/AT.
  7. Кроме расширения адресного пространства, новый метод адресации памяти позволяет изолировать адресные пространства отдельных задач друг от друга. При этом прикладная программа, работающая в среде операционной системы, использующей защищённый режим, не может случайно или намеренно разрушить целостность самой операционной системы.
  8. В следующих моделях процессоров фирмы Intel - i80386 и i80486 -помимо .расширения адресного пространства до умопомрачительной величины в 4 .гигабайта реализована концепция страничной виртуальной памяти. Всё это возможно только в защищённом режиме Механизм страничной виртуальной памяти позволяет разместить часть оперативной памяти на диске. Это и дешевле Кроме того, реально только механизм страничной виртуальной памяти может .обеспечить прикладные программы относительно быстрой оперативной памятью, .размер которой больше размера физической памяти, установленной в .компьютере.
  9. Помимо страничной виртуальной памяти в процессорах i80386 и i80486 .реализован так называемый режим виртуального процессора i8086 или просто виртуальный режим, реализуемый в рамках защищённого режима (процессор .может переключиться в виртуальный режим только из защищённого режима).

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

Проблема передачи физического адреса

Для работы с памятью используются две шины - шина адреса и шина данных. Физически память устроена таким образом, что возможна адресация как 16-битовых слов, так и отдельных байтов памяти. Кроме того, процессоры i80386 и i80486 могут .адресовать 32-битовые слова памяти. В любом случае так называемый физический адрес передаётся из процессора в память по шине адреса. Ширина шины адреса определяет максимальный объём физической памяти, непосредственно адресуемой процессором. На рис. 5 показана схема взаимодействия процессора и памяти через шины адреса и данных.

Рисунок 5 Шины адреса и шины данных

Например, компьютер IBM XT оснащён 20-разрядной шиной адреса и 16-разрядной .шиной данных.

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

00000h <= *диапазон физического адреса+ <= FFFFFh

Таким образом, для представления физического адреса в компьютерах IBM PC и IBM XT .используется двадцать двоичных или пять шестнадцатеричных разрядов. Однако все регистры процессора i8086 являются 16-разрядными. Возникает проблема .представления 20-разрядного физического адреса памяти при помощи содержимого 16...разрядных регистров.

Двукомпонентный логический адрес

Для разрешения этой проблемы используется двухкомпонентный логический адрес. Логический адрес состоит из 16-разрядных компонент: компоненты сегмента памяти и .компоненты смещения внутри сегмента.

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

Рисунок 6 Адресация памяти в реальном режиме

Логический адрес принято записывать в форме <сегмент:смещение>

Очевидно, что одному физическому адресу может соответствовать несколько логических.

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

Компонента смещения при такой схеме адресации является смещением внутри сегмента памяти. А сам сегмент памяти задаётся сегментной компонентой.

Рисунок 7 Соответствие логических и физических адресов

Рис.7 иллюстрирует сказанное выше. На этом рисунке показано соответствие логического .адреса 0002h:0028h физическому адресу 00048h.

Логический адрес должен находиться в следующих пределах:

0000h:0000h <= [логический адрес]<= FFFFh:000Fh

Архитектура процессоров серии i80XXX, работающих в реальном режиме, предполагает хранение сегментной компоненты адреса в специальных сегментных регистрах:

  • CS -сегмент кода
  • DS .-сегмент данных
  • ES .-дополнительный сегмент данных
  • SS .-сегмент стека.

Компонента смещения может находиться в регистрах BX, BP, SI, DI, IP. Задавая произвольные значения сегментной компоненты и компоненты смещения любая программа может адресоваться к любому участку памяти компьютера. В частности, любая программа может преднамеренно или из-за ошибки разрушить области данных, принадлежащие операционной системе.

Недостатки схемы адресации памяти реального режима

Выделим два основных недостатка схемы адресации памяти реального режима:

  • ограниченное адресное пространство (до 1 мегабайта плюс примерно 64 .килобайта старшей области памяти для процессоров i80286, i80386 и i80486);
  • свободный доступ для любых программ к любым областям данных, что .представляет потенциальную опасность для целостности операционной системы.

Этих недостатков полностью лишена схема адресации памяти, которая используется в защищённом режиме.

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

Принцип трансляции адресов

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

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

 

Рисунок 8 Формирование логического адреса и связывание логического адреса с физическим

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

Этапы выполнения программы и привязка адресов

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

  • Этап компиляции (Compile time). Когда на стадии компиляции известно точное место размещения процесса в памяти, тогда непосредственно генерируются .физические адреса. При изменении стартового адреса программы необходимо .перекомпилировать ее код. В качестве примера можно привести .com программы .MS-DOS, которые связывают ее с физическими адресами на стадии компиляции
  • .Этап загрузки (Load time). Если информация о размещении программы на стадии компиляции отсутствует, компилятор генерирует перемещаемый код. В этом случае окончательное связывание откладывается до момента загрузки. Если стартовый адрес меняется, нужно всего лишь перезагрузить код с учетом .измененной величины.
  • Этап выполнения (Execution time). Если процесс может быть перемещен во время выполнения из одной области памяти в другую, связывание откладывается до стадии выполнения. Здесь желательно наличие специализированного оборудования, например регистров перемещения. Их значение прибавляется к каждому адресу, сгенерированному процессом. Большинство современных ОС осуществляет трансляцию адресов на этапе выполнения, используя для этого специальный аппаратный механизм. Например, MS-DOS использует четыре таких (сегментных) регистра

ОС и схемы управления реальной памятью

Функции ОС по управлению памятью

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

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

Простейшие схемы управления реальной памятью

Основные понятия

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

Затем возникло предложение делить все свободное пространство ОЗУ на разделы.

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

Для начала рассмотрим структуру памяти ОЗУ и процедуру стандартной загрузки .программы.

  • Часть ОЗУ, начиная с адреса 00000h до (в нашем примере) 00F1A, занимает ОС. Остальное место в ОЗУ условно признаем свободным Программа, собирающаяся занять место в ОЗУ, размещается в ней, занимая адресное пространство (с номера 00F1A до некоего адресного значения).

Смежное размещение процессов

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

Первый — метод смежного размещения, второй — метод несмежного размещения.

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

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

Однопрограммный и оверлейный режимы

Это частные случаи смежного размещения. При смежном размещении размер загружаемой программы ограничивается размером ОЗУ. Для того чтобы при смежном размещении загружать программы, размеры которых превышают .размеры ОЗУ, используют метод оверлейных сегментов (overlay segments).

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

Рисунок 9 Разбиение теля программы на корневой и оверлейный сегменты

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

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

Информация о работе Отображение адресного пространства программы на основную память. Статическое и динамическое перемещение