Модель преобразования виртуального адреса в физический
Распределение виртуальной памяти. Страничная и сегментная организации виртуальной памяти. Сегментно-страничная организация виртуальной памяти. Преобразование виртуального адреса в физический. Упрощение адресации памяти клиентским программным обеспечением.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.03.2014 |
Размер файла | 440,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
БАЛТИЙСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ
РЫБОПРОМЫСЛОВОГО ФЛОТА
Курсовая работа по операционным системам
на тему «Модель преобразования виртуального адреса в физический»
Вариант №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 адреса. Каждый адрес хранит в себе номер сегмента, номер виртуальной страницы и смещение. Первые десять бит отвечают за сегменты, следующие десять - за страницы, и оставшиеся двенадцать бит определяют смещение внутри страницы. Нумерация сегментов, страниц и смещения начинается всегда с нуля.
Таким образом, модель памяти можно представить следующей схемой.
Размещено на http://www.allbest.ru/
Схема 1 - Модель оперативной памяти
3.2 Алгоритм преобразования виртуального адреса в физический
Каждый виртуальный адрес представляет собой число, закодированное в шестнадцатеричной системе исчисления. Для того чтобы из этого числа получить необходимый физический адрес, надо выполнить следующие действия:
- шестнадцатеричное число преобразовать в бинарный код;
- по первым десяти разрядам найти необходимый сегмент памяти;
- по вторым десяти разрядам в таблице виртуальных страниц данного сегмента найти ту страницу, которая содержит номер физической страницы;
- оставшиеся двенадцать разрядов дают смещение в физической странице;
- объединив номер страницы и смещение, получим искомый физический адрес.
Данный алгоритм наглядно представлен на рисунке 4.
Рисунок 4 - Алгоритм преобразования виртуального адреса в физический при сегментно-страничной организации памяти
Изобразить этот же алгоритм преобразования с помощью блок-схемы можно следующим образом:
Схема 2 - Алгоритм преобразования виртуального адреса в физический
4. Контрольные примеры
Для того чтобы наглядно представить, как работает данный алгоритм преобразования адресов, необходимо привести несколько контрольных примеров с числовыми значениями. В таблице 1 представлена часть имеющихся сегментов, которые рассматриваются в курсовой работе. Таблица 2 содержит в себе некоторые из виртуальных страниц, через которые находится физический адрес. Рассмотрим три примера преобразования виртуального адреса в физический: когда существует сегмент и в нем виртуальная страница; когда существует сегмент, но в нем отсутствует виртуальная страница; когда отсутствует запрашиваемый сегмент.
Таблица 1 - Таблица сегментов
Адрес сегмента памяти |
Адрес виртуальной страницы в сегменте |
|
0000001111 |
0000011100 |
|
0000000011 |
0000000111 |
|
0000001010 |
0000011010 |
|
0000000110 |
0000001110 |
Таблица 2 - Таблица страниц
Адрес виртуальной страницы |
Адрес физической страницы |
|
0000011100 |
0000100110 |
|
0000001101 |
0000011001 |
|
0000011001 |
0001001110 |
|
0000000111 |
0000010111 |
|
0000001110 |
0000110011 |
|
0000010011 |
0000001001 |
|
0000011010 |
0000010001 |
|
0000000001 |
0001001101 |
Пример 1
1. Возьмем произвольный виртуальный адрес - число в шестнадцатеричной системе исчисления, например, «F1С250». Следуя алгоритму, преобразуем данный адрес в бинарный код «00000011110000011100100101000000».
2. Следующим шагом будет поиск сегмента памяти с адресом «0000001111». Проверим, имеется ли этот сегмент: «0000001111» в десятичной системе исчисления равно 15, следовательно, такой сегмент имеется.
3. Дальше, в этом сегменте найдем виртуальную страницу, хранящую адрес физической страницы. Следующие десять бит дают номер искомой страницы - «0000011100». Так же проверяем, имеется ли эта страница: в десятичной системе число «0000011100» равно 28. Это тоже удовлетворят требованиям работы.
4. Последним шагом преобразования будет получение физического адреса путем добавления смещения, равного «100101000000», к адресу физической страницы, который был получен предыдущим действием.
5. В полученной виртуальной странице хранился физический адрес «0000100110». Добавляя к нему смещение «100101000000» получается, что физический адрес равен «0000100110100101000000» или «26940» в шестнадцатеричной системе исчисления.
Пример 2
1. Возьмем другой произвольный виртуальный адрес - число в шестнадцатеричной системе исчисления, например, «A66976». Следуя алгоритму, преобразуем данный адрес в бинарный код «000000101000011001100100101110100».
2. Следующим шагом будет поиск сегмента памяти с адресом «0000001010». Проверим, имеется ли этот сегмент: «0000001010» в десятичной системе исчисления равно 10, следовательно, такой сегмент имеется.
3. Дальше, в этом сегменте найдем виртуальную страницу, хранящую адрес физической страницы. Следующие десять бит дают номер искомой страницы - «0001100110». Так же проверяем, имеется ли эта страница: в десятичной системе число «0001100110» равно 102. Эта страница либо находится за пределами рассматриваемой области памяти, либо отсутствует вовсе. Следовательно, дальнейшее преобразование адреса невозможно.
Пример 3
1. Возьмем еще один произвольный виртуальный адрес - число в шестнадцатеричной системе исчисления, например, «A66976». Следуя алгоритму, преобразуем данный адрес в бинарный код «00001000101101101100010010100101».
2. Следующим шагом будет поиск сегмента памяти с адресом «0000100010». Проверим, имеется ли этот сегмент: «0000100010» в десятичной системе исчисления равно 34. Номер данного сегмента не удовлетворяет условиям курсовой работы. Сегмента с таким номером не существует, а значит и преобразование виртуального адреса не возможно.
Размещено на Allbest.ru
Подобные документы
Архитектура компьютеров и возможности операционной системы по управлению памятью. Суть концепции виртуальной памяти. Аппаратно-независимые и аппаратно-зависимые средства управления виртуальной памятью. Сегментно-страничная организации виртуальной памяти.
презентация [355,2 K], добавлен 27.12.2010Динамическое распределение памяти. Анализ виртуальной памяти, алгоритм ее обращения, общие принципы защиты. Страничная организация. Особенности переключения в мультизадачный режим. Режим системного управления. Расширение размера адресного пространства.
презентация [1,3 M], добавлен 14.12.2013Организация памяти компьютера и простые схемы управления ею. Принципы связывания адресов. Динамическое распределение и свопинг. Сегментная и сегментно-страничная организация памяти. Выталкивание редко используемой страницы. Описание работы с программой.
курсовая работа [3,1 M], добавлен 19.01.2016Схема распределения памяти, соответствующая пользовательской трактовке распределения памяти. Перемещение с помощью таблицы сегментов. Аппаратная поддержка сегментного распределения памяти. Сегментно-страничная организация памяти с двухуровневой схемой.
лекция [1,5 M], добавлен 24.01.2014Стратегии размещения информации в памяти. Алгоритмы распределения адресного пространства оперативной памяти. Описание характеристик модели и ее поведения, классов и элементов. Выгрузка и загрузка блоков из вторичной памяти. Страничная организация памяти.
курсовая работа [708,6 K], добавлен 31.05.2013- Управление памятью. Страничная организация памяти. Сегментная организация памяти. Виртуальная память
Как осуществляется трансляция адресов при страничной организации. Что такое компактировка и как с ее помощью избавиться от внешней фрагментации. Что такое регистр таблицы страниц, сегментация. Методы распределения памяти в виде отдельных сегментов.
контрольная работа [236,2 K], добавлен 23.12.2016 Разработка драйвера под Linux, отслеживающего выделение и освобождение процессами виртуальной памяти и выделение физических страниц при страничных отказах. Компиляция драйвера и работа с ним. Экспериментальная проверка работоспособности драйвера.
курсовая работа [43,5 K], добавлен 18.06.2009Объем двухпортовой памяти, расположенной на кристалле, для хранения программ и данных в процессорах ADSP-2106x. Метод двойного доступа к памяти. Кэш-команды и конфликты при обращении к данным по шине памяти. Пространство памяти многопроцессорной системы.
реферат [28,1 K], добавлен 13.11.2009Внутренний кэш. Смешанная и разделенная кэш-память. Статическая и динамическая память. TLB как разновидность кэш-памяти. Организация кэш-памяти. Отображение секторов ОП в кэш-памяти. Иерархическая модель кэш-памяти. Ассоциативность кэш-памяти.
курсовая работа [229,1 K], добавлен 04.11.2006Указатель — переменная, диапазон значений которой состоит из адресов ячеек памяти специального значения - нулевого адреса; применение указателя для доступа к области с динамическим размещением памяти (кучи); выгоды косвенной инициализации и адресации.
реферат [27,3 K], добавлен 06.06.2011