Помощь в написании студенческих работ
Антистрессовый сервис

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

РефератПомощь в написанииУзнать стоимостьмоей работы

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

Лекция 7. Организация оперативной памяти. Структура, основные понятия и принципы виртуализации памяти. Основы логической организации виртуальной оперативной памяти (реферат, курсовая, диплом, контрольная)

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

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

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

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

отслеживание свободной и занятой памяти;

выделение памяти процессам и освобождение памяти по завершении процессов;

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

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

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

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

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

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

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

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

а — процессор (Р) и основная память (М);

б — процессор, основная память и кэш-память (М');

в — процессор, основная память, кэш-память и микропроцессор с собственной микропрограммной памятью (М"), микропамятью (СМ) для хранения операндов микрокоманд и собственной кэш-памятью (М"').

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

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

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

Статическая настройка адресов С появлением первых ОС появилось понятие «статической настройки адресов», обеспечивающей возможность физического размещения скомпилированной программы в любом месте памяти. Рассмотрим исторический аспект развития статической настройки.

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

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

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

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

Динамическая настройка адресов Дальнейшее развитие ЭВМ привело к обеспечению возможности работы с виртуальной памятью.

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

Более подробно остановимся на распределении памяти.

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

сборка независимо скомпилированных частей одной программы;

настройка программы на конкретное размещение в памяти.

Рассмотрим операцию настройки.

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

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

При статической настройке адресов:

предполагается, что компилятор создает программу, обладающую свойством переместимости;

в системе имеется настраивающий загрузчик (часто этот этап обработки называется просто этапом загрузки).

При динамической настройке:

процессы распределения данных и физических устройств и распределения областей основной памяти полностью разделены;

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

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

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

Достоинства статического перемещения состоят в следующем:

возможность использования стандартной и экономичной адресации на аппаратном уровне;

простота связывающего загрузчика и его взаимодействие с другими системными компонентами.

К недостаткам можно отнести следующие особенности.

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

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

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

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

связывание и перемещение необходимы при каждой загрузке;

программы не изменяют сами себя;

никакие абсолютные адреса не встречаются в данных;

неизменяемые программы должны быть строго отделены от своих изменяемых данных;

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

Рассмотрим аргументы в пользу динамического перемещения:

динамическая настройка делает возможным гибкое и эффективное использование основной памяти и в то же время создает удобный для пользователя интерфейс в виде виртуальной памяти;

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

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

степень фрагментации памяти может уменьшиться, т.к. единицы распределения областей могут быть маленькими;

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

легко разделять одну копию процедуры несколькими процессами;

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

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

Типы виртуальной памяти Организация виртуальной памяти или пространства имен зависит от аппаратуры отображения, которая выполняет преобразование пространства имен в пространство ячеек. Существуют два вида организации виртуальной памяти (ВП). Простейшей и самой очевидной формой ВП является непрерывное линейное пространство, соответствующее нашей обычной точке зрения на память. ВП — это большая, линейно адресуемая последовательность элементов (слов, байтов и т. д.) с адресами, обычно образующими последовательность 1, 2, …, n, где n=2k. Это называется относительным пространством имен.

Многосегментная ВП разделяет пространство имен на набор сегментов Si, где каждый Si есть непрерывное линейное пространство. Сегмент — это определяемый пользователем объект, который может рассматриваться как логически независимая процедура, блок или массив данных. Можно рассматривать программный сегмент как те коды, которые становятся или являются перемещаемым объектным модулем. Адреса могут быть заданы в форме пары [S, W], где S — идентификатор сегмента, W — идентификатор слова (или число). Иногда можно манипулировать именами сегментов, так же как и обычными адресами, т. е. некоторая функция может быть применена к сегменту Si, чтобы породить другое имя Sj. Это нарушает до некоторой степени независимость сегментов, и более желательными являются системы, не допускающие обработку имен. По ряду причин ВП представляется в форме логических сегментов.

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

ОС со страничной и сегментной организацией имеют два преимущества.

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

Выводы.

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