
- •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.
8.Стани задач в ос рч
На протязі часу свого існування потік може знаходитися в 3 основних станах: виконуватися (RUNNING), бути готовим до виконання (READY), бути блокованим. Причин, з яких потік може стати блокованим, є багато, і тому визначена певна кількість станів блокування з відповідними назвами. Зазвичай після розблокування потік потрапляє до стану READY.
Зазначені назви станів означають наступне:
CONDVAR - потік блокований на умовній змінній (при виклику pthread_condvar_wait ()).
DEAD - потік закінчив виконання й очікує приєднання другого потоку, не звільняє ресурси.
INTERRUPT - потік блокований, очікує переривання (при виклику InterruptWait ()).
JOIN - потік блокований, очікує на приєднання до іншого потоку (при виклику pthread_join ()).
MUTEX - потік блокований на взаємно-виключному блокуванні (при виклику pthread_mutex_lock ()).
NANOSLEEP - потік не діє протягом короткого інтервалу часу (при виклику nanosleep ()).
NET_REPLY - потік очікує відповідь, що буде отримана через мережу (при виклику MsgReply * ()).
NET_SEND - потік очікує на імпульс або сигнал, що буде отриманий через мережу (при виклику MsgSendPulse (), MsgDeliverEvent (), чи SignalKill ()).
READY - потік очікує на виконання, у той час як процесор виконує інший поток такого ж або більш високого пріоритету.
RECEIVE - потік блокований, очікує повідомлення (при виклику MsgReceive ()).
REPLY - потік блокований, очікує відповідь на своє повідомлення (при виклику MsgSend () і сервер одержав повідомлення).
RUNNING - потік виконується процесором.
SEM - потік очікує на семафорі (при виклику SyncSemWait ()).
SEND - потік блокований на відправленні повідомлення (при виклику MsgSend (), але сервер не одержав повідомлення).
SIGSUSPEND - потік блокований, очікуючи сигнал (при виклику sigsuspend ()).
SIGWAITINFO - потік блокований, очікуючи сигнал (при виклику sigwaitinfo ()).
STACK - потік очікує віртуальний адресний простір, що буде розподілено для стека потоку (батько викликає ThreadCreate ()).
STOPPED - потік блокований, очікує сигнал продовження SIGCONT.
WAITCTX - потік очікує на неціле число, щоб стати доступним для використання.
WAITPAGE - потік очікує на фізичну пам'ять, що буде розподілена для віртуальної адресації.
WAITTHREAD - потік очікує на закінчення створення дочірнього потоку (при виклику ThreadCreate ()).
9.Планування та диспетчеризація задач в ос рч. Чинники та алгоритми планування.
Большинство ОСРВ выполняют планирование задач, руководствуясь следующей схемой. Каждой задаче в приложении ставится в соответствие некоторый приоритет. Чем больше приоритет, тем выше должна быть реактивность задачи. Высокая реактивность достигается путем реализации подхода приоритетного вытесняющего планирования (preemptive priority scheduling), суть которого заключается в том, что планировщику разрешается останавливать выполнение любой задачи в произвольный момент времени, если установлено, что другая задача должна быть запущена незамедлительно.
Описанная схема работает по следующему правилу: если две задачи одновременно готовы к запуску, но первая обладает высоким приоритетом, а вторая низким, то планировщик отдаст предпочтение первой. Вторая задача будет запущена только после того, как завершит свою работу первая.
Возможна ситуация, когда задача с низким приоритетом уже запущена, а планировщик получает сообщение, что другая задача с более высоким приоритетом готова к запуску. Причиной этому может послужить какое-либо внешнее воздействие (прерывание от оборудования), как, например, изменение состояния переключателя устройства, управляемого ОСРВ. В такой ситуации планировщик задач поведет себя согласно подходу приоритетного вытесняющего планирования следующим образом. Задаче с низким приоритетом будет позволено выполнить до конца текущую ассемблерную команду (но не команду, описанную в исходнике программы языком высокого уровня), после чего выполнение задачи останавливается. Далее запускается задача с высоким приоритетом. После того, как она прорабатывает, планировщик запускает прерванную первую задачу с ассемблерной команды, следующей за последней выполненой.
Каждый раз, когда планировщик задач получает сигнал о наступлении некоторого внешнего события (триггер), причина которого может быть как аппаратная, так и программная, он действует по следующему алгоритму.
-Определяет, должна ли текущая выполняемая задача продолжать работать.
-Устанавливает, какая задача должна запускаться следующей.
-Сохраняет контекст остановленной задачи (чтобы она потом возобновила работу с места останова)
-Устанавливает контекст для следующей задачи.
-Запускает эту задачу.
В обычных ОСРВ задача может находиться в 3-х возможных состояниях:
-Задача выполняется;
-Задача готова к выполнению;
-Задача заблокирована.
Большую часть времени основная масса задач заблокирована. Только одна задача может выполняться на центральном процессоре в текущий момент времени. В примитивных ОСРВ список готовых к исполнению задач, как правило, очень короткий, он может состоять не более чем из двух-трех наименований.
Основная функция администратора ОСРВ заключается в составлении такого планировщика задач.
Если в списке готовых к выполнению задач последних имеется не больше двух-трех, то предполагается, что все задачи расположены в оптимальном порядке. Если же случаются такие ситуации, что число задач в списке превышает допустимый лимит, то задачи сортируются в порядке приоритета.
Алгоритмы планирования
Статические алгоритмы планирования (RMS — Rate Monotonic Scheduling). Используют приоритетное вытесняющее планирование. Приоритет присваивается каждой задаче до того, как она начала выполняться. Преимущество отдается задачам с самыми короткими периодами выполнения.
Динамические алгоритмы планирования (EDF — Earliest Deadline First Scheduling). Приоритет задачам присваивается динамически, причем предпочтение отдается задачам с наиболее ранним предельным временем начала (завершения) выполнения.
При больших загрузках системы EDF более эффективен, нежели RMS.