Справочник от Автор24
Поделись лекцией за скидку на Автор24

Система управления памятью

  • 👀 320 просмотров
  • 📌 245 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Система управления памятью» pdf
Лекция 6. Система управления памятью Организация распределения памяти в ЭВМ Запоминающие устройства являются одной из основных частей любого компьютера. Их работа, как отмечалось ранее, строится по иерархическому принципу. От того, насколько рационально организовано использование памяти на каждом из уровней иерархии и взаимодействие между ЗУ различных уровней, во многом зависит эффективность работы ЭВМ. Ключевую роль в этой иерархии играет оперативная память. Именно в ней хранятся программы во время их исполнения, именно отсюда загружаются в регистры микропроцессора исходные данные для обработки. Сюда же, как правило, передаются и окончательные результаты работы программ. Поэтому рациональное использование ОЗУ на протяжении всего времени работы ЭВМ чрезвычайно важно. В оперативной памяти мультипрограммных ЭВМ обычно постоянно хранится ядро операционной системы. Программы ядра ОС в процессе работы ЭВМ выполняются часто, время их выполнения невелико. Остальные части операционной системы, как правило, находятся во внешней памяти, и в случае необходимости требуемые модули загружаются в оперативную память, занимая ее часть. В оставшейся части ОП хранится несколько программ, выполняемых в мультипрограммном режиме, и используемые ими данные. Распределение памяти предполагает удовлетворение потребностей как пользователей, так и системных средств. Эти требования в большей части противоречивы. Системные цели заключаются, прежде всего, в увеличении степени использования оперативной памяти при параллельном развитии нескольких процессов в мультипрограммном режиме, а также в реализации защиты информации при развитии этих процессов, обеспечении взаимодействия между процессами и т. д. Требования пользователей к памяти весьма разнообразны: быстрое выполнение коротких программ, выделение оперативной памяти в размерах, превышающих физически существующую, легкость и простота взаимодействия с другими программами при использовании, например, общих процедур и т. п. Вследствие этого распределение памяти всегда носит компромиссный характер. Система управления памятью выполняет следующие основные функции:  учет состояния свободных и уже распределенных областей памяти и модернизация этой информации всякий раз, когда в распределении памяти производятся изменения;  распределение памяти для выполнения задач (определение, какой задаче, когда и в каком количестве выделить оперативную память);  непосредственное выделение задаче оперативной памяти; если свободные области оперативной памяти отсутствуют, то предварительное их освобождение путем сохранения информации во внешней памяти. Все доступное множество адресов элементов хранения, упорядоченное по какому-либо признаку, называют адресным пространством памяти. Физическое адресное пространство организовано просто как одномерный массив ячеек, каждой из которых присвоен свой номер, называемый физическим адресом. В общем случае, под адресом понимают некий идентификатор, однозначно определяющий расположение элемента хранения среди прочих элементов в составе среды хранения. Для адресации данных в физическом адресном пространстве программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, выдаваемые на адресную шину и воспринимаемые схемами управления (контроллерами) памяти. Существуют две стратегии распределения оперативной памяти, как и любого ресурса: статическое и динамическое распределение. При статическом распределении вся необходимая оперативная память выделяется процессу в момент его порождения. При этом память выделяется единым блоком необходимой длины, начало которого определяется базовым адресом. Программа пишется в адресах относительно начала блока, а физический адрес команды или операнда при выполнении программы формируется как сумма базового адреса блока и относительного адреса в блоке. Значение базового адреса устанавливается при загрузке программы в оперативную память. Так как в разных программах используются блоки разной длины, то при таком подходе возникает проблема фрагментации памяти, то есть возникают свободные участки памяти, которые невозможно без предварительного преобразования использовать для вычислительного процесса. Проиллюстрируем это простым примером. Пусть ОП имеет объем 10 Мбайт, а для выполнения программ A, B, C, D требуются следующие объемы памяти: A - 2 Мбайт, B - 1 Мбайт, C - 4 Мбайт, D - 4 Мбайт. Начальное распределение памяти и распределение памяти после выполнения некоторых программ представлено на рис. 6.1. Рис. 6.1. Статическое распределение памяти:a - начальное распределение; б - после завершения программы A;в - после завершения программы B; г - после завершения программы C Из рисунка видно, что программа D при статическом распределении памяти может быть загружена в оперативную память лишь после завершения выполнения всех предыдущих программ, хотя необходимый для нее объем памяти существовал уже после завершения работы программы A. В то же время для улучшения показателей работы мультипрограммной ЭВМ требуется, чтобы в оперативной памяти постоянно находилось возможно большее количество программ, готовых к выполнению. Данную проблему можно частично решить перераспределением памяти после завершения выполнения каждой программы с целью формирования единого свободного участка, который может быть выделен новой программе, поступающей на обработку ( дефрагментация памяти ). Однако это требует трудоемкой работы системных средств и практически не используется. Современные системы распределения памяти опираются на две концепции: динамического использования ресурсов и виртуализации. При динамическом распределении памяти каждой программе в начальный момент выделяется лишь часть от всей необходимой ей памяти, а остальная часть выделяется по мере возникновения реальной потребности в ней. Такой подход базируется на следующих предпосылках. Во-первых, при каждом конкретном исполнении в зависимости от исходных данных некоторые части программы (до 25% ее длины) вообще не используются. Следует стремиться к тому, чтобы эти фрагменты кода не загружались в ОП. Во-вторых, исполнение программы характеризуется так называемым принципом локальности ссылок. Он подразумевает, что при исполнении программы в течение некоторого относительно малого интервала времени происходит обращение к памяти в пределах ограниченного диапазона адресов (как по коду программы, так и по данным). Следовательно, на протяжении этого времени нет необходимости хранить в ОП другие блоки программы. При этом системные средства должны отслеживать возникновение требований на обращение к тем частям программы, которые в данный момент отсутствуют в ОЗУ, выделять этой программе необходимый блок памяти и помещать туда из внешнего ЗУ требуемую часть программы. Для этого может потребоваться предварительное перемещение некоторых блоков информации из ОЗУ во внешнюю память. Данные перемещения должны быть скрыты от пользователя и в наименьшей степени замедлять работу его программы. Перемещение блоков информации из ОЗУ во внешнюю память с целью освобождения места для новой информации происходит обычно по одному из следующих алгоритмов: LRU (least recently used) - наиболее давно не использовавшийся; FIFO - самый давний по пребыванию в ОЗУ; Random - случайным образом. Динамическое распределение памяти тесно переплетается с понятием виртуальной памяти. Принцип виртуальной памяти предполагает, что пользователь при подготовке своей программы имеет дело не с физической ОП, действительно работающей в составе компьютера и имеющей некоторую фиксированную емкость, а с виртуальной (кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству, определяемому размером адресной шины ( Lша ) компьютера: Vвирт >> Vфиз, Vвирт = 2Lша. Для персональной ЭВМ на основе 32-разрядных микропроцессоров Vвирт= 232 = 4 Гбайт. При этом, естественно, в ЭВМ должен быть обеспечен достаточный объем внешней памяти для хранения всех программ, обрабатываемых на компьютере. Программист имеет в своем распоряжении адресное пространство, ограниченное лишь разрядностью адресной шины, независимо от общего объема оперативной памяти компьютера и объемов памяти, используемых другими программами, параллельно обрабатываемыми в мультипрограммной ЭВМ. Виртуальная память, обеспечивая возможность программисту обращаться к очень большому объему непрерывного адресного пространства, предоставляемого в его монопольное распоряжение, обладает обычными свойствами: побайтовая адресация, время доступа, сравнимое со временем доступа к оперативной памяти. На всех этапах подготовки программ, включая загрузку в оперативную память, программа представляется в виртуальных адресах, и лишь при выполнении машинной команды виртуальные адреса преобразуются в физические. Для каждой программы, выполняемой в мультипрограммном режиме, создается своя виртуальная память. Каждая программа использует одни и те же виртуальные адреса от нулевого до максимально большого в данной архитектуре. Для преобразования виртуальных адресов в физические физическая и виртуальная память разбиваются на блоки фиксированной длины, называемые страницами. Объемы виртуальной и физической страниц совпадают. Страницы виртуальной и физической памяти нумеруются. Виртуальный (логический) адрес в этом случае представляет собой номер виртуальной страницы и смещение внутри этой страницы. В свою очередь, физический адрес - это номер физической страницы и смещение в ней. Вначале в ОП загружается первая страница программы и ей передается управление. Когда в ходе выполнения программы происходит обращение за пределы загруженной страницы, операционная система прерывает выполнение данной программы, загружает требуемую страницу в ОП, после чего передает управление прерванной программе. Правила перевода номеров виртуальных страниц в номера физических страниц обычно задаются в виде таблицы страничного преобразования. Такие таблицы формируются системой управления памятью и модифицируются каждый раз при перераспределении памяти. Перевод виртуальных адресов в физические проиллюстрирован на рис. 6.2. Рис. 6.2. Преобразование виртуального адреса в физический Рассмотрим пример преобразования адреса виртуальной страницы в адрес физической страницы. Пусть компьютер имеет оперативную память VОЗУ=3 и адресное пространство, предполагающее разбиение на страницы объемом Vстр=1. Каждая программа, в свою очередь, разбивается на виртуальные страницы того же объема. Пусть коэффициент мультипрограммирования данной ЭВМ равен четырем, то есть на компьютере могут одновременно выполняться до четырех программ. Переключение между программами происходит через tk = 1. Время выполнения каждой страницы любой программы составляет t = 2tk. Полагаем, что страницы программ загружаются в оперативную память по мере их необходимости и, по возможности, в свободные области ОЗУ. Если вся память занята, то новая страница замещает ту, к которой дольше всего не было обращений (механизм замещения LRU ). Пусть выполняемые программы имеют следующее количество страниц: VA=2, VB=1, VC=3, VD=2. Тогда таблица загрузки оперативной памяти и таблицы страничного преобразования для каждой программы будут иметь следующий вид: Таблица 6.1. Такты Страница 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Динамическое распределение оперативной памяти ОЗУ 0 А0 А0 А0 D0 D0 D0 C0 C0 C0 C1 C1 C1 C1 C1 C1 C1 1 B0 B0 B0 A0 A0 A0 D0 D0 D0 D1 D1 D1 D1 D1 D1 2 C0 C0 C0 B0 B0 B0 A1 A1 A1 A1 A1 A1 C2 C2 Таблица страничного преобразования для программы A A0 - - 1 1 1 - - - - - - - - - 1 - - - - - - - - 2 2 2 2 2 2 - - Таблица страничного преобразования для программы B B0 - 1 1 1 - 2 2 2 - - - - - - - - Таблица страничного преобразования для программы C С0 - - 2 2 2 - - - - - - - - 1 - - - - - - - - - 2 - - - - - - - - - - - - - - 2 2 Таблица страничного преобразования для программы D0 - - - - 1 1 1 - - - - - - 1 - - - - - - - - - - 1 1 1 1 1 1 В таблице распределения оперативной памяти выделены номера активных в данном такте страниц. таблицах страничного преобразования прочерками страница отсутствует в оперативной памяти. В отмечены ситуации, когда данная виртуальная Если каждая страница имеет объем 1000 адресуемых ячеек, то, например, в такте 9 обращение по виртуальному адресу 1100 программы A ( виртуальная страница 1, смещение в странице равно 100) приведет к обращению по физическому адресу 2100 ( физическая страница 2, смещение в физической странице такое же, как и в виртуальной - 100). Таблица страничного преобразования хранится в ОП. В связи с этим каждое обращение программы к памяти за командой или за операндом требует дополнительного обращения к оперативной памяти для страничного преобразования, что существенно снижает производительность компьютера. Для уменьшения влияния этого фактора используются различные подходы. Основной из них - метод, при котором после первого преобразования номера виртуальной страницы полученный номер физической страницы запоминается во внутренних служебных регистрах микропроцессора. При очередном обращении к памяти аппаратными средствами микропроцессора осуществляется проверка того, было ли уже обращение к данной виртуальной странице. Если было, то номер соответствующей ей физической страницы уже находится в микропроцессоре. В противном случае преобразование выполняется обычным образом с обращением к оперативной памяти. Так как программа может достаточно долго обращаться к адресам, находящимся в пределах одной страницы, такой подход существенно сокращает время на страничное преобразование. Система управления памятью в персональной ЭВМ В ЭВМ на основе 32-разрядного микропроцессора при работе в так называемом защищенном режиме, поддерживающем мультипрограммирование и обеспечивающем адресацию операндов в максимально возможном для данной архитектуры диапазоне до 232 байт, виртуальная память организуется на основе сегментно-страничного представления памяти. При этом память разбивается на сегменты переменной длины, выделяемые пользователю под размещение его программ и данных. Сегменты, в свою очередь, делятся на страницы фиксированной длины (4К = 212 байт), используемые системой управления памятью для ее виртуализации. Начало каждого сегмента устанавливается операционной системой через соответствующий сегментный регистр и скрыто от пользователя. Пользователь пишет свои программы в адресах относительно начала сегмента, полагая, что он располагает сегментом максимально возможной для данной архитектуры длины (232 байт). Аппаратные средства микропроцессора сначала проводят сегментное преобразование адреса, а затем - страничное. Механизм формирования физического адреса при сегментно-страничной организации памяти показан на рис. 6.3 Рис. 6.3. Формирование физического адреса при сегментно-страничной организация памяти в 32-разрядном микропроцессоре Основой получения физического адреса, выдаваемого на адресную шину микропроцессора, служит логический адрес. Он состоит из двух частей: селектора, являющегося идентификатором сегмента, и смещения в сегменте. Смещение в сегменте (32 разряда) (эффективный адрес) вычисляется по задаваемому в команде режиму адресации операнда и является виртуальным адресом операнда. При обращении к команде в качестве смещения выступает значение регистра-указателя команд. Селектор размещается в сегментном регистре (см. рис. 6.3 ). Основная его часть представляет собой номер ( INDEX ), по которому в одной из специальных таблиц дескрипторов можно найти дескриптор (описатель) данного сегмента. Вид используемой таблицы определяется битом TI (tableindicator) селектора. Селектор содержит также двухразрядное поле RPL, используемое при организации защиты памяти по привилегиям. Дескриптор ( рис. 6.4) содержит сведения о сегменте. В одном из его полей содержится базовый адрес сегмента. В остальных полях записана дополнительная информация о сегменте: длина, допустимый уровень прав доступа к данному сегменту с целью защиты находящейся в нем информации, тип сегмента (сегмент кода, сегмент данных, специальный системный сегмент и т.д.) и некоторые другие атрибуты. Рис. 6.4. Структура дескриптора сегмента Сумма полученного из дескриптора базового адреса сегмента и вычисленного смещения дает линейный адрес операнда, который при включенном механизме страничного преобразования представляет собой номер виртуальной страницы (старшие 20 разрядов) и смещение операнда в странице (младшие 12 разрядов линейного адреса в соответствии с объемом страницы в 4 Кбайт). При преобразовании номера виртуальной страницы в номер физической используются следующие системные объекты: каталог таблиц страниц (КТС) и таблицы страниц (ТС). Структуры этих таблиц сходны между собой ( рис. 6.5). Рис. 6.5. Элемент каталога таблиц страниц (таблицы страниц) Преобразование проводится в два этапа. Сначала по разрядам А31-А22 линейного адреса в КТС выбирается нужный элемент. Каталог таблиц страниц всегда присутствует в ОП и содержит указания по размещению таблицы страниц, относящейся к тому или иному процессу. Элемент КТС содержит     адрес начала таблицы страниц, бит присутствия ( P ) таблицы страниц в оперативной памяти, бит разрешения чтения/записи ( R/W ), бит защиты страницы (пользователь/супервизор ( U/S )) и некоторые другие атрибуты. После получения из выбранного элемента КТС начального адреса таблицы страниц происходит обращение к ТС. В выбранной таблице страниц находится элемент, номер которого определяется разрядами А21А12 линейного адреса. Структура элемента таблицы страниц аналогична структуре элемента КТС. Элемент ТС в соответствующем поле содержит адрес начала атрибуты, аналогичные элементу КТС. требуемой физической страницы и другие При P =0 возникает прерывание, необходимая страница подкачивается соответствующий элемент ТС, и команда выполняется повторно. в Сокращение потерь времени при использовании организации памяти в персональной ЭВМ сегментно-страничной ОП, ее адрес заносится в Преобразование логического адреса в физический при сегментно-страничной организации памяти требует, как минимум, трех обращений к системным таблицам, расположенным в оперативной памяти (таблице дескрипторов, КТС и ТС ). Это может привести к существенному снижению производительности компьютера. Механизм сокращения потерь времени на такое преобразование основывается на том факте, что изменение состояния сегментных регистров производится относительно редко, например, при переключении ЭВМ на новую задачу, а новое страничное преобразование требуется лишь при выходе программы за пределы загруженной в оперативную память страницы. При сегментном преобразовании адреса после первого считывания дескриптора из таблицы дескрипторов, расположенной в оперативной памяти (например, после изменения состояния сегментного регистра при переключении на новую задачу), он запоминается в программно-недоступных ("теневых") регистрах микропроцессора ( рис. 6.6). При последующих обращениях к данному сегменту используется дескриптор из "теневого" регистра без обращения к ОП. Поэтому на его вызов требуется минимальное время. Так как состояние сегментных регистров меняется относительно редко, то такой подход приводит к значительной экономии времени при сегментном преобразовании адреса. Рис. 6.6. Сохранение дескрипторов сегментов в "теневых" регистрах микропроцессора При страничном преобразовании номера виртуальной страницы в номер физической страницы используется кэш-буфер ассоциативной трансляции ( TLB ), содержащий физические адреса 32-х наиболее активно используемых страниц ( рис. 6.7) и расположенный непосредственно в микропроцессоре. Рис. 6.7. Формат буфера ассоциативной трансляции адреса страницы Номер виртуальной страницы представляет собой старшие 20 разрядов линейного адреса, полученного при сегментном преобразовании ( А31 - А12 ). По младшим разрядам ( А14 - А12 ) этого номера выбирается блок в буфере ассоциативной трансляции. Содержимое поля тэгов каждой из четырех строк этого блока ассоциативным образом (одновременно) сравнивается с разрядами ( А31 - А15 ) линейного адреса. Если значения для одной из строк выбранного блока совпали, значит, номер этой виртуальной страницы уже преобразовывался в номер физической страницы и результат этого преобразования находится в найденной строке TLB. Если сравнение не было успешным, то преобразование номера виртуальной страницы в номер физической проходит обычным образом через обращения к каталогу таблиц страниц и к таблице страниц, а полученное значение заносится в TLB. При этом в поле тэгов заносятся старшие 17 разрядов линейного адреса этой страницы ( A31-A15 ). Если нет свободной строки в блоке, определяемом разрядами А14 А12 линейного адреса, то из блока вытесняется строка, информация в которой дольше всего не использовалась (механизм LRU ). Защита памяти в мультипрограммных ЭВМ Организация защиты памяти в ЭВМ При мультипрограммном режиме работы ЭВМ в ее памяти одновременно могут находиться несколько независимых программ. Поэтому необходимы специальные меры по предотвращению или ограничению обращений одной программы к областям памяти, используемым другими программами. Программы могут также содержать ошибки, которые, если этому не воспрепятствовать, приводят к искажению информации, принадлежащей другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергнутся программы операционной системы. Другими словами, надо исключить воздействие программы пользователя на работу программ других пользователей и программ операционной системы. Следует защищать и сами программы от находящихся в них возможных ошибок. Таким образом, средства защиты памяти должны предотвращать:      неразрешенное взаимодействие пользователей друг с другом, несанкционированный доступ пользователей к данным, повреждение программ и данных из-за ошибок в программах, намеренные попытки разрушить целостность системы, использование информации в памяти не в соответствии с ее функциональным назначением. Чтобы воспрепятствовать разрушению одних программ другими, достаточно защитить область памяти данной программы от попыток записи в нее со стороны других программ, а в некоторых случаях и своей программы ( защита от записи ), при этом допускается обращение других программ к этой области памяти для считывания данных. В других случаях, например при ограничениях на доступ к информации, хранящейся в системе, необходимо запрещать другим программам любое обращение к некоторой области памяти как на запись, так и на считывание. Такая защита от записи и считывания помогает в отладке программы, при этом осуществляется контроль каждого случая обращения за область памяти своей программы. Для облегчения отладки программ желательно выявлять и такие характерные ошибки в программах, как попытки использования данных вместо команд или команд вместо данных в собственной программе, хотя эти ошибки могут и не разрушать информацию (несоответствие функционального использования информации). Если нарушается защита памяти, исполнение программы прерывания по нарушению защиты памяти. приостанавливается и вырабатывается запрос Защита от вторжения программ в чужие области памяти может быть организована различными методами. Но при любом подходе реализация защиты не должна заметно снижать производительность компьютера и требовать слишком больших аппаратурных затрат. Методы защиты базируются на некоторых классических подходах, которые получили свое развитие в архитектуре современных ЭВМ. К таким методам можно отнести защиту отдельных ячеек, метод граничных регистров, метод ключей защиты. Защита отдельных ячеек памяти организуется в ЭВМ, предназначенных для работы в системах управления, где необходимо обеспечить возможность отладки новых программ без нарушения функционирования находящихся в памяти рабочих программ, управляющих технологическим процессом. Это может быть достигнуто выделением в каждой ячейке памяти специального "разряда защиты". Установка этого разряда в "1" запрещает производить запись в данную ячейку, что обеспечивает сохранение рабочих программ. Недостаток такого подхода - большая избыточность в кодировании информации из-за излишне мелкого уровня защищаемого объекта (ячейка). В системах с мультипрограммной обработкой целесообразно организовывать защиту на уровне блоков памяти, выделяемых программам, а не отдельных ячеек. Метод граничных регистров (рис. 6.8) заключается во введении двух граничных регистров, указывающих верхнюю и нижнюю границы области памяти, куда программа имеет право доступа. Рис. 6.8. Защита памяти методом граничных регистров При каждом обращении к памяти проверяется, находится ли используемый адрес в установленных границах. При выходе за границы обращение к памяти не производится, а формируется запрос прерывания, передающий управление операционной системе. Содержание граничных регистров устанавливается операционной системой при загрузке программы в память. Модификация этого метода заключается в том, что один регистр используется для указания адреса начала защищаемой области, а другой содержит длину этой области. Метод граничных регистров, обладая несомненной простотой реализации, имеет и определенные недостатки. Основным из них является то, что этот метод поддерживает работу лишь с непрерывными областями памяти. Метод ключей защиты, в отличие от предыдущего, позволяет реализовать доступ программы к областям памяти, организованным в виде отдельных модулей, не представляющих собой единый массив. Память в логическом отношении делится на одинаковые блоки, например, страницы. Каждому блоку памяти ставится в соответствие код, называемый ключом защиты памяти, а каждой программе, принимающей участие в мультипрограммной обработке, присваивается код ключа программы. Доступ программы к данному блоку памяти для чтения и записи разрешен, если ключи совпадают (то есть данный блок памяти относится к данной программе) или один из них имеет код 0 (код 0 присваивается программам операционной системы и блокам памяти, к которым имеют доступ все программы: общие данные, совместно используемые подпрограммы и т. п.). Коды ключей защиты блоков памяти и ключей программ устанавливаются операционной системой. В ключе защиты памяти предусматривается дополнительный разряд режима защиты. Защита действует только при попытке записи в блок, если в этом разряде стоит 0, и при любом обращении к блоку, если стоит 1. Коды ключей защиты памяти хранятся в специальной памяти ключей защиты, более быстродействующей, чем оперативная память. Функционирование этого механизма защиты памяти поясняется схемой на рис. 6.9. Рис. 6.9. Защита памяти методом ключей защиты При обращении к памяти группа старших разрядов адреса ОЗУ, соответствующая номеру блока, к которому производится обращение, используется как адрес для выборки из памяти ключей защиты кода ключа защиты, присвоенного операционной системой данному блоку. Схема анализа сравнивает ключ защиты блока памяти и ключ программы, находящийся в регистре слова состояния программы ( ССП), и вырабатывает сигнал "Обращение разрешено" или сигнал "Прерывание по защите памяти". При этом учитываются значения режима обращения к ОЗУ (запись или считывание), указываемого триггером режима обращения ТгРО, и режима защиты, установленного в разряде режима обращения (РРО) ключа защиты памяти. Средства защиты памяти в персональной ЭВМ Защита памяти в персональной ЭВМ делится на защиту при управлении памятью и защиту по привилегиям. Средства защиты при управлении памятью осуществляют проверку    превышения эффективным адресом длины сегмента, прав доступа к сегменту на запись или только на чтение, функционального назначения сегмента. Первый механизм базируется на методе граничных регистров. При этом начальные адреса того или иного сегмента программы устанавливаются операционной системой. Для каждого сегмента фиксируется его длина. При попытке обращения по относительному адресу, превышающему длину сегмента, вырабатывается сигнал нарушения защиты памяти. При проверке функционального назначения сегмента определяются операции, которые можно проводить над находящимися в нем данными. Так, сегмент, представляющий собой стек программы, должен допускать обращение как на запись, так и на чтение информации. К сегменту, содержащему программу, можно обращаться только на исполнение. Любое обращение на запись или чтение данных из этого сегмента будет воспринято как ошибочное. Здесь наблюдается некоторый отход от принципов Неймана в построении ЭВМ, в которых утверждается, что любая информация, находящаяся в ЗУ, функционально не разделяется на программу и данные, а ее идентификация проводится лишь на стадии применения данной информации. Очевидно, что такое развитие вызвано во многом появлением мультипрограммирования и необходимостью более внимательного рассмотрения вопросов защиты информации. Защита по привилегиям фиксирует более тонкие ошибки, связанные, в основном, с разграничением прав доступа к той или иной информации. какой-то степени защиту по привилегиям можно сравнить с классическим методом ключей защиты памяти. Различным объектам (программам, сегментам памяти, запросам на обращение к памяти и к В внешним устройствам), которые должны быть распознаны процессором, присваивается идентификатор, называемый уровнем привилегий . Процессор постоянно контролирует, имеет ли текущая программа достаточные привилегии, чтобы     выполнять некоторые команды, выполнять команды ввода-вывода на том или ином внешнем устройстве, обращаться к данным других программ, вызывать другие программы. На аппаратном уровне в процессоре различаются 4 уровня привилегий. Наиболее привилегированными являются программы на уровне 0. Число программ, которые могут выполняться на более высоком уровне привилегий, уменьшается от уровня 3 к уровню 0. Программы уровня 0 действуют как ядро операционной системы. Поэтому уровни привилегий обычно изображаются в виде четырех колец защиты (рис. 6.10). Рис. 6.10. "Кольца защиты" Как правило, распределение программ по кольцам защиты имеет следующий вид: уровень 0 - ядро ОС, обеспечивающее инициализацию работы, управление доступом к памяти, защиту и ряд других жизненно важных функций, нарушение которых полностью выводит из строя процессор; уровень 1 - основная часть программ ОС (утилиты); уровень 2 - служебные программы ОС (драйверы, СУБД, специализированные подсистемы программирования и др.); уровень 3 - прикладные программы пользователя. Конкретная операционная система не обязательно должна поддерживать все четыре уровня привилегий. Так, ОС UNIX работает с двумя кольцами защиты: супервизор ( уровень 0) и пользователь ( уровни 1,2,3). Операционная система OS/2 поддерживает три уровня: код ОС работает в кольце 0, специальные процедуры для обращения к устройствам ввода-вывода действуют в кольце 1, а прикладные программы выполняются в кольце 3. Простую незащищенную систему можно целиком реализовать в одном кольце 0 (в других кольцах это сделать невозможно, так как некоторые команды доступны только на этом уровне ). Уровень привилегий сегмента определяется полем DPL уровня привилегий его дескриптора. Уровень привилегий запроса к сегменту определяется уровнем привилегий RPL, закодированном в селекторе. Обращение к сегменту разрешается только тогда, когда уровень привилегий сегмента не выше уровня запроса. Обращение к программам, находящимся на более высоком уровне привилегий (например, к утилитам операционной системы из программ пользователя), возможно с помощью специальных аппаратных механизмов - шлюзов вызова. При страничном преобразовании адреса применяется простой двухуровневый механизм защиты: пользователь ( уровень 3) / супервизор ( уровни 0,1,2), указываемый в поле U/S соответствующей таблицы страниц. При сегментно-страничном преобразовании адреса сначала проверяются привилегии при доступе к сегменту, а затем - при доступе к странице. Это дает возможность установить более высокую степень защиты отдельных страниц сегмента.
«Система управления памятью» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Автор(ы) Беклемишев Д. Н., Орлов А. Н., Переверзев А. Л., Попов М. Г., Горячев А. В., Кононова А. И.
Смотреть все 55 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot