Разработка операционных систем
Рефераты >> Программирование и компьютеры >> Разработка операционных систем

Рисунок показывает, что страничная организация памяти полностью исключает внешнюю фрагментацию. Внутренняя фрагментация не превышает величины page_size-Q_Elem, где page_size — размер страничной рамки, а Q_Elem — минимальный адресуемый элемент основной памяти.

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

старшие разряды

младшие разряды

 
 

2n+1

2n

 

f

     
 

2n-1

 

2n

Д

На рисунке заштрихованы незаполненные нулевые разряды. Для того чтобы операция конкатенации была возможна, необходимо, чтобы базовые адреса страничных рамок располагались только в старших разрядах (2n+1), а следующие — только младших разрядов (20, 21, 22).

Например, при n=9 базовые адреса страничных рамок — это следующий ряд: 512, 1024, 1536. Следовательно, размер страничной рамки равен 512 байт.

В современных операционных системах типичный размер страницы составляет 2 Кб или 4 Кб.

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

3.3.2. Аппаратная поддержка страничной организации памяти.

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

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

изошло совпадение кода.

f

Основная память

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

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

Защита страничной памяти основана на контроле уровня доступа к каждой странице, возможны следующие уровни доступа:

1. только чтение

2. и чтение и запись

3. только выполнение

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

3.4. Сегментная организация памяти.

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

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

3.4.1. Базовый метод сегментной организации памяти.

Обычно сегменты формируются компилятором, а на этапе загрузки им присваиваются идентифицирующие номера. Таким образом, логический адрес при сегментной организации памяти состоит из двух частей: S и d, где S — номер сегмента, а d — смещение в пределах сегмента.

Трансформация логического адреса в физический осуществляется с помощью таблицы сегментов (segment table).

Количество строк таблицы сегментов равно количеству сегментов программы: S, limit, base. Limit — размер сегмента, base — начальный адрес сегмента в памяти.

Номер сегмента S используется в качестве индекса для таблицы сегментов. С помощью таблицы сегментов определяется его начальный адрес base в основной памяти. Значение limit используется для защиты памяти. Смещение d должно удовлетворять неравенству 0<d<limit. В случае выхода смещения за границы сегмента работа программы прерывается. Физический адрес определяется как сумма начального адреса base и смещения d. В том случае, если таблица сегментов имеет значительные размеры, она располагается в основной памяти, а её начальный адрес и длина хранятся в специальных регистрах STBR (segment table base register), STLR (segment table length register). Для ускорения трансформации логического адреса в физический операция суммирования часто заменяется операцией конкатенации (для этого необходимо, чтобы начальные адреса сегментов были кратны некоторому числу 2n).Таблица сегментов (или её часть) располагается в ассоциативной памяти.


Страница: