Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
27
Добавлен:
02.05.2014
Размер:
164.86 Кб
Скачать

Раздел 8. Управление информацией в операционных средах

8.1. Общая характеристика связывания объектов

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

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

Объекты, которые составляют любую программную среду, представляются своими внешними именами. Мы обращаемся к объектам по их внешним именам.

Внешние имена объектов - это, как правило, цепочки символов. Например, идентификаторы переменных в программах.

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

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

Эта технология называется технологией связывания и составляет суть управления информацией в операционной среде.

Итак, есть внешнее имя объекта, а есть его внутреннее имя - адрес. Отношение, определенное на множестве имен и адресов, называется цепью доступа.

Приведенный рисунок иллюстрирует простую однозвенную цепь доступа.

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

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

Помимо простой цепи доступа может существовать сложная цепь доступа - цепь доступа через дескриптор:

Доступ через дескриптор сложнее, чем простой доступ, но обладает более богатыми возможностями.

Дескриптор - это сложная структура данных, описывающая объект. Содержание дескриптора зависит от характера объекта.

Примеры дескрипторов из различных разделов ОС нам известны:

1) дескрипторы процессов;

2) дескрипторы сегментов;

3) дескрипторы файлов.

Использование дескрипторов обладает следующими достоинствами:

1) Дескриптор, как средство доступа к объекту, позволяет легко контролировать и регламентировать доступ к объекту;

2) Дескриптор, как средство косвенного доступа к объекту, позволяет динамически менять путь доступа к объекту или перемещать объект в памяти;

3) Дескриптор - это, как правило, программная структура фиксированного размера, что облегчает управление ею, например, передачу в процедуру в качестве параметра.

Построение цепи доступа называется связыванием.

Связывание может производиться на различных этапах жизненного цикла объекта:

1) На этапе написания программы (в кодах). Каждый объект сразу представляется своим абсолютным адресом. Эффективность выполнения такой программы очень высока, но проблемы модификации и переносимости решаются очень тяжело. Такие программы можно писать для не очень сложных контроллеров встроенных систем.

2) На этапе трансляции программы. Здесь появляется ассемблер - символическая запись команд и данных. Во время трансляции имена переменных - идентификаторы заменяются абсолютными адресами. Программы получаются неперемещаемыми.

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

Если программа состоит из ряда модулей, а это имеет место практически всегда (даже если программист пишет программу, состоящую из одного модуля, он все равно использует библиотечные модули), загрузку предваряет редактирование связей.

Редактирование связей - это установление связей между объектами, находящимися в различных оттранслированных модулях, и создание перемещаемого загрузочного модуля. Этот загрузочный файл содержит все требуемые библиотечные модули.

4) На этапе выполнения программы. В этом случае связывание называется динамическим.

Примерами динамического связывания являются виртуальные методы Объектно-Ориентированного Программирования, а также динамические библиотеки.

Динамическое связывание делится на два вида:

1) Динамическое связывание на этапе загрузки, когда требуемые библиотечные модули подгружаются к программе на этапе ее загрузки. Такой способ связывания называется неявным.

2) Динамическое связывание на этапе выполнения, когда библиотечные модули подгружаются по мере надобности явными вызовами из программы. Такой способ связывания называется явным.

Далее мы более подробно рассмотрим второй, третий и четвертый методы связывания.

Соседние файлы в папке Шпоры по СПО