ЖУРНАЛ «СТА» №1/2007

тельно небольшой запас производи- тельности. Принимая во внимание эти условия, можно сказать, что процессор- ное время — это ограниченный ресурс, распоряжаться которым нужно очень бережно, особенно во время высокой загрузки процессора. Адаптивное рас- пределение процессорного времени по- зволяет достичь этой цели. П ЛАНИРОВЩИК ОС РВ Чтобы понять необходимость распре- деления процессорного времени, нужно рассмотреть роль планирования во встраиваемой системе реального времени. Для обеспечения переносимости кода большинство современных операцион- ных систем поддерживает интерфейс прикладного программирования POSIX. Этот открытый стандарт опре- деляет потоковую модель, в которой единичный процесс может содержать один или несколько исполняемых пото- ков. Чтобы достичь параллельности вы- полнения нескольких операций и про- изводительности реального времени, необходимой для встраиваемых систем, операционные системы реального вре- мени, основанные на стандарте POSIX, используют потоковый планировщик с приоритетными прерываниями. Такой тип планировщика всегда по- зволяет назначить процессорное время потоку с более высоким приоритетом, требующему обработки. Когда поток с более высоким приоритетом (обычно запускаемый внешним событием) готов к обработке, происходит замещение им любого запущенного потока с более низким приоритетом. Планировщик, основанный на при- оритетах, обладает рядом преимуществ, включая ● предсказуемость периодов ожида- ния: назначая требующие немедлен- ного исполнения функции потокам с высокими приоритетами, разработ- чики могут чётко контролировать время, которое понадобится системе для обработки внешних событий; ● параллельность выполнения и гиб- кость: используя приоритетный пла- нировщик, встраиваемые системы могут одновременно обрабатывать различные типы задач (регулярно возникающие задачи с установлен- ным временем исполнения, высоко- приоритетные событийноуправляе- мые задачи и задачи, выполняемые в фоновом режиме); ● привычность и надёжность: приори- тетный планировщик широко ис- пользуется в промышленных прило- жениях и хорошо понятен для разра- ботчиков встраиваемых систем. Когда поток обработан и готов к за- пуску, он располагается в очереди гото- вых потоков с одинаковым уровнем приоритетов. Политика работы плани- ровщика, установленная для каждого потока разработчиком, определяет, ка- кой поток из очереди готовых к запуску потоков будет выполняться следую- щим. Стандарт POSIX описывает три политики работы планировщика. ● Правило «первым пришёл – первым обслужен» (FIFO) гарантирует, что поток, выбранный для запуска, будет выполняться, пока не остановится или не будет вытеснен потоком с бо- лее высоким приоритетом. ● Правило циклического алгоритма (round robin) гарантирует, что поток будет выполняться, пока не остано- вится, не будет вытеснен потоком с более высоким приоритетом или не закончится отведённое ему время выполнения. ● Спорадическое правило определяет, как долго процесс будет выполняться в пределах отведённого ему времени. При работе планировщика в споради- ческом режиме поток имеет два назна- ченных приоритета – нормальный и низкий — и запускается с нормальным приоритетом в определённый период времени. Когда время работы с нор- мальным приоритетом заканчивается, поток запускается с низким приорите- том. Значение периода работы с нор- мальным приоритетом регулярно об- новляется. Такой подход помогает пре- дотвратить работу единичного потока с высоким приоритетом в течение про- должительного времени. Тем не менее часто разработчики ограничивают ис- пользование спорадического режима работы планировщика, так как его труд- но использовать в системах с большим количеством потоков. Управление приоритетами Планировщик, основанный на при- оритетах, функционирует не совсем «честно». Высокоприоритетная задача, требующая обработки, может захватить всё процессорное время, лишив обра- ботки все другие задачи. В результате разработчикам приходится очень осто- рожно назначать и тестировать приори- теты задач во всей системе. Когда возрастает сложность системы и увеличивается количество разработ- чиков, назначение и учёт приоритетов для большого количества потоков ста- новится непосильно трудной задачей и причиной разногласий среди разработ- чиков. Понимая, что неограниченное назначение приоритетов может привес- ти к хаосу (или к прекращению функ- ционирования системы), разработчики часто сокращают количество исполь- зуемых приоритетов. Однако такое ре- шение имеет нежелательный побочный эффект — увеличение периодов ожида- ния. Так как большое количество пото- ков имеет одинаковый приоритет, оче- редь готовых к запуску потоков стано- вится очень длинной. Готовый к запуску поток ожидает выполнения, пока до не- го не дойдет очередь. Приоритетное планирование гаран- тирует, что наиболее критические зада- чи получают доступ к ресурсам процес- П Р О Г РАММНО Е ОБ Е С П Е Ч Е НИ Е / СИС Т ЕМЫ Р Е АЛ Ь НО ГО В Р ЕМЕ НИ 71 СТА 1/2007 www.cta.ru Условные обозначения: в процессе выполнения; в режиме ожидания; в режиме готовности. Рис. 1. Распределение задач при приоритетном планировании

RkJQdWJsaXNoZXIy MTQ4NjUy