Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРВ complete edition епта.docx
Скачиваний:
21
Добавлен:
24.09.2019
Размер:
488.03 Кб
Скачать

175. Кто такой с. Зыль?

Сергей Зыль - автор следующих книг.

Книга "QNX Momentics. Основы применения" (Сергей Зыль)

Книга «Проектирование, разработка и анализ программного обеспечения систем реального времени» (Сергей Зыль)

Книга "ОС реального времени QNX: от теории к практике". 2-е издание. (Сергей Зыль)

176. Кто является автором переводной книги по программированию систем реального времени в среде qnx Neutrino?

Сергей Зыль ???

Кёртен, Р. Введение в QNX Neutrino 2: руководство по про-

граммированию приложений реального времени в QNX Realtime Platform/ Р. Кёртен – СПб.: Петрополис, 2001 - 480 с.

- СПб.:БХВ-Петербург, 2005 доп. тираж -400 с.

177. Назовите известные вам функции для запуска дочерних процессов в qnx Neutrino.

QNX поддерживают три примитива создания процесса:

• fork(); • exec(); • spawn().

Примитивы fork() и exec() определены стандартом POSIX, а примитив spawn() реализован только в QNX.

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

Примитив exec() Примитив exec() заменяет вызвавший процесс новым. После успешного вызова exec() возврата не происходит, т.к. образ вызывающего процесса заменяется образом нового процесса. Обычной практикой в POSIX-системах для создания нового процесса - без удаления вызывающего процесса - является сначала вызовfork(), а затем вызов exec() из порожденного процесса.

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

178. Какие характеристики дочерних потоков можно задавать при их создании с помощьюатрибутов?

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

Наследуемый параметр fork() exec() spawn()

Идентификатор процесса нет да нет

Открытые файлы да по выбору* по выбору

Блокировка файлов нет да нет

Ожидающие сигналы нет да нет

Маска сигналов да по выбору по выбору

Игнорируемые сигналы да по выбору по выбору

Обработчики сигналов да нет нет

Переменные окружения да по выбору по выбору

Идентификатор сеанса да да по выбору

Группа процесса да да по выбору

Реальные UID, GID да да да

Эффективные UID, GID да по выбору по выбору

Текущий рабочий каталог да по выбору по выбору

Маска создания файлов да да да

Приоритет да по выбору по выбору

Алгоритм диспетчеризации да по выбору по выбору

Виртуальные каналы нет нет нет

Символьные имена нет нет нет

таймеры реального времени нет нет нет

*по выбору: вызывающий процесс может по необходимости выбрать - да или нет.