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

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

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Виртуамльная паммять (англ. Virtual memory) — технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно… Читать ещё >

Модель преобразования виртуального адреса в физический (реферат, курсовая, диплом, контрольная)

БАЛТИЙСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ

РЫБОПРОМЫСЛОВОГО ФЛОТА

Курсовая работа по операционным системам

на тему «Модель преобразования виртуального адреса в физический»

Вариант № 5

Выполнил:

Студент группы 10АСУС (404)

Лубнин А. В

Приняла:

Костромина И.Г.________________

Калининград 2013

1. Основания для разработки

1.1 Исходные данные и результаты работы

2. Методы распределения виртуальной памяти

2.1 Страничная и сегментная организации виртуальной памяти

2.2 Сегментно-страничная организация виртуальной памяти

3. Преобразование виртуального адреса в физический

3.1 Модель оперативной памяти

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

4. Контрольные примеры

Введение

Виртуамльная паммять (англ. Virtual memory) — технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств, и обеспечить защиту памяти между разными приложениями. Также позволяет программисту использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность памяти, или согласовывать использование памяти с другими приложениями. Для программы выглядит доступным и непрерывным все допустимое адресное пространство, вне зависимости от наличия в ЭВМ соответствующего объема ОЗУ.

Применение механизма виртуальной памяти позволяет:

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

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

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

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

1. Основания для разработки

1.1 Исходные данные и результаты работы Исходные данные для выполнения курсовой работы:

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

— разрядность виртуального адреса — 32;

— количество сегментов не более 16;

— размер физической страницы — 4 Кбайт;

— объем оперативной памяти — 256 физических страниц;

— количество физических страниц в таблице страниц процесса — не более 32;

— виртуальный адрес вводится с клавиатуры.

Результаты выполнения модели должны включать в себя:

— виртуальный адрес;

— физический адрес;

— содержимое таблицы сегментов и таблицы страниц.

2. Методы распределения виртуальной памяти

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

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

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

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

Более подробная информация о сегментном и страничном методах распределения памяти дана в приложениях 1 и 2 соответственно.

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

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

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

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

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

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

3. Преобразование виртуального адреса в физический

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

Объем оперативной памяти равен 256 физическим страницам, каждая из которых фиксированного размера в 4 килобайта. То есть общий объем предоставленной памяти равен 1 Мб. Он разбит на 16 сегментов, каждый из которых может содержать до 32 страниц. Для удобства сделаем модель, которая будет содержать сегменты различных размеров: 8 сегментов по 8 страниц, 4 сегмента по 16 страниц, и 4 по 32 страницы.

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

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

Схема 1 — Модель оперативной памяти

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

— шестнадцатеричное число преобразовать в бинарный код;

— по первым десяти разрядам найти необходимый сегмент памяти;

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

— оставшиеся двенадцать разрядов дают смещение в физической странице;

— объединив номер страницы и смещение, получим искомый физический адрес.

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

Рисунок 4 — Алгоритм преобразования виртуального адреса в физический при сегментно-страничной организации памяти Изобразить этот же алгоритм преобразования с помощью блок-схемы можно следующим образом:

Схема 2 — Алгоритм преобразования виртуального адреса в физический

4. Контрольные примеры Для того чтобы наглядно представить, как работает данный алгоритм преобразования адресов, необходимо привести несколько контрольных примеров с числовыми значениями. В таблице 1 представлена часть имеющихся сегментов, которые рассматриваются в курсовой работе. Таблица 2 содержит в себе некоторые из виртуальных страниц, через которые находится физический адрес. Рассмотрим три примера преобразования виртуального адреса в физический: когда существует сегмент и в нем виртуальная страница; когда существует сегмент, но в нем отсутствует виртуальная страница; когда отсутствует запрашиваемый сегмент.

Таблица 1 — Таблица сегментов

Адрес сегмента памяти

Адрес виртуальной страницы в сегменте

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

Адрес виртуальной страницы

Адрес физической страницы

Пример 1

1. Возьмем произвольный виртуальный адрес — число в шестнадцатеричной системе исчисления, например, «F1С250». Следуя алгоритму, преобразуем данный адрес в бинарный код «11 110 000 011 100 099 979 509 760».

2. Следующим шагом будет поиск сегмента памяти с адресом «1 111». Проверим, имеется ли этот сегмент: «1 111» в десятичной системе исчисления равно 15, следовательно, такой сегмент имеется.

3. Дальше, в этом сегменте найдем виртуальную страницу, хранящую адрес физической страницы. Следующие десять бит дают номер искомой страницы — «11 100». Так же проверяем, имеется ли эта страница: в десятичной системе число «11 100» равно 28. Это тоже удовлетворят требованиям работы.

4. Последним шагом преобразования будет получение физического адреса путем добавления смещения, равного «100 101 000 000», к адресу физической страницы, который был получен предыдущим действием.

5. В полученной виртуальной странице хранился физический адрес «100 110». Добавляя к нему смещение «100 101 000 000» получается, что физический адрес равен «100 110 100 101 000 000» или «26 940» в шестнадцатеричной системе исчисления.

Пример 2

1. Возьмем другой произвольный виртуальный адрес — число в шестнадцатеричной системе исчисления, например, «A66976». Следуя алгоритму, преобразуем данный адрес в бинарный код «101 000 011 001 100 092 684 894 208».

2. Следующим шагом будет поиск сегмента памяти с адресом «1 010». Проверим, имеется ли этот сегмент: «1 010» в десятичной системе исчисления равно 10, следовательно, такой сегмент имеется.

3. Дальше, в этом сегменте найдем виртуальную страницу, хранящую адрес физической страницы. Следующие десять бит дают номер искомой страницы — «1 100 110». Так же проверяем, имеется ли эта страница: в десятичной системе число «1 100 110» равно 102. Эта страница либо находится за пределами рассматриваемой области памяти, либо отсутствует вовсе. Следовательно, дальнейшее преобразование адреса невозможно.

Пример 3

1. Возьмем еще один произвольный виртуальный адрес — число в шестнадцатеричной системе исчисления, например, «A66976». Следуя алгоритму, преобразуем данный адрес в бинарный код «1 000 101 101 101 100 030 696 095 744».

2. Следующим шагом будет поиск сегмента памяти с адресом «100 010». Проверим, имеется ли этот сегмент: «100 010» в десятичной системе исчисления равно 34. Номер данного сегмента не удовлетворяет условиям курсовой работы. Сегмента с таким номером не существует, а значит и преобразование виртуального адреса не возможно.

Показать весь текст
Заполнить форму текущей работой