E1Distributed operating system project
ГлавнаяАрхитектура Е1ДокументыКоманда
Rus
Eng
Архитек...Потоки
Архитектура E1
Концепциии E1
Распределенный объект
Обзор архитектуры
Домены защиты
Междоменные вызовы
Потоки
Компонентные сервисы
Репликация
Разработка ПО
Потоки

Модель выполнения Е1 основана на концепции мигрирующих потоков [18]. В каждый момент времени поток выполняется в контексте некоторого объекта. При вызове метода выполнение потока переносится в вызываемый объект. Таким образом, поток не связан перманентно с каким-либо объектом или доменом. В работе [18] показано, что мигрирующие потоки лучше, чем традиционные статические потоки адаптированы для работы в объектной среде. Поскольку каждый метод выполняется тем же потоком, который его вызвал, нет необходимости запускать отдельный поток для обработки каждого вызова или буферизовать вызовы для их последовательной обработки. Как следствие, модель мигрирующих потоков обеспечивает более эффективную передачу управления между объектами, а также упрощает разработку объектов и делает их более легковесными.

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

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

Поскольку в Е1 вызов метода распределенного объекта это вызов его локальной реплики, то он никогда не приводит к переносу выполнения потока в другой узел. Существует, однако, ситуация, когда поток может перемеcтить выполнение в удаленный узел. Такая необходимость возникает тогда, когда стратегия репликации объекта предусматривает миграцию одной из его реплик между узлами системы (>>). Тогда состояние объекта переносится вместе с выполняющимися в нем потоками. После завершения выполнения метода поток возвращается на исходный узел.

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

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

Copyright E1 Team 2003
mail:team@E1OS.org