Об опыте преподавания программирования ядра Linux

Вид материалаДокументы
Подобный материал:

Об опыте преподавания программирования ядра Linux

Воробьев Д.В. .
Movial, Финляндия
к.ф.-м.н. Морковин С.Е., к.т.н., с.н.с. Починок И.В
Научно-исследовательский
вычислительный центр (НИВЦ) МГУ,
Марков И.С., к.ф.-м.н., доцент Павлов М.В.
Auriga, Inc., Москва


В докладе анализируется трехлетний опыт преподавания программирования ядра Linux в корпоративном тренинг-центре на базе НИВЦ МГУ. Рассматривается методика обучения системному программированию с использованием свободного программного обеспечения.

1. Введение

Интерес к обучению программированию ядра Linux в компании Auriga был вызван потребностью в системных программистах, имеющих практические навыки работы с Unix-подобными системами. Опыт показал, что специалистов, владеющих необходимыми знаниями, немного, и все они востребованы. Поэтому мы решили попробовать набирать талантливую молодежь из числа студентов старших курсов и аспирантов ведущих вузов.

Тренинг-центр компании Auriga, работающий на базе лаборатории мобильных и встроенных систем НИВЦ МГУ, организовал преподавание курса «Фундаментальные аспекты системного программирования. Теория и практика разработки системного ПО и компонентов ядра ОС Linux» (далее — «курс программирования ядра Linux») и уже в шестой раз за три года проводит набор слушателей.

Цели и задачи курса:
  • отбор и подготовка молодых специалистов;
  • участие в создании социокультурной среды свободного ПО;
  • повышение привлекательности имиджа компании.

2. Как мы это делаем

Курс программирования ядра Linux отличают четыре характеристики: доступность, открытость, уникальность и эффективность.

Доступность

Обучение на курсе бесплатное.

Чтобы стать слушателем, на собеседовании кандидат должен продемонстрировать знание языка Си и теории операционных систем.

Конкурс составляет 3-4 человека на место.

Открытость

Свободное ПО даёт слушателям возможность изучать и использовать наработки лучших специалистов по системному программированию.

Не теряющими значения факторами остаются бесплатность и легальная возможность копирования свободного ПО.

При преподавании любой темы можно подобрать подходящую свободно распространяемую программу или пакет программ. Ярким примером является эмулятор Qemu, позволяющий отработать приёмы кросс-компиляции и запуска операционной системы на платформе, отличающейся от Intel-совместимых машин.

Уникальность

Нам неизвестны аналоги курса в вузах и в системе дополнительного образования РФ.

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

В рамках курса делается акцент на особенности применения Linux во встраиваемых системах, с которыми компания имеет большой опыт работы. В частности, подробно рассматриваются следующие темы:
  • Подготовка набора средств разработки.
  • Конфигурация ядра и его настройка.
  • Сборка ядра, библиотек и исполняемых файлов с помощью кросс-компиляторов.
  • Использование консоли RS-232 для загрузки и отладки системы.
  • Процесс загрузки ядра на различных аппаратных платформах.
  • Драйверы последовательного порта, Ethernet, GPIO и т.п.
  • Создание образа начальной загрузки (initramfs) для встраиваемых систем.
  • Использование µClibc и busybox для систем с небольшим объемом памяти.
  • Устройство файловой системы JFFS2. Flash-память.
  • Написание низкоуровневого кода для процессоров с некогерентным кешем.

Большое значение придаётся глубокому обзору центральных подсистем ядра Linux, включая подробный обзор их реализации в самых новых версиях ядра. Рассматриваются следующие подсистемы:
  • Управление памятью
  • Распределение процессорного времени (scheduling)
  • Структура символьных и блочных драйверов
  • Виртуальная файловая система (VFS), структура драйвера файловой системы
  • Сетевая подсистема ядра
  • Системные вызовы
  • Синхронизация задач в ядре
  • Аппаратные и межпроцессорные прерывания

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

Для практических занятий используются эмуляторы платформ и экспериментальные платы на основе микропроцессоров PowerPC и MIPS.

Эффективность

Курс выстроен так, что более 50% учебного времени уделяется практике.

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

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

После каждого занятия преподаватель предлагает домашнее задание. Такое задание может состоять, например, в написании более сложной версии программы, рассмотренной на занятии.

Самостоятельная работа слушателей поддержана возможностью онлайн-консультирования, доступной через свободную систему управления учебными курсами Moodle.

Слушателям, показавшим заинтересованность и способности к изучаемому предмету, предлагают пройти собеседование с представителями инженерных подразделений компании. Фактически, такое собеседование становится «выпускным экзаменом» как для самих слушателей, так и для их учителей.

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

На момент написания тезисов курс прослушали 110 человек. Сейчас 34 выпускника работают в Auriga.

3. Выводы

Накопленный опыт демонстрирует следующие преимущества курса:
  • восполнение нехватки квалифицированных кадров;
  • уникальный опыт компании становится ее «визитной карточкой»;
  • используя только свободное ПО, компания участвует в формировании соответствующей социокультурной среды;
  • принимая на курсы слушателей из вузов, Auriga способствует повышению качества высшего образования.

Закономерный итог: методы преподавания и опыт сотрудников компании оказываются востребованными, способствуя ее дальнейшему развитию.