Обучение принципам построения ядра операционных систем на практике (Алексей Хорошилов, OSEDUCONF-2014)

Материал из 0x1.tv

(перенаправлено с «20140126-6»)

Аннотация

Докладчик
Алексей Хорошилов.jpg
Алексей Хорошилов

В докладе представлен опыт проведения лекций и лабораторных работ по программированию ядра операционной системы, целью которых является знакомство студентов на практике с основными принципами построения операционных систем. Обучение построено на основе материалов курса Operating System Engineering, который развивается в Массачусетском технологическом институте уже более 10 лет.

В качестве основы для работы студентов используется учебное «экзо»-ядро операционной системы JOS, распространяемое под свободной лицензией. В докладе представлена структура курса, включая его отличия от курса МТИ, и особенности использования свободного программного обеспечения при проведении лабораторных работ. Курс «Конструирование ядра операционной системы» проводится для студентов кафедры Системного программирования факультета ВМиК Московского Государственного Университета имени М.В. Ломоносова.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.


Расширенные тезисы

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

Для этих целей обычно используют учебные ядра, такие как JOS [2] и Pintos [3], микроядерные ОС, такие как MINIX3 [4], или даже модельные ядра, которые работают внутри обычных пользовательских процессов совместно с соответствующей моделью аппаратуры, как, например, Nachos [5], разработанная изначально на языке программирования С++ , а в последствии портированная на Java.

В рамках курса «Конструирование ядра операционной системы» для построения лабораторных работ было выбрано «экзо»-ядро JOS, которое уже более 10 лет используется для проведения курса Operating System Engineering в Массачусетском технологическом институте [2]. JOS работает в эмуляторе Qemu в режиме эмуляции архитектуры x86 и может быть запущена на не самых современных x86-совместимых компьютерах. JOS поддерживает простейшее управление задачами, управление виртуальной памятью, межпроцессное взаимодействие и файловую систему. В рамках курса Operating System Engineering части ядра JOS выдаются студентам постепенно и в неполнофункциональном виде, чтобы студенты самостоятельно доводили отдельные компоненты до работоспособного состояния.

По схожим принципам организован и курс «Конструирование ядра операционной системы». Его структура базируется на принципах проблемно-ориентированного обучения [6,7], согласно которым процесс обучения строится как последовательное решение поставленных проблем. Формирование курса заключается в построении цепочки «проблем», таким образом, чтобы для разрешения каждой следующей «проблемы» нужно было использовать как можно больше навыков, полученных при решении уже «пройденных». Однако, чтобы обучение происходило наиболее эффективно, необходимо обеспечить баланс между знанием, то есть тем, что студенту уже известно при попадании в проблемную ситуацию, и незнанием, то есть тем, что необходимо знать для ее успешного разрешения, но студенту ещё неизвестно.

Последовательность рассмотрения ключевых проблем построения ОС следующая:

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

На практических занятиях с целью получения ответов на поставленные проблемы выполняется постепенная разработка маленькой операционной системы, основаной на JOS. Разработка ведётся на язы- ке Си с небольшими количеством вставок на ассемблере x86. Запуск и отладка выполняются на эмуляторе ЭВМ Qemu. Каркас операционной системы постепенно выдаётся студентам, наполнение каркаса осуществляется совместно на семинарских занятиях и в ходе самостоятельной работы.

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

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

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

Литература
  • [1] О.Л. Петренко, А.В. Хорошилов. Профессиональное самоопределение студентов в контекстной среде обучения в монографии «Образовательная среда вуза как фактор профессионального самоопределения студентов». ISBN 978-5-91940-066-0. Москва, 2011.
  • [2] Курс Operating System Engineering Массачусетского технологического института. http://pdos.csail.mit.edu/
  • [3] Сайт учебного ядра ОС Pintos. http://pintos-os.org/
  • [4] Сайт микроядерной ОС MINIX3. http://www.minix3.org/
  • [5] Сайт ОС Nachos. http://homes.cs.washington.edu/~tom/nachos/
  • [6] А.М.Матюшкин. Проблемные ситуации в мышлении и обучении. Москва, 1972.
  • [7] О.Л.Петренко, А.В.Хорошилов. Создание контекстной среды для подготовки ИТ-специалистов. Cборник докладов 7-ой всероссийской конференции «Преподавание ИТ в России», Йошкар-Ола, 18–19 мая 2009 г.

Примечания и отзывы

Plays:1695   Comments:4