русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сегментация

Альтернативным способом распределения пользовательской программы является сегментация. В этом случае программа и связанные с нею данные разделяются на ряд сегментов. Хотя и существует максимальный размер сегмента, на них не накладывается условие равенства размеров. Как и при страничной организации, логический адрес состоит из двух частей, в данном случае — номера сегмента и смещения.

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

Еще одно следствие того, что сегменты имеют разные размеры, состоит в отсутствии простого соотношения между логическими и физическими адресами. Аналогично страничной организации, схема простой сегментации использует таблицу сегментов для каждого процесса и список свободных блоков основной памяти. Каждая запись таблицы сегментов должна содержать стартовый адрес сегмента в основной памяти и его длину, чтобы обезопасить систему от использования некорректных адресов. При работе процесса адрес его таблицы сегментов заносится в специальный регистр, используемый аппаратным обеспечением. Рассмотрим адрес из п+т бит, где крайние слева п бит являются номером сегмента, а правые т бит — смещением. В нашем примере, помещенном на рис* 7.11,в, n = 4 и т = 12. Таким образом, максимальный размер сегмента составляет 212 = 4096. Для трансляции адреса необходимо выполнение следующих действий.

Выделить из логического адреса п крайних слева битов, получив таким об­разом номер сегмента.

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

Требуемый физический адрес представляет собой сумму физического адреса начала сегмента и смещения.
В нашем примере имеется логический адрес 0001001011110000, представляющий собой сегмент номер 1, смещение 752. Предположим, что этот сегмент располагается в основной памяти начиная с физического адреса 0010000000100000. Тогда интересующий нас физический адрес равен 0010000000100000+001011110000 = 0010001100010000 (см. рис. 7.12,б).
Итак, в случае простой сегментации процесс разделяется на ряд сегментов, размер которых может быть разным. При загрузке процесса все его сегменты размещаются в свободных областях памяти, и соответствующая информация вносится в таблицу сегментов.

Просмотров:

Вернуться в оглавление:Операционные системы




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.