Класс ProcessVirtualMemory




Задание 3: Модель подсистемы управления виртуальной памятью

Теоретический материал к заданию:

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

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

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

Целью проекта будет разработка модели виртуальной памяти на основе уже выполненного проекта «Процессы».

Требования к проекту:

· Выполненный или частично выполненный проект «Модель планирования процессов»

· Базовые теоретические знания о механизме виртуальной памяти в операционной системе

· Навыки работы с одномерными массивами

· Навыки работы с классами

Цель

Расширить уже имеющийся проект модели планирования процессов путем создания в нем классов для формирования модели подсистемы управления виртуальной памятью.

Описание задания:

Необходимо написать программу на основе уже реализованного ранее проекта планирования процессов, которая будет включать в себя две основных модели: оперативной памяти и виртуальной памяти. При работе алгоритма планирования процессов в менеджере процессов в момент, когда один из процессов в списке становится активным, в массиве оперативной памяти ему выделяется место, равное значению памяти, занимаемым конкретным процессом. Таким образом, при запуске программы оперативная память начинает заполняться памятью процессов (при этом, если ранее в проекте был реализован алгоритм удаления процессов со статусом Zombie, данные этих процессов также удаляются и из оперативной памяти). Однако при выполнении программы может наступить момент, когда оперативная память заполнена, и добавлять туда процессы нет возможности. Как только это произойдет, в программе инициализируется виртуальная память, и неактивные на этот момент процессы переносятся поадресно (и у оперативной памяти, и у виртуальной памяти есть адреса) в виртуальную память. Примечание: в виртуальной памяти могут находиться только те процессы, которые неактивны в текущий момент времени (т.е. имеют статусы Waiting и Ready). Процесс может выполняться, только если он находится в оперативной памяти! Поэтому если тот процесс, который на следующем шаге приобретет статус Active и станет активным, находится не в оперативной, а в виртуальной памяти, то он должен быть перемещен обратно в оперативную память. Один из неактивных процессов со статусами Waiting и Ready в этом случае помещается в освободившееся место в виртуальной памяти – таким образом, происходит замещение.

Рекомендованный вариант реализации описанной модели – расширение проекта «Процессы» путем создания и описания в нем новых классов.

Краткое описание классов:

Реализуемая модель может содержать в себе несколько следующих классов:

· Класс процесса Process (предыдущий проект);

· Класс менеджера процессов ProcessManager (предыдущий проект);

· Класс планировщика Scheduler (предыдущий проект);

· Класс виртуальной памяти ProcessVirtualMemory;

· Класс оперативной памяти RAM;

Класс Process

· Поле - память, выделяемую конкретному процессу.

· Поле - количество страниц в массиве (число элементов массива)

· Поле - константа - фиксированный размер страницы.

· Поле - адрес процесса в оперативной памяти

· Поле - адрес процесса в виртуальной памяти

· Поле - объект класса ProcessVirtualMemory

Класс ProcessVirtualMemory

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

· Поле в классе ProcessVirtualMemory, отвечающее за общий размер виртуальной памяти.

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

· Поле - размер страницы виртуальной памяти.

· Метод, формирующий массив из ячеек виртуальной памяти.

· Метод, преобразующий виртуальный адрес в реальный адрес в оперативной памяти. Метод GetRAMAddr() моделирует доступ к оперативной памяти. В качестве параметра передается адрес в виртуальной памяти, возвращается адрес в реальной оперативной памяти.

· Метод, преобразующий адрес в оперативной памяти в виртуальный адрес. Метод GetVirtualAddr() моделирует доступ к оперативной памяти. В качестве параметра передается адрес в виртуальной памяти, возвращается адрес в реальной оперативной памяти.

· Метод SwapPage() - производит замещение страницы.

· Метод PageOut() помечает страницу в таблице страниц как вытесненную. Он вызывается из метода SwapPage.

· Метод Init() инициализирует всю систему управления виртуальной памятью. Вызывается в тот момент, когда заканчивается место в оперативной памяти. Его параметр – размер оперативной памяти в страницах.

Класс RAM

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

· Поле в классе ProcessVirtualMemory, отвечающее за общий размер оперативной памяти.

· Метод, формирующий массив из адресов оперативной памяти.

Примерный интерфейс «формы»:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-06-09 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: