Управление памятью в ОС: непрерывная, подкачка, фрагментация

Содержание:

Anonim

Что такое управление памятью?

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

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

В этом руководстве по операционной системе вы узнаете:

  • Что такое управление памятью?
  • Зачем использовать управление памятью?
  • Методы управления памятью
  • Что такое своппинг?
  • Что такое распределение памяти?
  • Что такое пейджинг?
  • Что такое метод фрагментации?
  • Что такое сегментация?
  • Что такое динамическая загрузка?
  • Что такое динамическое связывание?
  • Разница между статической и динамической нагрузкой
  • Разница между статическим и динамическим связыванием

Зачем использовать управление памятью?

Вот причины для использования управления памятью:

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

Методы управления памятью

Вот несколько наиболее важных методов управления памятью:

Одиночное смежное размещение

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

Разделенное размещение

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

Управление выгружаемой памятью

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

Сегментированное управление памятью

Сегментированная память - единственный метод управления памятью, который не предоставляет программе пользователя линейное и непрерывное адресное пространство.

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

Что такое своппинг?

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

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

Преимущества обмена

Вот основные преимущества / преимущества обмена:

  • Он предлагает более высокую степень мультипрограммирования.
  • Позволяет динамическое перемещение. Например, если используется привязка адреса во время выполнения, то процессы можно поменять местами в разных местах. В противном случае в случае привязки времени компиляции и загрузки процессы должны быть перемещены в то же место.
  • Это помогает лучше использовать память.
  • Минимальные потери процессорного времени по завершении, поэтому его можно легко применить к методу планирования на основе приоритетов для повышения его производительности.

Что такое распределение памяти?

Выделение памяти - это процесс, с помощью которого компьютерным программам назначается память или пространство.

Здесь основная память разделена на два типа разделов.

  1. Мало памяти - операционная система находится в этом типе памяти.
  2. Высокая память - пользовательские процессы хранятся в верхней памяти.

Размещение раздела

Память разделена на разные блоки или разделы. Каждый процесс распределяется в соответствии с требованиями. Выделение разделов - идеальный способ избежать внутренней фрагментации.

Ниже представлены различные схемы распределения разделов:

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

Что такое пейджинг?

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

Что такое фрагментация?

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

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

Два типа методов фрагментации:

  1. Внешняя фрагментация
  2. Внутренняя фрагментация
  • Внешнюю фрагментацию можно уменьшить, переупорядочив содержимое памяти, чтобы поместить всю свободную память в один блок.
  • Внутреннюю фрагментацию можно уменьшить, назначив самый маленький раздел, который по-прежнему достаточно хорош для выполнения всего процесса.

Что такое сегментация?

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

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

Что такое динамическая загрузка?

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

Что такое динамическое связывание?

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

Разница между статической и динамической нагрузкой

Статическая загрузка Динамическая загрузка
Статическая загрузка используется, когда вы хотите загрузить свою программу статически. Затем во время компиляции вся программа будет связана и скомпилирована без необходимости использования какого-либо внешнего модуля или зависимости программы. В динамически загружаемой программе ссылки будут предоставлены, и загрузка будет выполняться во время выполнения.
Во время загрузки вся программа загружается в память и начинает свое выполнение. Подпрограммы библиотеки загружаются в память только тогда, когда они требуются в программе.

Разница между статическим и динамическим связыванием

Вот основное различие между статическим и динамическим связыванием:

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

Резюме:

  • Управление памятью - это процесс управления и координации памяти компьютера, назначения частей, называемых блоками, различным запущенным программам для оптимизации общей производительности системы.
  • Это позволяет вам проверить, сколько памяти необходимо выделить для процессов, которые решают, какой процессор в какое время должен получить память.
  • В режиме Single Contiguous Allocation все типы памяти компьютера, за исключением небольшой части, зарезервированной для ОС, доступны для одного приложения.
  • Метод Partitioned Allocation разделяет первичную память на различные разделы памяти, которые в основном представляют собой непрерывные области памяти.
  • Метод управления страничной памятью делит основную память компьютера на блоки фиксированного размера, известные как страничные фреймы.
  • Сегментированная память - единственный метод управления памятью, который не предоставляет программе пользователя линейное и непрерывное адресное пространство.
  • Своппинг - это метод, при котором процесс должен быть временно перенесен из основной памяти в резервное хранилище. Позже он будет возвращен в память для продолжения выполнения.
  • Выделение памяти - это процесс, с помощью которого компьютерным программам назначается память или пространство.
  • Пейджинг - это механизм хранения, который позволяет ОС извлекать процессы из вторичного хранилища в основную память в виде страниц.
  • Фрагментация относится к состоянию диска, при котором файлы разделены на части, разбросанные по диску.
  • Метод сегментации работает почти так же, как разбиение на страницы. Единственное различие между ними состоит в том, что сегменты имеют переменную длину, тогда как в методе разбиения на страницы страницы всегда имеют фиксированный размер.
  • Динамическая загрузка - это процедура программы, которая не загружается, пока программа ее не вызовет.
  • Связывание - это метод, который помогает ОС собирать и объединять различные модули кода и данных в один исполняемый файл.