Я продолжаю мой цикл статей про IBM System/360 (первая часть о системе «в целом», вторая часть про архитектуру). Не затронутыми осталось несколько интересных тем, и первая из них — это операционные системы System/360, особенно исторический аспект их развития.
До начала 60-х годов, «мощные» и «бюджетные» решения IBM были несовместимы. Перенос программ был затруднен, а порою и совсем невозможен. Это обуславливалось многими причинами, начиная с разницы в операционных системах, и заканчивая различиями периферии. То, что сейчас кажется само собой очевидным — совместимость различных программных и аппаратных компонентов, тогда было совсем не обязательным. Именно в ходе разработки System/360 инженеры компании решили, что такой подход сильно удорожает разработку и дальнейшее сопровождение, и решили стандартизировать новую систему, упростив портирование программ и сопровождение ЭВМ.
Изначально планировалось поставлять компьютеры System/360 с новой операционной системой с пакетной обработкой заданий. Проще говоря, каждая программа, которую надо запустить, описывается в виде «пакета» — самой программы и набора входных данных. Эти пакеты обрабатываются последовательно в зависимости от приоритета и наличия ресурсов. Такой подход позволял уменьшить человеческое участие в планировании работы мейнфрейма и оптимизировать его загрузку, снижая таким образом накладные расходы. Операционная система должна была называться OS/360.
Разработчики этой ОС поставили перед собой невероятно амбициозные задачи, которые не решались до этого. Данная операционная система должна была обеспечить поддержку «многопрограммности». С медленной периферией исполнение только одной программы за раз приводило к частым простоям, когда система ждала каких-то данных с внешнего устройства. Поэтому использовался подход, схожий с современным асинхронным программированием. В память загружалось несколько программ и первая из них запускалась на выполнение. При необходимости долгого ожидания, контекст текущей программы сохранялся, и управление передавалось следующей, которая могла работать, пока первая ждала данные. Операционная система в этом случае должна была держать все под постоянным контролем, защищая загруженные программы от сбоев других программ, и контролируя доступ к ресурсам. Все это усложнялось отсутствием концепции виртуальной памяти. Операционная система должна была работать на всех моделях линейки, поэтому конфигурации разнились от 16 КБ ОЗУ и до 1 МБ, а скорость работы — от нескольких тысяч операций в секунду, до полумиллиона. Так же операционная система должна была удовлетворять потребности всех программ, начиная со сложных математических расчётов, почти не использовавших внешние накопители, и заканчивая простыми аналогами СУБД, которые полностью строились на операциях ввода-вывода.
Как видите, планы были амбициозными, но поджимало время. Аппаратная часть была готова поступить в продажу, конкуренты атаковали сегменты рынка, в которых IBM была наиболее уязвима, а стабильная и надежная версия OS/360 никак не рождалась. Читать полностью »