«Золотой век» операционных систем и преподавание ОС в университетах России

Сафонов Владимир Олегович

«ЗОЛОТОЙ ВЕК» ОПЕРАЦИОННЫХ СИСТЕМ И ПРЕПОДАВАНИЕ ОС В УНИВЕРСИТЕТАХ РОССИИ

Аннотация

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

Ключевые слова: операционные системы, Windows, Solaris, UNIX, Linux, IBM 360, «Эльбрус».

ВВЕДЕНИЕ. «ЗОЛОТОЙ ВЕК» ОПЕРАЦИОННЫХ СИСТЕМ И РЕСУРСЫ ДЛЯ ИЗУЧЕНИЯ ОС

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

Статья продолжает серию статей автора о преподавании ИТ, начатую статьей [1].

Нынешнее время можно назвать «золотым веком» операционных систем для пользователей, студентов и преподавателей. Ведущие фирмы в области ИТ, такие как Microsoft и Sun, активно развивают свои операционные системы Windows и Solaris для различных современных аппаратных платформ. Более

© В.О. Сафонов, 2009

того, они объявили о программах open source и shared source в области операционных систем. Активно развиваются также ОС семейства Linux.

Программа Microsoft Academic Program [2] открывает академическим и университетским программистам «святую святых» Microsoft - исходные коды ядра операционных систем Windows серии NT (Windows Research Kernel - WRK), к которым принадлежат, как известно, Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 2008. Кроме того, эта академическая программа предоставляет набор учебных материалов и инструментов для изучения внутренней архитектуры Windows - Windows Operating System Internals Curriculum Resource Kit (CRK) - а также предлагает исследовательский проект ProjectOz по разработке операционных систем из готовых «строительных блоков», используя WRK и Windows CRK. Лет десять назад подобное было бы немыслимо. Еще в 2003 г. корпорация Microsoft объявила аналогичную академическую программу Windows Embedded Shared Source [3],

предоставляющую доступ для академических целей к исходным кодам версий Windows для встроенных систем.

Фирма Sun Microsystems уже несколько лет развивает академическую программу OpenSolaris [4], предоставляющую академическому сообществу возможность не только изучать исходные коды большей части операционной системы Solaris, но и развивать их, причем фирма Sun официально объявила, что наиболее интересные методы, алгоритмы, исходные коды, разработанные академическими участниками программы Open Solaris, будут интегрироваться в новые коммерческие версии операционной системы Solaris.

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

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

Что касается современной и классической литературы по ОС на русском языке, то следует отметить прежде всего замечательную серию учебников А. Танен-баума [5, 6, 7] по операционным системам и сетям, а также не стареющую классическую книгу [8], в которой все описанные основные положения, методы, алгоритмы остаются актуальными, поэтому всегда рекомендую ее студентам.

Уникальна также книга [9] - первая работа, подробно описывающая внутреннюю архитектуру современных ОС семейства Windows, выдержавшая уже несколько изданий.

Автор статьи сравнительно недавно, с 2003 года, читает основной курс «Операционные системы и сети» [10, 11, 12] для студентов 2 курса специальностей «Информатика в социологии» и «Информати-

ка в международных отношениях» мате-матико-механического факультета СПбГУ. Продолжительность курса - 64 академических часа.

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

Программа и принципы преподавания моего курса по ОС, как и программы других моих курсов и семинаров, опубликованы в монографии [12] на английском языке, вышедшей в издательстве John Wiley & Sons в 2008 г. Инновационный характер предлагаемых курсов, а не только основного материала книги -АОП и Aspect.NET - был отмечен и оценен рецензентами книги на сайте www.amazon.com.

ОПЫТ И ПРИНЦИПЫ ПРЕПОДАВАНИЯ ОС

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

Именно в операционных системах нашли отражение такие базовые разделы, классические задачи и алгоритмы ИТ, как стратегии и алгоритмы управления памятью, управления ресурсами, стратегии предотвращения и разрешения тупиков, параллельные процессы и потоки и методы их синхронизации, методы управления файлами и файловые системы, сетевые протоколы и технологии. Интересно и весьма показательно, что подчас в ходе чтения общего курса по операционным системам приходится ссылаться не на книги собственно по ОС, а на столь общие работы, как монография Д. Кнута «Искусство программирования», в особенности на ее первый том «Основные алгоритмы» [14]. Эти фундаментальные идеи и алгоритмы реализованы в операционных системах.

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

Например, в ходе чтения курса обязательно даю студентам практические сведения о современных портах и адаптерах, включаемых в состав настольных (desktops) и портативных (laptops) компьютеров -универсальных портах USB 2.0, быстродействие которых (240-260 Мбит/с) - в 12-15 раз превосходит быстродействие первых моделей USB); портах IEEE 1394 (FireWire) для обмена мультимедийной информацией с цифровыми видеокамерами; портах HDMI (High-Definition Multimedia Interface) для подключения видеооборудования высокой четкости и др. Это вызывает огромный интерес студентов.

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

ностях его использования - цепочках (гирляндах) устройств под уникальными номерами (SCSI ids), подключаемых к одному SCSI-порту.

Кроме того, весьма важно, чтобы студенты из курса по ОС получали необходимую им конкретную практическую информацию для администрирования своих домашних и офисных компьютеров и локальных сетей. Об этом спрашивают очень многие и с интересом выслушивают ответы. Например, в этом году я во время лекции в виде небольшого теста спросил студентов, что такое Remote Desktop Connection (удаленный рабочий стол), и почти никто из них до моего объяснения этого не знал. Теперь, уверен, все они будут пользоваться этой удобной возможностью ОС Windows, позволяющей легко организовать сеанс работы на (как правило, более мощном) удаленном компьютере, если известно его сетевое имя или IP-адрес.

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

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

Обучение новым возможностям ОС.

В настоящее время широкую популярность приобретают аппаратные и программные средства параллельного программирования - многоядерные процессоры (multi-core CPUs), вычислительные кластеры (computer clusters), многопоточное программирование (multi-threading), библиотеки для распараллеливания программ (OpenMP, MPI, ParallelFx и др.). Все это представляет для студентов очень большой интерес. Для них, как и для преподавателей, параллельные вычисления - одна из наиболее интересных тем. С точки зрения преподавания операционных систем, очень важно дать студентам представле-

ние о новых возможностях поддержки параллельных вычислений в современных ОС и заинтересовать их этим. Прежде всего, имею в виду новую линию развития ОС семейства Windows для кластерных и параллельных вычислений (в терминологии ведущих ИТ-фирм, высокопроизводительных вычислений - High-Performance Computing, HPC): ОС Windows Server 2003 for Clusters, а также самую современную ОС Windows 2008 HPC, выпущенную в ноябре 2008 г. Для поддержки параллельных вычислений на кластерах фирма Microsoft выпустила пакет программ Windows 2008 HPC Pack, который может быть инсталлирован для любой современной ОС Windows (например Windows XP) и позволяет организовать на ней вычислительный кластер, предоставляя удобные средства визуализации компонент кластера и управления им.

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

История и сравнительный анализ ОС.

Исторический и сравнительный анализ развития концепций и разработок в области ИТ являются неотъемлемой частью моего подхода к преподаванию - ERATO (Experience, Retrospective, Analysis, Theory, Oncoming perspectives); в русском варианте - ТРОПА (Теория, Ретроспектива, Опыт, Перспектива, Анализ) [1, 12]. Данный подход весьма эффективен для преподавания ОС, так как современные студенты, привычные к использованию в основном графических оболочек ОС (Windows, Linux, Solaris и др.) на настольных и портативных компьютерах (подчас эти оболочки для разных ОС по внешнему виду и возможностям почти неотличимы друг от друга), не имеют представления о непростом пути развития операционных систем - от мощных, но усложненных и громоздких ОС - MULTICS, IBM 360/370, Эльбрус к последующим упрощениям и унификации файловых систем и интерфейсов, впервые

предложенных в начале 1970-х гг. авторами системы UNIX, и последующей разработке и поддержке во всех современных ОС стандарта POSIX (Portable Operating Systems of UNIX Type). Студентам сейчас непросто себе представить, что, например, в отечественной операционной системе Эльбрус [15] для одноименного семейства супер-ЭВМ 1970-1980 гг. файл имел... более 100 (!) различных атрибутов, а набор операций над файлами и их сигнатура зависели от физического расположения файла на том или ином типе внешних устройств.

Программисты нашего поколения хорошо помнят громоздкую концепцию «наборов данных» (data sets) ОС IBM 360 и неуклюжие DD-предложения для описания доступа к ним в языке управления заданиями этой операционной системы, изобиловавшие несколькими подряд запятыми или другими знаками препинания. Чего стоила, например, последовательность VOL=SER=NOS, аббревиатура для термина серийные номера томов, которую российским программистам, подчас не знавшим английского языка, приходилось запоминать с помощью... сказочных персонажей - «волк - серыш нос» (!) Отечественные специалисты по ИТ, кто, как и я, в свое время много лет работал на «Эльбрусе», помнят многоатрибутные файлы-«монстры» в этой системе и экзотические операции над ними типа ГЕНФАЙЛ( БАРАБАН) -создание анонимного временного файла на барабане без создания его имени в какой-либо директории - которые могли приводить к ошибочным ситуациям с не менее забавными названиями - например, СИТОШВУ - ситуация ошибки внешнего устройства, или СИТНЕТВАРХ - ситуация «нет имени в архиве», где под «архивом» понималась директория. В общем, как шутили программисты на «Эльбрусе», устав после вынужденной ночной работы на единственной в стране доступной работающей машине, - СИТНЕТСИЛ.

