Разница в производительности сегментации и пейджинга и применение в ОС

avatar
Satyam Dwivedi
9 августа 2021 в 07:14
64
1
0

Я хотел узнать, в чем именно заключается прирост производительности при использовании пейджинга по сравнению с сегментацией в современных операционных системах, поскольку одна страдает от внешней фрагментации, а другая от внутренней фрагментации >, и оба должны обратиться к соответствующим таблицам один раз, а затем обратиться к адресу памяти, указанному для извлечения информации (один раз игнорируя TLB).

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

Источник

Ответы (1)

avatar
mevets
10 августа 2021 в 02:15
1

Распространенной ошибкой является предположение, что segmentation относится к реализации механизма защиты на основе сегментов в архитектурах Intel 432, 80[2345]86, а рудиментарные остатки перенесены в архитектуру AMD64. Сегментированные архитектуры существовали как минимум за 20 лет до того, как 432 или 80286 увидели свет в литографии.

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

Говоря более конкретно, например, в архитектуре Intel 80x86, перевод на уровне страницы происходил после перевода сегмента. Это означало, что изменение базы распределения сегмента просто требовало перемещения записей таблицы страниц, так что на самом деле это не имело большого значения.

К сожалению, в случае с Intel это означало, что указатели должны были состоять из пары: (сегмент, смещение). Таким образом, два указателя можно было разумно сравнивать или вычислять только в том случае, если их компонент seg совпадал, и понятие такого нечетного указателя вызывало всевозможные трудности программирования.

Несмотря на то, что в некоторых операционных системах использовалась сегментация, я знаком с OS2 и QNX. OS/2 могла быть или не быть производительной; Мне так и не удалось пройти дальше 18-й дискеты из 32-дисковой инсталляционной системы.

Однако QNX была удивительно производительной операционной системой, способной как втиснуться в очень маленькую площадь, так и эффективно использовать большие площади дня. В те дни маленькие следы были < 1M (да, 10 ^ 6), а большие - 64M ( 64 * 10 ^ 6 ). Он использовал перевод сегмента вместо перевода страницы, как описано выше. Для 32-битных программ он поддерживал только несегментированную модель приложения, однако базовая система широко использовала сегменты в качестве высокоскоростных устройств защиты и защиты. 16-битные программы пострадали от уродливой модели сегмента.

TL;DR Сегментная модель Intel — только одна и, возможно, одна из худших.

Операционные системы могут прозрачно использовать его для различных оптимизаций.

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

Архитектура ARM имеет MPU, который представляет собой модуль защиты на основе гибких сегментов, однако не выполняет преобразования.