Файл: Лекции Абстракция памяти Виртуальная память Разработка, реализация и сегментация страничной реализации памяти.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.04.2024

Просмотров: 39

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

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

Часть 2

Содержание лекции

Методы распределения памяти

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

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

Методы распределения памяти

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

Алгоритмы, в которых внешняя память не привлекается:

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

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

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

Виртуальная память

К основным преимуществам виртуальной памяти относят:

Виртуальная память делает программирование приложений проще:

Страничное распределение:

Страничная организация памяти

С точки зрения программиста:

Виртуальный адрес состоит из двух полей:  

Трансляция адресов

Трансляция виртуального адреса:

Трансляция адресов

Таблица страниц

Запись в таблице – дескриптор страницы

Страничное прерывание

Задачи ОС

Задачи ОС

Это происходит в два этапа:

Страничная организация памяти - вывод

Сегментное распределение

Система с сегментной организацией функционирует аналогично системе со страничной организацией:

Сегментное распределение - вывод

Странично-сегментное распределение

Виртуальное адресное пространство зависит от:

Виртуальное адресное пространство не зависит от:

Все методы управления памятью могут быть разделены на два класса:

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

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

Виртуальный адрес можно представить состоящим из двух полей:   

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

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

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

Часть 2

Содержание лекции


Абстракция памяти
Виртуальная память
Разработка, реализация и сегментация страничной реализации памяти

Методы распределения памяти

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

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

Методы распределения памяти

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


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

Алгоритмы, в которых внешняя память не привлекается:


Распределение памяти фиксированными разделами;
Распределение памяти динамическими разделами;
Распределение памяти перемещаемыми разделами.

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


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


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

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

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



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


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

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


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


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


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


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

Виртуальная память


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


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


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


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


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


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

К основным преимуществам виртуальной памяти относят:


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

Виртуальная память делает программирование приложений проще:


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


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



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

Страничное распределение:


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


Оперативная память разбивается на физические страницы;
Программа разбивается на виртуальные страницы.


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


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

Страничная организация памяти

С точки зрения программиста:


Процессам виртуальное адресное пространство представляется непрерывным, от байта 0 до байта N
N зависит от аппаратной поддержки (например 32бит. - адр.пространство 4Гб), делится соответственно.
В реальности виртуальные страницы распределены по страницам физической памяти далеко не непрерывно и не один к одному.
Это два разных мира – физические страницы и виртуальные страницы.


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

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


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

Виртуальный адрес состоит из двух полей:  


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


Часть виртуальных страниц располагается в оперативной памяти, а часть – во внешней (файл подкачки, страничный файл, swap-файл).

Трансляция адресов

Трансляция виртуального адреса:


Виртуальный адрес состоит из двух частей: номер виртуальной страницы (VPN) и смещение внутри страницы
Номер виртуальной страницы (VPN- virtual page number) это индекс в таблице страниц (Pagetable)
Запись в таблице страниц (PTE – page table entry) содержит номер фрейма (PFN –page frame number)
Фрейм – это страница физической памяти.
Номер фрейма (PFN) – это номер физической страницы.


Смысл таблицы страниц – одна запись в таблице страниц (PTE) на одну страницу виртуального адресного пространства (VPN), отображает VPN на PFN. Какая виртуальная страница соответствует какому фрейму физической памяти.

Трансляция адресов


№ вирт. страницы

Виртуальный адрес

смещение

№ фрейма

смещение

№ фрейма

Таблица страниц

Физический адрес

Фрейм 0

Фрейм 1

Фрейм 2

Фрейм 3

Фрейм Y



Физическая память

Таблица страниц

Запись в таблице – дескриптор страницы


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


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

Страничное прерывание


Номер виртуальной страницы  определяется нужный элемент таблицы страниц  извлечение информации о станице (в том числе адрес в ОП)
Анализ признака присутствия, если страница в ОП есть  преобразование адреса (ВА – ФА), если страницы нет, то страничное прерывание (действия)

Задачи ОС


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