Операционная система CTSS
CTSS (Compatible Time-Sharing System) — одна из первых в мире операционных систем с разделением времени, разработанная в Массачусетском технологическом институте (MIT) в начале 1960-х годов. CTSS стала ключевым экспериментом в области интерактивных вычислений, заложив основы для создания современных многопользовательских операционных систем, включая Multics и UNIX. Система работала на мэйнфреймах IBM 709, 7090 и 7094 и позволила нескольким пользователям одновременно работать с компьютером через удалённые телетайпы, что было революционным для того времени.
История
Предпосылки создания
В конце 1950-х годов вычислительная техника развивалась по принципу пакетной обработки данных: программист сдавал перфокарты оператору, который загружал их в машину, а результат выдавался спустя часы или дни. Отладка программ была крайне медленной. В 1959 году профессор MIT Джон Маккарти, один из пионеров искусственного интеллекта, в меморандуме для Массачусетского технологического института предложил концепцию «интерактивного вычисления» с разделением времени, что позволило бы пользователям напрямую взаимодействовать с машиной.
Разработка
В 1961 году группа под руководством Фернандо Корбато из Лаборатории компьютерных наук MIT начала реализацию этой идеи на базе компьютера IBM 709. Первая версия CTSS (Compatible Time-Sharing System) запущена в эксплуатацию в 1962 году. Название «Compatible» (совместимая) подчёркивало, что система сохраняла полную совместимость с существующими программами, написанными для однопользовательской операционной системы IBM Fortran Monitor System (FMS), чтобы обеспечить плавный переход.
Система разрабатывалась параллельно с созданием первого в мире универсального языка программирования высокого уровня для разделения времени — MAD (Michigan Algorithm Decoder), который стал основным средством написания системных утилит CTSS.
Эксплуатация
CTSS функционировала на IBM 7094 (с 1963 года) в MIT до середины 1970-х годов. Она использовалась для обучения студентов, научных исследований и разработки более сложных программных продуктов. Именно на CTSS была впервые реализована концепция файловой системы с иерархической структурой каталогов, командного интерпретатора (shell) и механизма прерываний для управления процессами.
Влияние на последующие системы
Опыт CTSS напрямую привёл к разработке проекта Multics (1965–1969), который, хотя и не стал коммерчески успешным, послужил источником вдохновения для создателей UNIX (Кен Томпсон и Деннис Ритчи). В 1969 году, покинув проект Multics, Томпсон написал первую версию UNIX, взяв из CTSS ключевые принципы: многозадачность, файловую систему и командную оболочку.
Архитектура и принципы работы
Разделение времени
Центральная идея CTSS — распределение процессорного времени между множеством активных задач (пользователей). Каждому пользователю выделялся небольшой квант времени (типично 0,02–0,1 секунды). Часы реального времени генерировали прерывания, по которым система переключала контекст выполнения, сохраняя состояние одного задания и загружая следующее. Благодаря высокой скорости переключения (порядка 10–20 переключений в секунду) создавалась иллюзия одновременной работы.
Аппаратная поддержка
Для реализации разделения времени на IBM 7094 потребовались модификации: установлен специальный таймер прерываний и система защиты памяти. Без аппаратной поддержки одновременное выполнение нескольких задач было бы невозможно из-за риска взаимного искажения данных. Система использовала память с банковской организацией: ядро занимало фиксированную область, а для каждого пользователя отводился отдельный банк памяти.
Командный интерпретатор
Пользователи взаимодействовали с CTSS через командную строку, вводимую на телетайпах (например, модели IBM 1050 или ASR-33 Teletype). Командный язык включал:
- типичные команды: LOGIN, LOGOUT, LISTF (список файлов), PRINT, RUN, EDIT
- редактирование текста: встроенный редактор (фактически первая строка — редактор TECO, предшественник Emacs)
- возможность запуска программ без компиляции: системы загрузки объектных модулей из файлов.
Файловая система
CTSS внедрила первую известную реализацию иерархической файловой системы с корневым каталогом и подкаталогами. Файлы имели имена длиной до 8 символов и расширения. Система поддерживала концепцию «ссылки» на устройства ввода-вывода, что позже стало стандартом в UNIX. Важным новшеством была возможность использовать символьные имена устройств (например, TAPE, PRINTER) вместо физических адресов.
Процессы и управление задачами
Каждому подключённому пользователю соответствовал один активный процесс. Система вела очередь готовых к исполнению задач, используя алгоритм циклического планирования (round-robin). Для предотвращения зависаний был реализован механизм «watchdog timer»: если процесс не освобождал процессор в течение заданного кванта, система принудительно его прерывала.
Ключевые особенности
Совместимость с пакетными системами
Главным ограничением CTSS была полная программная совместимость с однопользовательскими режимами пакетной обработки. Большая часть старых программ на Фортране работала без изменений, что упростило внедрение. Однако это же создавало проблемы: любая программа могла выдать команду на остановку процессора (HALT), что приводило к краху всей многопользовательской системы — требовалась защита таких команд только для привилегированных задач.
Ограничения памяти
IBM 7094 имел 32 Кбайта оперативной памяти (32768 36-битных слов). Система делила это пространство на:
- ядро CTSS (около 6–7 Кслов)
- пользовательские области (оставшаяся часть, распределяемая динамически). При четырёх пользователях каждому доставалось лишь несколько килослов, что сильно ограничивало размер выполняемых программ.
Типичная рабочая нагрузка
Система поддерживала одновременное подключение до 30 телетайпов, но реальное число пользователей редко превышало 20–25. Типичная сессия включала написание и отладку коротких программ на Фортране или MAD, редактирование текстовых файлов и выполнение системных команд.
Значение и наследие
Научное влияние
CTSS стала первой работающей системой, продемонстрировавшей практическую осуществимость разделения времени. Её архитектура легла в основу учебных курсов MIT по операционным системам. Отчёты по CTSS (особенно техническая записка MIT «The Compatible Time-Sharing System: A Programmer’s Guide», 1963) цитируются как фундаментальные работы в области вычислительной техники.
Социальное значение
Впервые вычислительная мощность стала доступна не одному, а многим исследователям одновременно. Это радикально ускорило процесс разработки программ: время отладки сократилось с дней до минут. Вокруг CTSS сформировалось первое сообщество пользователей, использующих общую систему для коллективной работы.
Технические инновации
Среди технологий, впервые применённых в CTSS:
- Командная строка как универсальный интерфейс взаимодействия
- Иерархическая файловая система
- Планировщик задач с круговым циклом
- Система аутентификации (логин/пароль)
- Условное блокирование файлов при многопользовательском доступе
- Программные прерывания (системные вызовы) как стандартный механизм взаимодействия с ОС
Прямые потомки
В 1965 году на основе кода CTSS была разработана система MULTICS (ранее — Multiplexed Information and Computing Service). Хотя Multics была написана заново, её архитектура во многом наследовала принципы CTSS. В свою очередь, UNIX, созданный Кеном Томпсоном в 1969–1970 годах, заимствовал из CTSS: иерархию файлов, командный интерпретатор (sh), понятие «системного вызова» и механизмы синхронизации процессов. Современные операционные системы (Linux, Windows, macOS) продолжают использовать эти базовые концепции, заложенные CTSS.
Правовой статус и доступность
Исходный код CTSS был утерян или фрагментирован. В 1960-х годах документация распространялась исключительно в бумажной форме. В 2014 году Библиотека MIT оцифровала и выложила в открытый доступ полный набор технических руководств по CTSS (около 5000 страниц). Реконструкция системы возможна на эмуляторах IBM 7094 (например, SIMH). Факсимильные копии лент с системными модулями хранятся в архиве Музея компьютерной истории (Калифорния).
Источники
- F. J. Corbató, et al. The Compatible Time-Sharing System: A Programmer’s Guide. MIT Press, 1963.
- F. J. Corbató, V. A. Vyssotsky. Introduction and Overview of the Multics System. AFIPS Conference Proceedings, vol. 27, 1965.
- M. Campbell-Kelly, W. Aspray. Computer: A History of the Information Machine. Westview Press, 1996.
- Technical reports of the MIT Computation Center (1961–1969).
- Официальный архив документации CTSS — MIT Libraries, Cambridge, MA, 2014.
- Эмулятор IBM 7094 — SIMH (Computer History Simulation Project).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →