Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программные продукты и системы, 2018, том 31, № 3

международный научно-практический журнал
Покупка
Основная коллекция
Артикул: 706092.0001.99
Программные продукты и системы : международный научно-практический журнал. - Тверь : НИИ Центрпрограммсистем, 2018. - Т. 31, № 3. - 648 с. - ISSN 0236-235X. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1016283 (дата обращения: 05.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Научно-исследовательский институт

«Центрпрограммсистем»

Программные

продукты и системы

МЕЖДУНАРОДНЫЙ НАУЧНО-ПРАКТИЧЕСКИЙ ЖУРНАЛ

2018, том 31, № 3

(год издания тридцать первый)

Главный редактор

С.В. ЕМЕЛЬЯНОВ, академик РАН

Тверь

SOFTWARE & SYSTEMS

(PROGRAMMNYE PRODUKTY I SISTEMY)

International research and practice journal

2018, vol. 31, no. 3

Editor-in-Chief 

S.V. EMELYANOV, Academician of the Russian Academy of Sciences

Tver

Russian Federation

Research Institute CENTERPROGRAMSYSTEM

 ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ
Международный научно-практический журнал 

2018. Т. 31. № 3
DOI: 10.15827/0236-235X.031

Главный редактор 
С.В. ЕМЕЛЬЯНОВ,
академик РАН (г. Москва, Россия)

Научные редакторы:
Н.А. СЕМЕНОВ, д.т.н., профессор ТвГТУ 
(г. Тверь, Россия)
А.Н. СОТНИКОВ, д.ф.-м.н., профессор МСЦ РАН 
(г. Москва, Россия)
К.А. МАМРОСЕНКО, к.т.н., доцент МАИ 
(г. Москва, Россия)

Издатель НИИ «Центрпрограммсистем»

(г. Тверь, Россия)

Учредители: МНИИПУ (г. Москва, Россия),

Главная редакция международного журнала 

«Проблемы теории и практики управления» (г. Москва, Россия),

АОЗТ НИИ «Центрпрограммсистем» (г. Тверь, Россия)

Журнал зарегистрирован в Комитете Российской Федерации

по печати 26 июня 1995 г.

Регистрационное свидетельство № 013831

Подписной индекс в каталоге

Агентства «Роспечать» 70799

ISSN 0236-235X (печатн.)
ISSN 2311-2735 (онлайн)

МЕЖДУНАРОДНАЯ РЕДАКЦИОННАЯ КОЛЛЕГИЯ

Семенов Н.А. – д.т.н., профессор Тверского государственного технического университета, заместитель главного 
редактора (г. Тверь, Россия)
Решетников В.Н. – д.ф.-м.н., профессор Московского авиационного института 
(национального исследовательского университета), заместитель главного редактора (г. Москва, Россия)
Арефьев И.Б. – д.т.н., профессор Морской академии Польши (г. Щецин, Польша)
Афанасьев А.П. – д.ф.-м.н., профессор Московского физико-технического института (технического университета), 
заведующий Центром распределенных вычислений Института проблем передачи информации РАН (г. Москва, Россия)
Баламетов А.Б. – д.т.н., профессор Азербайджанского научно-исследовательского и проектно-изыскательского института 
энергетики (г. Баку, Азербайджан)
Батыршин И.З. – д.т.н., профессор Мексиканского института нефти (г. Мехико, Мексика)
Вагин В.Н. – д.т.н., профессор Национального исследовательского университета «МЭИ» (г. Москва, Россия)
Голенков В.В. – д.т.н., профессор Белорусского государственного университета информатики и радиоэлектроники 
(г. Минск, Беларусь)
Еремеев А.П. – д.т.н., профессор Национального исследовательского университета «МЭИ» (г. Москва, Россия)
Котов А.С. – кандидат наук, ассистент профессора университета Уэйна (штат Мичиган) (г. Детройт, США)
Кузнецов О.П. – д.т.н., профессор Института проблем управления РАН (г. Москва, Россия)
Курейчик В.М. – д.т.н., профессор Инженерно-технологической академии Южного федерального университета 
(г. Таганрог, Россия)
Лисецкий Ю.М. – к.т.н., генеральный директор «S&T Ukraine» (г. Киев, Украина)
Мамросенко К.А. – к.т.н., доцент Московского авиационного института 
(национального исследовательского университета), руководитель Центра визуализации и спутниковых 
информационных технологий НИИСИ РАН (г. Москва, Россия)
Мейер Б. – доктор наук, профессор, заведующий кафедрой Высшей политехнической школы – ETH (г. Цюрих, Швейцария)
Нгуен Тхань Нги – д.ф.-м.н., профессор, проректор Ханойского открытого университета (г. Ханой, Вьетнам)
Николов Р.В. – доктор наук, профессор Университета библиотековедения и информационных технологий Софии
(г. София, Болгария)
Осипов Г.С. – д.ф.-м.н., профессор, заместитель директора Института системного анализа РАН (г. Москва, Россия)
Палюх Б.В. – д.т.н., профессор Тверского государственного технического университета (г. Тверь, Россия)
Рахманов A.A. – д.т.н., профессор, заместитель генерального директора Концерна «РТИ Системы» (г. Москва, Россия)
Серов В.С. – д.ф.-м.н., профессор Университета прикладных наук Оулу (г. Оулу, Финляндия)
Сотников А.Н. – д.ф.-м.н., профессор, Межведомственный суперкомпьютерный центр РАН (г. Москва, Россия)
Сулейманов Д.Ш. – академик АН Республики Татарстан, д.т.н., профессор Казанского государственного 
технического университета (г. Казань, Республика Татарстан, Россия)
Тарасов В.Б. – к.т.н., доцент Московского государственного технического университета им. Н.Э. Баумана (г. Москва, Россия)
Таратухин В.В. – доктор философии, управляющий директор Европейского исследовательского центра 
в области информационных систем (ERCIS) Вестфальского университета им. Вильгельма (г. Мюнстер, Германия)
Хорошевский В.Ф. – д.т.н., профессор Московского физико-технического института (технического университета) 
(г. Москва, Россия)
Язенин А.В. – д.ф.-м.н., профессор Тверского государственного университета (г. Тверь, Россия)

АССОЦИИРОВАННЫЕ ЧЛЕНЫ РЕДАКЦИИ

Национальный исследовательский университет «МЭИ», г. Москва, Россия
Технологический институт Южного федерального университета, г. Таганрог, Россия
Тверской государственный технический университет, г. Тверь, Россия
Научно-исследовательский институт «Центрпрограммсистем», г. Тверь, Россия

АДРЕС ИЗДАТЕЛЯ И РЕДАКЦИИ
Россия, 170024, г. Тверь, пр. 50 лет Октября, 3а
Телефон (482-2) 39-91-49
Факс (482-2) 39-91-00
E-mail: red@cps.tver.ru
Сайт: www.swsys.ru

Дата выхода в свет 28.08.2018 г.

Отпечатано ООО ИПП «Фактор и К»

Россия, 170028, г. Тверь, ул. Лукина, д. 4, стр. 1

Выпускается один раз в квартал

Год издания тридцать первый. Формат 6084 1/8. Объем 228 стр.

Заказ № 21. Тираж 1000 экз. Цена 330,00 руб.

Автор статьи отвечает за подбор, оригинальность и точность приводимого фактического материала.
Авторские гонорары не выплачиваются. При перепечатке материалов ссылка на журнал обязательна.

 SOFTWARE & SYSTEMS 
(PROGRAMMNYE PRODUKTY I SISTEMY)
International research and practice journal

2018, vol. 31, no. 3
DOI: 10.15827/0236-235X.031

Editor-in-chief 
S.V. Emelyanov, Academician of the Russian Academy of Sciences
(Mosсow, Russian Federation)

Science editors:
N.A. Semenov, Dr.Sc. (Engineering), Professor TvSTU
(Tver, Russian Federation)
A.N. Sotnikov, Dr.Sc. (Physics and Mathematics), Professor JSCC RAS 
(Moscow, Russian Federation)
K.А. Mamrosenko, Ph.D. (Engineering), Associate Professor
of Moscow Aviation Institute (National Research University)
(Moscow, Russian Federation)

Publisher: Research Institute 
CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)

The Founders: International Scientific 

and Research Institute for Management Issues 

(Moscow, Russian Federation),

the Chief Editorial Board 

of International Magazine Theoretical and practical issues of management (Moscow, Russian Federation),

Research Institute CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)
The magazine is on record 

in Russian committee

on press 26th of June 1995

Registration certificate № 013831

ISSN 0236-235X (print)

ISSN 2311-2735 (online)

INTERNATIONAL EDITORIAL BOARD

Semenov N.A. – Dr.Sc. (Engineering), Professor of Tver State Technical University, Deputy Editor-in-Chief
(Tver, Russian Federation)
Reshetnikov V.N. – Dr.Sc. (Physics and Mathematics), Professor of Moscow Aviation Institute (National Research University), 
Deputy Editor-in-Chief (Mosсow, Russian Federation)
Arefev I.B. – Dr.Sc. (Engineering), Professor of Poland Szczecin Maritime Academy (Szczecin, Poland)
Afanasiev A.P. – Dr.Sc. (Physics and Mathematics), Professor of Moscow Institute of Physics and Technology, 
Head of Centre for Distributed Computing of Institute for Information Transmission Problems (Moscow, Russian Federation)
Balametov A.B. – Azerbaijan Scientific-Research & Design-Prospecting Power Engineering Institute (Baku, Azerbaijan)
Batyrshin I.Z. – Dr.Sc. (Engineering), Professor of Mexican Petroleum Institute (Mexico City, Mexico)
Vagin V.N. – Dr.Sc. (Engineering), Professor of National Research University “Moscow Power Engineering Institute”
(Mosсow, Russian Federation)
Golenkov V.V. – Dr.Sc. (Engineering), Professor of Belarusian State University of Informatics and Radioelectronics 
(Minsk, Republic of Belarus)
Eremeev A.P. – Dr.Sc. (Engineering), Professor of National Research University “Moscow Power Engineering Institute”
(Moscow, Russian Federation)
Kotov A.S. – Ph.D. (Computer Science), Assistant Professor, Wayne State University (Detroit, MI, USA)
Kuznetsov O.P. – Dr.Sc. (Engineering), Professor of the Institute of Control Sciences of the Russian Academy of Sciences
(Moscow, Russian Federation)
Kureichik V.M. – Dr.Sc. (Engineering), Professor of Academy of Engineering and Technology Southern Federal University 
(Taganrog, Russian Federation)
Lisetskiy Yu.M. – Ph.D.Tech.Sc., CEO of S&T Ukraine (Kiev, Ukraine)
Mamrosenko K.A. – Ph.D. (Engineering), Associate Professor of Moscow Aviation Institute (National Research University), 
Head of Center of Visualization and Satellite Information Technologies SRISA RAS (Moscow, Russian Federation)
Meyer B. – Dr.Sc., Professor, Head of Department in Swiss Federal Institute of Technology in Zurich, ETH 
(Zurich, Switzerland)
Nguyen Thanh Nghi – Dr.Sc. (Physics and Mathematics), Professor, Vice-Principal of Hanoi Open University (Hanoi, Vietnam)
Nikolov R.V. – Full Professor of the University of Library Studies and Information Technology (Sofia, Bulgaria)
Osipov G.S. – Dr.Sc. (Physics and Mathematics), Professor, Deputy of the Principal of Institute of Systems Analysis 
of the Russian Academy of Sciences (Mosсow, Russian Federation)
Palyukh B.V. – Dr.Sc. (Engineering), Professor of Tver State Technical University (Tver, Russian Federation)
Rakhmanov A.A. – Dr.Sc. (Engineering), Professor, Deputy of the CEO of Concern RTI Systems
(Mosсow, Russian Federation)
Serov V.S. – Dr.Sc. (Physics and Mathematics), Professor of the Oulu University of Applied Sciences (Oulu, Finland)
Sotnikov A.N. – Dr.Sc. (Physics and Mathematics), Professor, Joint Supercomputer Center of the Russian Academy 
of Sciences (Moscow, Russian Federation)
Suleimanov D.Sh. – Academician of TAS, Dr.Sc. (Engineering), Professor of Kazan State Technical University
(Kazan, Republic of Tatarstan, Russian Federation)
Tarassov V.B. – Ph.D. (Engineering), Associate Professor of Bauman Moscow State Technical University
(Mosсow, Russian Federation)
Taratoukhine V.V. – Ph.D. (Engineering), Dr.Ph., Managing Director of the Competence Centre ERP and ERCIS Lab
Russia of the ERCIS (Muenster, Germany)
Khoroshevsky V.F. – Dr.Sc. (Engineering), Professor of Moscow Institute of Physics and Technology
(Moscow, Russian Federation)
Yazenin A.V. – Dr.Sc. (Physics and Mathematics), Professor of Tver State University (Tver, Russian Federation)

ASSOCIATED EDITORIAL BOARD MEMBERS

National Research University “Moscow Power Engineering Institute”, Moscow, Russian Federation
Technology Institute at Southern Federal University, Taganrog, Russian Federation
Tver State Technical University, Tver, Russian Federation
Research Institute CENTERPROGRAMSYSTEM, Tver, Russian Federation

EDITORIAL BOARD AND PUBLISHER OFFICE ADDRESS
50 let Oktyabrya Ave. 3а, Tver, 170024, Russian Federation
Phone: (482-2) 39-91-49  Fax: (482-2) 39-91-00
E-mail: red@cps.tver.ru
Website: www.swsys.ru

Release date 28.08.2018

Printed in printing-office “Faktor i K”

Lukina St. 4/1, Tver, 170028, Russian Federation

Published quarterly. 31th year of publication

Format 6084 1/8. Circulation 1000 copies

Prod. order № 21. Wordage 228 pages. Price 330,00 rub. 

Вниманию авторов

Международный журнал «Программные продукты и системы» публикует материалы научного и научно-практического 

характера по новым информационным технологиям, результаты академических и отраслевых исследований в области использования средств вычислительной техники. Практикуются выпуски тематических номеров по искусственному интеллекту, системам автоматизированного проектирования, по технологиям разработки программных средств и системам защиты, а также специализированные выпуски, посвященные научным исследованиям и разработкам отдельных вузов, 
НИИ, научных организаций. 

Решением Президиума Высшей аттестационной комиссии (ВАК) Министерства образования и науки РФ международ
ный журнал «Программные продукты и системы» внесен в Перечень ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней 
кандидата и доктора наук.

Информация об опубликованных статьях по установленной форме регулярно предоставляется в систему Российского 

индекса научного цитирования (РИНЦ), в CrossRef и в другие базы и электронные библиотеки.

Условия публикации

К рассмотрению принимаются ранее нигде не опубликованные материалы, соответствующие тематике журнала 

(специализация 05.13.ХХ – Информатика, вычислительная техника и управление) и отвечающие редакционным требованиям.

Работа представляется в электронном виде в формате Word. При обилии сложных формул обязательно наличие 

статьи и в формате PDF. Формулы должны быть набраны в редакторе формул Word (Microsoft Equation или MathType). 
Объем статьи вместе с иллюстрациями – не менее 10 000 знаков. Диаграммы, схемы, графики должны быть доступными 
для редактирования (Word, Visio, Excel). Все иллюстрации для полиграфического воспроизведения представляются в 
черно-белом варианте. Цветные, тонированные, отсканированные, не подлежащие редактированию средствами Word рисунки и экранные формы следует присылать в хорошем качестве для их дополнительного размещения на сайте журнала в 
макете статьи с доступом по ссылке. (Публикация материалов с использованием гипертекста, графики, аудио-, видео-, 
программных средств и др. возможна в электронном издании «Программные продукты, системы и алгоритмы», сайт 
www.swsys-web.ru.) Заголовок должен быть информативным; сокращения, а также терминологию узкой тематики желательно в нем не использовать. Количество авторов на одну статью – не более 4, количество статей одного автора в номере, 
включая соавторство, – не более 2. Список литературы, наличие которого обязательно, должен включать не менее 10 пунктов.

Необходимы также содержательная структурированная аннотация (не менее 250 слов), ключевые слова (7–10) и 

индекс УДК. Название статьи, аннотация и ключевые слова должны быть переведены на английский язык (машинный 
перевод недопустим), а фамилии авторов, названия и юридические адреса организаций (если нет официального перевода), 
пристатейные списки литературы – транслитерированы по стандарту BGN/PCGN. 

Вместе со статьей следует прислать сопроводительное письмо-рекомендацию в произвольной форме, экспертное 

заключение, лицензионное соглашение, а также сведения об авторах: фамилия, имя, отчество, название и юридический 
адрес организации, должность, ученые степень и звание (если есть), контактный телефон, электронный адрес, почтовый 
адрес для отправки бесплатного авторского экземпляра журнала. 

Порядок рецензирования

Все статьи, поступающие в редакцию (соответствующие тематике и оформленные согласно требованиям к публи
кации), подлежат обязательному рецензированию в течение месяца с момента поступления. 

В редакции есть устоявшийся коллектив рецензентов, среди которых члены международной редколлегии журнала, 

эксперты из числа крупных специалистов в области информатики и вычислительной техники ведущих вузов страны, а 
также ученые и специалисты НИИ «Центрпрограммсистем» (г. Тверь).

Рецензирование проводится конфиденциально. Автору статьи предоставляется возможность ознакомиться с тек
стом рецензии. При необходимости статья отправляется на доработку.

Рецензии обсуждаются на заседаниях рабочей группы, состоящей из членов научного совета журнала. Заседания 

проводятся раз в месяц в НИИ «Центрпрограммсистем» (г. Тверь), где принимается решение о целесообразности публикации статьи.

Статьи, одобренные редакционным советом, публикуются бесплатно в течение года с момента одобрения, а отправ
ленные на доработку – в течение года с момента поступления после устранения замечаний.

Редакция международного журнала «Программные продукты и системы» в своей работе руководствуется сводом 

правил Кодекса этики научных публикаций, разработанным и утвержденным Комитетом по этике научных публикаций 
(Committee on Publication Ethics – COPE).

Программные продукты и системы / Software & Systems
3 (31) 2018

425

УДК 004.454
Дата подачи статьи: 28.04.18

DOI: 10.15827/0236-235X.031.3.425-429
2018. Т. 31. № 3. С. 425–429

Методы разработки драйверов 

графической подсистемы

И.А. Ефремов 1, программист, efremov@niisi.ras.ru
К.А. Мамросенко 1, к.т.н., руководитель Центра, mamrosenko_k@niisi.ras.ru
В.Н. Решетников 1, д.ф.-м.н., профессор, главный научный сотрудник, rvn_@mail.ru

1 Центр визуализации и спутниковых информационных технологий ФНЦ НИИСИ РАН, 
г. Москва, 117218, Россия

В статье описаны проблемы разработки ПО для задач взаимодействия систем на кристалле и ОС Linux. Архитек
турой ОС предусмотрено создание драйвера – компонента, обеспечивающего прием и передачу данных устройства с 
использованием программного интерфейса. Разработка драйверов для ОС с открытым исходным кодом затрудняется 
из-за непрерывных изменений функций и структуры ядра.

Описаны структура и составные части графической подсистемы, представляющей собой набор компонентов, нахо
дящихся в разных адресных пространствах доступа виртуальной памяти ОС и взаимодействующих между собой, в 
том числе посредством интерфейса системных вызовов. Программирование графического ядра выполняется при помощи заполнения буфера команд: для каждого приложения создается контекст графического ядра, содержащий свой 
командный буфер и все необходимые данные, используемые графическим ядром для отрисовки/расчетов, – координаты, векторы нормали, цвета, текстуры. 

Существуют несколько подходов к установке графического режима, однако наиболее оправданным решением яв
ляется применение модуля KMS (Kernel Mode Setting), который используется ключевыми производителями микропроцессоров и графических карт. Для полной реализации возможностей графического ядра необходимо обеспечить 
взаимодействие модулей ядра ОС и пространства пользователя посредством создания собственных системных вызовов, регламентирующих низкоуровневую работу с устройством.

Применение платформ прототипирования на основе FPGA-матриц позволяет проверить работоспособность ПО, 

получить некоторые характеристики производительности и выявить ошибки в системе на кристалле на ранних стадиях 
проектирования. Отладка модулей ядра занимает значительное время в силу ограничений, накладываемых со стороны 
как платформы для прототипирования, так и ОС. Кроме того, ошибки, возникающие в коде ядра, трудновоспроизводимы, что также затрудняет отладку модулей ядра.

В статье рассмотрены подходы к реализации KMS-модуля и компонентов графической подсистемы ОС Linux, ко
торые позволяют обеспечить корректное взаимодействие ОС и контроллера вывода на экран системы на кристалле. 

Ключевые слова: графическое ядро, драйвер, Linux, СнК, разработка, модуль ядра.

В настоящее время одной из задач микроэлек
троники является создание систем на кристалле
(СнК) с существенными ограничениями по тепловыделению и энергопотреблению [1]. Проектирование СнК включает в себя разработку ПО для 
решения задач взаимодействия оборудования и 
ОС [2]. Работа с трехмерной графикой в реальном 
масштабе времени, как правило, требует наличия 
графического ядра в СнК.

Архитектурой ОС предусмотрено создание 

компонента – драйвера, обеспечивающего прием и 
передачу данных устройства с использованием 
программного интерфейса [3]. При разработке 
драйверов для ОС с открытым исходным кодом, 
например, для ядра ОС Linux, возможно возникновение определенных трудностей из-за непрерывных изменений функций и структуры ядра [4]. 
Кроме того, количество источников информации 
по данному вопросу, находящихся в открытом доступе, невелико. 

В настоящей статье приведены методы разра
ботки драйверов графической подсистемы, обеспечивающих и установку графического режима отображения, рассмотрены проблемы, связанные с отладкой модулей ядра.

Графическая подсистема ОС Linux

Обработку 3D-графики обеспечивает графиче
ская подсистема (или графический стек) ОС Linux [5]. Графический стек представляет собой 
набор компонентов, находящихся в разных адресных пространствах доступа виртуальной памяти 
ОС и взаимодействующих между собой посредством интерфейса системных вызовов [6] (рис. 1).

В пользовательском пространстве на верхнем 

уровне набор функций и их поведение описаны 
спецификацией OpenGL (Open Graphics Library). 
Свободную 
реализацию 
графического 
API 

(Application Programming Interface) OpenGL в ОС 
Linux представляет библиотека Mesa 3D, включающая в себя набор драйверов 3D-графики в пользовательском пространстве. Библиотека Mesa реализует независимый от поставщиков драйверов кроссплатформенный стандартный API-интерфейс для 
взаимодействия с графическими ускорителями различных производителей.

Библиотека libdrm реализует интерфейс DRM в 

пространстве пользователя, применяя системные 
вызовы ioctl [7]. Для обеспечения взаимодействия 
модуля высокого уровня OpenGL и библиотеки

Программные продукты и системы / Software & Systems
3 (31) 2018

426

libdrm может быть использована библиотека создания драйверов Gallium3D. 

Gallium3D является частью Mesa и направлен 

на упрощение разработки драйверов 3D-графики. 
Наличие Gallium3D API подразумевает использование TGSI (Tungsten Graphics Shader Infrastructure), являющегося промежуточным представлением 
описания шейдеров.

После предварительной обработки входящих 

данных в библиотеке OpenGL, включающих информацию об объектах прорисовки и шейдерных 
подпрограммах, 
производится 
преобразование 

данных в промежуточный байт-код. На этом этапе 
также осуществляется оптимизация операций, выполняемых в шейдерных программах, например, 
разворачивание циклов обработки. Далее сгенерированный байт-код передается в компилятор, преобразующий его в машинные инструкции, предназначенные для конкретного графического процессора, а также формирующий буфер команд.
Программирование графического ядра выполняется при помощи заполнения буфера команд: для 
каждого приложения создается контекст графического ядра, содержащий свой командный буфер и 
все необходимые данные, используемые графическим ядром для отрисовки/расчетов, – координаты, 
векторы нормали, цвета, текстуры. Графическое 

ядро не располагает собственной памятью, поэтому буферы формируются в системной памяти. 

Драйвер должен поддерживать многопоточное 

использование, где на каждый поток выделяются 
один буфер контекста и один буфер команд. За счет 
наличия только одного буфера команд синхронизация требуется лишь на момент передачи буфера в 
графическое ядро. На момент заполнения буфера 
она не требуется. Правильное выставление контекста в ядре для каждого потока должно гарантироваться драйвером графической подсистемы. Также 
определяются доступные операции для выполнения на конкретной модели графического процессора, ограничения для входящих данных, например, поддерживаемые форматы сжатия текстур. 

В пространстве ядра модуль Direct Rendering 

Manager (DRM) предоставляет API, который используют программы пользовательского пространства для отправки команд и данных графическому 
ядру и настройки некоторых параметров режима 
отображения. DRM предоставляет только базовую 
функциональность, с которой могут работать различные драйверы, а также снабжает пользовательское пространство неким минимальным набором 
системных вызовов input output control (ioctl) с общей, независимой от оборудования функциональностью.

libDRM-srisa

libEGL-mesa-drivers (Wayland)
libGL-mesa-DRI (Modules nVidia
Radeon, SRISA)

TGSI

DRM-KMS.ko

Mesa: APIs+DRI/Gallium3D driver
libGL-mesa-swx11 (libGL)
libGL-mesa-glx
libOpenVG-mesa
libGLES-mesa
libEGL-mesa
libGBM

DRM

Linux kernel

libDRM

CPU & registers  &  L1  &  L2  &  L3  &  L4   & main memory

GPU & registers  &  L1  &  L2   (& graphic memory)

libDRM

"libGL"

framebuffer

hardware-specific
KMS
Kernel Mode Setting

DRM.ko

srisaKMS.ko

srisaGPU.ko

component

libDRM-intel
libDRM-radeon
libDRM-nouveau

X-server (X.Org)

X.Org Server display driver
xserver-xorg-video-nouveau
xserver-xorg-video-srisa

hardware specific
Userspace interface 
to hardware specific
direct rendering manager

ApplicationsToolkits
3D engine

DDX-driver

libX / libXCB
Rendering APIs: 

OpenGL

OpenGL|ES

OpenVG

X 11R7.8

Display
server

libwayland-client

Wayland 1.5

DIX driver

Wayland
Obsoletes
2D drivers in

the display server

Wayland compositor

API:EGL

API:EGL

Window manager

Kwin
Mutter
Weston
Enlightment

Kwin
Compiz
OpenBox
Metacity
Mutter

Proprietary OpenGL
Driver
libGL-nvidia-glx
libGL-fglrx-glx

blob

Рис. 1. Компоненты графического стека ОС Linux

Fig. 1. Components of OS Linux graphics stack

Программные продукты и системы / Software & Systems
3 (31) 2018

427

Существуют несколько подходов к установке 

графического режима. Установка графических режимов из пользовательского пространства (User 
Mode-Setting) имеет проблемы:


неоднократная инициализация оборудова
ния (BIOS, framebuffer и X-сервер);


некорректное отображение при переключе
ниях между виртуальными консолями и экземплярами X-сервера и в процессе загрузки;


