Пейджинг и сегментирование
Управление памятью - одна из основных функций операционной системы. Современные операционные системы позволяют каждому процессу получать больше виртуальной памяти, чем общий размер фактической (физической) памяти на данной компьютерной системе. Основная цель управления памятью состоит в том, что, объединяя большую, но медленную память с небольшой, но высокоскоростной памятью, для достижения эффекта большей высокоскоростной памяти.
Что такое пейджинг?
Разделение между фиксированным и переменным секционированием неэффективно с точки зрения использования памяти, поскольку фиксированное разбиение на разделы приводит к внутреннему, а динамическому во внешней фрагментации. Возможное решение проблемы фрагментации - это возможность не записывать процесс в непрерывный блок памяти. Программа может быть разбросана произвольно в памяти. В этом случае рабочая память делится на более мелкие блоки фиксированного размера, называемые фреймами. Логическое адресное пространство программы также разделено на блоки одного размера, называемые страницами. Когда программа вводится в память, страницы записываются в свободные рамки памяти. Для удобства передачи программ с диска в рабочую память диск также разделяется на кадры того же размера, что и фреймы памяти. Таким образом, один кадр с диска записывается в один кадр рабочей памяти. Пейджинговая система работает следующим образом: когда программа принимается к исполнению, вычисляется ее размер, который выражается с требуемым количеством страниц. Если достаточное количество кадров является бесплатным, процесс записывается на страницу памяти на странице. В то же время количество кадров, в которых записана каждая страница, вводится в таблицу фреймов.
Что такое Сегментация?
Пользовательскую программу и связанные с ней данные можно разделить на несколько сегментов. Сегменты всех программ не должны быть одного размера, хотя максимальная длина сегмента. Как и в случае подкачки, логический адрес, который использует сегментацию, состоит из двух частей, в этом случае количество сегментов и дислокаций внутри этого сегмента. Из-за использования сегментов разного размера сегментация похожа на динамическое разбиение. В отсутствие схемы наложения или использования виртуальной памяти требуется, чтобы все программные сегменты загружались в память для выполнения. Разница по сравнению с динамическим разбиением состоит в том, что сегментация может занимать более одного раздела, и этот раздел не должен быть смежным. Сегментация решает проблему внутренней фрагментации, но, как и динамическое разбиение, остается проблема внешней фрагментации. Однако, поскольку процесс делится на несколько меньших частей, внешняя фрагментация обычно меньше. В отличие от поискового вызова, невидимого для программиста, сегментация обычно видима и подходит для организации программ и данных. Для модульного программирования программа или данные можно разделить на несколько меньших сегментов. Недостатком этого метода является то, что программист должен знать ограничения максимального размера сегмента. Следующее удобство использования сегментов разных размеров заключается в отсутствии предполагаемой связи между логическими и физическими адресами. Подобно пейджингу, простой метод сегментации использует таблицу сегментов для каждого процесса и список доступных блоков в основной памяти.
Разница между пейджингом и сегментацией
1. Понятие пейджинга и сегментации
Пейджинг обеспечивает виртуальное и физическое адресное пространство и дополнительное пространство памяти на блоках (страницах) одинаковой длины. Это позволяет постоянному виртуальному адресному пространству распределяться на процесс дисперсии (не обязательно постоянно распределенный) в реальном адресном пространстве и вторичной памяти. Даже страница, как термин, относится к памяти, а не к логическим объектам, которые видны на уровне программы. Сегментация предоставляет виртуальное адресное пространство для блоков (сегментов), которые непосредственно соответствуют объектам на уровне программы. Из-за этого сегмент не имеет фиксированной длины, поэтому даже размер сегмента может быть изменен во время выполнения программы. Таким образом, защита и деление возможны на уровне объекта, и есть видимые процессы, в которых выполняется сегментация.
2. Характеристики пейджинга и сегментации
Разработчик приложения не знает о пейджинге. Он пишет программы, как если бы память была линейной, а операционная система и процессор заботились о ее разбиении на разделы и преобразовании в виртуальные адреса. Однако программист по системам сегментации перечисляет две части адреса, сегмента и страницы в своих программах. Все страницы имеют одинаковый размер, а сегменты разные. Сегментация имеет несколько линейных адресных пространств и подкачки только одного. Сегменты позволяют логическое разделение и защиту компонентов приложения, а страницы - нет.
3. Преимущества пейджинга и сегментации
Пейджинг, прозрачный для программиста, устраняет внешнюю фрагментацию и, следовательно, обеспечивает эффективное использование основной памяти. Части, которые перемещаются в и из основной памяти, фиксированы и имеют одинаковый размер, поэтому можно разработать сложные алгоритмы управления памятью, которые используют поведение программы. Сегментация видна разработчику и имеет возможность управлять ростом структуры данных, модульности и поддержки обмена и защиты.
Пейджинг против сегментации: сравнительная таблица
Резюме пейджинга и сегментации
- Пейджинг основан на распределении всего адресного пространства на блоках фиксированной длины, которые управляются квантованием памяти. Кроме того, необходимо предоставить средство для маркировки доступной памяти, которое может быть выполнено при наличии «заголовка» каждой страницы, указывающего статус страницы (глобальный связанный список, где каждый узел указывает на следующую свободную страницу), или размещение свободного адреса страницы в глобальном массиве, что обычно является наихудшим решением.
- Сегментация означает разделение адресного пространства на сегменты, которые имеют четко обозначенные права доступа к процессору MMU. Внутри сегмента процессы распределяют ровно столько памяти, сколько им нужно, но проблема управления памятью заключается в том, как обеспечить такое распределение, где он может сохранить достаточно большую непрерывную блочную память, которая может потребоваться некоторое время.