Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Разрывные распределения






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

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

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

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

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

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

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

Таким образом, логический адрес состоит из двух компонентов:

(Block, Offset),

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

Реализация динамического преобразования адресов при использовании разрывных распределений строится на использования табличного отображения (рис. 4.11).

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

Рис. 4.11. Табличная трансляция адреса при реализации разрывного распределения памяти

Схема вычисления линейного адреса физической памяти по двухкомпонентному («двумерному») логическому адресу показана на рис. 4.11. Адрес самой таблицы отображения блоков (ТОБ) обычно содержится в специальном регистре процессора (регистре начального адреса таблицы).

Таблица содержит по одной строке для каждого блока памяти, выделенного программе, причем эти строки нумеруются последовательно (0 – строка, представляющая блок с номером Block = 0, 1 – строка для блока Block = 1 и т.д.). В каждой строке есть поле базового физического адреса соответствующего блока в реальной памяти (Base). Кроме того, для каждого блока в представляющей его строке хранится дополнительная информация, используемая механизмами защиты памяти, а также поддержки виртуальной памяти. Кроме того, содержимое строки зависит от типа блока, т.е. от способа организации памяти: например, для сегментной организации памяти необходимо хранить длину сегмента, его тип и т.п., а для страничной организации памяти информация о длине не нужна – все страницы имеют фиксированный размер.

Каждая строка таблицы имеет фиксированный формат и имеет длину L. Для выбора нужной строки к адресу таблицы прибавляется номер адресуемого блока, умноженный на длину строки таблицы. Таблицы могут быть общими для всех процессов (глобальными) или локальными, используемыми отдельными процессами.

И сегментная организация памяти, и страничная имеют как преимущества, так и недостатки. Для оптимизации распределения памяти, более эффективного ее использования, «совмещают» два способа организации памяти: адресное пространство программы сегментируется, а затем сегменты разбиваются на страницы. Такой способ организации памяти называют сегментно-страничной организацией. При таком способе организации для трансляции адреса используется два типа таблиц: таблицы сегментов и таблицы страниц, а трансляция адреса выполняется в два этапа: сегментная трансляция и страничная трансляция (рис. 4.12).

В общем случае при сегментно-страничной организации памяти логический адрес должен содержать три компонента:

(Segment, Page, Offset),

где Segment идентифицирует сегмент в адресном пространстве программы (выбирает строку в таблице сегментов, содержащую информацию не о физическом адресе сегмента, а об адресе таблицы страниц, описывающей весь набор страниц, на которые разбивается данный сегмент); Page позволяет выбрать строку в таблице страниц, содержащую информацию о размещении в физической памяти страницы, включающей адресуемую ячейку, а поле Offset задает смещение выбираемой ячейки на странице.

 

       
 
   
Логический адрес
 

 


Segment S Page P Offset D

 

Ассоциативная память
     
     
S P ...
     
       

 

Таблица сегментов   Таблицы страниц   Оперативная память
          Страничный
      кадр 0
          Страничный
            кадр 1
          .....
         
           
             
           
            Страничный
            кадр N

Рис. 4.12. Выбор элемента в памяти в сегментно-страничной системе с комбинированным ассоциативно-прямым отображением

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

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.