дублирование кода драйвера (fbdev и драй
веров графики для X-сервера).

Решением данных проблем является исполь
зование модуля KMS (Kernel Mode Setting) [8]. 
Драйвер контроллера вывода на экран DC (Display
Controller) находится в пространстве ядра Linux
и также должен включать функционал KMS-модуля. 

Kernel Mode Setting

Ioctl обычно используются для выполнения над 

устройством некоторых специфических (управляющих) действий, которые не обеспечиваются регулярными POSIX-вызовами (read(), write(), lseek()
и др.) [9]. Часто это могут быть действия, зависящие от конкретных аппаратных особенностей реализации устройства. Для использования возможностей графического ядра в полном объеме необходимо обеспечить взаимодействие модулей ядра ОС 
и пространства пользователя посредством создания собственных системных вызовов, регламентирующих низкоуровневую работу с устройством 
(ioctl). На данный момент наиболее актуально применение KMS API для установки графического режима на контроллере вывода на экран. Данное API
используется ключевыми производителями микропроцессоров и графических карт. 

При построении KMS-модуля необходимы ини
циализация структур из KMS API, а также установление связей между блоками модуля. DRM-коннектор представляет собой совокупность структур и 
функций, которые необходимо реализовать в собственном драйвере. Коннектор обеспечивает получение данных от подключенного дисплея и проверку корректности задаваемых графических режимов. 

Кадровый буфер (Frame buffer) служит источ
ником данных для дисплей-контроллера. Он представляет собой объекты памяти (memory objects), 
которые 
передаются 
конвейеру 
отображения 

CRTC для вывода на экран (рис. 2). 

Плоскость (plane) содержит информацию о па
раметрах изображения и ссылку на дополнительный кадровый буфер. Плоскость передается в 
CRTC для объединения изображения основного 
кадрового буфера с изображением дополнительного буфера. CRTC представляет собой общий конвейер отображения, принимая данные пикселей из 
плоскостей и смешивая их вместе, а также регла
ментируя временные интервалы отображения 
(display timing).

Графический контроллер не располагает соб
ственной памятью, поэтому буферы формируются 
в системной памяти. Менеджер графической памяти (GEM) управляет выделением памяти, чтением и записью в буферы. Системные вызовы, 
являющиеся частью драйвера, обеспечивают создание объектов памяти. Более того, фактически создание буфера для драйверов, использующих 
GEM, выполняется с помощью специфичного для 
драйвера ioctl – GEM имеет только общий интерфейс для совместного использования и уничтожения объектов. Для задач, не требующих всей 
гибкости работы с памятью, например, выделение
кадровых буферов для KMS, применяется API для 
работы с dumb-буферами. Буферы связываются в 
список, который автоматически опрашивается контроллером на наличие новых буферов.

Энкодер (encoder) является преобразователем 

изображения в требуемый выходной формат, 
например, цифровой или аналоговый. На сегодняшний день использование энкодеров считается 
устаревшим подходом, вместо них рекомендуется 
применять компоненты bridge. Основное отличие 
bridge от энкодера – недоступность из пространства пользователя. 

В настоящее время рекомендуется применять 

атомарный подход к установке графического режима. В отличие от применяемого ранее транзакционного подхода атомарный подход обеспечивает 
возможность проверки корректности режимов работы без изменения состояния аппаратных средств. 
При атомарном подходе общее состояние драйвера определяется состоянием трех компонентов 

Рис. 2. Схема KMS-модуля

Fig. 2. KMS module scheme

Plane
CRTC

Encoder

Frame buffer
Уровень памяти
Memory level

Bridge

Уровень платы
Off-chip level

Connector

SoC-level
Уровень СнК

Программные продукты и системы / Software & Systems
3 (31) 2018

428

KMS-модуля с использованием структур состояний: drm_plane_state, drm_crtc_state и drm_connector_state. Структура drm_atomic_state – глобальное 
состояние объекта для атомарных обновлений,
включает в себя эти структуры состояний. 

Файл описания 

аппаратной части

В ОС Linux предусмотрена возможность созда
ния .dts-файла (Device Tree Source). Преимущество 
использования dts-файла в том, что разработчику 
модулей ядра не требуется перекомпилировать 
ядро для различных платформ, содержащих СнК. 
Файл описания используемой архитектуры и блоков СнК dtsi представлен в виде дерева узлов и служит в основном для предоставления информации 
ядру ОС. Разработчик, предоставляя дерево 
устройств, делает возможным более широкую поддержку различных конфигураций оборудования в 
рамках архитектурной линейки СнК. 

Файлы дерева устройств могут быть разделены 

