ЭВМHISTORY
Статьи. Обзоры. Истории
ЭВМHISTORY: операционные системы. Windows, iOS, UNIX, Android, DOS, Palm, Symbian

Операционные системы | NeXTSTEP



nextstep, next, step, некст, степ, стэп, os, операционная, система

NeXTSTEP — объектно-ориентированная многозадачная операционная система, которую разработала компания NeXT Computer для собственных компьютеров (NeXT computers, также известны как «black boxes»).


История


Стива Джобса выгнали из Apple 31 мая 1985 года. Он запускает стартап и перетягивает туда еще 5 своих бывших сотрудников. Они хотели создать совершенный компьютер для университетов и лабораторий. Незадолго до этого Джобс общался с нобелевским лауреатом по биологии Полом Бергом. Берг одобрил эту идею. Apple в целом была заинтересована вложиться в этот проект, но злость застилала глаза. Были и судебные разборки, но они завершились мирно. Стартап назвали NeXT Computer, Inc.

nextstep, next, step, некст, степ, стэп, os, операционная, система

Начало было вполне успешным. Джобс вложил 7 миллионов из собственного кармана. Были и другие инвестиции, например 20М от Росса Перо или 100М от Canon. В NeXT смогли создать компьютер, идеальный по форме и содержанию. Даже материнская плата была красивой. Магниевый кубический корпус был покрашен в черный матовый цвет. Даже стойку монитора сделали с любовью. На борту был звуковой чип, который поддерживал стерео с приличным качеством. Эти компьютеры выпускались на собственном заводе.

nextstep, next, step, некст, степ, стэп, os, операционная, система


NEXTSTEP


Джобс представил NeXT cube 12 октября 1988 года в Сан-Франциско. Операционная система называлась NEXTSTEP и работала на ядре Mach 2.0 и окружении 4.3BSD. Ядро было доработано и вобрало в себя как специфичные для NeXT особенности, так и обратно портированные функции из новых версий Mach. Оконный сервер был основан на Display Postscript, помеси языка описания страниц и оконной системы. Нечто подобное было у Sun и называлось NeWS.

nextstep, next, step, некст, степ, стэп, os, операционная, система

Основным языком программирования был Objective-C, для разработки интерфейса использовали Interface Builder. Для облегчения труда программистов поставлялись библиотеки-”кИты”, например Application Kit, Music Kit, и Sound Kit.

На момент выхода Куба NEXTSTEP был в версии 0.8. Релиз 1.0 состоялся только через год. NEXTSTEP 2.0 вышел ровно через год после 1.0. В этой версии добавили поддержку CD-ROM, цветных мониторов, сетевой файловой системы NFS, проверку правописания на лету, подгружаемые драйвера устройств, и так далее.

Осенью 1990 года Тим Бернерс-Ли в ЦЕРНе на компьютере NeXT создал первый браузер, с WYSIWYG и кнопкой “Запостить”. Его сотрудник Роберт Кайо сказал, что программу создали всего за несколько месяцев, благодаря продуманной системе разработки для NEXTSTEP.

nextstep, next, step, некст, степ, стэп, os, операционная, система

В 1992 году состоялась выставка NeXTWORLD Expo. Там показали NEXTSTEP 486 стоимостью 995 долларов, версию для понятно какой платформы.

Последняя версия NEXTSTEP 3.3 вышла в феврале 1995 года. К этому времени уже были мощнейшие средства разработки и множество библиотек для интерфейсов пользователя, баз данных, распределенных объектов, мультимедиа, сетей и т.д. Для разработки драйверов был объектно-ориентированный тулкит Driver Kit. NEXTSTEP работал на платформах Motorola 68k, x86, PA-RISC и SPARC. Поддерживались fat binaries, которые работали на любой поддерживаемой платформе.

Хотя NEXTSTEP была крутой, а железо NeXT стильным, они не выжили. Зимой 1993 года NeXT отказывается от производства собственных компьютеров и сосредотачивается на NEXTSTEP для x86.

nextstep, next, step, некст, степ, стэп, os, операционная, система

Совместно с Sun Microsystems NeXT выпускает спецификации OpenStep, открытого набора API и фреймворков для разработки объектно-ориентированных ОС поверх любого стороннего ядра. Из коробки поддерживались SunOS, HP-UX и Windows NT. Собственная реализация на базе NEXTSTEP вышла в июле 1996 года под названием OPENSTEP 4.0. Вскоре появились обновления 4.1 и 4.2. OpenStep API и OPENSTEP особо не помогли NeXT. Основным продуктом стал WebObjects, фреймворк для разработки веб-приложений. Он перешел Apple при слиянии компаний и достаточно широко используется и по сей день.

Objective-C

Objective-C — это объектно-ориентированный язык, разработанный Брэдом Коксом и Томом Лавом в начале 80-х. Это объектная надстройка над чистым С, с динамическим связыванием и обменом сообщениями по принципу Smalltalk. Этот язык проще в изучении и по функциональности, чем С++. Например, не поддерживаются множественное наследование и перегрузка операторов. Кокс и Лав основали StepStone Corporation и лицензировали язык и компилятор NeXT. В 1995 году NeXT получает все права на интеллектуальную собственность StepStone, которая имеет отношение к Objective-C. Компилятор Objective-C в Mac OS X основан на модифицированной версии GCC (так было только в ранних версиях Xcode. Потом от него постепенно отказались в пользу clang).


Числа Маха


В комплекте с операционной системой Apple досталось и ядро Mach. Кратко посмотрим на его историю.

nextstep, next, step, некст, степ, стэп, os, операционная, система


Rochester's Intelligent Gateway



Группа исследователей в университете Рочестера в 1975 году начала разработку продвинутого шлюза RIG (Rochester's Intelligent Gateway). Он был нужен для предоставления единообразного доступа к множеству локальных и удаленных вычислительных ресурсов. Локальными ресурсами могли быть диски, ленты, принтеры, плоттеры, компьютеры целиком, а удаленными — узлы ARPANET или другой сети. Операционная система RIG называлась Aleph и работала на миникомпьютере Data General Eclipse.

nextstep, next, step, некст, степ, стэп, os, операционная, система
Алеф — первая буква таки понятно какого алфавита

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

RIG загнулся несколько лет спустя из-за фундаментальных ограничений. Сообщения могли быть не больше 2 Кб из-за ограниченного адресного пространства. Это привело к неэффективности IPC. Порты были вообще никак не защищены, и доступ к ним никак не контролировался. Не было способов контроля сбоев, и так далее.


Accent


Ричард Рашид, один из разработчиков RIG, в 1979 году перебрался в университет Карнеги-Меллон (CMU). Там он присоединился к проекту ядра сетевой ОС Accent. Подобно RIG, он был основан на IPC, но имел меньше недостатков. Была защита портов и виртуальная память. Можно было пересылать сообщения процессам удаленного компьютера. Accent создавали для двух проектов распределенных вычислений: Spice для персонального использования и устойчивой к сбоям сети датчиков DSN. Название получилось из-за игры слов. Accent — это приправа производства Accent Inc., состоящая только из глутамата натрия, он же monosodium glutamate, MSG. А программисты очень любят обозначать сообщения как msg.

За несколько лет разработки никакого вменяемого результата так и не получилось. Пора было обновлять железо, добавлять поддержку многопроцессорности и портируемость. Были и проблемы с совместимостью с Unix.


Mach


Продолжение Accent назвали Mach. К времени выхода Mach UNIX развивался уже полтора десятка лет. Разработчики Mach осознавали важность и практичность UNIX, но отмечали, что изначальная простота куда-то делась. Ричард Рашид говорил, что ядро превратилось в свалку всего чего только можно.

Mach разрабатывали в пику громоздкости UNIX. Цели были таковы:

  • Полная поддержка мультипроцессорных систем
  • Поддержка всевозможных особенностей современных архитектур. Например, различных моделей доступа к памяти — NUMA и NORMA
  • Прозрачная поддержка распределенных вычислений
  • Максимально уменьшить размер ядра и упростить API, но при этом не потерять функциональность
  • Полная совместимость с UNIX
  • Разрешить ограничения Accent

Mach начали строить на базе кода 4.3BSD. Как примеры использовали и RIG с Accent. Детали реализации виртуальной памяти подсмотрели в Tenex Operating System производства DEC. По мере развития проекта код BSD заменили на самописный, ну и конечно добавляли новые компоненты.

Ричард Рашид вспоминает, что после множества неудачных вариантов приняли название MUCK, Multiprocessor Universal Communication Kernel. Один из его сотрудников, Дарио Джузе, произносил это с итальянским акцентом как Mach — Мак. Так и прижилось.

После выхода Mach в 1986 году его превозносили как “… Новое ядро для разработки UNIX ”. “Новое ядро” на английском весьма созвучно с NuKernel. Ядро шло к некоторому успеху, хотя и не все это заметили.

Ядро Mach строилось на четырех базовых принципах:
  • Задача — это контейнер для ресурсов (памяти, портов, процессоров), принадлежащих одному или нескольким потокам
  • Базовой единицей выполнения является поток. Они выполняются в среде исполнения, предоставленной задачей. Каждый поток имеет свой набор регистров, но память у них разделяемая и принадлежит задаче
  • Порт аналогичен таковому в Accent. Это внутриядерная очередь сообщений для взаимодействия процессов в Mach
  • Сообщение — это набор данных, которые поток может отправить в порт другого потока.

Другой важной абстракцией был объект памяти. Это контейнер для данных любого вида, включая файлы, который отображается в адресное пространство задачи. Mach не мог работать без блока управления памятью, и предоставлял удобный интерфейс pmap для работы с ним. Управление памятью в UNIX предполагало непрерывное адресное пространство, с кучей и стеком, растущими навстречу друг другу. А в Mach система виртуальной памяти разрабатывалась с прицелом на огромные и разреженные виртуальные адресные пространства. Широко поддерживалось разделение операций чтения и записи и копирование при записи для ускорения работы. Абстракция памяти через объекты позволяла использовать внешнюю память, которая могла быть даже на другом компьютере. Из прочих приятных плюшек можно вспомнить относительно свободную лицензию.

Из-за микроядерной концепции само ядро не умеет предоставлять программам ввод-вывод, сеть или доступ к файловым системам. Это все перекладывается на операционную систему. Предполагалось, что так будет проще. Сама по себе операционная система представляет собой одну из задач поверх ядра Mach. В версиях 2.0 и 2.5 это не соблюдалось — BSD и Mach выполнялись в одном адресном пространстве. На основе версии 2.5 Open Software Foundation выпускает ядро для своей системы OSF/1. Еще можно вспомнить применения Mach в Mt. Xinu, NEXTSTEP, OPENSTEP, Omron LUNA/88k, Multimax (Encore) и много где еще.

Mach 3 начали разрабатывать в CMU. а продолжили в OSF. Это была первая истинно микроядерная версия, в которой BSD выполнялось как задача. Ядро Mach было чем-то вроде гипервизора, и на него портировали много операционных систем. Некоторые можно было запускать вообще в режиме пользователя.

Симметричная мульти-серверная операционная система Mach-US предоставляла системные сервисы посредством серверов и библиотек, загружаемых каждым процессом. К сервисам относились межпроцессное взаимодействие, управление процессами, взаимодействие с сетью и локальными устройствами. Библиотеки могли перехватывать системные вызовы и эмулировать другие операционные системы. Были эмуляторы для различных версий BSD, DOS, OSF/1, SVR4, VMS, OS/2, Mac OS, HP-UX и многих других.

Прочие обновления в третьей версии:
  • Поддержка реалтайма. Выгружаемое ядро и фреймворк планировщика реального времени
  • Низкоуровневая поддержка устройств. Устройство представляется как порт для сообщений с поддержкой синхронного и асинхронного I/O
  • Переписанная с нуля реализация IPC
  • Перенаправление системных вызовов и вынос их обработки в юзерспейс
  • Использование продолжений (continuations). Это служба ядра, которая позволяет процессу блокироваться при определении функции продолжения, которая будет вызываться при работе процесса (??? — прим. перев.)

Ричард Рашид ушел на должность главного по исследованиям в Microsoft, другой лидер Эви Теванян перешел в Apple главным по технологиям.


MkLinux


Apple и OSF (позже Open Group, еще позже Silicomp) начали портировать ядро Linux на железо Power Macintosh и модифицированное микроядро Mach. Получилось ядро osfmk и система под названием MkLinux. Монолитное ядро Linux работало как единственный процесс микроядра. Первый релиз на основе Linux 1.3 вышел в начале 1996 года под названием MkLinux DR1. Более поздние версии основывались на ядрах 2.0. Один из релизов вошел в Apple's Reference Release. Многие наработки по этому проекту вошли в Mac OS X.

О названиях проектов

После приобретения NeXT у Apple появилось два направления развития операционных систем: доработка Mac OS для потребительского рынка и разработка новой продвинутой серверной ОС Rhapsody на базе NeXT.

Apple использовала для проектов не только цветные названия вроде Pink и Red. Были и музыкальные. Copland и Gerswhin назвали в честь композиторов Аарона Копленда и Джорджа Гершвина. «Рапсодия в голубых тонах» — это известное произведение Гершвина.

© @marks

Для Geektimes.Ru.


В начало


Операционные системы | NeXTSTEP



Рейтинг@Mail.ru Яндекс.Метрика