Программа как набор сегментов





Скачать 107.3 Kb.
НазваниеПрограмма как набор сегментов
Дата публикации04.04.2015
Размер107.3 Kb.
ТипПрограмма
100-bal.ru > Информатика > Программа
17. Лекция: Сегментная организация памяти
В лекции рассмотрены: сегментная организация памяти; cегментно-страничная организация памяти (MULTICS, "Эльбрус", Intel x86).
Содержание

  • Введение

  • Принципы сегментной организации памяти

  • Архитектура сегментной организации памяти

  • Пример сегментной организации памяти

  • Пример использования разделяемых сегментов

  • Сегментно-страничная организация памяти в системах MULTICS и "Эльбрус"

  • Сегментно-страничная организация памяти в системе Intel 386

  • Ключевые термины

  • Краткие итоги

  • Набор для практики

    • Вопросы

    • Упражнения

    • Темы для курсовых работ, рефератов, эссе

Введение

В лекции рассмотрена сегментная организация памяти – альтернатива страничной организации. Дано обоснование сегментной организации и ее связи с логической структурой программы. Рассмотрена смешанная – сегментно-страничная – организация памяти, применяемая во многих системах.

Принципы сегментной организации памяти

Сегментная организация памяти (segmentation) - схема распределения памяти в виде сегментов переменной длины, соответствующая пользовательской трактовке распределения памяти, т.е. логической структуре программ и данных. С точки зрения пользователя (разработчика программы), программа – это набор модулей кода и данных, каждому из которых должен соответствовать свой сегмент в памяти. Сегмент – логическая единица распределения памяти, предназначенная для размещения в памяти одного модуля программного кода или данных. Например, в виде сегментов памяти могут быть представлены:

  • основная программа;

  • процедура;

  • функция;

  • метод;

  • объект;

  • набор локальных переменных;

  • набор глобальных переменных;

  • общий блок данных (например, COMMON-блок в языке FORTRAN);

  • стек;

  • таблица символов;

  • массив.

рис. 17.1 иллюстрирует данную точку зрения на программу как на набор сегментов в памяти.



Рис. 17.1.  Программа как набор сегментов.

Архитектура сегментной организации памяти

Многие принципы архитектуры сегментной организации схожи с принципами страничной организации (см. "Страничная организация памяти"), однако во всех случаях приходится учитывать, что длина сегмента переменна, и хранить ее в явном виде в таблицах.

Логический адрес при сегментной организации памяти - пара:

,

где segment-number – номер сегмента, offset – смещение в сегменте.

Таблица сегментов – служит для отображения логических адресов в физические при сегментной организации памяти. Каждый ее элемент содержит следующую информацию:

  • base – начальный адрес сегмента в оперативной (физической) памяти;

  • limit – длину сегмента.

Базовый регистр таблицы сегментов - segment-table base register (STBR) содержит адрес таблицы сегментов в памяти.

Регистр длины таблицы сегментов - segment-table length register (STLR) содержит число сегментов, используемое программой.

Номер сегмента s корректен, если s < STLR.

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

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

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

  • validation-бит (аналогично страничной организации): значение бита, равное 0, означает, что сегмент неверный, т.е. не принадлежит логической памяти процесса;

  • полномочия чтения (read) / записи (write) / исполнения (execute) – каждое кодируется одним битом; значение бита, равное 0, означает, что процесс не имеет данных полномочий.

Например, если сегмент является сегментом данных, то система устанавливает в таблице сегментов бит защиты от исполнения равным 0. Если это сегмент кода, то целесообразна установка в 0 битов защиты от чтения и от записи. Биты защиты связываются с сегментами. Совместный доступ к коду осуществляется на уровне сегментов. В системе "Эльбрус" к стандартному набору признаков защиты был добавлен еще один: защита от записи в сегмент адресной информации (данный признак целесообразен, если, например, сегмент предназначен для записи в файл).

Поскольку сегменты различаются по длине, распределение памяти в виде сегментов – это общая задача динамического распределения памяти (см. "Страничная организация памяти").

На рис. 17.2 приведена схема адресации при сегментном распределении памяти. Логический адрес (s, d), где s – номер сегмента, d – смещение внутри сегмента, обрабатывается следующим образом. По номеру сегмента s происходит обращение в таблицу сегментов, и определяется база сегмента – его начальный адрес в основной памяти. Смещение d сравнивается с длиной (границей) сегмента. Если оно меньше, то оно складывается с базой, и в результате получается физический адрес, по которому и происходит обращение в память. Если смещение больше или равно базе, происходит прерывание – ошибка адресации. На схеме не показана еще одна проверка – для номера сегмента s проверяется, что он не превосходит значения регистра длины таблицы сегментов, иначе – прерывание.



Рис. 17.2.  Схема адресации при сегментной организации памяти.

Пользователи систем UNIX, Linux, Solaris наверняка по ассоциации вспомнят часто встречающееся системное сообщение: Segmentation violation (нарушение сегментации) при прерывании. Причина подобного сообщения обычно следующая: программа пытается обратиться по пустому (нулевому) указателю, номер сегмента в котором, естественно, равен 0, а номер сегмента 0 считается в системе недопустимым. Таким образом, через проверку номера сегмента, UNIX защищает от такой часто встречающейся ошибки, как обращение по пустому указателю. Аналогично, по той же самой причине, если программа пытается практически любое другое число (например, 5) рассматривать как адрес и обращаться по нему, то также генерируется прерывание и сигнал SIGSEGV (segmentation violation).

Пример сегментной организации памяти




Рис. 17.3.  Пример сегментной организации памяти.

В примере программа использует пять сегментов с номерами от 0 до 4: сегмент 0 – подпрограмма, сегмент 1 – стандартные подпрограммы (sqrt и др.), сегмент 2 – основная программа, сегмент 3 – стек, сегмент 4 – таблица символов. Показано размещение сегментов в памяти.

Пример использования разделяемых сегментов




Рис. 17.4.  Пример использования разделяемых сегментов.

В примере два процесса используют общий сегмент – код редактора, который имеет в таблицах сегментов обоих процессов один и тот же номер – 0. Кроме того, каждый из процессов имеет собственный сегмент данных с номером 1, однако эти сегменты, естественно, у обоих процессов разные.

Сегментно-страничная организация памяти в системах MULTICS и "Эльбрус"


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

Поэтому в системе MULTICS [25] проблемы внешней фрагментации и длительного времени поиска решены путем страничной организации памяти для сегментов. Данное решение отличается от чисто сегментной организации тем, что элемент таблицы сегментов содержит не базовый адрес сегмента, а базовый адрес таблицы страниц для данного сегмента.

В системе "Эльбрус" данные проблемы решены по-другому: в системе используется страничная организация для математической (виртуальной, логической) памяти и сегментная организация – для физической памяти. Математическая память (т.е. образ памяти на диске) распределяется с точностью до страницы, а физическая – с точностью до слова. Кроме того, как уже отмечалось, для адресации в системе "Эльбрус" используются дескрипторы массивов, содержащие начальный адрес, длину и признаки защиты массива.

Схема трансляции адресов в MULTICS приведена на рис. 17.5.



Рис. 17.5.  Схема трансляции адресов в MULTICS.

Логический адрес (s, d) используется следующим образом. Номер сегмента s складывается с содержимым регистра STBR, после чего происходит обращение по полученному адресу в таблицу сегментов. Смещение d сравнивается с длиной сегмента; если оно больше или равно длине сегмента,то прерывание. Из элемента таблицы сегментов извлекается адрес базы таблицы страниц данного сегмента, который складывается со старшими разрядами смещения (p). Младшие разряды смещения используются как смещение внутри страницы, адрес которой извлекается из таблицы страниц данного сегмента.

Нельзя не отметить, что данная схема, на наш взгляд, несколько усложнена. Система MULTICS, в которой этот и многие другие механизмы доведены, казалось бы, до совершенства, вызвала противоположную тенденцию в развитии ОС – к упрощению. Как мы уже говорили, даже название следующей системы – UNIX – выбрано как противоположность MULTICS, что говорит о многом. Таковы тенденции развития во многих областях, в том числе и в операционных системах.

Сегментно-страничная организация памяти в системе Intel 386


В более современных системах, чем MULTICS, также используется сегментно-страничная организация. Например, в системе Intel 386 используется сегментно-страничная организация памяти с двухуровневой схемой страничной организации (см. рис. 17.6).



Рис. 17.6.  Сегментно-страничная организация памяти в Intel 386.

Ключевые термины


Базовый регистр таблицы сегментов - segment-table base register (STBR) – регистр, содержащий адрес таблицы сегментов в памяти.

Логический адрес при сегментной организации памяти - пара:

, где segment-number – номер сегмента, offset – смещение в сегменте.

Признаки защиты – информация для защиты сегмента в элементе таблицы сегментов: validation-бит (признак корректности номера сегмента для процесса), биты защиты от записи, от чтения и от исполнения.

Разделяемые (общие) сегменты – сегменты, общие для нескольких процессов и имеющие одинаковые логические номера в их таблицах сегментов.

Регистр длины таблицы сегментов - segment-table length register (STLR) – регистр, содержащий число сегментов, используемое программой.

Сегмент – логическая единица распределения памяти, предназначенная для размещения в памяти одного модуля программного кода или данных.

Сегментная организация памяти (segmentation) - схема распределения памяти в виде сегментов переменной длины, соответствующая пользовательской трактовке распределения памяти, т.е. логической структуре программ и данных.

Сегментно-страничная организация памяти – модификация сегментной организации памяти для борьбы с фрагментацией, основанная на страничной организации каждого сегмента.

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

Краткие итоги


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

При сегментной организации логический адрес имеет вид: (номер сегмента, смещение внутри сегмента). Организуется системная таблица сегментов, каждый элемент которой содержит базовый адрес сегмента, его длину и признаки защиты – validation-бит, определяющий корректность номера сегмента, биты защиты от записи, чтения и исполнения. Базовый регистр таблицы сегментов содержит начальный адрес таблицы сегментов, регистр длины таблицы сегментов содержит ее длину.

Перемещение при сегментной организации осуществляется динамически, во время выполнения программы.

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

Стратегии распределения памяти при сегментной организации – методы первого подходящего и наиболее подходящего. Возможна внешняя фрагментация.

При адресации по логическому адресу для сегментной организации смещение внутри сегмента сравнивается с длиной сегмента из элемента таблицы сетментов. В случае превышения – прерывание.

Для борьбы с фрагментацией в некоторых системах (MULTICS, "Эльбрус|", Intel 386) применяется смешанная, сегментно-страничная организация памяти, при которой для каждого сегмента организуется собственная таблица страниц.

Набор для практики

Вопросы


  1. Что такое сегментная организация памяти?

  2. Что такое сегмент?

  3. Приведите примеры модулей кода и данных, память для которых распределяется в виде отдельных сегментов.

  4. Какую структуру имеет логический адрес при сегментной организации памяти?

  5. Что такое таблица сегментов?

  6. Какая информация хранится в элементе таблицы сегментов?

  7. Что такое регистр базы таблицы сегментов?

  8. Что такое регистр длины таблицы сегментов?

  9. На какой фазе (во время загрузки или исполнения) осуществляется перемещение при сегментной организации?

  10. Какие стратегии распределения памяти применяются при сегментной организации?

  11. Какие признаки защиты хранятся в элементе таблицы сегментов?

  12. Какое условие для номера сегмента проверяется при адресации?

  13. Что такое сегментно-страничная организация и для какой цели она используется?

Упражнения


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

  2. Реализуйте представление логического адреса при сегментно-страничной организации памяти, модель таблицы сегментов и схемы адресации.

Темы для курсовых работ, рефератов, эссе


  1. Обзор методов сегментной организации памяти в компьютерных системах (реферат).

  2. Обзор методов сегментно-страничной организации памяти в компьютерных системах (реферат).

  3. Реализация представления логического адреса при сегментной организации памяти, модели таблицы сегментов и схемы адресации (курсовая работа).

  4. Реализация представления логического адреса при сегментно-страничной организации памяти, модели таблицы сегментов и схемы адресации (курсовая работа).

Добавить документ в свой блог или на сайт

Похожие:

Программа как набор сегментов iconРеферат по рекламе на тему: «Философия брендинга потенциал, перспективы развития»
Атрибуты бренда могут быть как позитивными, так и негативными, могут иметь различную силу и важность для разных сегментов рынка
Программа как набор сегментов iconРеферат по рекламе на тему: «Философия брендинга потенциал, перспективы развития»
Атрибуты бренда могут быть как позитивными, так и негативными, могут иметь различную силу и важность для разных сегментов рынка
Программа как набор сегментов iconУчебник: А. А. Плешаков «Мир вокруг нас»
Оборудование: 3 ватмана, карта «Золотое кольцо России», набор иллюстраций о городах, набор слов помощников
Программа как набор сегментов iconТематический план дисциплины
Тема 14. Сегментирование рынка, выбор целевых сегментов и позиционирование товара
Программа как набор сегментов icon* “ Состояние и перспективы рыболовства в государствах-членах чэс
Охватывает как рыболовство, так и аквакультуру с активным участием всех сегментов рыбной индустрии, задействованных в восстановлении...
Программа как набор сегментов iconВ российской истории, вернее в ее освещении существует целый набор...
Они воспринимаются как аксиома, как нечто не требующее доказательств. Особенно много штампов в оценке деятельности русских царей...
Программа как набор сегментов iconПрограмма по формированию навыков безопасного поведения на дорогах...
Материальное обеспечение урока: аквариум с рыбками и другими обитателями, банка с одной рыбкой, компьютер, проектор, набор картинок-пазлов,...
Программа как набор сегментов iconРазвитие языков программирования
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования....
Программа как набор сегментов iconПриложение 1
Представляемые материалы – не готовый урок, а конструктор для его построения (материалы включают набор модулей, какие из них использовать...
Программа как набор сегментов iconПрограмма по формированию навыков безопасного поведения на дорогах...
Для уроков технологии: папка для труда, набор цветной бумаги, набор цветного картона, клей – карандаш, клей пва, кисть для клея,...
Программа как набор сегментов iconПрограмма по формированию навыков безопасного поведения на дорогах...
Включает в себя набор заданий для изучения английского языка в младших классах школы, таких, как презентации, упражнения и пр
Программа как набор сегментов iconРефератов для 9 го класса в мастерской математического моделирования
Математику, с одной стороны, можно рассматривать как язык для описания наблюдаемого мира, а с другой, как набор конструкций для теоретического...
Программа как набор сегментов iconСущность понятия «корпоративная культура» как метода управления
Каждому уровню, аспекту каждой функциональной области должен соответствовать свой набор инструментов, способов, мер выстраивания...
Программа как набор сегментов iconКак рассказать об особенностях экономики страны
Каждой исторической теме соответствует свой набор ключевых вопросов, изложенных в определенной последовательности. Ниже приводятся...
Программа как набор сегментов iconПрограмма по формированию навыков безопасного поведения на дорогах...
Если вы попросите человека решить эту задачу, проблем не возникнет, а как быть с компьютером. Для него любое число это набор нулей...
Программа как набор сегментов iconОтчет по дисциплине «ист в образовании»
Электронная коммерция в России дело новое, но очень бурно развивающееся. Сравним объемы различных сегментов рынка электронной коммерции...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск