Воскресенье, 28.06.2026
Шпаргалка :)
Меню сайта
Категории раздела
Мои статьи [172]
Наш опрос
Оцените мой сайт
Всего ответов: 259
Форма входа
Главная » Статьи » Мои статьи

10. Сегментация

Сегментация

обеспечить ма­шину множеством полностью независимых адресных пространств, называемых сегментами. Каждый сегмент содержит линейную последовательность адресов от О до некоторого максимума. Длина каждого сегмента может быть любой от нуля до разрешенного максимума. Различные сегменты могут быть различной длины. Более того, длины сегментов могут изменяться во время выполнения. Длина сегмента стека может увеличиваться всякий раз, когда что-либо помещается в стек, и умень­шаться при выборке данных из стека.

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

сегмент — это логический объект. Сегмент может иметь в со­ставе процедуру, массив, стек или набор скалярных переменных, но обычно он не содержит смеси различных типов.

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

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

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

Реализация сегментации

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

Сегментация с использованием страниц: Intel Pentium

Виртуальная память на компьютере Pentium включает наличие и сегментации, и страничной орга­низации. програм­мы редко нуждаются более чем в 1000 сегментах, но многим программам необхо­димы сегменты значительного размера. Основа виртуальной памяти системы Pentium состоит их двух таблиц: локаль­ной таблицы дескрипторов LDT (Local Descriptor Table) и глобальной таблицы дескрипторов GDT (Global Descriptor Table). У каждой программы есть своя соб­ственная таблица LDT, но глобальная таблица дескрипторов одна, ее совместно используют все программы в компьютере. Таблица LDT описывает сегменты, ло­кальные для каждой программы, включая ее код, данные, стек и т. д., тогда как таб­лица GDT несет информацию о системных сегментах, включая саму операцион­ную систему.

 

Категория: Мои статьи | Добавил: Eskander (14.06.2012)
Просмотров: 591 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2026
    Бесплатный конструктор сайтовuCoz