Новости, советы, вдохновение которым вы можете доверять

Непрерывное выделение памяти

Непрерывное выделение памяти

Непрерывное выделение памяти является одним из эффективных способов выделения основной памяти процессам. Память разделена на два раздела. Один для операционной системы, а другой для пользовательских процессов. Операционная система размещается в памяти с низким или высоким уровнем памяти в зависимости от размещенного вектора прерывания. При непрерывном распределении памяти каждый процесс содержится в одном непрерывном разделе памяти. https://limonsu.ru/

Защита памяти

Защита памяти требуется для защиты операционной системы от пользовательских процессов и пользовательских процессов друг от друга. Регистр перемещения содержит значение наименьшего физического адреса, например, скажем, 100040. Регистр ограничения содержит диапазон логических адресов, например, скажем, 74600. Каждый логический адрес должен быть меньше регистра limit. Если логический адрес больше, чем регистр limit, то возникает ошибка адресации, и она попадает в ловушку. Следовательно, регистр ограничения обеспечивает защиту памяти.

MMU, то есть модуль управления памятью, отображает логический адрес динамически, то есть во время выполнения, путем добавления логического адреса к значению в регистре перемещения. Это добавленное значение - адрес физической памяти, который отправляется в память.

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

Распределение памяти

Существует два метода, а именно, метод множественного разделения и общий метод фиксированного разделения. В методе с несколькими разделами память делится на несколько разделов фиксированного размера. Каждый раздел занимает один процесс. Эта схема редко используется в настоящее время. Степень мультипрограммирования зависит от количества разделов. Степень мультипрограммирования - это количество программ, находящихся в основной памяти. При многопрограммировании процессор никогда не простаивает. Это было использовано IBM OS / 360 под названием MFT. MFT означает многопрограммирование с фиксированным количеством задач.

В MVT используется обобщение схемы фиксированных разделов. MVT означает многопрограммирование с переменным количеством задач. Операционная система отслеживает, какие части памяти доступны, а какие заняты. Это делается с помощью таблицы, которая поддерживается операционной системой. Первоначально вся доступная память обрабатывается как один большой блок памяти, называемый дырой. Программы, которые поступают в систему, сохраняются в очереди ввода. Из отверстия блоки основной памяти выделяются программам в очереди ввода. Если дыра большая, то она разделяется на две части, и одна половина выделяется прибывающему процессу, а другая половина возвращается. Как и когда выделяется память, набор отверстий в рассеянном. Если отверстия являются смежными, их можно объединить.

Теперь возникает общая проблема динамического распределения памяти. Ниже приведены решения проблемы динамического распределения памяти.

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

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

Наихудшее соответствие: выделяется самое большое из доступных отверстий.

Первый и наилучший вариант позволяет сократить время и использование памяти. Первая подгонка обычно выполняется быстрее.

Фрагментация

Недостатком непрерывного выделения памяти является фрагментация. Существует два типа фрагментации, а именно внутренняя фрагментация и внешняя фрагментация.

Внутренняя фрагментация

Когда память свободна внутри процесса, но не может быть использована, мы называем этот фрагмент внутренним фрагментом. Например, скажем, доступно отверстие размером 18464 байта. Пусть размер процесса равен 18462. Если для этого процесса выделено отверстие, то остается два неиспользуемых байта. Эти два байта, которые не могут быть использованы, образуют внутреннюю фрагментацию. Хуже всего то, что накладные расходы на поддержание этих двух байтов составляют более двух байтов.

Внешняя фрагментация

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

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

Еще одно решение проблемы внешней фрагментации - сделать логическое адресное пространство и физическое адресное пространство несмежными. Разбиение на страницы и сегментация являются популярными методами несмежного распределения.

Категория: Интернет | Добавил: Dexs (23.06.2023)
Просмотров: 150 | Рейтинг: 0.0/0