home Преподавание Информационных Технологий в России
Открытая всероссийская конференция

АПКИТ
Конференция

Информационное сообщение

Место проведения

Программа конференции

Участники

Фоторепортаж

Программный комитет

Программный комитет

Спонсоры
Информ. спонсоры
Орг. поддержка

ЛАНИТ-ТЕРКОМ

Нижегородский госуниверситет им. Н.И. Лобачевского

ПОСТРОЕНИЕ ПРАКТИКУМА ПО ОПЕРАЦИОННЫМ СИСТЕМАМ НА ОСНОВЕ ИЗУЧЕНИЯ И МОДИФИКАЦИИ ИХ ИСХОДНЫХ ТЕКСТОВ

Коньков Константин Алексеевич (konkov@strongdisk.ru)
к.ф.-м.н., доцент
Московский физико-технический институт, г. Москва

Аннотация
На примере разработанной в Гарвардском университете учебной операционной системы ОS/161 показана возможность построения практикума к курсу операционных систем на основе изучения и модификации их исходных текстов.

Традиционное построение практических занятий к курсу "Операционные системы" предполагает активное использование API изучаемых систем (см., например, [1]). Однако, чтобы получить исчерпывающее представление о внутренних механизмах, алгоритмах и структурах данных операционных систем (ОС) необходимо уметь анализировать и может быть даже модифицировать их исходные тексты. Применение в учебных целях популярных ОС, таких как Unix (Linux, FreeBSD и др.) или Windows (проект Windows Research Kernel) несмотря на доступность их кодов затруднительно, поскольку они обладают чрезмерной степенью реализма, что делает обучение сложным. Лучше использовать специальные учебно-методические ОС, где зачастую специально оставлены нереализованные части, которые студенты могут сделать самостоятельно.

В ряду полномасштабных методических ОС, таких как Nachos, Minix, Topsy и др. можно выделить разработанную в Гарвардском университете ОS/161 [2], исполняемую на эмуляторе MIPS. Данная ОС имеет относительно небольшой объем (основное ядро приблизительно 11000 строк кода), простую структуру, и реалистичную среду исполнения. Удобная отладка с помощью двух консольных окон Unix позволяет легко трассировать различные компоненты ядра системы. На примере данной ОС легко проиллюстрировать основные положения курса операционных систем.

ОС/161 имеет монолитную архитектуру. Основные системные события, такие как прерывания, системные вызовы и исключительные ситуации обрабатываются традиционным образом с помощью ловушек (traps). Адреса процедуры обработки входят в состав обобщенного вектора прерываний, причем в листингах системы хорошо просматриваются соответствующие структуры данных. Breakpoint'ы поставленные отладчиком в нужных местах программного текста, позволяют выполнить наблюдение за обработкой асинхронных событий.

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

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

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

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

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

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

Литература

  1. Карпов В.Е., Коньков К.А. Основы операционных систем. Издательство "Интуит.ру". 2005 г. - 2-е издание
  2. http://www.eecs.harvard.edu/~mdw/course/cs161
 

В начало :: О конференции :: Программа :: Доклады :: Контакты

Техническая поддержка сайта:
Copyright © АП КИТ, 2005
hosted by TERCOM
webmasters: perez&helga