Понимание управления хранилищем в операционных системах

задняя часть алгоритм Операционная система

Эта статья посвящена управлению памятью операционной системы.Вступительные статьи, призвана представить общее содержание управления хранилищем в операционной системе, эта статья в основном посвящена следующим темам.

  • Структуры хранения в вычислительных системах
  • Концепция линковки и загрузки программ
  • Распределение памяти программы
    1. Непрерывное выделение места для хранения
    2. Дискретное выделение дискового пространства (память подкачки, память сегмента, память сегмента страницы)
  • виртуальная память
    1. запрос постраничного хранилища
    2. запросить сегментированное хранилище
    3. алгоритм перестановки

1. Структура хранения в компьютерной системе

计算机系统中的存储结构
На приведенном выше рисунке показана общая структура хранения в компьютерной системе.Слева направо цена ресурсов хранения становится все дешевле и дешевле, но скорость доступа становится все дороже. Управление хранением, изучаемое в этой статье, относится к управлению основной памятью и взаимодействию между небольшим количеством дисков и основной памятью.

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

2. Связывание и загрузка программ

  1. нагрузка

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

  • абсолютная гора

    Физический адрес хранилища определяется в процессе написания программного кода. В это время логический адрес и физический адрес остаются прежними. Этого нет в современных операционных системах.

  • передвижное крепление

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

  • загружается во время выполнения

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

  1. Ссылка на сайт

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

  • статическая ссылка

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

  • ссылка при загрузке

    При загрузке объектного модуля свяжите его при загрузке

  • динамическая ссылка

    При использовании соответствующей логики программы начните компоновку.

3. Выделение места для хранения программ

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

  1. Непрерывное выделение места для хранения

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

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

    • Фиксированное выделение памяти

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

    • Динамическое выделение места для хранения

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

    • Перемещаемое выделение разделов

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

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

  2. Дискретное выделение места для хранения

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

    • выделение памяти подкачки

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

    页表

    • Распределение места для хранения сегментов

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

      段表
      Так в чем же разница между выгружаемым хранилищем и сегментированным хранилищем? Ниже приведена разница между хранилищем страниц и хранилищем сегментов.

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

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

      • Адрес пейджингового хранилища (номер страницы: адрес смещения внутри страницы)
      • Адрес хранения сегмента (номер сегмента: адрес смещения внутри сегмента)
      • Хранение страницы сегмента (номер сегмента номер страницы смещения сегмента: адрес смещения страницы)

4. Виртуальная память

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

  • запрос постраничного хранилища

    Есть две вещи, которые нужно понять о запросе хранилища с разбивкой на страницы:

    1. Постраничная загрузка, загрузка по запросу

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

    2. Замена страницы

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

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

    • Номер страницы, это поле представляет порядок страниц
    • Номер физического блока, это поле представляет расположение страницы в памяти.
    • Бит состояния P, этот бит состояния используется для определения того, загружена ли страница в память, значение «истина» означает, что страница загружена в память, «ложь» означает, что страница не загружена в память.
    • Поле доступа, бит состояния — это статистический бит состояния, который можно использовать для записи количества последних посещений страницы.
    • Бит модификации, этот бит используется для определения того, была ли страница изменена после загрузки в память. Если память модифицируется, ее необходимо перезаписать при замене во внешнюю память. Если он не был изменен, его не нужно перезаписывать при замене во внешнюю память.
    • Адрес внешней памяти, этот бит хранит адрес, который также находится во внешней памяти. Вообще говоря, после загрузки в память останется копия информации, оставшейся во внешней памяти.
  • запросить сегментированное хранилище

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

  • алгоритм перестановки

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

    1. LRU (наименее недавно использованный, алгоритм, который использовался последним)

      Алгоритм давно не использовался в последнее время, а поле времени доступа T добавлено к элементу страницы для записи времени от последнего доступа до настоящего. Когда требуется замена страницы, заменяется страница с наибольшим значением T.

    2. LFU (наименее часто используемый, наименее используемый алгоритм)

      Наименее используемый алгоритм добавляет поле частоты доступа F к элементу страницы и вычисляет частоту доступа к странице за последний период времени. Когда требуется замена страницы, замените страницу с наименьшей буквой F.