Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/dfefdd70142282f7ba9e21ad73cce920 to your computer and use it in GitHub Desktop.
Save anonymous/dfefdd70142282f7ba9e21ad73cce920 to your computer and use it in GitHub Desktop.
Защита виртуальной памяти

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


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



Виртуальная память. Архитектурные средства поддержки виртуальной памяти
41. Виртуальная память
Защита памяти


























Виртуальная память - технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств, и обеспечить защиту памяти между разными приложениями. В основе концепции виртуальной памяти лежит принцип локальности, который позволяет сохранять в основной памяти только часть программы, оставляя на диске не использующиеся в текущий момент части кода и данных. Виртуальная память позволяет решать две задачи. Во-первых, снимается ограничение на размер адресуемого адресного пространства, расширяя его на весь возможный для заданной разрядности процессора диапазон виртуальных адресов. Во-вторых, использование виртуальной памяти позволяет решать задачу обеспечение контроля доступа к отдельным сегментам памяти и, в частности, защиту пользовательских программ друг от друга и защиту ОС от пользовательских программ. Средства поддержки виртуальной памяти можно разделить на аппаратно-зависимый и аппаратно-независимый компоненты. Аппаратно-зависимый компонент в первую очередь отвечает за организацию. Основная идея аппаратной поддержки состоит в том, что адрес памяти, встречающийся в программе, интерпретируется аппаратурой не как физический адрес элемента основной памяти, а как некоторая структура данных, где адрес является лишь одним из компонентов наряду с атрибутами, характеризующими способ обращения по данному адресу. Теоретически возможны три модели виртуальной памяти: В наиболее простом и наиболее часто используемом случае виртуальное адресное пространство процесса делится на страницы одинакового размера, а физическая память на страничные блоки кадры того же размера. Передача информации между памятью и диском всегда осуществляется целыми страницами. Этот процесс называется - пейджинг. Страницы и страничные кадры имеют длину, обычно являющуюся степенью числа 2, и не могут перекрываться. Виртуальный адрес в страничной системе состоит из двух частей p и d, где p — номер страницы в виртуальной памяти, а d — смещение в рамках страницы p. Процесс может выполняться, если очередная выполняемая команда расположена на странице текущая страница , находящейся в оперативной памяти. Если текущая страница отсутствует в основной памяти, возникает исключительная ситуация, называемая страничное прерывание page fault. В этом случае вызывается обработчик страничного прерывания, который загружает с внешней памяти требуемую страницу в любой свободный страничный кадр. Для отображения виртуальных адресов в физические используются вспомогательные структуры данных, называемые таблицами страниц. Каждый процесс может иметь одну или несколько таблиц страниц. Для ссылки на таблицу страниц часто используется специальный регистр процессора в i это CR3. Для каждой виртуальной страницы таблица содержит запись, в которой указаны атрибуты страницы и номер соответствующего страничного блока, который содержит эту страницу. Структура и длина элемента таблицы в значительной мере зависят от аппаратных решений. Элемент таблицы страниц обычно имеет следующую структуру:. Если 0, то страница отсутствует в памяти Защита. Используется для указания разрешенных видов доступа к странице. Устанавливается аппаратно при обращении к странице. Позволяет запретить кэширование страницы. Сохраняет информацию, требующуюся для работы алгоритмов замещения страниц. Например, рассмотрим организацию двухуровневой таблицы. В этом случае виртуальный адрес состоит из трех полей:. Поле РT1 используется как индекс таблицы верхнего уровня, а поле PT2 как индекс таблицы второго уровня для поиска номера страничного блока. Например, если виртуальный адрес состоит из 32 бит, можно использовать следующее распределение размеров полей: В многоуровневой таблице можно избегать постоянного содержания в памяти всех. Если каждая запись равна 8 байтам, таблица займет больше 30 Тбайт!!! Возможным решением является инвертированная таблица страниц, которая упорядочена по номерам страничных кадров памяти и содержит по одной записи на страничный блок в реальной памяти, а не на страницу в виртуальном адресном пространстве. Кроме обычных атрибутов, запись содержит значение идентификатора процесса и номер страницы, принадлежащей этому процессу. Размер инвертированной таблицы зависит только от размера основной памяти. Для ускорения преобразования адресов используется буфера быстрого преобразования адреса TLB — Translation Lookaside Buffer , который обычно находится внутри устройства управления памятью MMU. Буфер TLB представляет собой совокупность аппаратных регистров, каждый из которых хранит копию одного элемента таблицы страниц. Число регистров в TLB колеблется от 8 до в зависимости от архитектуры компьютера. В соответствии с принципом локальности можно ожидать, что при очередном обращении к памяти потребуется страница, запись о которой уже находится в буфере и преобразование адреса не потребует обращения к основной памяти. Если номер есть, и обращение не нарушает биты защиты, то номер страничного блока берется из буфера TLB. Если номера страницы нет в буфере, выполняется поиск в таблице страниц, удаляется одна из записей в буфере TLB и в освободившийся регистр копируется найденная запись из таблицы страниц. При удалении записи из буфера, биты изменения и обращения копируются в запись таблицы страниц в памяти. Другие величины уже находятся там. Сегментная организация памяти позволяет выполнять логическое объединение данных и позволяет реализовать хранение и защиту однородной информации. Соответствующее процессу логическое адресное пространство реализуется в виде набора сегментов, каждый из которых имеет некоторый идентификатор номер. Размер сегмента при необходимости изменяется динамически. Внутри сегмента адресное пространство образует линейную последовательность адресов от 0 до максимума. Реализуя сегментную модель, менеджер памяти должен поддерживать таблицу сегментов каждого процесса, а также общую таблицу сегментов всех выполняющихся процессов. Элемент таблицы сегментов содержит: Основные преимущества сегментной организации: Сегментация облегчает совместное использование процедур и данных несколькими процессами. Совместно используемые данные и код могут располагаться в отдельных сегментах и достаточно включить эти сегменты в адресное пространство нескольких процессов. Упрощается организация защиты, поскольку каждый сегмент формирует логический объект, и у различных сегментов могут быть разные виды защиты. Например, сегмент кода может быть определен, как только исполняемый, что запрещает его модификацию. Упрощается перемещение сегмента в памяти. Если изменилось положение сегмента, то достаточно изменить базовый адрес в таблице сегментов. Сегментная организация позволяет использовать адреса двух видов. При обращении к другому сегменту адрес строится в виде пары s,d — длинный адрес, который требует поиска в таблице cегментов базового адреса сегмента, к которому происходит обращение. Если адресация выполняется внутри текущего сегмента, базовый адрес которого может сохраняться в специальном регистре или ячейке памяти, то достаточно указать только смещение d — короткий адрес. Короткие адреса позволяют сократить размер текста программы и ускорить ее выполнение. В системах с аппаратной поддержкой сегментов используется специальный набор регистров, в которые могут загружаться либо значения базового адреса текущего сегмента однопрограммные системы , либо значения селектора, позволяющего обратится к таблице дескрипторов сегментов мультипрограммные системы. Селектор содержит номер в записи в таблице дескрипторов и поле защиты сегмента. Дескриптор содержит адрес начала сегмента в памяти, его размер, признак присутствия в памяти, признак принадлежности к системе и другие атрибуты. В однопрограммных системах значение физического адреса вычисляется суммированием значения регистра и смещения. В мультипрограммных системах виртуальный адрес имеет вид селектор,d и для вычисления физического адреса выполняются следующие действия:. В сегментный регистр загружается селектор. Поле защиты селектора сравнивается с полем защиты процесса, которое хранится в PSW. При несовпадении возникает прерывание. Дескриптор, соответствующий селектору, извлекается из таблицы и записывается во внутренние регистры процессора. Если сегмент не существует или в данный момент выгружен, а также если смещение выходит за пределы сегмента, то возникает прерывание. Если сегмент находится в памяти, и смещение попало в нужный интервал, то базовый адрес сегмента в дескрипторе прибавляется к смещению, формируя линейный адрес. Хранение в памяти сегментов большого размера может оказаться неудобным из-за необходимости копирования на диск больших объемов данных. Поэтому часто сегментация и страничная организация комбинируются. При сегментно-страничной организации виртуальной памяти виртуальный адрес. Соответственно, используются две таблицы отображения — таблица сегментов, связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента. Сегментно-страничная организация виртуальной памяти позволяет сохранить логическую структуру программы, а разбиение сегмента на страницы позволяет отказаться от требования непрерывности участка памяти, предназначенного для размещения сегмента и, соответственно, устранить внешнюю фрагментацию. FAQ Обратная связь Вопросы и предложения. Upload Опубликованный материал нарушает ваши авторские права? Понятие ос; основные функции ос; программно-аппаратные средства поддержки режима мультипрограммирования. Команды процессора, счетчик команд, слово состояния процессора. Прерывания и их обработка. Принципы защиты памяти и средства обеспечения достаточного объема памяти в системах с фиксированным и переменным числом разделов. Реализация процессов и основные структуры данных. Виртуальная память Виртуальная память - технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. Аппаратно-зависимый компонент в первую очередь отвечает за организацию отображения виртуального адресного пространства процесса на физическую память основную или дисковую , а аппаратно-независимый компонент за организацию обмена между основной и дисковой памятью. Элемент таблицы страниц обычно имеет следующую структуру: Иногда используются три бита для разрешения чтения, записи и выполнения страницы. Устанавливается аппаратно при модификации содержимого страницы. В простейшем случае записи таблицы упорядочены по номерам виртуальных страниц. Динамическое преобразование адресов выполняется следующим образом: Для экономии оперативной памяти можно использовать многоуровневую таблицу страниц, исключая необходимость постоянного хранения в памяти всех таблиц страниц. В этом случае виртуальный адрес состоит из трех полей: PT1 PT2 Смещение Поля имеют следующее значение: РТ1 хранит адреса таблиц второго уровня в таблице первого уровня; РT2 хранит адреса страниц; поле смещения. В многоуровневой таблице можно избегать постоянного содержания в памяти всех таблиц страниц, оставляя таблицу первого уровня и таблицы второго уровня, которые требуются текущему процессу. Принцип работы буфера можно кратко представить в виде следующей последовательности действий: Процессор выставляет виртуальный адрес на шину для отображения. MMU проверяет наличие номера виртуальной страницы в буфере TLB. Каждая подпрограмма может занимать отдельный сегмент и адресоваться относительно его начала. В мультипрограммных системах виртуальный адрес имеет вид селектор,d и для вычисления физического адреса выполняются следующие действия: Контекст каждого процесса содержит набор сегментных регистров, содержащих селекторы текущих сегментов кода, стека, данных и др. Это позволяет процессору на аппаратном уровне определять допустимость обращений к памяти. При сегментно-страничной организации виртуальной памяти виртуальный адрес состоит из трех полей: Соседние файлы в папке Итог Структуры данных и алгоритмы.


Защита памяти это:


Виртуальная память и организация защиты памяти - Реферат, раздел Связь, - год - Подсистема памяти современных компьютеров Виртуальная Память И Организация Защиты Памяти. Виртуальная память и организация защиты памяти. Общепринятая в настоящее время концепция виртуальной памяти появилась достаточно давно. Она позволила решить целый ряд актуальных вопросов организации вычислений. Прежде всего к числу таких вопросов относится обеспечение надежного функционирования мультипрограммных систем. В любой момент времени компьютер выполняет множество процессов или задач, каждая из которых располагает своим адресным пространством. Было бы слишком накладно отдавать всю физическую память какой- то одной задаче тем более, что многие задачи реально используют только небольшую часть своего адресного пространства. Поэтому необходим механизм разделения небольшой физической памяти между различными задачами. Виртуальная память является одним из способов реализации такой возможности. Она делит физическую память на блоки и распределяет их между различными задачами. При этом она предусматривает также некоторую схему защиты, которая ограничивает задачу теми блоками, которые ей принадлежат. Большинство типов виртуальной памяти сокращают также время начального запуска программы на процессоре, поскольку не весь программный код и данные требуются ей в физической памяти, чтобы начать выполнение. Другой вопрос, тесно связанный с реализацией концепции виртуальной памяти, касается организации вычислений на компьютере задач очень большого объема. Если программа становилась слишком большой для физической памяти, часть ее необходимо было хранить во внешней памяти на диске и задача приспособить ее для решения на компьютере ложилась на программиста. Программисты делили программы на части и затем определяли те из них, которые можно было бы выполнять независимо, организуя оверлейные структуры, которые загружались в основную память и выгружались из нее под управлением программы пользователя. Программист должен был следить за тем, чтобы программа не обращалась вне отведенного ей пространства физической памяти. Виртуальная память освободила программистов от этого бремени. Она автоматически управляет двумя уровнями иерархии памяти основной памятью и внешней дисковой памятью. Кроме того, виртуальная память упрощает также загрузку программ, обеспечивая механизм автоматического перемещения программ, позволяющий выполнять одну и ту же программу в произвольном месте физической памяти. Системы виртуальной памяти можно разделить на два класса системы с фиксированным размером блоков, называемых страницами, и системы с переменным размером блоков, называемых сегментами. Ниже рассмотрены оба типа организации виртуальной памяти. В системах со страничной организацией основная и внешняя память главным образом дисковое пространство делятся на блоки или страницы фиксированной длины. Каждому пользователю предоставляется некоторая часть адресного пространства, которая может превышать основную память компьютера и которая ограничена только возможностями адресации, заложенными в системе команд. Эта часть адресного пространства называется виртуальной памятью пользователя. Каждое слово в виртуальной памяти пользователя определяется виртуальным адресом, состоящим из двух частей старшие разряды адреса рассматриваются как номер страницы, а младшие - как номер слова или байта внутри страницы. Управление различными уровнями памяти осуществляется программами ядра операционной системы, которые следят за распределением страниц и оптимизируют обмены между этими уровнями. При страничной организации памяти смежные виртуальные страницы не обязательно должны размещаться на смежных страницах основной физической памяти. Для указания соответствия между виртуальными страницами и страницами основной памяти операционная система должна сформировать таблицу страниц для каждой программы и разместить ее в основной памяти машины. При этом каждой странице программы, независимо от того находится ли она в основной памяти или нет, ставится в соответствие некоторый элемент таблицы страниц. Каждый элемент таблицы страниц содержит номер физической страницы основной памяти и специальный индикатор. Единичное состояние этого индикатора свидетельствует о наличии этой страницы в основной памяти. Нулевое состояние индикатора означает отсутствие страницы в оперативной памяти. Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов TLB translation-lookaside buffer. Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую. Поиск в таблицах страниц, расположенных в основной памяти, и загрузка TLB может осуществляться либо программным способом, либо специальными аппаратными средствами. В последнем случае для того, чтобы предотвратить возможность обращения пользовательской программы к таблицам страниц, с которыми она не связана, предусмотрены специальные меры. С этой целью в процессоре предусматривается дополнительный регистр защиты, содержащий описатель дескриптор таблицы страниц или базово-граничную пару. База определяет адрес начала таблицы страниц в основной памяти, а граница - длину таблицы страниц соответствующей программы. Загрузка этого регистра защиты разрешена только в привилегированном режиме. Для каждой программы операционная система хранит дескриптор таблицы страниц и устанавливает его в регистр защиты процессора перед запуском соответствующей программы. Отметим некоторые особенности, присущие простым схемам со страничной организацией памяти. Наиболее важной из них является то, что все программы, которые должны непосредственно связываться друг с другом без вмешательства операционной системы, должны использовать общее пространство виртуальных адресов. Это относится и к самой операционной системе, которая, вообще говоря, должна работать в режиме динамического распределения памяти. Поэтому в некоторых системах пространство виртуальных адресов пользователя укорачивается на размер общих процедур, к которым программы пользователей желают иметь доступ. Общим процедурам должен быть отведен определенный объем пространства виртуальных адресов всех пользователей, чтобы они имели постоянное место в таблицах страниц всех пользователей. В этом случае для обеспечения целостности, секретности и взаимной изоляции выполняющихся программ должны быть предусмотрены различные режимы доступа к страницам, которые реализуются с помощью специальных индикаторов доступа в элементах таблиц страниц. Следствием такого использования является значительный рост таблиц страниц каждого пользователя. Одно из решений проблемы сокращения длины таблиц основано на введении многоуровневой организации таблиц. Частным случаем многоуровневой организации таблиц является сегментация при страничной организации памяти. Необходимость увеличения адресного пространства пользователя объясняется желанием избежать необходимости перемещения частей программ и данных в пределах адресного пространства, которые обычно приводят к проблемам переименования и серьезным затруднениям в разделении общей информации между многими задачами. Другой подход к организации памяти опирается на тот факт, что программы обычно разделяются на отдельные области-сегменты. Каждый сегмент представляет собой отдельную логическую единицу информации, содержащую совокупность данных или программ и расположенную в адресном пространстве пользователя. Сегменты создаются пользователями, которые могут обращаться к ним по символическому имени. В каждом сегменте устанавливается своя собственная нумерация слов, начиная с нуля. Обычно в подобных системах обмен информацией между пользователями строится на базе сегментов. Поэтому сегменты являются отдельными логическими единицами информации, которые необходимо защищать, и именно на этом уровне вводятся различные режимы доступа к сегментам. Можно выделить два основных типа сегментов программные сегменты и сегменты данных сегменты стека являются частным случаем сегментов данных. Поскольку общие программы должны обладать свойством повторной входимости, то из программных сегментов допускается только выборка команд и чтение констант. Запись в программные сегменты может рассматриваться как незаконная и запрещаться системой. Выборка команд из сегментов данных также может считаться незаконной и любой сегмент данных может быть защищен от обращений по записи или по чтению. Для реализации сегментации было предложено несколько схем, которые отличаются деталями реализации, но основаны на одних и тех же принципах. В системах с сегментацией памяти каждое слово в адресном пространстве пользователя определяется виртуальным адресом, состоящим из двух частей старшие разряды адреса рассматриваются как номер сегмента, а младшие - как номер слова внутри сегмента. Наряду с сегментацией может также использоваться страничная организация памяти. В этом случае виртуальный адрес слова состоит из трех частей старшие разряды адреса определяют номер сегмента, средние - номер страницы внутри сегмента, а младшие - номер слова внутри страницы. Как и в случае страничной организации, необходимо обеспечить преобразование виртуального адреса в реальный физический адрес основной памяти. С этой целью для каждого пользователя операционная система должна сформировать таблицу сегментов. Каждый элемент таблицы сегментов содержит описатель дескриптор сегмента поля базы, границы и индикаторов режима доступа. При отсутствии страничной организации поле базы определяет адрес начала сегмента в основной памяти, а граница - длину сегмента. При наличии страничной организации поле базы определяет адрес начала таблицы страниц данного сегмента, а граница - число страниц в сегменте. Поле индикаторов режима доступа представляет собой некоторую комбинацию признаков блокировки чтения, записи и выполнения. Таблицы сегментов различных пользователей операционная система хранит в основной памяти. Для определения расположения таблицы сегментов выполняющейся программы используется специальный регистр защиты, который загружается операционной системой перед началом ее выполнения. Этот регистр содержит дескриптор таблицы сегментов базу и границу, причем база содержит адрес начала таблицы сегментов выполняющейся программы, а граница - длину этой таблицы сегментов. Разряды номера сегмента виртуального адреса используются в качестве индекса для поиска в таблице сегментов. Таким образом, наличие базово-граничных пар в дескрипторе таблицы сегментов и элементах таблицы сегментов предотвращает возможность обращения программы пользователя к таблицам сегментов и страниц, с которыми она не связана. Наличие в элементах таблицы сегментов индикаторов режима доступа позволяет осуществить необходимый режим доступа к сегменту со стороны данной программы. Эта тема принадлежит разделу: Подсистема памяти современных компьютеров Произвольность доступа подразумевает, что процессор в любой момент может считать или записать любой байт слово, двойное слово из этой памяти. Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:. Общий принцип доступа к данным Общий принцип доступа к данным. Массив данных представляет собой некое подобие координатной сетки, где есть положения по горизонтали адрес строки и по вертикали адрес столбца. Традиционная память с асинхронным интерфейсом Традиционная память с асинхронным интерфейсом. В традиционной памяти сигналы RAS и CAS , обслуживающие запоминающие ячейки, вводятся непосредственно по соответствующим линиям интерфейса. Память с синхронным интерфейсом Память с синхронным интерфейсом. SDRAM и DDR SDRAM Для вычислительного конвейера, в котором могут параллельно выполняться несколько процессов и запросов к данным, гораздо удобнее синхронный интерфе. Организация оперативной памяти Организация оперативной памяти. Теперь, имея общее представление о работе разных типов динамической памяти, обсудим варианты построения модулей памяти и организационные способы повышения производит. Память Rambus DRAM Память Rambus DRAM. Память RDRAM Rambus DRAM имеет интерфейс, существенным образом отличающийся от традиционного и синхронного интерфейса. Запоминающее ядро этой памяти построено все на тех. Включает в себя, в частно. Информация в виде рефератов, конспектов, лекций, курсовых и дипломных работ имеют своего автора, которому принадлежат права. Поэтому, прежде чем использовать какую либо информацию с этого сайта, убедитесь, что этим Вы не нарушаете чье либо право. Для повышения эффективности схемы используется ассоциативная кэш-память. Что будем делать с полученным материалом: Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях: Все темы данного раздела: На пересечении каждог Традиционная память с асинхронным интерфейсом Традиционная память с асинхронным интерфейсом. Вся Память с синхронным интерфейсом Память с синхронным интерфейсом. SDRAM и DDR SDRAM Для вычислительного конвейера, в котором могут параллельно выполняться несколько процессов и запросов к данным, гораздо удобнее синхронный интерфе Организация оперативной памяти Организация оперативной памяти. Теперь, имея общее представление о работе разных типов динамической памяти, обсудим варианты построения модулей памяти и организационные способы повышения производит Память Rambus DRAM Память Rambus DRAM. Запоминающее ядро этой памяти построено все на тех Терминология Терминология. Подпишитесь на Нашу рассылку. Новости и инфо для студентов Свежие новости Актуальные обзоры событий Студенческая жизнь. Соответствующий теме материал Похожее Популярное Облако тегов. О Сайте Рефераты Правила Пользования Правообладателям Обратная связь.


Лечение артрита рук и ног
Открытое знание официальный сайт
Метод фрейда 2 сериал
Пул энд бир новосибирск каталог одежды
Sweet moments перевод
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment