GEORGE — название серии операционных систем , выпущенных компанией International Computers and Tabulators (ICT) в 1960-х годах для серии компьютеров ICT 1900. К ним относятся GEORGE 1 , GEORGE 2 , GEORGE 3 и GEORGE 4 .
Первоначально машины серии 1900, как и Ferranti-Packard 6000, на базе которой они были созданы, работали под управлением простой операционной системы, известной как Executive , которая позволяла системному оператору загружать и запускать программы с системной консоли на базе Teletype Model 33 ASR .
В декабре 1964 года ICT создал Отделение операционных систем для разработки новой операционной системы для 1906/7. Отделение изначально было укомплектовано людьми, уволенными к концу работы над операционной системой OMP для Ferranti Orion . Первоначальный проект новой системы, названной George в честь главы отдела базового программирования Джорджа Э. Фелтона , [1] был основан на идеях Orion и системы спулинга компьютера Atlas . [2] Публично утверждалось, что George означает GENERAL ORGANISATIONAL ENTERPRISE, но современные источники говорят, что это был бэкроним . [3]
В июле 1965 года группа из ICT присутствовала на семинаре в NPL, где описывала операционную систему CTSS, разработанную для проекта MAC Массачусетского технологического института . Они решили, что ICT должна будет предоставить средства множественного доступа , известные в ICT как MOP, «Multiple Online Processing». В ноябре 1965 года глава отделения операционных систем HP Goodman посетил осеннюю совместную компьютерную конференцию в Лас-Вегасе, где первоначально были описаны планы Multics . [4] Некоторые из обсуждаемых функций Multics повлияли на будущее развитие George, в частности, древовидное структурированное хранилище файлов.
К концу 1965 года отдел маркетинга ИКТ запросил, чтобы более простая операционная система была доступна быстро, особенно для меньших членов диапазона. Было решено, что две меньшие системы, известные как George 1 и George 2, будут выпущены быстро, а большая операционная система была переименована в George 3.
George 1 была простой системой пакетной обработки . Описания заданий считывались с карточек или бумажной ленты, которые управляли загрузкой и запуском программ, загруженных с карточек, бумажной ленты или магнитной ленты. Язык управления заданиями позволял определять используемые периферийные устройства и файлы, а также обрабатывать исключительные ситуации. Описание задания проверялось на наличие ошибок перед запуском задания. George использовал доверенные программные средства, предоставленные руководителем, для запуска пользовательских программ.
George 2 добавил концепцию офлайновой периферийной обработки ( спулинга ). Несколько различных модулей, работающих параллельно, позволяли перекрывать операции ввода, обработки и вывода:
Если бы установка была достаточно большой, можно было бы запустить несколько копий центрального модуля, что позволило бы выполнять несколько заданий параллельно.
Язык управления заданиями George 2 позволял использовать сохраненные макросы с условными функциями.
George 2 не предоставлял файловой системы, система и пользовательские программы полагались на возможности, предоставляемые executive . Доступ к файлам на диске осуществлялся по уникальным 12-символьным именам, и никакой защиты, кроме бита «не стирать», не предоставлялось.
MINIMOP можно было запускать одновременно с GEORGE 2 на одной машине, обеспечивая возможность разделения времени в режиме онлайн.
GEORGE 3 [5] была основной версией серии операционных систем для более крупных машин серии 1900. Первоначально она была выпущена для 1906/7; в конечном итоге она стала доступна для моделей вплоть до 1902T. В отличие от George 1 и 2, которые работали как программы пользовательского режима под управлением Executive, George 3 была полноценной операционной системой, оставляя только низкоуровневую периферию и обработку прерываний для урезанной версии Executive.
George 3 был реализован как небольшая часть, резидентная в памяти, и набор глав ( оверлеев ), которые загружались в память и удалялись из нее по мере необходимости. Главы были строго независимы от местоположения, что позволяло наилучшим образом использовать память. Внутренне George использовал кооперативную многозадачность ; переключение контекста могло происходить при любой смене главы (вызов из одной главы в другую) или в других указанных местах кода. Код уровня пользователя запускался с использованием упреждающей многозадачности ; переключение контекста принудительно выполнялось при операциях ввода-вывода или тактах часов. [6]
George был написан на специальном ассемблере GIN (George INput), который имел более богатые возможности условной компиляции и макросов, чем стандартный ассемблер PLAN. Макросы активно использовались кодом для уменьшения усилий по программированию такой большой системы на языке ассемблера. В более поздних версиях макрофункции GIN использовались для добавления структурных функций программирования в код. Написание системы, по оценкам, заняло 75 программистских лет усилий. [7]
George 3 представлял собой смешанную пакетную и онлайновую систему. Задания можно было запускать с карточек или ленты так же, как и George 2, или интерактивно с терминалов MOP (Multiple Online Processing), либо простых терминалов Teletype Model 33 ASR , либо терминалов VDU блочного режима .
Язык управления заданиями был одинаковым на терминалах или в пакетных заданиях и включал условные операции и макрооперации . В отличие от систем Unix язык управления заданиями был частью операционной системы, а не был процессом оболочки уровня пользователя .
Задание может иметь только одну программу, загруженную в память за раз, но одно задание может запускать другие задания для параллельного выполнения, если системные ресурсы и политика сайта это позволяют. Система будет выгружать пользовательские программы из памяти, пока они ждут ввода или вывода, если другие действия требуют памяти для выполнения.
George 3 предоставил древовидную структуру хранилища файлов, частично вдохновленную Multics .
У каждого пользователя системы был домашний каталог с необходимым количеством подкаталогов. Доступ к домашнему каталогу пользователя можно было получить напрямую, например, каталог для пользователя JOHN можно было обозначить как :JOHN , или по полному пути, например, если JOHN работал в отделе компьютерных наук, его домашний каталог мог быть :MANAGER.USERS.COMPSCI.JOHN .
Для обеспечения безопасности использовались списки контроля доступа : пользователь мог разрешить или запретить любому пользователю или группе пользователей доступ к своим файлам или каталогам.
Хранение файловых данных было двухуровневым: файлы могли либо находиться на диске, либо, если на диске было мало места, они могли автоматически пересылаться на магнитную ленту. Если предпринималась попытка доступа к файлу, который в данный момент находится в автономном режиме, задание приостанавливалось, и операторам предлагалось загрузить соответствующую ленту. Когда лента становилась доступной, файл возвращался на диск, и задание возобновлялось.
Базовый механизм хранения на диске George 3 в 1968 году, вероятно, был самой ранней коммерческой версией файловой системы Copy-On-Write . Это работало так, что все измененные блоки записывались в блоки в списке «свободных». Блоки, содержащие метаданные, также обрабатывались таким же образом, но вместе с блоками данных физически записывались в таком порядке, что когда последний «главный» блок был записан, файл был зафиксирован. Если машина в какой-либо момент вышла из строя, аппаратное обеспечение гарантировало, что файл будет либо в своей первоначальной, неизмененной форме, либо полностью обновленным.
Еще одной полезной функцией было то, что Filestore мог эмулировать все стандартные периферийные устройства, такие как считыватели карт и перфораторы, магнитные ленты и диски. Это позволяло старым программам George 1 и 2, которым требовались эти физические устройства, работать под George 3 без модификации. Это могло ускорить задания, требующие множества замен лент или дисков на George 1 и 2, автоматизируя их до такой степени, что то, что требовало двух операторов, несколько десятков замен лент и пять часов, теперь не требовало никаких операторов, кроме как для монтажа двух рабочих лент для результатов, и завершалось за 45 минут.
Начиная с 1904A, для более крупных процессоров 1900 был доступен страничный блок, и George 4 был написан для его использования. George 4 оставался совместимым с George 3. Было принято чередовать George 3 и 4 на одной машине и в одном хранилище файлов, запуская George 3 днем для небольших интерактивных рабочих нагрузок и George 4 ночью для больших, интенсивно использующих память задач. [8]
Джордж 4 ввел концепцию разреженной программы, программы, которая имела адресное пространство больше, чем выделенная ей память и только для чтения ( чистые ) данные и области кода. Для использования этих возможностей были предоставлены новые версии консолидатора ( линкера) и компиляторов.
Исходный код George 3 и 4 был одинаковым; для выбора версии системы, подлежащей компиляции, использовались возможности условной компиляции ассемблера GIN.
Поскольку функция пейджинга 1900 года не была реализована в машинах серии 2900, использовавшихся в более поздних установках George, George 4 вышел из употребления еще до выхода George 3.
George распространялся в форме, которая позволяла сайту изменять большие части системы. Компиляция системы была начата, затем прервана непосредственно перед концом и сброшена на магнитную ленту. Компилятор GIN позволял продолжить компиляцию с этой точки на сайте пользователя, возможно, изменяя уже скомпилированный код.
Версии George 3 до релиза 8 были предоставлены в двоичной форме. Любые изменения, необходимые для системы, были сделаны в виде двоичных патчей. Для упрощения процесса большинство глав George включали пустую область MEND в конце.
Начиная с релиза 8 исходный текст Джорджа распространялся с бинарным файлом, как на магнитной ленте, так и на микрофише. Для модификации системы использовалась система патчей исходного уровня, известная как MENDITS , и существующая глава могла быть полностью заменена новой измененной главой.
Группа пользователей George создала "схему обмена MEND" для обмена интересными модификациями George. Некоторые модификации распространялись бесплатно, другие были доступны за плату. Когда ICL выпускала новую версию George, они иногда включали модификации, созданные пользователями.
Для последней выпущенной версии 8.67 большинство патчей из схемы обмена MEND были включены в стандартный исходный код George, отключенные условной компиляцией . Их можно включить как часть стандартного процесса адаптации George для сайта.
Джордж был хорошо документирован внутри в серии папок с отрывными листами, распространяемых как первоначальная версия плюс поправки. В конце концов все оригинальные страницы были заменены, поэтому любая новая копия руководств состояла из коробки пустых папок с отрывными листами и стопки поправок. Первой поправкой был список участников, а техническая причина поправки была описана как «чтобы все были довольны».
Модифицированная версия George 3 была поставлена в Региональный компьютерный центр Манчестерского университета (UMRCC). Это связало George 3 с машиной CDC Cyber , на которую George поставлял функции автономного ввода-вывода и очередности заданий. Онлайн-поддержка предоставлялась ICL и Cyber как для аппаратного, так и для программного обеспечения. Команда поддержки Cyber работала в офисе с надписью « Cybermen » на двери. [ требуется цитата ]
С выпуском «новой линейки» ICL, серии 2900 с операционной системой VME , George устарел. Однако из-за наследия инвестиций в программное обеспечение для George, ICL выпустила опции для запуска программного обеспечения серии 1900, включая George, на машинах серии 2900, изначально Direct Machine Environment (DME), позже Concurrent Machine Environment (CME), что позволяло одновременно запускать код 1900 и 2900 на одной системе.
Новые версии George 3 продолжали выпускаться для 2900. Последней версией была 8.67, выпущенная в 1983 году.
По состоянию на 2005 год по крайней мере один сайт в России все еще использовал George 3 под DME. [9]
В ноябре 2014 года George 3 был запущен на отремонтированном ICL 2966 в Национальном музее вычислительной техники . [10]
Дэвид Холдсворт и Делвин Холройд получили копии кассет с записями выпуска George 3, когда последний работающий сайт в Великобритании , British Steel Corporation , был выведен из эксплуатации, и написали эмулятор для оборудования 1900 года и исполнительную систему, которая позволяет запускать George на Microsoft Windows и Linux в рамках проекта для Computer Conservation Society . [11] [12]
Неожиданно я получил сообщение от русского, у которого до сих пор работает система George 3 на DME.
Рад сообщить, что проект 2966 достиг важной вехи в этом месяце. 15 ноября мы успешно загрузили George 3 под CME в первый раз, и к концу дня терминал 7501 был доступен посетителям для игры в приключение Colossal Cave, которое обычно размещается на Raspberry Pi с запущенным George 3 Executive Emulator.