После всех этих искусственных усложнений и проблем для нас в свое время стала откровением простая идея, положенная в основу системы файлов

UNIX: файл - это... последовательность байтов

Однако следует отметить, что в некоторых наиболее развитых ранних ОС многие современные идеи, методы, механизмы были уже реализованы, хотя подчас под другими названиями. Например, разработчики ОС Эльбрус могут гордиться тем, что в этой системе еще в конце 1970-х годов был реализован механизм многопо-точности (multi-threading) и облегченных процессов (lightweight processes), исполняемых в том же виртуальном адресном пространстве, что и родительский процесс -других процессов в «Эльбрусе» просто не было! Процесс в «Эльбрусе», как впоследствии, через десятилетие, облегченный процесс в версиях ОС UNIX конца 1980-х -начала 1990-х гг., представлялся адресом своего стека, а контекстное переключение с одного процесса на другой осуществлялось одной аппаратной операцией СМСТЕК (сменить стек).

Отечественные и зарубежные ОС. При обучении операционным системам не следует создавать у студентов ошибочное представление о том, что всегда якобы разрабатывались и использовались только зарубежные ОС. Не будем забывать о том, что в течение десятилетий - с 1950-х гг. по конец 1980-х гг., - несмотря на известные решения сверху о копировании и массовом производстве в СССР компьютеров IBM 360 (под названием ЕС ЭВМ) и миникомпьютеров PDP 10/PDP 11 (под названием СМ ЭВМ), существовали и развивались, преодолевая упорное сопротивление и проблемы с финансированием, оригинальные отечественные разработки в области аппаратуры и операционных систем. Из более поздних и наиболее интересных отечественных разработок, помимо уже упоминавшегося «Эльбруса», следует отметить оригинальную отечественную архитектуру компьютера БЭСМ-6 и ее более высокопроизводительный аналог на более новой элементной базе - Эльб-рус-Б. Для БЭСМ-6 были разработаны отечественные операционные системы ДИСПАК (дисковая система пакетной

обработки заданий), ДИАПАК (система диалоговой и пакетной обработки заданий), ОС ИПМ и другие. Именно БЭСМ-6 и ее операционные системы стали наиболее массовым и надежным отечественным продуктом в области ИТ. Для БЭСМ-6 было создано большое число компиляторов (например, компилятор Паскаль-монитор, оптимизирующие компиляторы с Фортрана, компилятор Алгол-ГДР), пакеты прикладных программ; диалоговые мониторные системы с элементами общения на естественном языке и другое уникальное программное обеспечение. Все эти достижения невозможно вычеркнуть из нашей отечественной истории ИТ, а значит, о них должны знать наши студенты.

В этом отношении всецело поддерживаю современные намерения правительства и руководства отечественной сферы ИТ о поддержке разработки отечественных операционных систем на базе имеющегося открытого исходного кода ОС семейства Linux. На мой взгляд, это перспективное направление работы для наших молодых программистов (при условии их достойного финансирования), которое позволит им проявить себя и, в конечном итоге, создать конкурентоспособный продукт. Однако по опыту и зарубежных и отечественных разработок в области операционных систем хотелось бы предостеречь руководителей этих проектов: во-первых, необходима полнейшая корректность в отношении соблюдения (и, если требуется, покупки) лицензий на использование кода Linux, то есть новая ОС не должна стать еще одним «цельнотянутым» продуктом; во-вторых, на этом пути не следует ожидать быстрого результата. Любая ОС - это сложнейший программный продукт, который после разработки новой опытной версии должен пройти «обкатку» в течение 2-3 лет. За это время выяснятся все недостатки, уязвимости в системе безопасности, неудобства, недоработки, ошибки, отсутствие драйверов для распространенных видов устройств - типичная проблема всех новых ОС и т. п. Только когда все эти проблемы будут решены (приблизитель-

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

Терминология, компетентность и творческие контакты с зарубежными специалистами. В октябре 2007 г. мне довелось побывать на очень интересном семинаре по архитектуре операционной системы Windows в одном из ведущих университетов Петербурга. Семинар проводили разработчики Windows на английском языке. Однако, откровенно говоря, во время семинара мне стало очень неудобно за наших специалистов, которые не смогли адекватно переводить во время доклада основные термины из области операционных систем с английского языка на русский. Пришлось им немного подсказать. Например, термин swapping уже в течение 40-50 лет имеет в литературе по ОС известный русскоязычный аналог - откачка и подкачка. Имеется в виду считывание с диска в основную память операционной системой кода и данных для их использования (исполнения) - подкачка (по-английски - swap in) - и запись измененных данных из памяти на диск при необходимости освобождения занимаемых ими областей основной памяти - откачка (swap out). По крайней мере, в своем курсе по ОС я все эти основные термины -как по-русски, так и по-английски - подробно разъясняю студентам-второкурсникам, так что, надеюсь, нынешнее поколение студентов и молодых специалистов по ИТ будет жить при полном знании англоязычной терминологии по ОС. Обращаю на это особое внимание коллег-препода-

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

Изучение конкретных ОС, наряду с общим курсом по ОС. Разумеется, помимо общего курса по ОС и сетям для студентов 2 курса, необходимы также спецкурсы и практика по основным семействам операционных систем. В университетских программах должны быть представлены курсы и практические занятия по UNIX, Solaris, Linux, MacOS, а также по менее распространенным сейчас в России операционным системам фирмы IBM (времена IBM 360 давно прошли!) и Hewlett-Packard. Что мы имеем на данный момент у нас на мат-мехе? Кроме основного курса по ОС и сетям, большинство студентов слушают и сдают элективный курс по UNIX; некоторые студенты также посещают и сдают элективный курс по программированию для Windows. Это хорошо, не совершенно недостаточно.

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

Система Solaris - наиболее интересное развитие UNIX в части сетевых возможностей, поддержки параллельного (в особенности многопоточного) программирования и новых видов файловых систем.

MacOS и ее разработчик фирма Apple -многолетние «законодатели мод» в области поддержки развитых графических пользовательских интерфейсов, а также новых видов общения с пользователем (например речевого ввода информации, который был реализован на некоторых моделях Mac еще в начале 1990-х гг.).

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

или HP в Петербурге) и по своей работе постоянно использующих ОС соответствующих фирм. Фирмы Sun и Microsoft, к тому же, ежегодно проводят интересные конференции и семинары - Sun Technology Days и Microsoft Developer Days, частью которых являются не только лекции, но и практикум по новым ОС. Всегда сам посещаю эти конференции и рекомендую их своим ученикам.

