Различия или сходства между сегментацией пейджинга и сегментированной сегментацией?
Я изучал комбинированные системы пейджинга/сегментации, и в моей книге было два подхода к этому:
1.paged segmentation
2.segmented paging
Я не мог разобрать разницу между ними. Я думаю, что в сегментированном сегментировании сегмент делится на страницы, а в сегментированном пейджинге страницы делятся на сегменты, хотя я не знаю, прав я или нет. Между тем в Интернете комбинированный пейджинг/сегментация описывается только по одной схеме. Я не могу понять, почему в моем учебнике есть две схемы для этого. Любая помощь будет глубоко оценена.
Ответы
Ответ 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
Лучшие характеристики подкачки
Дело в том, что пейджинг имеет следующие плюсы:
- Быстрое распределение (по крайней мере, быстрее, чем сегментация)
- Без внешней фрагментации (последняя страница этого метода страдает от внутренней фрагментации)
Лучшие характеристики сегментации
Но при сегментации также наблюдается отличное поведение:
- разделение
- защита
Данные термины, могут быть объединены и создавать следующие термины:
- Сегментированный пейджинг: виртуальное адресное пространство разделено на сегменты. Физическое адресное пространство разделено на фреймы страниц.
- Постраничная сегментация: основная методика сегментации, которая использует таблицу сегментов процесса, иногда выходит за рамки! Это означает, что размер становится слишком большим и в основной памяти недостаточно места для хранения таблицы сегментов. Поэтому таблица сегментов и номер сегмента делятся на страницы.
Требования к сегментированному пейджингу
Для достижения сегментированного пейджинга необходимо выполнить несколько шагов:
- Каждая запись таблицы сегментов представляет базовый адрес таблицы страниц.
- STR (регистр таблицы сегментов) и PMT (таблица карт страниц) заполняются требуемыми значениями.
- Каждый виртуальный адрес состоит из номера сегмента, номера страницы и смещения на этой странице.
- Номер сегмента индексирует в таблицу сегментов, которая дает нам базовый адрес таблицы страниц для этого сегмента.
- Номер страницы индексируется в таблицу страниц.
- Каждая запись таблицы страниц является фреймом страницы.
- Окончательный результат, который является физическим адресом, определяется путем добавления номера фрейма страницы и смещения.
Требования к постраничной сегментации
В этой схеме выполняются следующие шаги:
- Каждая запись сегмента делится на несколько сегментов.
- Для каждой записи таблицы сегментов, которая представляет сборку страниц, создается таблица страниц.
Ответ 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?