ЖУРНАЛ СТА 3/2009

П РОГ РАММНОЕ ОБ Е СП Е Ч Е НИ Е / СИС Т ЕМЫ Р Е АЛ Ь НОГО В Р ЕМЕ НИ М ЕХАНИЗМ АДАПТИВНОГО КВОТИРОВАНИЯ РЕСУРСОВ ЦПУ И ОЗУ Механизм квотирования ресурсов был реализован в QNX Neutrino во исполне- ние требований спецификаций ARINC к авиационным бортовым вычислитель- ным системам. Примечательно, что пред- ложенный в QNX Neutrino адаптивный подход к квотированию ресурсов был удостоен премии Embedded Award 2007. Необходимость квотирования ресур- сов диктуется возможными логическими ошибками при разработке или на- стройке программного обеспечения. На- пример, если высокоприоритетный по- ток выполняет холостой бесконечный цикл, то низкоприоритетные потоки ни- когда не смогут получить доступ к ре- сурсам ЭВМ, ведь холостой поток будет иметь право на максимальный доступ к этим ресурсам. Вторая проблема заклю- чается в том, что в современных систе- мах на ЭВМ могут выполняться сотни и даже тысячи конкурирующих за ЦПУ потоков, поэтому чрезвычайно сложно корректно настроить подобную систему, даже располагая такими мощными ин- струментами, как пакет QNX System Analysis Toolkit и Eclipse-модуль QNX Sy- stem Profiler. Суть механизма адаптивного квоти- рования иллюстрирует рис. 1. В неко- торой вычислительной системе выпол- няется шесть потоков: A, B, C, D, E и F. Каждый из потоков имеет своё значе- ние приоритета: максимальный прио- ритет у потока A, минимальный – у по- тока F. Для квотирования ресурсов про- цессора созданы три логических раздела по 30%, 30% и 40% соответ- ственно от всего процессорного вре- мени. Поток A запускается в разделе 1, потоки B, C и D – в разделе 2, осталь- ные потоки – в разделе 3. На рисунке показано, что потоки ведут себя стан- дартным для системы реального вре- мени образом, но только в пределах своих разделов. Если же какие-то по- токи не полностью используют свой раздел (в нашем примере – раздел 3), то «лишнее» процессорное время рас- пределяется между готовыми к испол- нению потоками всех разделов в соот- ветствии с их приоритетами. Кстати, именно поэтому механизм квотирова- ния называется адаптивным. Что же даёт механизм адаптивного квотирования ресурсов ЭВМ: ● повышение защищённости и коэффи- циента готовности АС за счёт невоз- можности монополизации ресурсов какой-либо программой (при DoS- атаках и некорректном коде); ● сокращение трудозатрат на сопровож- дение АС на 25-30% (по оценкам экс- пертов компании QNX Software Sy- stems) за счёт локализации аномаль- ного поведения. Следует сказать, что защита от моно- полизации ресурсов позволяет запускать в критичной системе даже потенциально ненадёжные программы: за счёт полной защиты памяти они не смогут повредить ядру и ответственным сервисам, а за счёт квотирования они, даже имея высокий приоритет, не смогут воспрепятствовать выполнению важных задач. М ЕХАНИЗМ ОБЕСПЕЧЕНИЯ « ГОРЯЧЕЙ » ЗАМЕНЫ СЕРВИСОВ Этот механизм основан на двух осо- бенностях QNX Neutrino: микроядерной архитектуре и возможности перегрузки префиксов менеджера процессов. Обычно встречается два варианта ис- пользования механизма «горячей» за- мены. Первый вариант – запуск «теневого» сервера – используют для повышения времени наработки на отказ за счёт дуб- лирования приложений, обеспечиваю- щих критичные сервисы. В этом случае при запуске приложения-сервера сразу же запускается «теневой» сервер – его двойник, регистрирующий такое же, как у основного приложения, путевое имя (префикс). Разумеется, можно запускать несколько «теневых» серверов, причём для каждого сервиса, для которого это необходимо. В случае сбоя основного сервера новые запросы будут автомати- чески поступать на «теневой» сервер. «Теневой» сервер может обрабатывать даже те запросы, которые поступили на основной сервер до сбоя. Для этого ин- формация о таких запросах и о состоя- нии их обработки может храниться сер- вером, например, в регионе разделяе- мой памяти, доступном его «теневым» серверам. Такой подход реализован в мо- ниторе ключевых процессов для само- восстановления (подробнее о мониторе см. далее в разделе «Технология автома- тического восстановления процессов»), доступном в исходных текстах. Второй вариант – обновление сер- вера – используют, когда необходимо обновить программу-сервер без пере- рыва в обработке клиентских запросов. В этом случае при запуске новой версии приложения-сервера он регистрирует та- кое же, как у старого приложения, путе- вое имя, но делает это так, чтобы после- дующие запросы клиентов направлялись в первую очередь к новому серверу. Дру- гими словами, после запуска новой вер- сии сервера все новые запросы автома- тически начнут поступать к нему, а ста- рый сервер может закончить обработку старых запросов и прекратить работу. Т ЕХНОЛОГИЯ БЫСТРОЙ АКТИВИЗАЦИИ УСТРОЙСТВ Эта технология предназначена для по- вышения коэффициента готовности АС путём сокращения времени восстанов- ления работоспособного состояния. Она используется во время начальной за- грузки QNX Neutrino на процессорной плате, и её часто называют «технологией мини-драйверов». Технология быстрой активизации устройств позволяет ещё до загрузки и в процессе загрузки ОС обес- 87 CTA 3/2009 www.cta.ru Раздел 1 Высокий Низкий Приоритеты Кванты времени Состояния потоков: Раздел 1: 30% – поток А Раздел 2: 30% – потоки В, С, D Раздел 3: 40% – потоки E, F запущенные готовые ожидающие свободные кванты времени 0 1 2 3 4 5 6 7 8 9 10 А B C D E D F А Раздел 2 Раздел 3 Рис. 1. Механизм адаптивного квотирования позволяет защититься от несанкционированного перерасхода вычислительных ресурсов при логических ошибках в программе и DoS-атаках © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy