Управление памятью в ОС: непрерывная, подкачка, фрагментация
Что такое управление памятью?
Управление памятью Это процесс управления и координации памяти компьютера, назначение частей, известных как блоки, различным запущенным программам для оптимизации общей производительности системы.
Это наиболее важная функция операционной системы, которая управляет основной памятью. Это помогает процессам перемещаться вперед и назад между основной памятью и исполнительным диском. Это помогает ОС отслеживать каждую ячейку памяти, независимо от того, выделена ли она какому-то процессу или остается свободной.
Зачем использовать управление памятью?
Вот причины использования управления памятью:
- Он позволяет вам проверить, сколько памяти необходимо выделить процессам, которые решают, какой процессор должен получить память и в какое время.
- Отслеживает каждый раз, когда инвентарь освобождается или не распределяется. По нему будет обновляться статус.
- Он выделяет пространство для подпрограмм приложений.
- Также убедитесь, что эти приложения не мешают друг другу.
- Помогает защитить различные процессы друг от друга
- Он помещает программы в память так, чтобы память использовалась в полной мере.
Методы управления памятью
Вот некоторые наиболее важные методы управления памятью:
Одно непрерывное выделение
Это самый простой метод управления памятью. В этом методе для одного приложения доступны все типы памяти компьютера, за исключением небольшой части, зарезервированной для ОС. Например, операционная система MS-DOS распределяет память таким образом. Встроенная система также работает на одном приложении.
Разделенное распределение
Он делит первичную память на различные разделы памяти, которые в основном представляют собой смежные области памяти. В каждом разделе хранится вся информация для конкретной задачи или задания. Этот метод заключается в выделении раздела для задания при его запуске и освобождении его после завершения.
Страничное управление памятью
Этот метод делит основную память компьютера на блоки фиксированного размера, известные как страничные фреймы. Этот аппаратный блок управления памятью отображает страницы в кадры, которые должны распределяться постранично.
Сегментированное управление памятью
Сегментированная память — единственный метод управления памятью, который не предоставляет программе пользователя линейное и непрерывное адресное пространство.
Сегментам необходима аппаратная поддержка в виде таблицы сегментов. Он содержит физический адрес раздела в памяти, размер и другие данные, такие как биты защиты доступа и состояние.
Что такое обмен?
Обмен — это метод, при котором процесс должен временно перемещаться из основной памяти в резервное хранилище. Позже он будет возвращен в память для продолжения выполнения.
Резервное хранилище — это жесткий диск или другое вторичное запоминающее устройство, которое должно быть достаточно большим, чтобы вместить копии всех образов памяти для всех пользователей. Он также может предлагать прямой доступ к этим образам памяти.
Преимущества обмена
Вот основные преимущества / плюсы обмена:
- Он предлагает более высокую степень мультипрограммирования.
- Позволяет динамическое перемещение. Например, если используется привязка адреса во время выполнения, то процессы можно поменять местами в разных местах. В противном случае в случае привязки времени компиляции и загрузки процессы должны быть перемещены в одно и то же место.
- Это помогает лучше использовать память.
- Минимальные потери процессорного времени при завершении, поэтому его можно легко применить к методу планирования на основе приоритетов для повышения его производительности.
Что такое распределение памяти?
Распределение памяти — это процесс, посредством которого компьютерным программам выделяется память или пространство.
Здесь основная память разделена на два типа разделов.
- Мало памяти – Operaсистема тинг находится в этом типе памяти.
- Высокая память– Пользовательские процессы хранятся в верхней памяти.
Распределение разделов
Память разделена на различные блоки или разделы. Каждый процесс распределяется в соответствии с требованиями. Распределение разделов — идеальный способ избежать внутренней фрагментации.
Ниже приведены различные схемы размещения разделов:
- Первая посадка: В этом типе подгонки выделяется раздел, представляющий собой первый достаточный блок от начала основной памяти.
- Лучше всего подходит: Он выделяет процесс тому разделу, который является первым наименьшим разделом среди свободных разделов.
- Худшее соответствие: Он распределяет процесс по раздел, который является самым большим достаточно свободным разделом в основной памяти.
- Следующая посадка: Он во многом похож на первый Fit, но этот Fit ищет первый достаточный раздел из последней точки распределения.
Что такое пейджинг?
Пейджинг — это механизм хранения, который позволяет ОС извлекать процессы из вторичного хранилища в основную память в виде страниц. В методе пейджинга основная память делится на небольшие блоки физической памяти фиксированного размера, которые называются кадрами. Размер фрейма должен оставаться таким же, как размер страницы, чтобы максимально использовать основную память и избежать внешней фрагментации. Пейджинг используется для более быстрого доступа к данным, и это логичная концепция.
Что такое фрагментация?
Процессы сохраняются и удаляются из памяти, что создает свободное пространство памяти, которое слишком мало для использования другими процессами.
Иногда процессы, которые не могут выделить блоки памяти из-за их небольшого размера и блоков памяти, всегда остаются неиспользуемыми, называются фрагментацией. Проблемы такого типа возникают в системе динамического распределения памяти, когда свободные блоки довольно малы и не могут выполнить ни один запрос.
Два типа методов фрагментации:
- Внешняя фрагментация
- Внутренняя фрагментация
- Внешнюю фрагментацию можно уменьшить, переупорядочив содержимое памяти, чтобы поместить всю свободную память в один блок.
- Внутреннюю фрагментацию можно уменьшить, выделив наименьший раздел, которого достаточно для выполнения всего процесса.
Что такое сегментация?
Метод сегментации работает почти аналогично пейджингу. Единственная разница между ними заключается в том, что сегменты имеют переменную длину, тогда как в методе разбиения на страницы страницы всегда имеют фиксированный размер.
Сегмент программы включает в себя основную функцию программы, структуры данных, служебные функции и т. д. ОС поддерживает таблицу карты сегментов для всех процессов. Он также включает список свободных блоков памяти с указанием их размера, номеров сегментов и ячеек памяти в основной памяти или виртуальная память.
Что такое динамическая загрузка?
Динамическая загрузка — это процедура программы, которая не загружается до тех пор, пока программа ее не вызовет. Все процедуры должны храниться на диске в перемещаемом формате загрузки. Основная программа загрузится в память и выполнится. Динамическая загрузка также обеспечивает лучшее использование памяти.
Что такое динамическое связывание?
Связывание — это метод, который помогает ОС собирать и объединять различные модули кода и данных в один исполняемый файл. Файл можно загрузить в память и выполнить. ОС может связывать библиотеки системного уровня в программу, которая объединяет библиотеки во время загрузки. В методе динамического связывания библиотеки связываются во время выполнения, поэтому размер программного кода может оставаться небольшим.
Разница между статической и динамической загрузкой
Статическая загрузка | Динамическая загрузка |
---|---|
Статическая загрузка используется, когда вы хотите загрузить программу статически. Тогда во время компиляции вся программа будет скомпонована и скомпилирована без необходимости использования какого-либо внешнего модуля или зависимости от программы. | В динамически загружаемой программе будут предоставлены ссылки, и загрузка будет выполняться во время выполнения. |
Во время загрузки вся программа загружается в память и начинает свое выполнение. | Подпрограммы библиотеки загружаются в память только тогда, когда они необходимы программе. |
Разница между статическим и динамическим связыванием
Вот основные различия между статическим и динамическим связыванием:
Статическая связь | Динамическое связывание |
---|---|
Статическая компоновка используется для объединения всех остальных модулей, необходимых программе, в один исполняемый код. Это помогает ОС предотвратить любую зависимость во время выполнения. | При использовании динамического связывания не требуется связывать реальный модуль или библиотеку с программой. Вместо него используйте ссылку на динамический модуль, предоставленный во время компиляции и компоновки. |
Итого
- Управление памятью — это процесс контроля и координации памяти компьютера, назначение частей, называемых блоками, различным запущенным программам для оптимизации общей производительности системы.
- Он позволяет вам проверить, сколько памяти необходимо выделить процессам, которые решают, какой процессор должен получить память и в какое время.
- При едином непрерывном распределении все типы памяти компьютера, за исключением небольшой части, зарезервированной для ОС, доступны для одного приложения.
- Метод секционированного распределения делит первичную память на различные разделы памяти, которые в основном представляют собой смежные области памяти.
- Метод управления страничной памятью делит основную память компьютера на блоки фиксированного размера, известные как страничные фреймы.
- Сегментированная память — единственный метод управления памятью, который не предоставляет программе пользователя линейное и непрерывное адресное пространство.
- Обмен — это метод, при котором процесс должен временно перемещаться из основной памяти в резервное хранилище. Позже он будет возвращен в память для продолжения выполнения.
- Распределение памяти — это процесс, посредством которого компьютерным программам выделяется память или пространство.
- Пейджинг — это механизм хранения, который позволяет ОС извлекать процессы из вторичного хранилища в основную память в виде страниц.
- Фрагментация — это состояние диска, при котором файлы разделены на части, разбросанные по диску.
- Метод сегментации работает почти аналогично пейджингу. Единственная разница между ними заключается в том, что сегменты имеют переменную длину, тогда как в методе разбиения на страницы страницы всегда имеют фиксированный размер.
- Динамическая загрузка — это процедура программы, которая не загружается до тех пор, пока программа ее не вызовет.
- Связывание — это метод, который помогает ОС собирать и объединять различные модули кода и данных в один исполняемый файл.