на несколько частей в нескольких файлах. Файлы 
уровня платы dts включают в себя dtsi-файлы, описывающие уровень СнК. При создании нового дерева устройств для аппаратной платформы необходимо полностью описывать свойства устройства. 
Файл дерева устройств хранит и данные о свойствах подключения коннектора видеоинтерфейса. 

Отладка модулей ядра

В настоящее время разработка и отладка драй
веров зачастую происходят параллельно с разработкой СнК. Как правило, в этих целях используют 
платформы прототипирования на основе FPGAматриц. Платформы прототипирования позволяют 
проверить работоспособность ПО, получить некоторые характеристики производительности и выявить ошибки в СнК на ранних стадиях производства [10]. 

Однако даже при использовании современных 

программных и аппаратных средств отладка модулей ядра занимает значительное время из-за ограничений, накладываемых и платформой для прототипирования (тактовая частота, длительное время 
сборки проекта прошивки), и модулями ядра (многие ядерные механизмы принципиально существуют только во временных зависимостях и не могут быть приостановлены). Кроме того, ошибки, 
возникающие в коде ядра, трудновоспроизводимы, 
что также затрудняет отладку модулей ядра.

Запуск тестовых приложений с трехмерной гра
фикой происходит с использованием моделирующего комплекса, зачастую не имеющего модуля 
вывода на экран. В таком случае для проверки корректности визуализации используется сохранение 
содержимого кадрового буфера в файлы. Для этого 
на этапе инициализации тестовой программы ис
пользуется флаг EGL_PBUFFER_BIT – он дает возможность установить конфигурацию системы, не 
требующей использования физического дисплея 
для вывода изображения и позволяющей прорисовывать изображения в системную память. 

Заключение

При проектировании СнК необходим комплекс
ный подход, учитывающий особенности платформ 
прототипирования и архитектуру графической 
подсистемы ОС. Поддержка разрабатываемого ПО 
в течение всего жизненного цикла СнК является 
необходимым процессом в условиях изменения архитектуры ядра ОС с открытым исходным кодом. 
Поддержка трехмерной графики требует от разработчика ПО построения согласованной графической подсистемы с набором компонентов, находящихся в различных адресных пространствах доступа виртуальной памяти ОС. Создание модулей 
графической подсистемы ОС Linux – актуальная и 
трудоемкая задача, которой в настоящее время посвящается все больше работ в открытой печати.
Однако требуются новые инструменты разработки 
и отладки. В настоящее время отладка модулей 
ядра занимает значительное время из-за ограничений со стороны ОС и средств прототипирования. 

Рассмотренные подходы к реализации KMS-мо
дуля и компонентов графической подсистемы ОС 
Linux позволяют обеспечить корректное взаимодействие ОС и контроллера вывода на экран СнК. 
Планируются внедрение новой функциональности 
KMS-модуля, а также разработка драйверов пользовательского пространства.

Литература

1.
Бобков С.Г. Высокопроизводительные вычислитель
ные системы. М.: Изд-во НИИСИ РАН, 2014. 296 с.

2.
Aryashev S.I., Rogatkin B.Y., Barskikh M.E. Modern 

methods of functional verification of rtl units of VLSI microprocessor // Проблемы разработки перспективных микро- и наноэлектронных систем МЭС. 2015. № 2. С. 119–122 (англ.).

3.
Решетников В.Н. Космические телекоммуникации. Си
стемы спутниковой связи и навигации. СПб: Ленинградское 
изд-во, 2010. 132 с.

4.
Гиацинтов А.М., Баженов П.С. Визуализация виртуаль
ных трехмерных сцен на однокристальных системах // Программные продукты, системы и алгоритмы. 2017. № 3. URL:
http://swsys-web.ru/virtual-three-dimensional-scenes-on-singlechip-systems.html (дата обращения: 20.04.18).

5.
Лав Р. Разработка ядра Linux. СПб: Вильямс, 2006. 

448 с.

6.
Venkateswaran S. Essential Linux Device Drivers. Prentice 

Hall, 2008, 714 с.

7.
The Linux kernel documentation. URL: https://www.ker
nel.org/doc/html/v4.11/gpu/drm-kms.html 
(дата
обращения: 

20.04.2018).

8.
Madieu J. Linux device drivers development. Packt Pub
lishing Ltd, 2017, 586 с.

9.
Bovet D.P., Cesati M. Understanding the Linux Kernel. 

USA, O’Reilly Media, 2005, 702 p.

10. Богданов А.Ю. Опыт применения платформы прототи
пирования на ПЛИС «Protium» для верификации микропроцессоров // Тр. НИИСИ РАН. 2017. Т. 7. № 2. С. 46–49.