Готовый перевод Niklaus Wirth, Jurg Gutknecht - Project Oberon. The Design of an Operating System and Compiler / Никлаус Вирт, Юрг Гуткнехт - Проект Oberon. Разработка операционной системы и компилятора: 1. Historical Background and Motivation
Как может кто-то старательно сосредоточиться на своей работе после обеда при таком тепле, великолепном солнце и голубом небе? Этот риторический вопрос я задавал себе много раз во время творческого отпуска в Калифорнии в 1985 году. Вернувшись домой, каждый почувствует призыв солнца проводить свободное время на природе, путешествовать или заниматься любимым видом спорта. Но там каждый день был похож на этот, и поддавшись искушению можно было поставить точку на всей работе. И не выбрал ли я это место из-за его заманчивого, приятного климата?
К счастью, моя работа тоже была увлекательной, поэтому за нее проще было взяться. У меня была привилегия сидеть за самой продвинутой и мощной рабочей станцией в мире, изучать секреты новейших причуд быстрой разработки, перемещая разноцветные прямоугольники с одного места на экране в другое. Все это происходило при строгом соблюдении законов физики и новейших технологий. К счастью, продвинутый компьютер жалуется немедленно, если какое-либо правило нарушено, он является контролером правил и выступает в роли вашего старшего брата, предупреждая вас от шагов, ведущих к неприятностям. И он сделал то, что было невозможно для любого — он следил за тысячами ограничений расположения тысяч прямоугольников. Это называлось системой автоматизированной разработки. Автоматизированная — это преувеличение, но компьютер не жаловался на приуменьшение его роли.
Пока мои глаза были прикованы к цветному экрану, и пока я сталкивался со свидетельствами моей новой неадекватности, через всегда открытую дверь зашел мой коллега. Ему тоже повезло провести отпуск от домашних дел в той же лаборатории, но его лицо не было особо счастливым, скорее разочарованным. Плитка шоколада в руке значила для него тоже самое, что чашка кофе или трубка для других, помогая временно расслабиться и отвлечься. Это был не первый случай, когда он был в таком настроении, поэтому я без лишних слов догадался о его причинах, И этот эпизод повторялся много раз.
Его дни не были наполнены большой радостью нажатия на прямоугольники, он имел предназначение. Ему была поручена разработка компилятора для этого передового компьютера. Поэтому он был вынужден более тесно, если не в основном, иметь дело с низкоуровневым программным обеспечением.
Постоянные программные сбои были вполне понятны в его случае, т. к. он программировал, в то время как я только использовал компилятор как программу: в общем, я был конечным пользователем! Все эти ошибки воспринимались не с целью исправления, а с целью поиска пути их предотвращения. Как нужно было проникнуть в суть вопроса, чтобы этого достичь? Я понял, что до тех пор избегал этого вопроса; я был ограничен ознакомлением с самым необходимым в этой новой системе, что было необходимо для решения этой задачи на мой взгляд.
Очень скоро стало понятно, что изучение этой системы почти невозможно. Ее масштабы были просто пугающими, а документация, соответственно, разрозненной. Ответы на вопросы, которые ежеминутно возникали лучше всего было получить у разработчиков системы, которые все были дома. Делая это, мы пришли к шокирующему открытию — мы не можем понять ее язык. Пояснения были полны жаргона и ссылок на другие части системы, которые были так же загадочны для нас.
Поэтому наши вызванные разочарованием перерывы от конструирования компилятора и архитектуры микросхем стали посвящаться попыткам понять сущность, основы новых аспектов системы. Что отличает ее от традиционных операционных систем? Какие из этих концепций существенны, какие из них могут быть улучшены, упрощены или даже отброшены? И где же их корни? Может ли сущность системы быть выпарена и отделена, как в химическом процессе?
Во время последующих обсуждений постепенно появилась идея создать свою собственную систему. И вдруг это стало реальностью. «Безумство» - была моя первая реакция, и «невозможно». Истинный объем работы казался непреодолимым. В конце концов мы оба должны были вернуться к своим преподавательским обязанностям дома. Но эта мысль уже поселилась в наших умах...
Через какое-то время после возвращения домой мне предложили вести важный курс по системному программному обеспечению. Из-за того что моим неписанным правилом было иметь дело в основном с принципами операционных систем, я колебался. Мои сомнения были легко объяснимы: я никогда не разрабатывал ни операционные системы, ни их части. И как кто-то может преподавать инженерную дисциплину без личного опыта?!
Невозможно? Но разве мы не разрабатывали компиляторы, операционные системы и редакторы документов небольшими командами? И разве я не убеждался неоднократно в том, что неудовлетворительная и разочаровывающая программа может быть написана с нуля с частями исходного кода, используемого в исходной системе? Наш мозговой штурм продолжался, со многими перерывами на несколько недель, и определенные формы структуры системы медленно проступали сквозь дымку. Через какое-то время было принято нелепое решение: мы создадим дизайн операционной системы для нашей рабочей станции (которая оказалась намного менее сильной, чем та, на которой я нажимал прямоугольники) с нуля.
Главная цель - получить собственноручный опыт, полное понимание каждой детали, изначально определялась объемом нашей рабочей силы: два программиста на неполный рабочий день. Мы ориентировочно установили себе срок завершения работы в три года. Как выяснилось позже, это было хорошая оценка: написание началось в начале 1986 года и первая версия системы вышла осенью 1988 года.
Несмотря на то, что поиск подходящего названия для проекта обычно является наименьшей проблемой и часто отдается воле случая или капризу разработчиков, здесь уместно рассказать, как Оберон вышел на сцену в нашем случае. Так случилось, что во время начала нашей работы, космический зонд Вояджер сообщил последние новости с серией эффектных снимков планеты Уран и ее спутников, самый большой из которых называется Обероном. С тех пор как он стартовал, я считал проект Вояджер необыкновенно хорошо спланированным и успешным начинанием, и как маленький дар этому проекту я выбрал название последнего его исследования. Существует очень мало инженерных проектов, чьи продукты выходят далеко за рамки ожиданий и пределы ожидаемого времени их жизни: чаще они выходят из строя гораздо раньше, особенно в области программного обеспечения. И, не в последнюю очередь, мы выяснили, что короля эльфов звали Обероном.
Сознательно запланированный дефицит рабочей силы навязывал одно, но полезное правило: сосредотачиваться на существенных функциях и пренебрегать украшениями, которые просто угождают обычаям и преходящим вкусам. Конечно, основное ядро было первым, что должно было быть осознано и выкристаллизовано. Но основа была заложена. Основное правило стало еще более важным, когда мы решили, что результат должен быть пригоден для использования в качестве учебного материала. Я помнил жалобы C.A.R. Hoare на книги, которые должны быть написаны на основе реальных операционных систем, а не незрелых, абстрактных принципов. Он жаловался в начале 70х, что инженеры в нашей области вынуждены постоянно создавать новые артефакты без возможности изучить предыдущие работы, которые доказали свою ценность в этой области. Как же он был прав, даже в наше время!
Возникшая цель публикации результатов со всеми их деталями поставила вопрос выбора языка программирования в новом свете: стало важным то, что Модула-2, которую мы планировали использовать, оказалась не совсем подходящей. Во-первых, потому что ей не хватало возможности быстрой расширяемости подходящим путем. А мы сделали расширяемость принципиальным свойством новой системы. «Подходящий» путь включал машинную независимость. Для наших программ было прямо запрещено обращаться к машинно-зависимым и низкоуровневым программным средствам, возможно за исключением интерфейсов устройств, для которых это неотъемлемо.
Т.о., Модула-2 была расширена функцией, которая сейчас известна как расширение типа. Мы также поняли, что Модула-2 содержит несколько средств, которые нам не нужны, которые в действительности не способствуют ее выразительной силе, но в тоже время увеличивают сложность компилятора. А компилятор должен был быть не только реализован, но также описан, изучен и понят. Это привело к решению начать с чистого листа также и в области разработки языка и к применению того же принципа: сосредотачиваться на существенном, освободившись от остального. Новый язык, который все еще имел сходство с Модулой-2, получил тоже название, что и система: Оберон [1, 2]. В отличии от своего предшественника он более лаконичный и, кроме всего прочего, является важным шагом в направлении написания программ на высоком уровне абстракции без ссылок на машинно-зависимые особенности.
Мы начали проектирование системы поздней осенью 1985 года, а программирование — в начале 1986. В качестве носителя мы использовали рабочую станцию Лилит и ее язык Модула-2. Сначала был разработан кросс-компилятор, за ним последовали модули внутреннего ядра вместе с необходимыми средствами тестирования и загрузки. Разработка системы отображения и текстовой системы шла одновременно, конечно, без возможности тестирования. Мы изучили, как отсутствие отладчика, и даже более того, отсутствие компилятора, может способствовать аккуратному программированию.
После этого последовал перевод компилятора на Оберон. Это было сделано быстро, т. к. оригинал был написан в ожидании дальнейшего перевода. После того, как он стал доступен на целевом компьютере Церера вместе с работоспособностью средств редактирования текста, пуповина, связывавшая с Лилит была разорвана. Система Оберон стала реальностью, по крайней мере ее эскизная версия. Это произошло примерно в середине 1987 года, после этого было опубликовано его описание [3].
Окончательное оформление системы заняло еще год, и было сосредоточено на присоединении рабочей станции к сети для передачи файлов [4], на централизованных средствах печати, и на средствах технической поддержки. Цель завершения системы в течении трех лет была достигнута. Система была представлена в середине 1988 года широкому сообществу пользователей и смогла начаться работа над приложениями. Была разработана служба электронной почты, была добавлена графическая система, и были выполнены различные работы по развитию общей системы подготовки документов. Средства отображения были расширены для поддержки двух мониторов, включая цветные. В то же время, обратная связь от полученного опыта включалась в улучшение существующих частей. С 1989 года Оберон заменил Модулу-2 в наших вводных курсах по программированию.
В этом месте, возможно, будет уместно сказать пару слов об аппаратном уровне. Рабочая станция Церера была также разработана в Институте компьютерных систем ETH, и она предоставляла идеальную платформу для реализации Системы Оберон на чистой машине. Она предлагала очень ценную возможность разработки без связи с установленными ограничениями и избавляла от компромиссов с несовместимым окружением.
Церера-1 была построена на базе микропроцессора National Semiconductor 32032, который в 1985 году был первым коммерчески доступным процессором с 32-разрядной шиной. Он был особенно привлекателен для создателей компиляторов из-за своего регулярного набора инструкций. Компьютер имел 2Мб оперативной памяти, 40Мб жесткий диск, дисковод, монитор 1024*800 точек, и, конечно, клавиатуру и мышь. Эти ресурсы были более чем подходящими для Системы Оберон.
Церера-2 была представлена в 1988 году и заменяла процессор его более быстрой версией – NS 32532, которая увеличивала вычислительную мощность как минимум в 5 раз по сравнению с предшественником. ОЗУ было увеличено до 4-8Мб, а жесткий диск – до 80Мб. Для установки программного обеспечения должны были быть адаптированы “только” несколько модулей: ядро из-за другой страничной структуры и драйверы устройств из-за других адресов устройств.
В 1990 году была разработана дешевая версия – Церера-3, и 100 компьютеров были построены и установлены в лабораториях. Эти одноплатные компьютеры, основанные на процессоре NS 32GX32, без модуля виртуальной адресации и имеют по 4-8Мб ОЗУ. Отличительной чертой является то, что файловая система реализована в одной (защищенной) части ОЗУ вместо диска, драматично увеличивая скорость работы. Церера-3 не имеет механически движущихся частей (нет вентиляторов) и поэтому она полностью бесшумна. Она в основном используется в лабораториях для студентов. Необходимость центрального сервера для распределения системных файлов очевидна.
Из-за своего успеха и гибкости в использовании, в 1989 году был начат проект по переносу Системы на ряд коммерчески доступных рабочих станций. План установки на пустые машины, как на Цереры, был быстро отброшен: никто бы не стал пробовать экспериментировать с Обероном, если ему для этого нужно было бы купить другой компьютер или только поменять диски. Был выбран компромисс в виде строительства на базе существующей системы; за это пришлось платить частью памяти, занимаемой редко используемыми программами, иногда значительной. На момент написания этой книги реализации существовали для Apple’s Macintosh II, Sun Microsystem’s Sparc Station, DEC’s DECStation 3100 и 5000, и IBM RS/6000. Каждая из этих реализаций потребовала около половины человеко-года работы. Решение о построении на основе существующей системы обладает неоспоримым преимуществом – приложения, существующие в базовой системе, доступны в Обероне. Все эти системы в соответствии с их опубликованным описанием в Руководстве Пользователя [Reiser, 1991], имеют одинаковый пользовательский интерфейс, и каждая программа, работающая на одном из компьютеров, может быть выполнена на любом другом без изменений. Очевидно, что это важное преимущество может быть получено только путем программирования на высоком уровне абстракции, таком как язык Оберон.
Литература
1. N. Wirth. The programming language Oberon. Software - Practice and Experience 18, 7, (July 1988) 671-690.
2. M. Reiser and N. Wirth. Programming in Oberon - Steps beyond Pascal and Modula. Addison-Wesley, 1992.
3. N. Wirth and J. Gutknecht. The Oberon System. Software - Practice and Experience, 19, 9 (Sept. 1989), 857-893.
4. N. Wirth. Ceres-Net: A low-cost computer network. Software - Practice and Experience, 20, 1 (Jan. 1990), 13-24.
5. M. Reiser. The Oberon System - UserGuide and Programmer's Manual. Addison-Wesley, 1991.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/4714/14759
Переводчики: last_alien
Настройки
Готово:
