
- •1. Общая х-ка систем реального времени
- •4._Архітектура ос qnx-6.
- •5. Основні компоненти ос рч та їх загальна характеристика (планувальник задач та диспетчер (ядро), обробники переривань, програма стеження за часом, адміністратор ресурсів).
- •6.Правила диспетчеризації потоків в сучасних ос рч (fifo,rr,тощо). Рівні пріоритетів. Механізми синхронізації.
- •8.Стани задач в ос рч
- •9.Планування та диспетчеризація задач в ос рч. Чинники та алгоритми планування.
- •10. Механізми взаємодії задач в ос рч (повідомлення, схеми обміну повідомленнями).
- •11. Концепция потоков и процессов
- •12. Методи синхронізації потоків.
- •13. Архітектура ос qnx-6.
- •14. Алгоритми планування задач в ос qnx-6
- •15. Дисципліни та правила диспетчеризації потоків в ос qnx-6.
- •16. Стани потоків в ос qnx-6
- •17. Запуск процесів та потоків в ос qnx-6.
- •18. Створення потоків в ос qnx-6
- •19. Копіювання процесів в ос qnx-6
- •20. Атрибути потоків в ос qnx-6.
- •21.Синхронизация потоков по мютексу.
- •22.Синхронизация потоков по семафору.
- •23.Синхронізація потоків за „приєднанням”. (взято из Кертона, изменяй, когда переписываешь)
- •24. Синхронізація потоків за «бар'єром».
- •25. Синхронізація операцій читання-запису.
- •26.Синхронізація потоків за ”чекаючим блокуванням”.
- •27.Алгоритм взаємодії потока-виробника та потока-приймача інформації на основі „чекаючих блокувань”.
- •28.Синхронізація потоків за „умовними змінними”.
- •29.Пули (pool) потоків та їх використання.
- •30. Алгоритм керування числом потоків в пулі потоків.
- •31. Обмін повідомленнями за моделлю "клієнт - сервер".
- •33. Обмін повідомленнями за моделлю "клієнт – сервер - субсервер". Смотри далее.
- •34. Обмін повідомленнями за моделлю "клієнт – сервер - субсервер".
- •35. Механізм обміну повідомленнями між клієнтом та сервером в ос qnx-6.
- •36. Визначення потрібного сервера та жетон клієнта.
- •37. Обмін повідомленнями великого розміру.
- •38. Складені повідомлення та механізм iov.
- •39. Повідомлення за типом “імпульс”. Передача та прийом імпульсу.
- •40. Механізм стеження за часом. Годинники та таймери.
- •41. Механізм стеження за часом. Схеми повідомлення про «тайм-аут».
- •42. Створення та використання таймерів в ос qnx-6.
- •43. Тайм-аути ядра ос qnx-6.
- •44. Обробка переривань в ос qnx-6.
- •45. Розподіл загальної пам'яті між процесами (розповісти про shm_open, mmap, shm_unlink).
- •46. Мікроядро Neutrino та його можливості.
- •47. Розробка консольних проектів срч в середовищі qnx-6.
- •48. Мікроядро Photon та його можливості.
- •49. Розробка проектів срч в середовищі Application Builder.
40. Механізм стеження за часом. Годинники та таймери.
В QNX исчисление времени основывается на системном таймере, поддерживаемом операционной системой. Таймер содержит текущее значение Всемироного времени относительно 0 часов, 0 минут, 0 секунд 1 января 1970 года. Командные файлы и процессы могуть делать паузы выполнения на определенное время (засыпать). Для этого используется команда sleep(),nanosleep(). В этом случае ядро переводит поток в состояние блокировки и включает счетчик. В обработчике прерываний таймера значение счетчика сравнивается с текущим значением времени, и если заданный интервал задержки достигнут – ядро переводит процесс в состояние READY. Если несколько потоков запрашивают задержку, то соответствующие им счетчики упорядочиваются так, чтобы во главе был счетчик с наименьшим временем задержки, тогда ядро сравнивает с текущим временем только 1 значение – наименьшее. Значение счетчика = тек. Время вызова sleep() + задержка, укзанная как аргумент функции. Значения счетчиков упорядочиваются по абсолютным значениям. В QNX существует возможность подстройки аппаратного делителя для улучшения разрешающей способности отсчетов времени.
Вид ы таймеров: относительные (задаются относительно заданного времени), абсолютные (задаются относительно текущего момента времени), периодические (вызываемые несколько раз), однократные (срабатывающие один раз).
Для работы с таймером необходимо: создать объект типа таймер и создать структуру уведомления, выбрать нужный тип таймера, запустить таймер.
По истечении времени таймера происходит тайм-аут. Существуют различные схемы уведомления о тайм-ауте: с помощью импульса, сигнала, с помощью создания нового потока.
41. Механізм стеження за часом. Схеми повідомлення про «тайм-аут».
При использовании таймера задержки уведомление о тайм-ауте происходит посредством возвращения в состояние READY. При использовании периодических и однократных таймеров появляется выбор: послать импульс, послать сигнал, создать поток. Независимо от выбранной схемы уведомления, необходимо заполнить структуру struct sigevent. Тип уведомления задается в первом параметре этой структуры и может иметь одно из следующих значений: SIGEV_PULSE – будет передан импульс, SIGEV_SIGNAL, SIGEV_SIGNAL_CODE, IGEV_SIGNAL_THREAD – будет передан сигнал, SIGEV_UNBLOCK – предназначен для тайм-аутов ядра, SIGEV_INTR – предназначен для прерываний, SIGEV_THREAD – будет создан поток.
При уведомлении при помощи импульса необходимо обеспечить дополнительную информацию: идентификатор соединения, по каналу которогу будет передан импульс; данные импульса – 32-разрядное значение, 8-разрядный код, приоритет доставки импульса.
При уведомлении при помощи сигнала нужно заполнить ряд дополнительных полей: номер сигнала для передачи, 8-разрядный код сигнала.
При уведомлении при помощи создания потока необходимо заполнить такие поля: адрес функции, которая будет вызвана при возникновении события; значение, которое будет передано функции в качестве параметра; атрибутная запись потока.