Для изучения некоторых современных ОС (например MacOS или новых ОС фирмы IBM) необходима и более дорогостоящая аппаратная поддержка.

Литература

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

ЗАКЛЮЧЕНИЕ

В статье бегло затронуты лишь некоторые основные проблемы преподавания ОС и сетей в России. Приглашаю уважаемых коллег к дискуссии. Отзывы о статье присылайте, пожалуйста, по электронной почте: v_o_safonov @ mail. ru

1. Сафонов В.О. Актуальные проблемы преподавания технологий программирования в России // Компьютерные инструменты в образовании, 2008, № 5.

2. Web-сайт Windows Academic Program: http://www.microsoft.com/resources/sharedsource/ windowsacademic/default.mspx

3. Web-сайт Windows Embedded Shared Source: http://www.microsoft.com/resources/sharedsource/ licensing/winembedcesslp.mspx

4. Web-сайт проекта OpenSolaris: http://opensolaris.org/os/

5. Таненбаум Э. Современные операционные системы. СПб.: Питер, 2007.

6. Таненбаум А. Операционные системы. Разработка и реализация. 3-е изд. СПб.:Питер, 2007.

7. Таненбаум А. Компьютерные сети. СПб.: Питер, 2006.

8. Цикритзис Д., Бернстайн Ф. Операционные системы. М.: Мир, 1977.

9. Соломон Д., Руссинович М. Архитектура операционных систем Windows 2000, XP, 2003. М.: Русская редакция, 2007.

10. Сафонов В.О. Операционные системы и сети. Основной курс для студентов 2 курса специальностей «Информатика в социологии» и «Информатика в международных отношениях» // http:// www.microsoft.com/rus/msdnaa/curricula, разд.: «Технология разработки программного обеспечения», разд.: «Операционные системы», ноябрь 2007.

11. Safonov V.O. Operating Systems and Networking. University Course Curriculum // http:// www.msdnaa. net/curriculum/?id=6006, December 2004.

12. Safonov V.O. Using Aspect-Oriented Programming for Trustworthy Software Development. Wiley Interscience // John Wiley & Sons, 2008.

13. Silbershatz A., Galvin P., Gagne G. Operating System Concepts // John Wiley & Sons, 2001

14. Кнут Д. Искусство программирования для ЭВМ. Т. 1. Основные алгоритмы. М.: Мир, 1975.

15. Сафонов В.О. Языки и методы программирования в системе Эльбрус. М.: Наука, 1989.

Abstract

The article describes the author's experience on teaching and using operating systems. The current situation is analyzed in the area of agile OS development (including open source OS projects), which is beneficial both for students and for teachers. A number of methods, modern tools and resources for teaching OS are proposed.

Сафонов Владимир Олегович, доктор технических наук, профессор кафедры информатики СПбГУ, руководитель лаборатории ]аха-технолог и и, v_o_safonov@mail.ru

© Наши авторы, 2009. Our authors, 2009.

ИHФОPМATИКA

9