Главная

Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Общая характеристика методов управления оперативной памятью в ОС.


Управление ОП:

- Отслеживание состояния ОП с помощью управляющих таблиц

- Поддержка алгоритмов, удовлетворяющих запросам

- Физическое выделение и освобождение памяти

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

Защиты памяти одного процесса от другого осуществляется двумя способами:

1. Механизм ключей – маркер доступа. Память процессу выделяется блоками физической памяти ~4KB, у каждого блока есть неиспользуемое поле, называемое ключом. При обращении ключи памяти сравниваются с ключами в PCB, если не совпадают – доступ запрещен. Системный ключ – доступ всегда разрешен. Код программы запись запрещена.

2. Регистр перемещения и регистр границ. Каждый процесс имеет 2 регистра, которые заполняются при выделении процессу времени процессора. РП указывает на начало памяти, которая была выделена. РГ указывает на размер выделенной памяти. Для отслеживания состояния ОП ведутся управляющие таблицы: какая память кому выделена и сколько осталось свободной. Если при обращении адрес выходит из диапазона, то процесс снимается. При переходе к следующему процессу РГ и РП предыдущего заносятся в его PCB.

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

1. выделение ОП в полном объеме

2. выделение ОП меньшего объема, которому по мере выполнения присваивается код.

2-й способ используется чаще. Остальная информация хранится в виртуальной памяти.

Загрузочный модуль использует абсолютные ссылки. Для его выполнения необходимо автоматически прибавлять к адресам адрес раздела – расположение начала кода в памяти. Это называется виртуальным образом процесса. Он требует аппаратной поддержки и большего количества операций, зато процесс при этом можно перемещать в памяти без пересчета адресов.

Способы распределения ОП под процессы:

1. Разделами (Статически)

· Одиночное непрерывное распределение ОП (вся свободная ОП выделяется одному процессу)

· Распределение фиксированными разделами (вся память делится на фиксированные разделы, в каждом из которых может выполняться один процесс)

· Распределение динамическими разделами (разделами разной длины по запросу)

· Распределение перемещаемыми разделами ("способ сборки мусора", используют виртуальную адресацию)

2. Страницами (процесс может занимать непрерывные участки ОП)

· Страничное распределение (вразброс, но области фиксированной длины) - статически

· Страничное распределение по запросу* (часть страниц хранится во внешней памяти) - динамически

· Сегментное распределение (страницы переменной длины)

· Странично-сегментное распределение

*Наиболее распространенное.

Распределение ОП динамическими разделами.

Когда появляется процесс, он запрашивает какое-то количество памяти. Если памяти не хватает, он становится в очередь. Ведутся таблицы:

Таблица выделенных областей

Process PCB Address Address Size Status (1/0)
       
       

Таблица свободных областей

Address Size
   
   

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

Статус:1 – процесс уже есть; 0 – эта область может быть использована для порождения нового процесса.

Если поступает запрос на память, то ищется участок, в котором есть нужная память. Он делится на 2 части: одна выделяется процессу, другая остается.

Стратегия выделения памяти зависит от того, как отсортирована таблица свободных областей: если в порядке возрастания начального адреса, то алгоритм называется "первый подходящий", а если в порядке возрастания размера, то "самый подходящий". При "самом подходящем" большие куски не делятся на более мелкие, но он более сложный, т.к. нужно упорядочивать таблицу. Но при этом в процессе обслуживания или выполнения процессов существует тенденция образования мелких свободных участков памяти, общий объем которых удовлетворяет запросам, но они не являются смежными.

Пример: управление ОП в DOS

Управление – разделами по запросу.

MCB – Memory Control Block (5 байт). Располагается в начале каждого блока памяти.

· Статус (1 байт). ‘M’ – занят, ‘Z’ – свободен

· Адрес PSP (PCB), 0 – свободен (2 байта)

· Размер блока в параграфах (2 байта)

В самой ОС есть управляющее поле, которое ссылается на начало этой цепочки. Адрес следующего блока вычисляется через адрес и размер предыдущего. Команды процессора в DOS:

GETBLOCK – выделение памяти

FREEBLOCK – освобождение памяти

SETBLOCK – изменение размера памяти

И при этом нет никакой защиты ядра ОС!

Страничное распределение ОП.

Виртуальное адресное пространство процесса – образ процесса, который загружен с фиксированного адреса. В Windows этот адрес – 2 GB.

ОП делится на блоки одинаковой длины (2–4К)

Адресное пространство процесса непрерывно.

Таблица блоков – одна на всю систему:

Страница 1
 
Страница 0
 
Страница 2
 
 
Страница 3

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

Таблица страниц – для всех страниц всех процессов хранит номер блока, одна на процесс, хранится в PCB, загружается в память при обращении:

Номер страницы Номер блока

Любой адрес аппаратно формируется процессором. (p, b): номер страницы, относительное смещение. Из таблицы страниц получают номер блока, берут его адрес, прибавляют к нему относительное смещение и получают исполняемый адрес. Для реализации этого механизма необходимо создать таблицу страниц для каждого процесса.

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

Регистры:

1. Адрес начала таблицы

2. Количество элементов в таблице

Недостатки:

1. Большие накладные расходы (к памяти надо обращаться 2 раза: к таблице и к нужному байту).

2. Может не хватить памяти

Для устранения этого недостатка используется регистровая ассоциированная память процессора. В ней хранится таблица страниц.

Преимущество - автоматическая борьба с фрагментацией.



Последнее изменение этой страницы: 2016-07-22

headinsider.info. Все права принадлежат авторам данных материалов.