- •Классификация программного обеспечения (по)
- •Трансляторы
- •Языки программирования
- •Инструментальные средства
- •Прикладное по
- •Основные задачи ос
- •Концептуальные основы построения ос
- •Управление данными
- •Типы ос
- •Ос с сетевым ядром:
- •Загрузчики ос
- •Связывание в настраивающем загрузчике
- •Перемещение в настраивающих загрузчиках
- •Непосредственно связывающие загрузчики
- •Формат объектного модуля
- •Алгоритм работы непосредственно связывающего загрузчика
- •Этапы загрузки операционной системы
- •Ядро ос
- •Управление заданиями и процессорами.
- •Планировщик заданий
- •Цели при планировании
- •Понятие приоритета
- •Типы ос по архитектурам их ядра
- •Базовые объекты ос
Ос с сетевым ядром:
Общий случай (совокупность ОС, отдельных машин, взаимодействущеюх по четко определенным протоколам с целью обмена сообщениями и обеспечения разделения ресурсов)
Локальная ОС (сервер для предоставления локальных ресурсов в общее пользование, ведении справочников сетевых ресурсов, обработка запросов удаленного доступа к локальным ресурсам, управление очередями запросов удаленного доступа, локальных периферийных устройств, коммуникационные средства, использование для обмена данных, адресация сообщений, выбор маршрута, обеспечение надежности передачи
11.02.2014
Лекция ОС № 4
Загрузчики ос
Загрузчик — это программа, которая подготавливает объектную программу к выполнению и инициирует ее выполнение
Функции загрузчика:
Выделение места для программ в памяти (распределение).
Фактическое размещение команд и данных в памяти (загрузка).
Разрешение символических ссылок между объектами (связывание).
Настройка всех величин в модуле, зависящих от физических адресов в соответствии с выделенной памятью (перемещение).
Передача управления на входную точку программы (инициализация).
Функция распределения служит для размещения программы в оперативной памяти должно быть найдено и выделено свободное место в памяти. Для выполнения этой функции загрузчик обращается к ОС, которая выполняет его запрос на выделение памяти в рамках общего механизма управления памятью.
Функция загрузки сводится к считыванию образа программы с диска или другого внешнего носителя в оперативную память.
Функция связывания состоит в компоновки программы из многих объектных модулей.
Функция перемещения необходима, потому что программа на любом языке разрабатывается в некотором виртуальном адресном пространстве, в котором адресация ведется относительно начала программной секции.
Существуют программы, которые при написании рассчитываются на размещение в определенных адресах памяти, так называемые абсолютные программы. Подготовка таких программ к выполнению значительно проще и выполняется абсолютным загрузчиком.
Функция абсолютного загрузчика:
Функция распределения не выполняется, так как реальное адресное пространство, в котором размещается программ, предполагается свободным.
Функция загрузки выполняется, но она предельно проста.
Функция связывания может быть исключена из абсолютного загрузчика, поскольку все адреса программы известны заранее.
Функция перемещения исключается
Функция инициализации остается
Абсолютными программами могут быть системные программы самого низкого уровня, подавляющие большинство системных и все прикладные программы являются перемещаемыми, то есть они могут загружаться для выполнения в любую область памяти. Для таких программ выполняет перечисление функции в полном объеме.
Связывание в настраивающем загрузчике
Проблема связывание в настраивающем загрузчике решается с помощью вектора перехода. Вектор перехода включается в состав объектного модуля и содержит список всех внешних имен, которым есть обращение в модуле с полем адреса для каждого имени.
Вектор перехода заполняется при обработке директив типа exst (перечисление внешних имен). В команду программы, обращающеюся к внешним именам вставляется обращение к адресному полю соответствующего элемента вектора перехода с признаком косвенного обращения. При загрузки в оперативную память вектор перехода загружается вместе с кодами программы и остается в памяти все время выполнения программы. Когда загрузчик компонует программу из нескольких объектных модулей, он узнает все фактические адреса всех входных точек вектора переходов, тех модулей, которые обращаются к данной входной точке и вставляет эти адреса. Обращение к внешней точке, таким образом, производится косвенно через вектор перехода.
