Компания Intel решила автоматизировать написание драйверов к устройствам
О работе инженеров Intel над средствами автоматической разработки драйверов рассказал Арун Рагхунатх (Arun Raghunath) на конференции Research@Intel 2011 в Калифорнийском музее компьютерной истории в г. Маунтин-Вью. По словам Рагхунатха, нынешние процессы написания драйверов становятся невообразимо сложными, поскольку требуют от разработчика глубочайших знаний как в области целевой операционной системы, так и в особенностях конкретного устройства. Вторая главная проблема в ручном написании драйверов связана с интерпретацией документации производителя.
Именно разночтения в документации становятся основной причиной ошибок и дефектов в драйверах.
В разработке технологий для автоматизированного синтеза драйверов, кроме компании Intel, участвует также подразделение ERTOS (доверенные встраиваемые системы) австралийского исследовательского центра NICTA со своим проектом компьютерного синтеза аппаратных драйверов под названием Termite.
По словам Рагхунатха, одним из важнейших факторов для автоматического написания драйверов является максимально полный набор спецификаций как по самому устройству, так и по операционной системе, в которой это устройство должно работать. Другой фактор заключается в том, чтобы создать технологический процесс, который на базе формальных описаний будет производить код драйвера. Примечательно, что исследователи не собираются формировать новый язык для формальных описаний, планируя извлечь максимум преимуществ из уже существующих стандартов.
Особого внимания заслуживает математический аппарат, который исследователи решили применить для синтеза драйверов – теорию игр. По словам Рагхунатха, теория игр вполне подходит для определения необходимых связей между командами операционной системы и функциями устройства. В новом алгоритме написание драйверов превращается в игровую ситуацию, где драйвер – это один из игроков, а другим игроком является операционная среда и происходящие в ней события. Когда драйвер делает свой ход или операцию, среда пытается изменить состояние устройства в другом направлении. Стратегия выигрыша состоит в том, чтобы перейти в такое пространство необходимых состояний таким образом, чтобы не попадать в состояния, из которых нет выхода.
По мере развития игры между драйвером устройства и средой алгоритм синтеза фиксирует все ходы и меняет драйвера. На каждом следующем шаге игра повторяется с новым вариантом драйвера и новыми способами для достижения нужного пространства состояний. Хотя на первый взгляд синтез драйверов кажется довольно простым делом, в практическом аспекте все не так легко, поскольку информация об игроках почти всегда неполна, а сочетания состояний очень сложны.
Важное преимущество методики синтеза драйверов с помощью теории игр заключается в полной независимости от устройства и операционной системы. Еще одно преимущество заключается в удобном портировании драйвера на другие операционные системы – эта задача нередко вызывает огромные трудности у разработчиков.
Само собой, для автоматического синтеза драйверов необходимо более тесное сотрудничество между производителями устройств и разработчиками программных платформ. Предупреждая вопросы производителей, Рагхунатх заверил слушателей, что новый метод не приведет к утечке интеллектуальной собственности. Дело в том, что синтез драйвера выполняется на высоком уровне, так что внутренняя конструкция устройства фактически не участвует в процессе. Конечно, при таком подходе вряд ли получится создать самый оптимальный драйвер – и авторы это признают – но даже плохо работающий драйвер гораздо лучше, чем полное отсутствие драйвера.
Более подробно методика синтеза драйверов для устройств с помощью теории игр описана в 14-страничной работе, авторами которой выступили инженеры NICTA и университета Нового Южного Уэльса (Австралия).
По материалам сайта The Register.