Главная Новости Программы Статьи Контакты
Реклама
Новые файлы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Нас сегодня посетили:
Форма входа
Главная » Статьи » Компьютеры

Модель процесса Linux

Модель процесса Linux

Традиционная модель процесса, имеющаяся в Linux, — это разветвление (с помощью команды fork) для создания нового процесса, за которым следует команда exec для инициализации этого процесса кодом, предназначенным для выполнения, с последующим запуском его на выполнение. За управление этим выполнением отвечает оболочка, разветвляя и выполняя процессы, необходимые для работы команд оболочки. Когда происходит выход из этих команд, Linux удаляет процесс.
В Android процессы используются немного по-другому. Как говорилось в предыдущем разделе, посвященном приложениям, частью Android, отвечающей за управление запущенными приложениями, является диспетчер активностей. Он координирует запуск новых прикладных процессов, определяет, что в них будет запускаться, и тот момент, когда они уже будут не нужны.

Запуск процессов


Чтобы запустить новый процесс, диспетчер активностей должен быть связан с процессом zygote. При первом запуске диспетчера активностей он создает выделенный сокет с zygote, через который посылает команду, когда нуждается в запуске нового процесса. Команда прежде всего дает описание создаваемой песочницы: UID, под которым должен запуститься новый процесс, и любые другие ограничения, связанные с мерами
безопасности, которые будут применяться. Таким образом, zygote должен запускаться с root-правами: при разветвлении он выполняет соответствующую настройку для UID, с которым процесс будет запущен, и в конце сбрасывает root-права и изменяет процесс, присваивая ему нужный UID.
Вспомним, что в предыдущем рассмотрении Android-приложений говорилось, что диспетчер активностей обслуживает динамическую информацию о выполнении активностей, служб , рассылок  и поставщиков контента. Он использует эту информацию для контроля над созданием прикладных процессов и управления ими. Например, когда программа запуска приложения осуществляет вызов системы с новым намерением на запуск активности, за то, чтобы это новое приложение работало, отвечает диспетчер активностей.
Порядок запуска активности в новом процессе.

 А вот как выглядят подробности каждого этапа:
1. Какой-нибудь существующий процесс (например, предназначенный для запуска приложений) осуществляет вызов диспетчера активностей с намерением, дающим описание новой активности, которую он собирается запустить.
2. Диспетчер активностей просит, чтобы диспетчер пакетов провел разрешение намерения до явного компонента.
3. Диспетчер активностей определяет, что прикладной процесс еще не запущен, а затем просит zygote создать новый процесс с соответствующим UID.
4. Zygote выполняет ветвление, создает новый процесс, являющийся клоном себя самого, сбрасывает права и устанавливает его UID песочнице приложения, а затем завершает инициализацию Dalvik в этом процессе для полноценной работы среды выполнения Java. Например, после ветвления должны запускаться такие потоки, как сборщик мусора.
5. Новый процесс, представляющий собой клон zygote с полностью установленной и работающей Java-средой, осуществляет обратный вызов диспетчера активностей с вопросом: «Для чего я нужен?».
6. Диспетчер активностей возвращает ему полную информацию о запускаемом в нем приложении, например о том, где найти его код.
7. Новый процесс загружает код запускаемого приложения.
8. Диспетчер активностей отправляет новому процессу любую ожидающую операцию, в данном случае «Запустить активность X».
9. Новый процесс получает команду на запуск активности, создает экземпляр соответствующего Java-класса и выполняет его.



Free-Softs


Категория: Компьютеры | Добавил: admin (26.10.2015)
Просмотров: 729 | Рейтинг: 0.0/0


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]