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

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

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

Разделение между фиксированным и переменным разделением неэффективно с точки зрения использования памяти, поскольку фиксированное разделение приводит к внутреннему, а динамическое - к внешней фрагментации. Возможное решение проблемы фрагментации - позволить процессу не записываться в непрерывный блок памяти. Программа может произвольно разбрасываться в памяти. В этом случае рабочая память делится на меньшие блоки фиксированного размера, называемые кадрами. Логическое адресное пространство программы также разделено на блоки одинакового размера, называемые страницами. Когда программа вводится в память, страницы записываются в свободные кадры памяти. Для удобства переноса программ с диска в рабочую память диск также разделен на кадры того же размера, что и кадры памяти. Таким образом, один кадр с диска записывается в один кадр рабочей памяти. Пейджинговая система работает следующим образом: когда программа принята к исполнению, рассчитывается ее размер, который выражается с требуемым количеством страниц. Если достаточное количество кадров свободно, процесс записывается на странице памяти на странице. В то же время количество кадров, в которых написана каждая страница, заносится в таблицу кадров..

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

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

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

1. Концепция пейджинга и сегментации

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

2. Характеристики пейджинга и сегментации

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

3. Преимущества пейджинга и сегментации

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

Пейджинг против сегментации: сравнительная таблица

Paging

сегментация

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

Резюме пейджинга и сегментации

  • Пейджинг основан на распределении всего адресного пространства по блокам фиксированной длины, которые работают как квантование памяти. Кроме того, необходимо предоставить средство для маркировки доступной памяти, которое может быть выполнено с помощью наличия «заголовка» каждой страницы, указывающего статус страницы (глобальный связанный список, где каждый узел указывает на следующую свободную страницу), или путем размещение адреса свободной страницы в глобальном массиве, что обычно является худшим решением.
  • Сегментация означает разделение адресного пространства на сегменты, которые имеют четко обозначенные права доступа к процессору MMU. Внутри сегмента процессы выделяют столько памяти, сколько им нужно, но проблема управления памятью заключается в том, как обеспечить такое распределение, при котором оно может сохранить достаточно большой объем непрерывной памяти блока, который может потребовать некоторого времени..