Разработчик | Лаборатория компьютерных наук Массачусетского технологического института ( LCS) |
---|---|
Семейство ОС | Unix-подобный |
Рабочее состояние | Исторический |
Исходная модель | С открытым исходным кодом |
Первоначальный выпуск | 1986 ( 1986 ) |
Доступно в | Английский |
Платформы | NuMachine |
Тип ядра | Монолитное ядро |
Пользовательский интерфейс по умолчанию | Интерфейс командной строки |
TRIX — это сетевая исследовательская операционная система, разработанная в конце 1970-х годов в Лаборатории компьютерных наук (LCS) Массачусетского технологического института профессором Стивом Уордом и его исследовательской группой. Она работала на NuMachine и имела встроенную в ядро функциональность удаленного вызова процедур , но в остальном была аналогом Unix версии 7 .
При запуске NuMachine загружал одну и ту же программу на каждый ЦП в системе, передавая каждому экземпляру числовой идентификатор ЦП, на котором он работал. TRIX полагался на эту конструкцию, чтобы первый ЦП настраивал глобальные структуры данных, а затем устанавливал флаг, сигнализирующий о завершении инициализации. [1] После этого каждый экземпляр ядра мог получить доступ к глобальным данным. [1] Система также поддерживала данные, частные для каждого ЦП. [1] Доступ к файловой системе предоставлялся программой в пространстве пользователя . [1] [2]
Ядро поддерживало неименованные потоки, работающие в доменах. [1] Домен был эквивалентом процесса Unix без указателя стека [2] (каждый поток в домене имел указатель стека [2] ). Поток мог менять домены, [1] и системный планировщик перемещал потоки между ЦП, чтобы все процессоры были заняты. [1] Потоки имели доступ к одному виду примитива взаимного исключения и одному из семи приоритетов. [1] Планировщик был разработан, чтобы избежать инверсии приоритетов . [1] Программы пользовательского пространства могли создавать потоки через spawn
системный вызов. [1]
Сборщик мусора будет периодически выявлять и освобождать неиспользуемые домены. [1]
Модель общей памяти, используемая для координации работы между различными ЦП, вызывала конфликты на шине памяти и, как известно, была источником неэффективности. [1] [2] Разработчики знали о конструкциях, которые могли бы смягчить конфликт. [2] Действительно, первоначальный дизайн TRIX использовал неблокируемый механизм передачи сообщений, [2] но «было обнаружено, что эта реализация имеет недостатки, которые часто упускаются из виду в литературе», [2] включая низкую производительность. [2]
Хотя операционная система TRIX была впервые реализована на NuMachine, это было связано с доступностью NuMachine в MIT, а не с какими-либо особенностями архитектуры. [1] Система была разработана так, чтобы ее можно было легко переносить. [2] Она была реализована в основном на языке C с небольшим количеством ассемблерного кода. Примитив взаимного исключения мог быть перенесен на любую архитектуру с помощью атомарного теста и инструкции set . [1]
Ричард Столлман упоминает в Манифесте GNU 1985 года , что «начальное ядро существует» для операционной системы GNU , «но для эмуляции Unix требуется гораздо больше функций». [3] Это была ссылка на ядро TRIX, которое авторы TRIX решили распространять как свободное программное обеспечение . [4]
В своей речи в октябре 1986 года Столлман пояснил, что «ядро TRIX работает и имеет определенную ограниченную совместимость с Unix, но ему нужно гораздо больше. В настоящее время у него есть файловая система, которая использует ту же структуру на диске, что и древняя файловая система Unix. Это упростило отладку, потому что они могли настроить файлы с помощью Unix, а затем запустить TRIX, но эта файловая система не имеет ни одной из функций, которые, по моему мнению, необходимы». [5] Функции, которые Столлман хотел добавить (управление версиями файлов, восстановление удалений, информация о том, когда, как и где файл был скопирован на ленту, атомарные обновления файлов), в целом не ассоциировались с Unix.
В декабре 1986 года разработчики использовали ядро TRIX в качестве основы в своей первой попытке создать ядро для GNU. В конце концов они решили, что Trix непригоден в качестве отправной точки, в первую очередь потому, что: