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

Виртуальные и физические адреса

Основные задачи управления памятью

Управление памятью

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

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

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

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

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

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

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

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

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

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

· предоставление процессам возможности обмена данными через общие области памяти.

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

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

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

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

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

Есть два принципиально разных ответа на этот вопрос.

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

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

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

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

Источник

Преобразование виртуальных адресов в физические

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

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

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

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

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

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

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

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

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

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

Виртуальное АП и виртуальная память — это различные механизмы и они не обязательно реализуются в операционной системе одновременно.

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

Образ процесса — это содержимое назначенного процессу виртуального АП, то есть коды команд, исходные и промежуточные данные и результаты вычислений.

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

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

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

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

Системная часть виртуальной памяти в ОС любого типа включает область, подвергаемую страничному вытеснению (paged), и область, на которую страничное вытеснение не распространяется (non-paged). В не вытесняемой области размещаются модули ОС, требующие быстрой реакции и/или постоянного присутствия в памяти, например диспетчер потоков или код, который управляет заменой страниц памяти. Остальные модули ОС подвергаются страничному вытеснению, как и пользовательские сегменты.

Дата добавления: 2015-06-25 ; Просмотров: 3255 ; Нарушение авторских прав?

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

Источник

Тема 4.3 Управление виртуальной памятью

— назначение виртуальной памяти;

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

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

Оперативной памяти никогда не бывает достаточно.

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

Ответить на этот вопрос можно просто: остальная часть приложения находится на диске. Другими словами, диск служит своего рода дополнением оперативной памяти; большое хранилище в некотором роде «поддерживает» более быструю память меньшего объёма.

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

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

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

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

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

Есть два принципиально разных ответа на этот вопрос.

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

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

Рисунок 4.11 – Виртуальная память

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

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

1) Перемещение страниц по запросу (demand paging).Виртуальная память чаще всего реализуется на базе страничной организации памяти, совмещенной со свопингом страниц.

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

· программа может выполняться CPU, когда часть страниц находится в основной памяти, а часть — во внешней;

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

Для учета распределения страниц между внешней и основной памятью каждая строка таблицы страниц дополняется битом местонахождения страницы (valid/invalid bit).

В том случае, если процессор пытается использовать страницу, помеченную значением invalid,возникает событие, называемое страничная недостаточность (paging fault).

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

Основные этапы обработки страничной недостаточности (рис. 4.12):

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

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

3. Отыскивается необходимая страница во вторичной памяти и свободная страничная рамка в основной.

4. Требуемая страница загружается в выбранную страничную рамку.

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

6. Управление передается прерванному процессу.

Рисунок 4.12 — Обработка страничной недостаточности

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

Вторичная память, используемая при обмене страниц по запросу, — это высокоскоростное дисковое устройство, часто называемое оборудованием свопинга (swap device), а часть используемого дискового пространства — пространство свопинга (swap space).

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

Метод замещения страниц состоит в том, что в основной памяти выбирается наименее важная/используемая страница, называется страница-жертва (victim page), которая временно перемещается в пространство свопинга, а на ее место загружается страница, вызываемая страничной недостаточностью.

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

• определяется местонахождение страницы путем анализа бита местонахождения;

• если значение бита invalid,то разыскивается свободная страничная рамка;

• если имеется свободная страничная рамка, то она используется;

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

• страница-жертва перемещается в пространство свопинга и таблица страниц редактируется;

• требуемая страница загружается на место страницы-жертвы и соответствующим образом редактируется таблица страниц.

Управление передается прерванному процессу.

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

• алгоритм распределения страничных рамок (frame allocation algorithm);

• алгоритм замещения страниц (page replacement algorithm).

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

FIFO (first-in-first-out). Наиболее простым алгоритмом замещения страниц является алгоритм FIFO. Этот алгоритм ассоциирует с каждой страницей время, когда эта страница была помещена в память. Для замещения выбирается наиболее старая страница.

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

Алгоритм LRU (least recently used). Алгоритм выбирает для замещения ту страницу, на которую не было ссылки на протяжении наиболее длинного периода времени. Для замещения выбирается та страница, которая дольше всех не использовалась.

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

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

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Uchenik.top - научные работы и подготовка
0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии