Bazaprogram.ru

Новости из мира ПК
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Защита виртуальной памяти

Защита виртуальной памяти

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

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

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

Физический адрес ячейки памяти определяется парой (Pp, i), а виртуальный (Pv, i). Pv – номер виртуальной страницы, Pp – номер физической страницы, а I – номер ячейки (индекс) внутри страницы. Для отображения виртуального адресного пространства на физическую память для каждой задачи необходимо иметь таблицы страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти операционной системы заводит соответствующий дескриптор. По номеру виртуальной страницы в таблице дескрипторов текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия равен единице, то данная страница находится в ОЗУ и в дескрипторе находится номер физической страницы, отведенной под данную виртуальную страницу.

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

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

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

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

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

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

Виртуальная память в МП 386+:

При организации виртуальной памяти используется три вида адресов:

· Логический адрес ЛА ∈ ВАП.

· Физический адрес ФА ∈ ФАП.

· Линейный адрес – представляет собой объединение базового адреса сегмента и смещения в пределах сегмента.

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

Основные поля сегмента размещены в различных частях дескриптора: 32-битная база сегмента размещена в трех частях и определяет его место внутри 4-Гбайтного линейного адресного пространства, 20-битная граница сегмента размещена в двух частях и определяет его длину, остальные биты дескриптора образуют поле атрибутов. Длина сегмента, в зависимости от бита дробности (G), задается либо в байтах, либо в страницах:

· 1, страница (С = 4Кб) 220 * 215 = 232 (4Гб).

Бит D задает тип данных, размещенных в сегменте:

· D = 0 – 16-битные данные,

· D = 1 – 32-битные данные.

AVL – бит, предоставляемый в распоряжение пользователя (available). Бит P – бит присутствия: 0 – на диске, 1 – в оперативной памяти Биты DPL – уровень привилегий дескриптора (Descriptor Privilege Level), обеспечивающий защиту доступа. При доступе к сегменту запрашиваемый уровень привилегий RPL или текущий уровень привилегий CPL (соответствует уровню привилегий дескриптора кода выполняемой сейчас программы) должны быть больше DPL (в логическом смысле; для сравнения их числовых значений отношение должно быть меньше). Бит S – бит режима сегмента: пользовательский или системный (User / Supervisor). Биты типа говорят, является сегмент программой или данными и определяют режим доступа. Бит А – бит обращения к сегменту, устанавливается при обращении к сегменту и через некоторое время сбрасывается операционной системой (обеспечивает дисциплины замещения сегментов).

Читать еще:  Как отключить самозащиту avast

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Виртуальная память (Операционные Системы)

Виртуальная память — метод управления памятью, которая реализуется с использованием аппаратного и программного обеспечения компьютера. Она отображает используемые программами виртуальные адреса в физические адреса в памяти компьютера. Основная память представляется в виде непрерывного адресного пространства или набора смежных непрерывных сегментов. Операционная система осуществляет управление виртуальными адресными пространствами и соотнесением оперативной памяти с виртуальной. Программное обеспечение в операционной системе может расширить эти возможности, чтобы обеспечить виртуальное адресное пространство, которое может превысить объем оперативной памяти и таким образом иметь больше памяти, чем есть в компьютере. Виртуальная память позволяет модифицировать ресурсы памяти, сделать объём оперативной памяти намного больше, для того чтобы пользователь, поместив туда как можно больше программ, реально сэкономил время и повысил эффективность своего труда. “Открытие” виртуальной памяти внесло огромную контрибуцию в развитие современных технологий, облегчило работу как профессионального программиста, так и обычного пользователя, обеспечивая процесс более эффективного решения задач на ЭВМ [1] .

Содержание

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

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

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

Свойства виртуальной памяти

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

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

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

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

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

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

При страничной организации все ресурсы памяти, как оперативной, так и внешней представляются для пользователя единым целым. Пользователь работает с общим адресным пространством и не задумывается какая память при этом используется: оперативная или внешняя, а эта общая память носит название виртуальной (моделируемой). Виртуальная память разбивается на страницы, которые содержат определённое фиксированное количество ячеек памяти. При этом одна страница математической памяти не может быть больше или меньше других, все страницы должны быть одинаковы по количеству ячеек. Типичные размеры страниц 256, 512, 1024, 2048 Байт и более (числа кратные 256).

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

  • Достаточно большой объём прямо адресуемой памяти. Объем памяти может исчисляться сотнями мегабайт (и даже гигабайтами). Размер виртуальной памяти целиком зависит от объёма накопителя на [жестком] магнитном диске. Созданный SWAP файл размещается на диске и эмулирует оперативную память. При этом пользователь не задумывается о том куда будет помещен “кусок” его программы с которой он только что отработал.
  • Программы пользователя могут размещаться в любых свободных страницах [2] .
  • Повышает уровень мультипрограммной работы. С организацией виртуальной памяти со страничной организацией пользователь получил реальную возможность загружать в память большее количество программ для того чтобы машина обрабатывала программы сразу (в действительности процессор устанавливает приоритет для каждой программы, находящейся в памяти, и далее в соответствии с приоритетом выделяет определённое количество времени на реализацию каждой программы или команды.

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

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

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

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

Читать еще:  Скачать новый антивирус 2020

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

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

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

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

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

Закрепленные страницы

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

Операционные системы

  • Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040 стр., (в djvu 10.1Мбайт) подробнее>>
  • Сетевые операционные системы Н. А. Олифер, В. Г. Олифер (в zip архиве 1.1Мбайт)
  • Сетевые операционные системы Н. А. Олифер, В. Г. Олифер, 2001, СПб, Питер, 544 стр., (в djvu 6.3Мбайт) подробнее>>

6.1 Основные понятия

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

Основные методы распределения памяти:

Без использования внешней памяти (например: HDD)

С использованием внешней памяти

6.2 Методы без использования внешней памяти

6.2.1 Однозадачная система без подкачки на диск

Память разделяется только между программой и операционной системой.

Схемы разделения памяти:

Схемы разделения памяти

Третий вариант используется в MS-DOS. Та часть, которая находится в ПЗУ, часто называется BIOS.

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

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

Системы могут иметь:

общую очередь ко всем разделам

к каждому разделу отдельную очередь

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

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

Алгоритмы планирования в случае одной очереди:

выбирается задача, которая максимально займет раздел

Также может быть смешанная система.

6.2.3 Распределение памяти динамическими разделами

В такой системе сначала память свободна, потом идет динамическое распределение памяти.

Распределение памяти динамическими разделами.

Это один из методов борьбы с фрагментацией. Но на него уходит много времени.

Иногда процессу может понадобиться больше памяти, чем предполагалось изначально.

Настройка адресов и защита памяти

В предыдущих примерах мы можем увидеть две основные проблемы.

Настройка адресов или перемещение программ в памяти

Читать еще:  Защита от всплывающей рекламы

Защита адресного пространства каждой программы

Решение обоих проблем заключается в оснащении машины специальными аппаратными регистрами.

Базовый (указывает начало адресного пространства программы)

Предельный (указывает конец адресного пространства программы)

6.3 Методы с использованием внешней памяти (свопинг и виртуальная память)

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

Основные способы использования диска:

Свопинг (подкачка) — процесс целиком загружается в память для работы

Виртуальная память — процесс может быть частично загружен в память для работы

6.3.1 Свопинг (подкачка)

При нехватке памяти процессы могут быть выгружены на диск.

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

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

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

Этот метод был основным для UNIX до версии 3BSD.

Управление памятью с помощью битовых массивов

Вся память разбивается на блоки (например, по 32бита), массив содержит 1 или 0 (занят или незанят).

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

Такой алгоритм займет много времени.

битовые массивы и списки

Управление памятью с помощью связных списков

Этот способ отслеживает списки занятых (между процессами) и свободных (процессы) фрагментов памяти.

Запись в списке указывает на:

занят (P) или незанят (H) фрагмент

адрес начала фрагмента

Четыре комбинации соседей для завершения процесса X

Алгоритмы выделения блока памяти:

первый подходящий участок.

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

самый подходящий участок (медленнее, но лучше использует память).

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

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

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

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

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

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

Страницы — это части, на которые разбивается пространство виртуальных адресов.

Страничные блоки — единицы физической памяти.

Страницы всегда имеют фиксированный размер. Передача данных между ОЗУ и диском всегда происходит в страницах.

Х — обозначает не отображаемую страницу в физической памяти.

Страничное прерывание — происходит, если процесс обратился к странице, которая не загружена в ОЗУ (т.е. Х). Процессор передается другому процессу, и параллельно страница загружается в память.

Таблица страниц — используется для хранения соответствия адресов виртуальной страницы и страничного блока.

Таблица может быть размещена:

в аппаратных регистрах (преимущество: более высокое быстродействие, недостаток — стоимость)

Типичная запись в таблице страниц

Присутствие/отсутствие — загружена или незагружена в память

Защита — виды доступа, например, чтение/запись.

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

Обращение — было ли обращение к странице, если нет, то это лучший кандидат на освобождение памяти.

Информация о адресе страницы когда она хранится на диске, в таблице не размещается.

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

Страничная организация памяти используется, и в UNIX, и в Windows.

Хранение страничной памяти на диске

Статическая область свопинга

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

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

Этот механизм наиболее простой.

Статический и динамический методы организации свопинга.

Динамическая область свопинга

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

Этот механизм сложнее, так как процессы не привязаны к какому-то пространству на диске, и нужно хранить информацию (карту диска) о местоположении на диске каждой страницы.

Ссылка на основную публикацию
Adblock
detector