Учебники

26) Управление памятью в ОС

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

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

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

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

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

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

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

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

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

Одно смежное распределение

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

Разделенное Распределение

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

Управление постраничной памятью

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

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

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

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

Что такое обмен?

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

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

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

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

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

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

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

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

  1. Недостаточно памяти — Операционная система находится в этом типе памяти.
  2. High Memory — пользовательские процессы хранятся в верхней памяти.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме:

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