- •Лекция 5. Межпроцессное взаимодействие. Сигналы
- •Сообщения
- •Разделяемая память Сокеты
- •Межпроцессное взаимодействие в Unix
- •Разделяемая память
- •Переменные окружения
- •Наследование переменных окружения
- •Сигналы
- •Основные сигналы:
- •Использование сигналов при межпроцессном обмене
- •Каналы(unix)
- •Неименованный канал между двумя процессами
- •Почтовые ящики
- •Межзадачное взаимодействие в ос qnx Neutrino
- •Синхронный обмен сообщениями
- •Копирование сообщений
- •Простые сообщения
- •Каналы и соединения
- •Импульсы
- •Наследование приоритетов
- •Программный интерфейс механизма обмена сообщениями
- •События
- •Уведомления ввода/вывода
- •Сигналы
- •Специальные сигналы
- •Краткое описание сигналов
- •Очереди сообщений в стандарте posix
- •Преимущества очередей сообщений стандарта posix
- •Интерфейс, аналогичный файлам
- •Функции управления очередями сообщений
- •Разделяемая память
- •Разделяемая память с механизмом обмена сообщениями
- •Создание объектов разделяемой памяти
- •Неименованные и именованные каналы
- •Службы управления часами и таймерами
- •Таймеры
Таймеры
ОС QNX Neutrino обеспечивает полный набор таймеров стандарта POSIX.
Модель таймеров стандарта POSIX имеет весьма широкие возможности. Срок действия таймера может определяться следующими параметрами:
абсолютной датой;
относительной датой (например, "n наносекунд от настоящего момента");
циклическим периодом (например, "каждые n наносекунд").
Так как таймеры являются разновидностью источников событий в ОС, они также используют систему передачи событий. Это дает возможность приложению потребовать, чтобы все события, реализуемые в QNX Neutrino, доставлялись при возникновении таймаута.
В ОС QNX Neutrino используется вызов ядра TimerTimeout(), позволяющий приложению задать список состояний блокировки, при которых должен быть запущен соответствующий таймаут. В результате, когда приложение делает запрос ядру, ядро автоматически включает установленный таймаут в том случае, если приложение может быть блокировано по какому-либо из заданных состояний.
В табл. 2.22 приведены функции, используемые при работе с таймерами.
Таблица 2.22. Вызовы микроядра и соответствующие POSIX-вызовы
Вызов микроядра |
POSlX-вызов |
Описание |
TimerAlarm() |
alarm() |
Установить для процесса "будильник" |
TimerCreate() |
timer_create() |
Создать интервальный таймер |
TimerDestroy() |
timer_delete() |
Уничтожить интервальный таймер |
TimerGettime() |
timer_gettime() |
Получить остаток времени в интервальном таймере |
TimerGetoverrun() |
timer_getoverrun() |
Получить количество переполнений интервального таймера |
TimerSettime() |
timer_settime{) |
Запустить интервальный таймер |
TimerTimeout() |
sleep(), nanosleep(), sigtimed-wait(), pthread_cond_timedwait(), pthread_mutex_trylock(), intr_timed_wait() |
Включить таймаут ядра для какого-либо состояния блокировки |
