
- •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.
14. Алгоритми планування задач в ос qnx-6
Для планирования потоков необходимо определить начальные условия:
только один поток может выполняться в данный момент времени
всегда должен выполняться поток с наивысшим приоритетом
поток должен работать до тех пор, пока не выполниться или не завершиться
поток, диспетчеризируемый по дисциплине карусельного типа(RR), должен работать в течении выделенного ему кванта времени, после чего ядро обязано его перепланировать(при необходимомсти)
1 – Поиск выполняющегося потока
2 – есть ли готовый к выполнению поток с более высоким приоритетом?
3 – удалить текущий поток из очереди выполнения, поставить вместо него на выполнение новый поток
4 – сейчас выполняется поток с карусельной диспетчеризацией?
5 – продолжить выполнение текущего потока до истечения его кванта времени
6 – использовал ли он более одного кванта времени? 7 – имеется ли другой готовый к выполнению поток с таким же приоритетом? 8 – начать отсчёт кванта времени для данного потока заново
9 – переупорядочить очередь готовности по данному приоритету так, чтобы данный (сейчас выполняемый) поток был перемещен в её конец , удалить из головы очереди находящийся там поток и активировать его.
15. Дисципліни та правила диспетчеризації потоків в ос qnx-6.
QNX-6 поддерживает 4:
FIFO, RR, адаптивная и спорадическая.
FIFO – для этой дисциплины диспетчеризации процесса предоставляется потоку на столько времени на сколько ему необходимо. При этом все потоки данного и более низкого приоритете будут блокированы и только потоки с более высоким приоритетом смогут прервать его. Если работающий поток завершается, блокируется или «добровольно» уступает процессор, то ядро анализирует состояние других потоков этого же приоритета на готовность их к выполнению. Если таких нет, ядро просматривает очередь готовых к выполнению потоков более низкого приоритета.
Понятие добровольно уступить процессор означает, что поток вызывает ф-цию sched_yield, по которой он будет приостановлен, в этом случае ядро просматривает очередь готовых к выполнению потоков этого же приоритета и если таких нет, то ядро опять запустит тот же самый поток. Таким образом если поток блокируется вызывая sched_yield, то в этом случае потоки более низкого приоритета не смогут работать, если же поток блокируется по другим причинам, то существует активизация потоков более низкого приоритета.
RR – Round Robin, аналогично FIFO за исключением того, что поток не будет работать бесконечно долго если есть потоки того же самого приоритета. При RR диспетчеризации поток работает в течении предопределенного интервала времени (sched_rr_get_interval). Ядро запуская RR поток засекает время. Если поток не блокируется в течении выделенного ему кванта времени, то ядро проверяет наличие другого готового к выполнению потока с тем же приоритетом, если такого нет поток опять будет запущен, то есть будет выделен очередной квант времени.
Правила диспетчеризации для однопроцессорной системы:
только один поток может выполняться в данный момент времени;
всегда выполняется поток с наивысшим приоритетом;
поток работает до тех пор, пока он не блокируется или не завершается;
поток работает в течении выделенного ему кванта времени, после чего ядро обязано его перепланировать.
Во многопроцессорной системе правила остаются теми же, но потоки распределяются по процессорам.