Страничное распределение памяти
Оперативная память как важнейший ресурс любой вычислительной системы, ее структура и компоненты. Исследование методов и приемов управления и распределения в разных операционных системах. Способы сегментации. Реализация модели страничного распределения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.09.2016 |
Размер файла | 770,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Курсовая работа
Страничное распределение памяти
Введение
Оперативная память является важнейшим ресурсом любой вычислительной системы. Её Особая роль объясняется тем, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти. Важно отметить, что память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы. Следовательно, одной из важнейших задач мультипрограммной операционной системы является тщательное управление памятью. В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя в память. С появлением мультипрограммирования перед ОС были поставлены новые задачи, связанные с распределением имеющейся памяти между несколькими одновременно выполняющимися программами. Так функциями ОС по управлению памятью в мультипрограммной системе являются:
· отслеживание свободной и занятой памяти;
· выделение памяти процессам и освобождение памяти по завершении процессов;
· вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти недостаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
· настройка адресов программы на конкретную область физической памяти;
· Динамическое распределение памяти;
· Дефрагментация памяти.
Особое внимание уделяется функции вытеснения кодов и данных процессов из памяти на диск и их возвращение обратно в память, так как она позволяет решать множество актуальных проблем. Одним из способов реализации такой функции является страничное распределение памяти.
Постановка задачи
Разработка модели страничного распределения памяти.
Цель разработки
Иллюстрация работы страничного распределения памяти.
Область применения
Страничное распределение памяти широко используется во всех видах вычислительных систем.
Актуальность
Поддержка страничного распределения памяти присутствует в подавляющем большинстве 32-битных и 64-битных процессоров, такой режим является классическим для почти всех современных ОС, в том числе Windows и семейства UNIX.
1. Исследование и построение решения
Разные ОС по-разному отвечают на вопросы управления памятью, например, следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память «кусками»? Или должны ли сегменты программы, загруженные в память, находиться на одном месте в течение всего периода выполнения процесса или можно ее время от времени сдвигать? А так же что делать, если сегменты программы не помещаются в имеющуюся память? Далее будут рассмотрены наиболее общие подходы к распределению памяти, которые были характерны для разных периодов развития операционных систем. Некоторые из них сохранили актуальность и широко используются в современных ОС, другие же представляют в основном только познавательный интерес, хотя их и сегодня можно встретить в специализированных системах.
На рис. 1 все алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.
Рис. 1. Классификация методов распределения памяти
Наиболее близкие методы к страничному распределению памяти, являются методы сегментного и сегментно-страничного распределения, так как эти методы так же относятся к методам с использованием внешней памяти. Они так же будут рассмотрены далее, но для начала следует пояснить, что представляет собой свопинг и виртуальная память.
1.1 Свопинг и виртуальная память
Как уже было сказано ранее, необходимым условием для того, чтобы программа могла выполняться, является ее нахождение в оперативной памяти. Только в этом случае процессор может извлекать команды из памяти и интерпретировать их, выполняя заданные действия. Объем оперативной памяти, который имеется в компьютере, существенно сказывается на характере протекания вычислительного процесса. Он ограничивает число одновременно выполняющихся программ и размеры их виртуальных адресных пространств.
В некоторых случаях, когда все задачи мультипрограммной системы являются вычислительными, для хорошей загрузки процессора может оказаться достаточным всего 3-5 задач. Однако если вычислительная система загружена выполнением интерактивных задач, то для эффективного использования процессора может потребоваться уже несколько десятков, а то и сотен задач. Эти рассуждения хорошо иллюстрирует рис. 2, на котором показан график зависимости коэффициента загрузки процессора от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.
Рис. 2. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода
Большое количество задач, необходимое для высокой загрузки процессора, требует большого объема оперативной памяти. В условиях, когда для обеспечения приемлемого уровня мультипрограммирования имеющейся оперативной памяти недостаточно, был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно выгружаются на диск.
В мультипрограммном режиме помимо активного процесса, то есть процесса, коды которого в настоящий момент интерпретируются процессором, имеются приостановленные процессы, находящиеся в ожидании завершения ввода-вывода или освобождения ресурсов, а также процессы в состоянии готовности, стоящие в очереди к процессору. Образы таких неактивных процессов могут быть временно, до следующего цикла активности, выгружены на диск. Несмотря на то, что коды и данные процесса отсутствуют в оперативной памяти, ОС «знает» о его существовании и в полной мере учитывает это при распределении процессорного времени и других системных ресурсов. К моменту, когда подходит очередь выполнения выгруженного процесса, его образ возвращается с диска в оперативную память. Если при этом обнаруживается, что свободного места в оперативной памяти не хватает, то на диск выгружается другой процесс.
Такая подмена (виртуализация) оперативной памяти дисковой памятью позволяет повысить уровень мультипрограммирования - объем оперативной памяти компьютера теперь не столь жестко ограничивает количество одновременно выполняемых процессов, поскольку суммарный объем памяти, занимаемой образами этих процессов, может существенно превосходить имеющийся объем оперативной памяти. Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он в действительности не обладает. В данном случае в распоряжение прикладного программиста предоставляется виртуальная оперативная память, размер которой намного превосходит всю имеющуюся в системе реальную оперативную память. Пользователь пишет программу, а транслятор, используя виртуальные адреса, переводит ее в машинные коды так, как будто в распоряжении программы имеется однородная оперативная память большого объема.
В действительности же все коды и данные, используемые программой, хранятся на дисках и только при необходимости загружаются в реальную оперативную память. Понятно, однако, что работа такой «оперативной памяти» происходит значительно медленнее.
Виртуализация оперативной памяти осуществляется совокупностью программных модулей ОС и аппаратных схем процессора и включает решение следующих задач:
· размещение данных в запоминающих устройствах разного типа, например часть кодов программы - в оперативной памяти, а часть - на диске;
· выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;
· перемещение по мере необходимости данных между памятью и диском;
· преобразование виртуальных адресов в физические.
Очень важно то, что все действия по организации совместного использования диска и оперативной памяти, то есть выделение места для перемещаемых фрагментов, настройка адресов, выбор кандидатов на загрузку и выгрузку, осуществляются операционной системой и аппаратурой процессора автоматически, без участия программиста, и никак не сказываются на логике работы приложений.
Виртуализация памяти может быть осуществлена на основе двух различных подходов:
· свопинг (swapping; руск. подкачка) - образы процессов выгружаются на диск и возвращаются в оперативную память целиком;
· виртуальная память (virtual memory) - между оперативной памятью и диском перемещаются части (сегменты, страницы и т.п.) образов процессов.
Свопинг представляет собой частный случай виртуальной памяти и, следовательно, более простой в реализации способ совместного использования оперативной памяти и диска.
Однако подкачке свойственна избыточность: когда ОС решает активизировать процесс, для его выполнения, как правило, не требуется загружать в оперативную память все его сегменты полностью - достаточно загрузить небольшую часть кодового сегмента с подлежащей выполнению инструкцией и частью сегментов данных, с которыми работает эта инструкция, а также отвести место под сегмент стека. Аналогично при освобождении памяти для загрузки нового процесса очень часто вовсе не требуется выгружать другой процесс на диск целиком, достаточно вытеснить на диск только часть его образа. Перемещение избыточной информации замедляет работу системы, а также приводит к неэффективному использованию памяти. Кроме того, системы, поддерживающие свопинг, имеют еще один очень существенный недостаток: они не способны загрузить для выполнения процесс, виртуальное адресное пространство которого превышает имеющуюся в наличии свободную память.
В некоторых современных ОС, например версиях UNIX, основанных на коде SVR4, механизм свопинга используется как дополнительный к виртуальной памяти, включающийся только при серьезных перегрузках системы.
Именно из-за указанных недостатков свопинг как основной механизм управления памятью почти не используется в современных ОС. На смену ему пришел более совершенный механизм виртуальной памяти, который, как уже было сказано, заключается в том, что при нехватке места в оперативной памяти на диск выгружаются только части образов процессов.
Ключевой проблемой виртуальной памяти, возникающей в результате многократного изменения местоположения в оперативной памяти образов процессов или их частей, является преобразование виртуальных адресов в физические. Решение этой проблемы, в свою очередь, зависит от того, какой способ структуризации виртуального адресного пространства принят в данной системе управления памятью. В настоящее время все множество реализаций виртуальной памяти может быть представлено тремя классами:
· Страничная виртуальная память организует перемещение данных между памятью и диском страницами - частями виртуального адресного пространства, фиксированного и сравнительно небольшого размера.
· Сегментная виртуальная память предусматривает перемещение данных сегментами - частями виртуального адресного пространства произвольного размера, полученными с учетом смыслового значения данных,
· Сегментно-страничная виртуальная память использует двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения данных здесь является страница. Этот способ управления памятью объединяет в себе элементы обоих предыдущих подходов.
Для временного хранения сегментов и страниц на диске отводится либо специальная область, либо специальный файл, которые во многих ОС по традиции продолжают называть областью, или файлом свопинга, хотя перемещение информации между оперативной памятью и диском осуществляется уже не в форме полного замещения одного процесса другим, а частями. Другое популярное название этой области - страничный файл (page file, или paging file).
Текущий размер страничного файла является важным параметром, оказывающим влияние на возможности операционной системы: чем больше страничный файл, тем больше приложений может одновременно выполнять ОС (при фиксированном размере оперативной памяти).
Однако необходимо понимать, что увеличение числа одновременно работающих приложений за счет увеличения размера страничного файла замедляет их работу, так как значительная часть времени при этом тратится на перекачку кодов и данных из оперативной памяти на диск и обратно. Размер страничного файла в современных ОС является настраиваемым параметром, который выбирается администратором системы для достижения компромисса между уровнем мультипрограммирования и быстродействием системы.
1.2 Существующие методы
Как было сказано ранее, существует три различных подхода по распределению оперативной памяти с использованием внешней памяти. Далее рассмотрим сегментное распределение и сегментно-страничное распределение.
Сегментное распределение
При сегментном способе организации памяти виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Иногда сегментация программы выполняется по умолчанию компилятором.
При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти.
Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса, в которой для каждого сегмента указывается:
· начальный физический адрес сегмента в оперативной памяти;
· размер сегмента;
· правила доступа;
· признаки модификации, присутствия, обращения к данному сегменту.
Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре.
Рис. 3. Распределение памяти сегментами
Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту. Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g - номер сегмента, а s - смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s. Из плюсов данного метода можно выделить простоту реализации данного метода, возможность задания дифференцированных прав доступа процесса к его сегментам и то, что размер таблицы сегментов может быть много меньше размеров таблицы страниц. Недостатком данного метода распределения памяти является фрагментация на уровне сегментов, избыточность и более медленное по сравнению со страничной организацией преобразование адреса.
Сегментно-страничное распределение
Данный метод представляет собой комбинацию страничного и сегментного механизмов управления памятью и направлен на реализацию достоинств обоих подходов. Так же как и при сегментной организации памяти, виртуальное адресное пространство процесса разделено на сегменты. Это позволяет определять разные права доступа к разным частям кодов и данных программы. Перемещение данных между памятью и диском осуществляется не сегментами, а страницами.
Для этого каждый виртуальный сегмент и физическая память делятся на страницы равного размера, что позволяет более эффективно использовать память, сократив до минимума фрагментацию.
Рис. 4. Два способа сегментации
В большинстве современных реализаций сегментно-страничной организации памяти в отличие от набора виртуальных диапазонов адресов при сегментной организации памяти (рис. 4, а) все виртуальные сегменты образуют одно непрерывное линейное виртуальное адресное пространство (рис. 4, б). Одним из основных плюсов сегментно-страничного распределения памяти является то, что он позволяет легко организовать совместное использование одних и тех же данных и программного кода разными задачами.
1.3 Способ решения задачи
Одним из актуальных, повсеместно используемых режимов распределения памяти является страничный режим, так как он позволяет решать такие задачи как:
· поддержка изоляции процессов и защиты памяти путём создания своего собственного виртуального адресного пространства для каждого процесса;
· поддержка изоляции области ядра от кода пользовательского режима;
· поддержка памяти «только для чтения» и неисполняемой памяти;
· поддержка отгрузки давно не используемых страниц в область подкачки на диске (см. свопинг);
· поддержка отображённых в память файлов, в том числе загрузочных модулей;
· поддержка разделяемой между процессами памяти, в том числе с копированием-по-записи для экономии физических страниц;
· поддержка системного вызова fork() в ОС семейства UNIX.
Страничное распределение
На рис. 5 показана схема страничного распределения памяти. Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами (virtual pages). В общем случае размер виртуального адресного пространства процесса не кратен размеру страницы, поэтому последняя страница каждого процесса дополняется фиктивной областью. Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками, или кадрами). Размер страницы выбирается равным степени двойки: 512, 1024, 4096 байт и т.д. Это позволяет упростить механизм преобразования адресов.
Рис. 5. Страничное распределение памяти
При создании процесса ОС загружает в оперативную память несколько его виртуальных страниц (начальные страницы кодового сегмента и сегмента данных).
Копия всего виртуального адресного пространства процесса находится на диске. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. Для каждого процесса операционная система создает таблицу страниц - информационную структуру, содержащую записи обо всех виртуальных страницах процесса.
Запись таблицы, называемая дескриптором страницы, включает следующую информацию:
· номер физической страницы, в которую загружена данная виртуальная страница;
· признак присутствия, устанавливаемый в единицу, если виртуальная страница находится в оперативной памяти;
· признак модификации страницы, который устанавливается в единицу всякий раз, когда производится запись по адресу, относящемуся к данной странице;
· признак обращения к странице, называемый также битом доступа, который устанавливается в единицу при каждом обращении по адресу, относящемуся к данной странице.
Признаки присутствия, модификации и обращения в большинстве моделей современных процессоров устанавливаются аппаратно, схемами процессора при выполнении операции с памятью. Информация из таблиц страниц используется для решения вопроса о необходимости перемещения той или иной страницы между памятью и диском, а также для преобразования виртуального адреса в физический. Сами таблицы страниц, так же как и описываемые ими страницы, размещаются в оперативной памяти. Адрес таблицы страниц включается в контекст соответствующего процесса. При активизации очередного процесса операционная система загружает адрес его таблицы страниц в специальный регистр процессора.
При каждом обращении к памяти выполняется поиск номера виртуальной страницы, содержащей требуемый адрес, затем по этому номеру определяется нужный элемент таблицы страниц, и из него извлекается описывающая страницу информация. Далее анализируется признак присутствия, и, если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический, то есть виртуальный адрес заменяется указанным в записи таблицы физическим адресом. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожидания, и активизируется другой процесс из очереди процессов, находящихся в состоянии готовности. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу (для этого операционная система должна помнить положение вытесненной страницы в страничном файле диска) и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то на основании принятой в данной системе стратегии замещения страниц решается вопрос о том, какую страницу следует выгрузить из оперативной памяти.
После того как выбрана страница, которая должна покинуть оперативную память, обнуляется ее бит присутствия и анализируется ее признак модификации. Если выталкиваемая страница за время последнего пребывания в оперативной памяти была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то принимается во внимание, что на диске уже имеется предыдущая копия этой виртуальной страницы, и никакой записи на диск не производится. Физическая страница объявляется свободной. Из соображений безопасности в некоторых системах освобождаемая страница обнуляется, с тем, чтобы невозможно было использовать содержимое выгруженной страницы.
Для хранения информации о положении вытесненной страницы в страничном файле ОС может использовать поля таблицы страниц или же другую системную структуру данных (например, дескриптор сегмента при сегментно-страничной организации виртуальной памяти).
Виртуальный адрес при страничном распределении может быть представлен в виде пары (р, sv), где р - порядковый номер виртуальной страницы процесса (нумерация страниц начинается с 0), a sv - смещение в пределах виртуальной страницы. Физический адрес также может быть представлен в виде пары (n, sf), где n - номер физической страницы, a sf - смещение в пределах физической страницы. Задача подсистемы виртуальной памяти состоит в отображении (р, sv) в (n, sf).
Прежде чем приступить к рассмотрению схемы преобразования виртуального адреса в физический, остановимся на двух базисных свойствах страничной организации.
Первое из них состоит в том, что объем страницы выбирается равным степени двойки - 2k. Из этого следует, что смещение s может быть получено простым отделением k младших разрядов в двоичной записи адреса, а оставшиеся старшие разряды адреса представляют собой двоичную запись номера страницы (при этом неважно, является страница виртуальной или физической).
Например, если размер страницы 1 Кбайт (210), то из двоичной записи адреса 50718 = 101 000 111 0012 можно определить, что он принадлежит странице, номер которой в двоичном выражении равен 102 и смещен относительно ее начала на 1 000 111 0012 байт (рис. 6).
Рис. 6. Двоичное представление адресов
Из рисунка хорошо видно, что номер страницы и ее начальный адрес легко могут быть получены один из другого дополнением или отбрасыванием k нулей, соответствующих смещению. Именно по этой причине часто говорят, что таблица страниц содержит начальный физический адрес страницы в памяти (а не номер физической страницы), хотя на самом деле в таблице указаны только старшие разряды адреса. Начальный адрес страницы называется базовым адресом.
Второе свойство заключается в том, что в пределах страницы непрерывная последовательность виртуальных адресов однозначно отображается в непрерывную последовательность физических адресов, а значит, смещения в виртуальном и физическом адресах sv и sf равны между собой (рис. 7).
Рис. 7. При отображении виртуального адреса в физический смещение не изменяется
Отсюда следует простая схема преобразования виртуального адреса в физический (рис. 8). Младшие разряды физического адреса, соответствующие смещению, получаются переносом такого же количества младших разрядов из виртуального адреса. Старшие разряды физического адреса, соответствующие номеру физической страницы, определяются из таблицы страниц, в которой указывается соответствие виртуальных и физических страниц.
Рис. 8. Схема преобразования виртуального адреса в физический при страничной организации памяти
Итак, пусть произошло обращение к памяти по некоторому виртуальному адресу. Аппаратными схемами процессора выполняются следующие действия:
1. Из специального регистра процессора извлекается адрес AT таблицы страниц активного процесса. На основании начального адреса таблицы страниц, номера виртуальной страницы р (старшие разряды виртуального адреса) и длины отдельной записи в таблице страниц L (системная константа) определяется адрес нужного дескриптора в таблице страниц: a=AT+(pxL).
2. Из этого дескриптора извлекается номер соответствующей физической страницы - n.
3. К номеру физической страницы присоединяется смещение s (младшие разряды виртуального адреса).
Типичная машинная инструкция требует 3-4 обращений к памяти (выборка команды, извлечение операндов, запись результата). И при каждом обращении происходит либо преобразование виртуального адреса в физический, либо обработка страничного прерывания. Время выполнения этих операций в значительной степени влияет на общую производительность вычислительной системы, поэтому столь большое внимание разработчиков уделяется оптимизации виртуальной памяти.
Именно для уменьшения времени преобразования адресов во всех процессорах предусмотрен аппаратный механизм получения физического адреса по виртуальному. С той же целью размер страницы выбирается равным степени двойки, благодаря чему двоичная запись адреса легко разделяется на номер страницы и смещение, и в результате в процедуре преобразования адресов более длительная операция сложения заменяется операцией присоединения (конкатенации).
Используются и другие способы ускорения преобразования, такие, например, как кэширование таблицы страниц - хранение наиболее активно используемых записей в быстродействующих запоминающих устройствах, в частности в регистрах процессора.
Другим важным фактором, влияющим на производительность системы, является частота страничных прерываний, на которую, в свою очередь, влияют размер страницы и принятые в данной системе правила выбора страниц для выгрузки и загрузки. При неправильно выбранной стратегии замещения страниц могут возникать ситуации, когда система тратит большую часть времени впустую, на подкачку страниц из оперативной памяти на диск и обратно.
При выборе страницы на выгрузку могут быть использованы различные критерии, смысл которых сводится к одному: на диск выталкивается страница, к которой в будущем начиная с данного момента дольше всего не будет обращений. Поскольку точно предсказать ход вычислительного процесса невозможно, то невозможно точно определить страницу, подлежащую выгрузке. В таких условиях решение принимается на основе неких эмпирических критериев, часто основывающихся на предположении об инерционности вычислительного процесса. Так, например, из того, что страница не использовалась долгое время, делается вывод о том, что она, скорее всего, не будет использоваться и в ближайшее время. Однако привлечение критериев такого рода не исключает ситуаций, когда сразу после выгрузки страницы к ней происходит обращение и она снова должна быть загружена в память. Вероятность таких «напрасных» перемещений настолько велика, что в некоторых реализациях виртуальной памяти вообще отказываются от количественных критериев и предпочитают случайный выбор, при котором на диск выгружается первая попавшаяся страница.
Возникающее при этом некоторое увеличение интенсивности страничного обмена компенсируется снижением вычислительных затрат на поддержание и анализ критерия выборки страниц на выгрузку.
Наиболее популярным критерием выбора страницы на выгрузку является число обращений к ней за последний период времени. Вычисление этого критерия происходит следующим образом. Операционная система ведет для каждой страницы программный счетчик. Значения счетчиков определяются значениями признаков доступа. Всякий раз, когда происходит обращение к какой-либо странице, процессор устанавливает в единицу признак доступа в относящейся к данной странице записи таблицы страниц. ОС периодически просматривает признаки доступа всех страниц во всех существующих в данный момент записях таблицы страниц. Если какой-либо признак оказывается равным 1 (было обращение), то система сбрасывает его в 0, увеличивая при этом на единицу значение связанного с этой страницей счетчика обращений. Когда возникает необходимость удалить какую-либо страницу из памяти, ОС находит страницу, счетчик обращений которой имеет наименьшее значение. Для того чтобы критерий учитывал интенсивность обращений за последний период, ОС с соответствующей периодичностью обнуляет все счетчики.
Интенсивность страничного обмена может быть также снижена в результате так называемой упреждающей загрузки, в соответствии с которой при возникновении страничного прерывания в память загружается не одна страница, содержащая адрес обращения, а сразу несколько прилегающих к ней страниц. Здесь используется эмпирическое правило: если обращение произошло по некоторому адресу, то велика вероятность того, что следующие обращения произойдут по соседним адресам.
Другим важным резервом повышения производительности системы является правильный выбор размера страницы. С одной стороны, чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. С другой стороны, если страница велика, то велика и фиктивная область в последней виртуальной странице каждого процесса.
Если учесть, что в среднем в каждом процессе фиктивная область составляет половину страницы, то в сумме при большом объеме страницы потери могут составить существенную величину. Из приведенных соображений следует, что выбор размера страницы является сложной оптимизационной задачей, требующей учета многих факторов. На практике же разработчики ОС и процессоров ограничиваются неким рациональным решением, пригодным для широкого класса вычислительных систем.
Размер страницы влияет также на количество записей в таблицах страниц. Чем меньше страница, тем более объемными являются таблицы страниц процессов и тем больше места они занимают в памяти. Учитывая, что в современных процессорах максимальный объем виртуального адресного пространства процесса, как правило, не меньше 4 Гбайт (232), то при размере страницы 4 Кбайт (212) и длине записи 4 байта для хранения таблицы страниц может потребоваться 4 Мбайт памяти. Выходом в такой ситуации является хранение в памяти только той части таблицы страниц, которая активно используется в данный период времени - так как сама таблица страниц хранится в таких же страницах физической памяти, что и описываемые ею страницы, то принципиально возможно временно вытеснять часть таблицы страниц из оперативной памяти.
Именно такой результат может быть достигнут путем более сложной структуризации виртуального адресного пространства, при котором все множество виртуальных адресов процесса делится на разделы, а разделы делятся на страницы (рис. 9).
Все страницы имеют одинаковый размер, а разделы содержат одинаковое количество страниц. Если размер страницы и количество страниц в разделе выбрать равными степени двойки (2k и 2» соответственно), то принадлежность виртуального адреса к разделу и странице, а также смещение внутри страницы можно определить очень просто: младшие k двоичных разрядов дают смещение, следующие п разрядов представляют собой номер виртуальной страницы, а оставшиеся старшие разряды (обозначим их количество т) содержат номер раздела.
Рис. 9. Структура виртуального адресного пространства с разделами
Для каждого раздела строится собственная таблица страниц. Количество дескрипторов в таблице и их размер подбираются такими, чтобы объем таблицы оказался равным объему страницы. Например, в процессоре Pentium при размере страницы 4 Кбайт длина дескриптора страницы составляет 4 байта и количество записей в таблице страниц, помещающейся на страницу, равняется соответственно 1024. Каждая таблица страниц описывается дескриптором, структура которого полностью совпадает со структурой дескриптора обычной страницы. Эти дескрипторы сведены в таблицу разделов, называемую также каталогом страниц. Физический адрес таблицы разделов активного процесса содержится в специальном регистре процессора и поэтому всегда известен операционной системе. Страница, содержащая таблицу разделов, никогда не выгружается из памяти, в противном случае работа виртуальной памяти была бы невозможна.
Выгрузка страниц с таблицами страниц позволяет сэкономить память, но при этом приводит к дополнительным временным затратам при получении физического адреса. Действительно, может случиться так, что та таблица страниц, которая содержит нужный дескриптор, в данный момент выгружена на диск, тогда процесс преобразования адреса приостанавливается до тех пор, пока требуемая страница не будет снова загружена в память. Для уменьшения вероятности отсутствия страницы в памяти используются различные приемы, основным из которых является кэширование.
Проследим более подробно схему преобразования адресов для случая двухуровневой структуризации виртуального адресного пространства (рис. 10).:
Рис. 10. Схема преобразования виртуального адреса для двухуровневой структуризации адресного пространства
1. Путем отбрасывания k+n младших разрядов в виртуальном адресе определяется номер раздела, к которому принадлежит данный виртуальный адрес.
2. По этому номеру из таблицы разделов извлекается дескриптор соответствующей таблицы страниц. Проверяется, находится ли данная таблица страниц в памяти. Если нет, происходит страничное прерывание и система загружает нужную страницу с диска.
3. Далее из этой таблицы страниц извлекается дескриптор виртуальной страницы, номер которой содержится в средних п разрядах преобразуемого виртуального адреса. Снова выполняется проверка наличия данной страницы в памяти и при необходимости ее загрузка.
4. Из дескриптора определяется номер (базовый адрес) физической страницы, в которую загружена данная виртуальная страница. К номеру физической страницы пристыковывается смещение, взятое из k младших разрядов виртуального адреса. В результате получается искомый физический адрес.
Страничное распределение памяти может быть реализовано в упрощенном варианте, без выгрузки страниц на диск. В этом случае все виртуальные страницы всех процессов постоянно находятся в оперативной памяти. Такой вариант страничной организации хотя и не предоставляет пользователю преимуществ работы с виртуальной памятью большого объема, но сохраняет другое достоинство страничной организации - позволяет успешно бороться с фрагментацией физической памяти. Действительно, во-первых, программу можно разбить на части и загрузить в разрозненные участки свободной памяти, во-вторых, при загрузке виртуальных страниц никогда не образуется неиспользуемых остатков, так как размеры виртуальных и физических страниц совпадают. Такой режим работы системы управления памятью используется в некоторых специализированных ОС, когда требуется высокая реактивность системы и способность выполнять переменный набор приложений. И так, из достоинств страничного распределения памяти можно выделить:
· нет проблемы внешней фрагментации;
· никак не ограничены размерами физической памяти, т.е. часть страниц можно всегда держать во внешней памяти и загружать их через прерывания, когда они становятся нужны.
Из недостатков:
· Внутренняя фрагментация;
· проблема принятия решений об организации таблицы страниц
· при страничной организации памяти адресное пространство представляет одну модель от 0 до Н. Т.е. мы работаем с одним пространством адресации в этом процессе, а в некоторых ситуациях это бывает не очень удобно.
2. Описание практической части
информационный память вычислительный операционный
Реализация модели страничного распределения памяти подразумевает собой, что имеется некое ограниченное количество оперативной памяти, которое может быть представлено в виде массива неких переменных. Например, массив размера N соответственно может включить в себя N процессов. Так как операционной системе, которой выступает в данном случае пользователь, может понадобиться больше чем N процессов, то применяется метод страничной организации памяти.
2.1 Реализация
Как было сказано выше, в данной модели ОП представлена в виде массива из N переменных.
Так же в данной модели, в таблице страниц, отсутствует бит присутствия, так как выборка процесса, отгружаемого на диск, осуществляется случайно - на диск отгружается первый попавшийся процесс, находящийся в памяти.
При добавлении нового процесса происходит проверка на имеющуюся свободную память.
Если свободная память имеется, то процесс просто загружается в ОП и создается копия этого процесса на жестком диске.
Если же свободной памяти нет, то находится первый попавшийся процесс, находящийся оперативной памяти, и проверяется его бит модификации.
Если бит модификации установлен в значении «1», значит, процесс в ОП подвергался изменениям. Тогда данный процесс перезаписывается в файле, его бит присутствия обнуляется и на его месте создается новый процесс. Если же модификаций процесса не происходило, то перезаписывать процесс на диске не нужно.
Для модуляции изменения процесса в программе реализована функция просмотра и редактирования определенного процесса.
Если процесс находится в ОП, то его данные просто перезаписываются на новые, а бит модификации обращается в «1». Если же процесс отсутствует в памяти, то происходит страничное прерывание. Загрузка требуемого процесса происходит аналогично алгоритму добавления нового процесса.
Заключение
В данной работе были рассмотрены основные принципы страничного распределения памяти и разработана модель, четко иллюстрирующая работу такого распределения. Данная модель была написана на языке «C» и является эффективной как по памяти, так и по времени. Чтобы начать работу с моделью, достаточно открыть файл с соответствующим названием и расширением «.exe». В модели реализованы функции просмотра всего файла с процессами, добавления нового процесса, изменения процесса и просмотра всех процессов в ОП. В качестве оболочки программы выступает командная строка.
Список литературы
1. Б.В. Керниган, Д.М. Ричи. 2009. Язык программирования Си. б.м.: М., Вильямс, 2009.
2. В.Г. Олифер, Н.А. Олифер. 2001. СЕТЕВЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ (УЧЕБНИК). СПб: Питер, 2001. ISBN: 2-7200-120-6.
3. В.Е. Карпов, К.А. Коньков. 2004. Лекция 8: Организация памяти компьютера. Простейшие схемы управления памятью. Страничная память. основы операционных систем. 2004.
4. Леонидович, «ESyr» Сыромятников Евгений. Операционные системы / Управление оперативной памятью. Esyr Wiki. [В Интернете] esyr.org/wiki/Операционные_системы / Управление_оперативной_памятью.
5. С.В., Под ред. Симонович. 2012. Информатика. Базовый курс: Учебник для вузов. б.м.: Питер М, Физматлит, 2012.
6. Страничная память. Википедия. [В Интернете] https://ru.wikipedia.org/wiki/Страничная_память.
Размещено на Allbest.ru
...Подобные документы
Схема распределения памяти, соответствующая пользовательской трактовке распределения памяти. Перемещение с помощью таблицы сегментов. Аппаратная поддержка сегментного распределения памяти. Сегментно-страничная организация памяти с двухуровневой схемой.
лекция [1,5 M], добавлен 24.01.2014Распределение оперативной памяти фиксированными, динамическими и перемещаемыми разделами. Распределение с использованием внешней памяти. Принципы рaботы матричного принтера. Проектирование символов и разработка программы, реализующей их вывод на печать.
курсовая работа [241,3 K], добавлен 01.07.2011Изучение свойств оперативной памяти, являющейся функциональной частью цифровой вычислительной машины, предназначенной для записи, хранения и выдачи информации, представленных в цифровом виде. Характеристика объема разных видов оперативной памяти.
реферат [24,0 K], добавлен 30.12.2010Откачка и подкачка, схема. Смежное распределение памяти. Аппаратная поддержка регистров перемещения и границы. Стратегии динамического распределения памяти. Внешняя и внутренняя фрагментация. Схема адресной трансляции по двухуровневой таблице страниц.
лекция [2,0 M], добавлен 24.01.2014Понятие о современных вычислительных системах. Структура ВС типа "Обобщенный nD-куб". Определения, необходимые для разработки алгоритма распределения программных модулей по вычислительным модулям вычислительной сети. Структура типа обобщенный гиперкуб.
курсовая работа [1,1 M], добавлен 09.03.2013Изучение устройства и назначения оперативной памяти как части системы компьютерной памяти, предназначенной для временного хранения данных при выполнении операций процессором ПК. Произвольный доступ и характеристика основных типов ОЗУ: DIMM, DDR, FTM, EDO.
презентация [3,9 M], добавлен 03.03.2011Стратегии размещения информации в памяти. Алгоритмы распределения адресного пространства оперативной памяти. Описание характеристик модели и ее поведения, классов и элементов. Выгрузка и загрузка блоков из вторичной памяти. Страничная организация памяти.
курсовая работа [708,6 K], добавлен 31.05.2013Понятие системных ресурсов, конфликты, связанные с ресурсами IRQ и DMA. Использование портов ввода-вывода. Разновидности памяти и особенности ее распределения в рамках операционной системы. Назначение адресов памяти средствами Windows 9x/NT/2000.
презентация [45,9 K], добавлен 27.08.2013Хранение различной информации как основное назначение памяти. Характеристика видов памяти. Память типа SRAM и DRAM. Кэш-память или сверхоперативная память, ее специфика и области применения. Последние новинки разработок в области в оперативной памяти.
презентация [2,1 M], добавлен 01.12.2014Основные определения, необходимые для разработки алгоритма распределения программных модулей по вычислительным модулям вычислительной сети. Распределение операторов вычислительной системы с распределенной памятью для информационно-логической граф-схемы.
курсовая работа [2,1 M], добавлен 08.01.2016Простейшая схема взаимодействия оперативной памяти с ЦП. Устройство и принципы функционирования оперативной памяти. Эволюция динамической памяти. Модуль памяти EDO-DRAM BEDO (Burst EDO) - пакетная EDO RAM. Модуль памяти SDRAM, DDR SDRAM, SDRAM II.
реферат [16,1 K], добавлен 13.12.2009Используемые в компьютерах устройства памяти для хранения данных. Внутренние (оперативная и кэш-память) и внешние устройства памяти. Уровни иерархии во внутренней памяти. Подключения дисководов и управления их работой с помощью дискового контроллера.
презентация [47,7 K], добавлен 26.11.2009Главная задача компьютерной системы. Виртуальные адресные пространства нескольких программ. Классификация методов распределения памяти. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода. Схема функционирования кэш-памяти.
презентация [2,2 M], добавлен 14.11.2012Логнормальное распределение. Применение моделирования логнормального распределения. Постановка и реализация поставленной задачи. Математическое ожидание. Инструкция пользователю. Описание программного модуля. Общие данные логнормального распределения.
курсовая работа [364,6 K], добавлен 08.01.2009Современные комплектующие ПК. Материнская плата и ее базовые компоненты – северный и южный мост. Сведения о процессорах х86. Тактовая частота процессора. Кэш-память, физические вычислительные ядра, оперативная память. Тайминги, контроллеры памяти.
курсовая работа [31,3 K], добавлен 23.08.2009Классификация основных видов памяти компьютера. Использование оперативной памяти для временного хранения данных, используемых для работы программного обеспечения. Расчет потребления электроэнергии, формирование квитанции для потребителя в Microsoft Excel.
курсовая работа [1,5 M], добавлен 23.04.2013Оперативная память как один из главных компонентов компьютера. Роль и значение оперативной памяти в качестве буфера между центральным процессором и винчестером. Факторы, влияющие на производительность всего компьютера. Общая характеристика SRAM и DRAM.
эссе [25,5 K], добавлен 09.12.2014Понятие виртуальной памяти, ее реализация. Особенности страничной организации по требованию. Этапы обработки ситуации отсутствия страницы в памяти. Стратегии (алгоритмы) замещения страниц. Особенности некоторых операционных систем: Windows NT и Solaris.
презентация [2,2 M], добавлен 24.01.2014Проблемы, возникающие при работе с динамическими переменными, их решение. Алгоритм Дойча-Шорра-Уэйта. Структура памяти и стратегия ее перераспределения. Главная идея, лежащая в основе "методов близнецов". Разбивка памяти на блоки и их упорядочение.
курсовая работа [57,0 K], добавлен 29.01.2010Микропроцессор как центр вычислительной системы. Основная (материнская) плата. Системная шина как совокупность сигнальных линий, объединённых по их назначению. Внутренняя память компьютера - оперативная память и кэш-память. Гибкий диск или дискета.
реферат [25,1 K], добавлен 27.02.2009