Подтвердить что ты не робот

Различия или сходства между сегментацией пейджинга и сегментированной сегментацией?

Я изучал комбинированные системы пейджинга/сегментации, и в моей книге было два подхода к этому:

1.paged segmentation
2.segmented paging

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

4b9b3361

Ответ 1

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

  • Они оба (сегментированная пейджинговая и разбитая по сегментам сегментации) являются разновидностью подсистемы подкачки/сегментации (пейджинг и сегментирование можно объединить, разделив каждый сегмент на страницы).
  • В обеих системах сегменты делятся на страницы.

Теперь, чтобы описать отличия, мне придется определять и описывать каждый термин отдельно:

  • Сегментированный пейджинг - Сегменты разделены на страницы. Для реализации требуется STR (регистр таблицы сегментов) и PMT (таблица карт страниц). В этой схеме каждый виртуальный адрес состоит из номера сегмента, номера страницы внутри этого сегмента и смещения внутри этой страницы. Индексы номера сегмента в таблицу сегментов, которые дают базовый адрес таблицы страниц для этого сегмента. Индексы номера страниц в таблице страниц, каждая из которых является страничным фреймом. Добавление PFN (номер кадра страницы), а смещение приводит к физическому адресу. Адресация вызова может быть описана с помощью следующей функции:

va = (s, p, w), где va - виртуальный адрес, | s | определяет количество сегменты (размер ST), | p | определяет количество страниц на сегмент (размер PT), | w | определяет размер страницы.

address_map(s, p, w)
{
pa = *(*(STR+s)+p)+w;
return pa;
}

Диаграмма находится здесь:

Segmented Paging

  • Paged Segmentation. Иногда таблица сегментов или таблица страниц могут быть слишком большими для хранения в физической памяти (они могут даже достигать MB). Поэтому таблица сегментов также разделяется на страницы и, следовательно, таблица страниц страниц ST. Номер сегмента разбивается на номер страницы (s1) и смещение страницы (s2) таблицы страниц ST-страниц. Таким образом, виртуальный адрес может быть описан как:

va = (s1, s2, p, w)

address_map
(s1, s2, p, w)
{
pa = *(*(*(STR+s1)+s2)+p)+w;
return pa;
}

Описание диаграммы находится здесь: Paged Segmentation

Ответ 2

Лучшие характеристики подкачки

Дело в том, что пейджинг имеет следующие плюсы:

  1. Быстрое распределение (по крайней мере, быстрее, чем сегментация)
  2. Без внешней фрагментации (последняя страница этого метода страдает от внутренней фрагментации)

Лучшие характеристики сегментации

Но при сегментации также наблюдается отличное поведение:

  1. разделение
  2. защита

Данные термины, могут быть объединены и создавать следующие термины:

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

Требования к сегментированному пейджингу

Для достижения сегментированного пейджинга необходимо выполнить несколько шагов:

  1. Каждая запись таблицы сегментов представляет базовый адрес таблицы страниц.
  2. STR (регистр таблицы сегментов) и PMT (таблица карт страниц) заполняются требуемыми значениями.
  3. Каждый виртуальный адрес состоит из номера сегмента, номера страницы и смещения на этой странице.
  4. Номер сегмента индексирует в таблицу сегментов, которая дает нам базовый адрес таблицы страниц для этого сегмента.
  5. Номер страницы индексируется в таблицу страниц.
  6. Каждая запись таблицы страниц является фреймом страницы.
  7. Окончательный результат, который является физическим адресом, определяется путем добавления номера фрейма страницы и смещения.

Требования к постраничной сегментации

В этой схеме выполняются следующие шаги:

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

Ответ 3

Сегментация приводит к более медленному переводу страниц и замене

По этим причинам сегментация в значительной степени снизилась на x86-64.

Основное различие между ними заключается в следующем:

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

Хотя может показаться умнее иметь настраиваемые ширины сегментов, поскольку вы увеличиваете размер памяти для процесса, фрагментация неизбежна, например:

|   | process 1 |       | process 2 |                        |
     -----------         -----------
0                                                            max

в конечном итоге станет с ростом процесса 1:

|   | process 1        || process 2 |                        |
     ------------------  -------------
0                                                            max

до тех пор, пока раскол не будет неизбежен:

|   | process 1 part 1 || process 2 |   | process 1 part 2 | |
     ------------------  -----------     ------------------
0                                                            max

В этот момент:

  • единственным способом перевода страниц является выполнение двоичных запросов по всем страницам процесса 1, что делает неприемлемым log (n)
  • своп из процесса 1 часть 1 может быть огромной, поскольку этот сегмент может быть огромным.

Однако с фиксированными размерами:

  • каждый 32-битный перевод выполняет только 2 чтения: каталоги и просмотр таблицы страниц
  • каждый своп является приемлемым 4KiB

Фиксированные куски памяти просто более управляемы и доминируют в разработке текущей ОС.

См. также: Как работает подкачка x86?