Cтраница 4
![]() |
Использование функций exit и atexit ( часть 1 из 2. [46] |
При выполнении функции exit вызываются функции, предварительно зарегистрированные функцией atexit в порядке, обратном порядку их регистрации; все потоки, связанные с программой, очищаются и закрываются и управление возвращается среде выполнения. В программе на рис. 18.4 показан пример использования функций exit и atexit. Программа предлагает пользователю определить, должна ли она завершаться вызовом exit или оператором return в конце функции main. Обратите внимание, что функция print выполняется при любом способе завершения программы. [47]
При выполнении функции exit вызываются функции, предварительно зарегистрированные функцией atexit в порядке, обратном порядку их регистрации; все потоки, связанные с программой, очищаются и закрываются и управление возвращается среде выполнения. [48]
Система предварительной обработки содержит комплекс программ, реализующих целое множество функций. Среда выполнения также имеет свою структуру, причем существуют различные способы ее структурной организации. Могут меняться варианты распределения функций между отдельными модулями, механизмы межпрограммной связи, обычно включаемые в среду выполнения, и ее функциональный состав. [49]
Окружение ( environment), в котором функционирует объект. Средой выполнения прикладной программы являются ЭВМ, ОС, ЗУ, наборы данных. [50]
![]() |
Концентрические кольца защиты системы Multics. [51] |
Может быть, это покажется несколько странным, но появившаяся недавно тенденция к структурному и функциональному упрощению ядер частично объясняется повышением требований, предъявляемых к операционным системам в целом. Если среда выполнения предназначена только для непосредственного обслуживания запросов прикладных программ, то скорее всего следует обеспечить высокоуровневые интерфейсы и большие функциональные возможности. Если же порядок использования операционной системы меняется и прикладные программы все чаще и чаще начинают обращаться к системе со специфическими запросами, возникающими как следствие работы в режиме диалога и применения специальных средств обработки транзакций, то логично включить в модули нижнего уровня меньшее число функций. В какой-то мере ситуация с ядром напоминает ситуацию с системой машинных команд. Чем изощреннее становится программирование и чем выше наши требования к машине, тем выгоднее оказывается обеспечивать лишь примитивные команды, возлагая всю фактическую нагрузку на компиляторы. [52]
Если среда выполнения не содержит специального механизма синхронизации, то допустимо только параллельное считывание информации файла. Если в среде выполнения такой механизм есть, то появляется возможность параллельного выполнения программ, в определенной последовательности считывающих, обновляющих и добавляющих записи одного и того же файла. [53]
Исследованы две проблемы, возникающие при рассмотрении существующих систем с виртуальными ЭВМ, - проблемы распределения ресурсов и защиты. Автор развивает идею иерархии среды выполнения. Так, ЭВМ, не имеющая операционной системы, является средой выполнения для монитора виртуальной машины [7. 57], который в свою очередь создает среду выполнения для операционных систем. В этой связи автор выводит правила распределения ресурсов и способы защиты. Представлена архитектура вычислительной машины, необходимая для реализации этих концепций. [54]
Мы уже много раз обращали внимание читателяна ( тх, что среда выполнения фактически является реализацией мегамашиньт, предоставляющей пользователям помимо системы стандартных машинных команд специальные макрокоманды. Независимо от структуры поддержки среды выполнения прикладная программа всегда может обратиться к системе с конкретными запросами с помощью макрокоманд, переводящих машину в режим управления, что позволяет использовать некоторые, обычно защищенные, области памяти и выполнять некоторые, обычно недоступные, команды. [55]