Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
05_Konspkt_lektsy_OS / Лекции_ОС_12.doc
Скачиваний:
50
Добавлен:
02.04.2015
Размер:
152.58 Кб
Скачать

Программная иерархия

Во время выполнения программа проходит ряд уровней в программной иерархии.

Исполняемые программы

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

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

В AIX версии 4 операционная система дополнительно создает нить процесса. Нить определяет текущее состояние выполнения отдельного экземпляра программы. В AIX версии 4 время процессора и другие ресурсы выделяются отдельным нитям, а не всему процессу. Прикладная программа может создавать несколько нитей внутри одного процесса. Такие нити совместно используют ресурсы процесса, в котором они запущены.

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

Обработчики прерываний

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

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

Ожидающие нити

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

Нити, готовые к выполнению

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

Соседние файлы в папке 05_Konspkt_lektsy_OS