Исторически функции операционной системы развивались совместно с развитием самой вычислительной техники. В свое время было принято выделять поколения вычислительных машин, опираясь на элементную базу их реализации: электронные лампы, полупроводниковые транзисторы, микросхемы и т. д. Однако не сами эти свойства влияли на появление новых системных программных средств.

Основное влияние на развитие системного программного обеспечения общего назначения оказали четыре фактора: унификация архитектуры вычислительных машин, объем оперативной памяти, быстродействие процессора и состав периферийных устройств. Так, для первых машин, в работе с которыми участвовали в основном их конструкторы, ни о какой унификации не было и речи. В каждом коллективе проводились эксперименты как с составом команд, так и с величиной разрядной сетки вычислений. На время решения задачи программист, он же и оператор, становился полновластным хозяином вычислительной установки. Он сам загружал программу, сам вводил данные и оценивал результаты.

Библиотеки стандартных программ. После появления серийно выпускаемых машин стала возможна стандартизация в подходах к разработке программного обеспечения и произошло выделение программистов в отдельный класс пользователей. Естественным средством обобщения и накопления опыта программирования в этот период стали библиотеки стандартных программ, реализующих типовые функции: тригонометрические, математические (log, ехр, sqrt), ввод данных с внешних носителей, вывод, преобразования из одной системы счисления в другую и т.п. Типичным примером подобной библиотеки могла служить библиотека стандартных программ ИС-2 (интерпретирукицая система) для машин типа М-20. При этом следует заметить, что М-20 была серийно выпускаемой машиной с трехадресной системой команд; подобной ей системой команд обладали машины БЭСМ-3, БЭСМ-4, а позднее и М-220.

Комплекс программ ИС-2 программист загружал в оперативную память до загрузки основной функциональной программы. Исполъзовался стандартный интерфейс, позволяющий исполняемой программе обратиться к одной из функций системной библиотеки. Аля этого нужно было указать кол нужной функции и область памяти для взаимодействия, например область памяти для загрузки данных.

Позднее большая часть вычислительных функций перекочевала в библиотеки языков программирования и даже стандартные процедуры перевода данных из одной формы представления в другую, а вот типовые действия, связанные с вводом и выводом, стали неотъемлемой частью операционных систем. В настоящее время в программистской среде для подобных функций операционной среды используют термин АРI (Application Programming Interface), подчеркивая тем самым прикладной характер подобных системных средств.

По мере того как архитектура вычислительных машин типизировалась и их быстродействие росло, все острее становилась проблема потерь времени при подготовке программы к выполнению: загрузке в оперативную память, установке носителей с данными, т.е. инициализации информационного окружения задачи, Действительно, когда процессор может выполнять десятки тысяч операций в секунду, затраты полутора-двух минут на установку колоды перфокарт с программой и ввод ее приводят к потере возможности выполнения 300 000 — 500 000 команд.

Пакетные мониторы. Решение нашлось в создании системных программ — мониторов, которые позволяли быстро загружать заранее подготовленные на магнитных носителях (в то время это чаще всего были магнитные ленты) пакеты программ и данных. Для внешнего обслуживания выполнения пакетов появилась особая группа специалистов — операторы. Они загружали на магнитные носители пакеты, подготовленные программистами. Потом запускали мониторную программу, которая сама последовательно считывала очередную задачу в оперативную память, создавала необходимое информационное окружение и запускала программу на выполнение,

Аля ускорения выполнения программ результаты не печатались сразу, а выводились на накопительное устройство — часто такую же магнитную ленту. И лишь потом, котла все расчеты были закончены, полученные данные постепенно распечатывались на бумагу. Это позволяло сократить простои процессора, скорость работы которого в тысячи раз превышала скорость печати.

Этот период развития системных средств характеризовался включением в состав операционной системы программы системного ввода для подготовки пакетов, программы системного монитора (иногда ее называли диспетчером, управляющей программой или программой управления сеансами пользователей) и программы системного вывода для разгрузки полученных при расчетах пакета данных на выходные устройства, например на печать.

Что очень важно, вместе с пакетным монитором появился язык, на котором программисты могли оформлять свои задания. Сначала он назывался языком управления заданиями. Позднее стали чаще использовать термин «язык команд операционной системы», потому что его составной частью были команды, выполняемые командным интерпретатором ОС.

По мере роста емкости оперативного запоминающего устройства у операторов появилась возможность постоянно держать в памяти вычислительной установки все эти три программных средства

(ввода, мониторинга и вывода). В результате во все время работы можно было вводить новые задания и по мере готовности распечатывать результаты. Вод и вывод делались в низкоприоритетном режиме, а основное время процессор использовался для последовательного решения задач пакета заданий.

Наличие языка управления заданиями позволило программисту не присутствовать при решении его задачи. Ему достаточно было описать различные ситуации, которые могли бы возникнуть при счете, и предусмотреть соответствующую реакцию операционной системы. Остальное обслуживание вычислений ложилось на плечи оператора. К этому же времени следует отнести явное отделение программистов, подготавливающих программы расчетов на различных языках программирования, от пользователей, которые с помощью этих программ решали прикладные задачи, соединяя в пакетах программы и данные с помощью языка управления заданиями.

Мультипрограммирование, многозадачность. Дальнейший рост скорости работы процессора и объема оперативной памяти привел к тому, что потенциально на машине могли одновременно выполняться программы нескольких пользователей. Это вызвало необходимость решения двух проблем — обеспечения независимости параллельно выполняемых программ и защиты данных различных пользователей, программы которых одновременно находятся в работе.

Для решения первой задачи стали развивать функции диспетчера, который теперь должен был не только планировать работу по смене программ в пакете, но и принимать решение о том, какой из активных программ можно сейчас передать ресурсы центрального процессора. Одновременно на него легла задача распределения памяти между параллельно выполняемыми программами.

В свою очередь, аппаратные средства стали следить за тем, чтобы одна задача не могла помешать работе другой независимой задачи. Это обеспечивалось за счет различных средств защиты памяти, которые приводили к немедленному останову (прерыванию} программы, если она обращалась к адресному пространству чужой задачи.

Как мы видели, уже при пакетной обработке появилось мульти-программирование — параллельно могли выполняться программы системного ввода, вывода и монитора пакета пользователя. Однако системные программы могли «договориться» друг с другом и не метать взаимной работе. Теперь же на вычислительной установке параллельно работали программы различных пользователей, которые

либо умышленно, либо случайно могли испортить данные в информационном окружении других пользователей.

Управление данными. Необходимо было придумать такие правила работы с данными на внешних носителях, которые предотвращали бы несанкционированный доступ к ним программ посторонних пользователей. Аля этой пели записи данных стали организовывать на носителях в наборы данных (Data Set) и снабжать дополнительной информацией, которая позволяла выяснить, когда, кем был создан это набор, и определяла правила доступа к нему.

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

Если программе надо было прочитать данные с внешнего устройства, она обращалась к соответствующему АРI операционной системы и получала в свою область памяти очередной блок данных, Такая организация обмена создала еще одно полезное свойство — независимость программ от физической организации данных. Действительно, раз с устройством работала только операционная система, программа пользователя становилась в большой степени независимой от специфики носителей данных.

Кроме того, операционная система брала на себя функцию проверки правомочности доступа. Пользователь — владелец набора данных — должен был только указать, кому он разрешает работу со своим набором и в каком режиме (только читать, читать и писать, удалять ит. п.), В ряде случаев операционная система обеспечивала даже шифрование данных по заданному пользователем ключу.

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

Системы разделения времени. На следующем этапе роста объемов памяти и производительности стало понятно, что крупная вы- числительная установка может обслуживать не только нескольких пользователей одной организации, но и целый регион. Конечно, при этом возникает проблема обеспечения удаленного доступа пользователей к системе. Задачу доступности удалось решить за счет использования относительно дешевых терминальных устройств на основе телетайпов.

Терминал (клавиатура и печатающее устройство} подключался к вычислительной установке по обычной телефонной паре (проводу с двумя проводниками). Операционная система разделения времени успевала поддерживать одновременное обслуживание {ввод/ вывод} нескольких сотен терминалов, поскольку скорость ввода и вывода на телетайпе не превышает нескольких десятков символов в секунду. У пользователя появлялась иллюзия, что он имеет непосредственный доступ к собственной вычислительной машине. Он перестал нуждаться в посредничестве оператора.

Конечно, разделение времени процессора использовалось уже на этапе обеспечения мультипрограммирования. Но появление большого числа пользователей, подключенных через относительно медленные устройства, привело еще и к возможности разделения времени при использовании памяти машины, Пока пользователь читал сообщение на терминале и вводил ответ, его программа простаивала. Поэтому операционная система вытесняла Такую про- грамму, находящуюся в режиме ожидания, во внешнюю память (на магнитный диск или магнитный барабан). Когда от пользователя поступали данные для дальнейшей работы, программа вновь восстанавливалась в оперативной памяти. Такой режим работы по- лучил название свопинга (от англ. мор — менять местами}.

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

Надежность механических телетайпов оставляла желать лучшего, поэтому достаточно быстро появились терминалы на основе электронно-лучевой трубки, обеспечивающие как большую скорость вывода, так и большую надежность. Обычно их дополняли компактные печатающие устройства (принтеры) для получения так называемой твердой копии выведенных данных.

Подобная конфигурация терминалов широко использовалась в Москве в 1980 г. для информационного обслуживания Олимпиады-80 ив 1985 г. при проведении Фестиваля молодежи и студентов. Весьма оригинально были построены учебные терминалы фирмы СDС, в которых вместо электронно-лучевой трубки была установлена плазменная панель. Это обеспечивало очень высокую стабильность изображения символов, а кроме того, плоскость экрана давала возможность проецировать на него картинки микрофильмов, дополняя таким образом выводимую по линии связи текстовую информацию.

Очень скоро стало понятно, что терминалу можно поручить и предварительную обработку данных: редактирование символьных строк, хранение небольших объемов данных, управление печатью. Такой терминал значительно снимал нагрузку как с линии связи, так и с центральной вычислительной установки. Стали говорить об интеллектуальном терминале.

Персональные компьютеры и сети. Следующим шагом стало превращение интеллектуального терминала в самостоятельное вычислительное устройство со своим центральным процессором, своей оперативной памятью и своим набором внешних устройств. Быстрое развитие компактных устройств хранения данных на основе магнитных носителей с прямым доступом привело к тому, что их емкости и скорости доступа вполне хватало для размещения персональных данных пользователя. И в какой-то момент показалось, что все проблемы пользователей решены. Они получили в монопольное владение собственный вычислитель — персональный компьютер (ПК, Personal Computer — РС).

Первые операционные системы ПК были лишены и развитых средств мультипрограммирования, и средств защиты данных. Это были однозадачные однопользовательские операционные системы, но продолжалось так недолго. Стремление к получению доступа к централизованным архивам данных привело к новому развитию сетей связи. А в ряде случаев и решение задач пользователя не могло быть обеспечено ресурсами только одного ПК. Рост объемов памяти и быстродействия микропроцессоров ПК дал возможность перейти к мультипрограммированию и многозадачности.

Телефонные сети, получившие развитие на предшествующем этапе, уже не могли справиться с передачей необходимых объемов данных. Скорости в тысячи и десятки тысяч битов в секунду, которые были вполне достаточны при передаче строковой информации объемом в сотни байтов от центрального вычислителя к терминалу, стало не хватать. Действительно, для передачи простой фотографии размером 1 Мбайт потребуется полторы-две минуты.

Поэтому развитие ПК, как ни странно это казалось на первом этапе их появления, резко стимулировало развитие высокоскоростных сетей связи. А в составе операционных систем стало непременным присутствие программных функций сетевого обмена. По сути, эти функции можно рассматривать как дальнейшее развитие библиотек стандартных функций. Но с другой стороны — это часть современной системы управления данными со своими соглашениями об организации и правилах сетевого доступа.