Глава 1. Эволюция операционных систем

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

Первые операционные системы

Идея компьютера была предложена английским математиком Чарльзом Бэбиджем (Charles Babage) в середине девятнадцатого века. Его механическая «аналитическая машина» так и не смогла по-настоящему заработать, потому что технологии того времени не удовлетворяли требованиям, необходимым для изготовления нужных деталей точной механики. Конечно, никакой речи об операционной системе для этого «компьютера» не шло.

Настоящее рождение цифровых вычислительных машин произошло вскоре после окончания второй мировой войны. В середине 40-х в США и Европе (Англия) примерно одновременно были созданы первые ламповые вычислительные устройства. Чуть позже, в 1951 году, была создана первая электронная вычислительная машина в СССР.

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

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

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

Выполнение каждой программы стало включать большое количество вспомогательных работ: загрузка нужного транслятора (АЛГОЛ, ФОРТРАН, КОБОЛ, и т. п.), запуск транслятора и получение результирующей программы в машинных кодах, связывание программы с библиотечными подпрограммами, загрузка программы в оперативную память, запуск программы, вывод результатов на периферийное устройство. Для организации эффективного совместного использования трансляторов, библиотечных программ и загрузчиков в штат многих вычислительных центров были введены должности операторов, профессионально выполнявших работу по организации вычислительного процесса для всех пользователей этого центра.

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

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

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

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

В числе первых программ этого типа можно назвать монитор IBSYS, управляющий выполнением заданий на компьютере IBM 7090 (1960 год) и разработанный в Советском Союзе монитор для ЭВМ БЭСМ-4 (1962 год).

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

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

Мультипрограммные операционные системы для мэйнфреймов

Следующий важный период развития операционных систем относится к 1965–1975 годам.

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

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

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

Мультипрограммирование было реализовано в двух вариантах — в системах пакетной обработки и разделения времени.

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

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

В числе первых операционных систем разделения времени, разработанных в середине 60-х годов, были TSS/360 (компания IBM), CTSS и MULTICS (Массачусетсткий технологический институт совместно с Bell Labs и компанией General Electric). В СССР первая развитая система разделения времени АИСТ-0 была создана в конце 60-х годов. Эта ОС предназначалась для работы на многомашинном комплексе, организованном из отечественных ЭВМ М-220 и Минск-22. В операционной системе АИСТ-0 были реализованы ставшие классическими сейчас принципы построения ОС, в частности иерархическая архитектура с четко выделенным ядром, а также новаторские для того времени идеи многопроцессорной обработки и разделения времени. Руководителем проекта АИСТ был академик Андрей Петрович Ершов, выдающийся программист и математик, лидер советского программирования.

Рис. 1.1. Академик А. П. Ершов читает лекцию о смешанных вычислениях в Институте математики СО АН СССР

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

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

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

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

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

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

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

Еще одной важной тенденцией этого периода является создание семейств программно-совместимых машин и операционных систем для них. Примерами семейств программно-совместимых машин, построенных на интегральных микросхемах, являются серии машин IBM System/360 и System/370 (аналоги этих семейств советского производства — машины серии ЕС), PDP-11 (советские аналоги — СМ-3, СМ-4, СМ-1420). Вскоре идея программно-совместимых машин стала общепризнанной.

Программная совместимость требовала и совместимости операционных систем. Однако такая совместимость подразумевает возможность работы на больших и на малых вычислительных системах, с большим и с малым количеством разнообразной периферии, в коммерческой области и в области научных исследований. Операционные системы, построенные с намерением удовлетворить всем этим противоречивым требованиям, оказались чрезвычайно сложными. Они состояли из многих миллионов ассемблерных строк, написанных тысячами программистов, содержали тысячи ошибок, вызывающих нескончаемый поток исправлений. Так, объем кода системы OS/360, разработанной для серии компьютеров IBM System/360, составил 8 Мбайт, что для того времени было абсолютным рекордом.

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

Первые сетевые операционные системы

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

Хотя теоретические работы по созданию концепций сетевого взаимодействия велись почти с самого появления вычислительных машин, значимые практические результаты по объединению компьютеров в сети были получены в конце 60-х, когда с помощью глобальных связей и техники коммутации пакетов удалось реализовать взаимодействие машин класса мэйнфреймов и суперкомпьютеров. Эти дорогостоящие компьютеры часто хранили уникальные данные и программы, доступ к которым необходимо было обеспечить широкому кругу пользователей, находившихся в различных городах на значительном расстоянии от вычислительных центров.

В 1969 году министерство обороны США инициировало работы по объединению суперкомпьютеров оборонных и научно-исследовательских центров в единую сеть. Эта сеть получила название ARPANET и явилась отправной точкой для создания всемирной компьютерной сети — Интернета. На рисунке 1.2 показан один из самых первых набросков структуры этой сети, состоящей всего из 4 узлов.

Рис. 1.2. Большое начинается с малого — один из ранних эскизов структуры ARPANET

Компьютеры сети ARPANET работали под управлением различных ОС, которые были дополнены модулями, реализующими коммуникационные протоколы, общие для всех компьютеров сети.

Операционные системы, установленные на компьютерах сети ARPANET, в совокупности с дополнительными модулями, обеспечивающими взаимодействие узлов сети, явились первыми сетевыми ОС, имеющими практическое значение.

В 1974 году компания IBM объявила о создании собственной сетевой архитектуры для своих мэйнфреймов, получившей название SNA (System Network Architecture). Эта многоуровневая архитектура, во многом подобная стандартной модели OSI, появившейся несколько позже, обеспечивала взаимодействие по глобальным связям типа «терминал-терминал», «терминал-компьютер» и «компьютер-компьютер». Нижние уровни архитектуры были реализованы специализированными аппаратными средствами, наиболее важным из которых являлся процессор телеобработки. Функции верхних уровней SNA выполнялись программными модулями. Один из них составлял основу программного обеспечения процессора телеобработки. Другие модули работали на центральном процессоре в составе стандартной операционной системы IBM для мэйнфреймов.

В это же время в Европе велись активные работы по созданию и стандартизации сетей X.25. Эти сети с коммутацией пакетов не были привязаны к какой-либо конкретной операционной системе. После получения статуса международного стандарта в 1974 году протоколы X.25 стали поддерживаться многими операционными системами. С 1980 компания IBM включила поддержку протоколов X.25 в архитектуру SNA и в свои операционные системы.

Операционные системы миникомпьютеров и первые локальные сети

К середине 70-х годов наряду с мэйнфреймами широкое распространение получили миникомпьютеры, такие как PDP-11, Nova, HP. В миникомпьютерах впервые использовались преимущества больших интегральных схем, позволившие реализовать достаточно мощные функции при сравнительно невысокой стоимости компьютера.

Архитектура миникомпьютеров была значительно упрощена по сравнению с мэйнфреймами, что нашло отражение и в их операционных системах. Многие функции мультипрограммных многопользовательских ОС мэйнфреймов были усечены, учитывая ограниченность ресурсов миникомпьютеров. Операционные системы миникомпьютеров часто стали делать специализированными, например, только для управления в реальном времени (ОС RT-11 для миникомпьютеров PDP-11) или только для поддержания режима разделения времени (RSX-11M для тех же компьютеров). Эти операционные системы не всегда были многопользовательскими, что во многих случаях оправдывалось невысокой стоимостью компьютеров.

Важной вехой в истории миникомпьютеров и вообще в истории операционных систем явилось создание ОС Unix. Первоначально эта ОС предназначалась для поддержания режима разделения времени в миникомпьютере PDP-7. С середины 70-х годов началось массовое использование ОС Unix. К тому времени программный код для Unix был на 90 % написан на языке высокого уровня С. Широкое распространение эффективных C-компиляторов сделало Unix уникальной для того времени ОС, обладающей возможностью сравнительно легкого переноса на различные типы компьютеров: суперкомпьютеры, мэйнфреймы, миникомпьютеры, серверы и рабочие станции на базе RISC-процессоров, персональные компьютеры. Поскольку эта ОС поставлялась вместе с исходными кодами, то она стала первой открытой ОС, которую могли совершенствовать простые пользователи-энтузиасты.

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

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

Первые локальные сети строились с помощью нестандартного коммуникационного оборудования, в простейшем случае — путем прямого соединения последовательных портов компьютеров. Программное обеспечение также было нестандартным и реализовывалось в виде пользовательских приложений. Первое сетевое приложение для ОС Unix — программа UUCP (Unix-to-Unix Copy Program) появилась в 1976 году и начала распространяться с версией 7 AT&T Unix с 1978 года. Эта программа позволяла копировать файлы с одного компьютера на другой в пределах локальной сети через различные аппаратные интерфейсы — RS-232, токовую петлю и т. п., а, кроме того, могла работать через глобальные связи, например, модемные.

Развитие операционных систем в 80-е годы

К наиболее важным событиям 80-х годов можно отнести создание стека TCP/IP, становление Интернета, разработку новых версий ОС Unix, стандартизацию технологий локальных сетей, появление персональных компьютеров и операционных систем для них.

Рабочий вариант стека протоколов TCP/IP был создан в конце 70-х годов. Этот стек представлял собой набор общих протоколов для разнородной вычислительной среды и предназначался для связи экспериментальной сети ARPANET с другими «сателлитными» сетями. В 1983 году стек протоколов TCP/IP был принят Министерством обороны США в качестве военного стандарта. Переход компьютеров сети ARPANET на стек TCP/IP ускорила его реализация для операционной системы BSD Unix. С этого времени началось совместное существование Unix и протоколов TCP/IP, и практически все многочисленные версии Unix стали сетевыми.

Внедрение протоколов TCP/IP в ARPANET придало этой сети все основные черты, которые отличают современный Интернет. В 1983 году сеть ARPANET была разделена на две части: MILNET, поддерживающую военные ведомства США, и новую ARPANET. Для обозначения составной сети ARPANET и MILNET стало использоваться название Internet, которое в русском языке превратилось в Интернет. Интернет стал отличным полигоном для испытаний многих сетевых операционных систем, позволившим проверить в реальных условиях возможности их взаимодействия, степень масштабируемости, способность работы при экстремальной нагрузке, создаваемой сотнями и тысячами пользователей. Стек протоколов TCP/IP также ждала завидная судьба. Независимость от производителей, гибкость и эффективность, доказанные успешной работой в Интернете, а также открытость и доступность стандартов сделали протоколы TCP/IP не только главным транспортным механизмом Интернета, но и основным стеком большинства сетевых операционных систем.

Все десятилетие было отмечено появлением новых, все более совершенных версий ОС Unix. Среди них были и фирменные версии Unix: SunOS, HP-UX, Irix, AIX, QNX и многие другие, в которых производители компьютеров адаптировали код ядра и системных утилит для своей аппаратуры. Разнообразие версий породило проблему их совместимости, которую периодически пытались решить различные организации. В результате были приняты стандарты POSIX и XPG, определяющие интерфейсы ОС для приложений, а специальное подразделение компании AT&T выпустило несколько версий Unix System III и Unix System V, призванных консолидировать разработчиков на уровне кода ядра.

Начало 80-х годов связано с еще одним знаменательным для истории операционных систем событием — появлением персональных компьютеров. С точки зрения архитектуры персональные компьютеры ничем не отличались от класса миникомпьютеров типа PDP-11, но их стоимость была существенно ниже. Если миникомпьютер позволял иметь собственную вычислительную машину отделу предприятия или университету, то персональный компьютер дал такую возможность отдельному человеку. Компьютеры стали широко использоваться неспециалистами, что потребовало разработки «дружественного» программного обеспечения, и предоставление этих «дружественных» функций стало прямой обязанностью операционных систем.

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

Однако и дружественный интерфейс, и сетевые функции появились у операционных систем персональных компьютеров не сразу. Первая версия наиболее популярной операционной системы раннего этапа развития персональных компьютеров — MS-DOS компании Microsoft (1981 год) — была лишена этих возможностей. Это была однопрограммная однопользовательская ОС с интерфейсом командной строки, способная стартовать с дискеты. Основными задачами для нее были управление файлами, расположенными на гибких и жестких дисках в Unix-подобной иерархической файловой системе, а также поочередный запуск программ. MS-DOS не была защищена от программ пользователя, так как процессор Intel 8088 не поддерживал привилегированного режима. Разработчики первых персональных компьютеров считали, что при индивидуальном использовании компьютера и ограниченных возможностях аппаратуры нет смысла в поддержке мультипрограммирования, поэтому в процессоре не были предусмотрены привилегированный режим и другие механизмы поддержки мультипрограммных систем. Однако довольно скоро ПК стали возвращать себе многое из утраченной было функциональности и добавлять новые свойства.

Ориентация на массового, а значит, непрофессионального пользователя, резко повысило интерес к интуитивно понятному пользовательскому интерфейсу, который ранее не относился к приоритетным свойствам ОС.

Важным событием для этого направления стало представление компанией Apple в начале 1984 года новой операционной системы Mac OS для своего персонального компьютера Macintosh. Эта ОС резко отличалась ото всех существовавших тогда ОС тем, что для взаимодействия с пользователем она использовала не обычный для того времени интерфейс командной строки, а значительно более удобный графический пользовательский интерфейс, включающий столь знакомые всем нам теперь окна, меню, значки (ярлыки) файлов и программ (рис. 1.3). Это революционное изменение позволило пользователю управлять компьютером с помощью простого и удобного нового устройства — мыши, а не набирать команды на клавиатуре[1].

Рис. 1.3. Вид рабочего экрана первой версии Mac OS

Компания Microsoft в своих ОС Windows также сделала ставку на использование оконного графического интерфейса. Первая версия операционной системы Windows компании Microsoft появилась в 1985 году и осталась практически незамеченной, но начиная с версии 3.0, это семейство ОС оказало сильнейшее влияние на развитие индустрии персональных компьютеров. Наиболее серьезные изменения в последней версии Microsoft Windows Vista, ставшей доступной для корпоративных пользователей в конце 2006 года (на момент написания этих строк индивидуальные пользователи все еще ждали своей версии этой системы), также произошли в области пользовательского интерфейса.

Что же касается возвращения утраченных свойств, то, как уже было сказано ранее, после появления персональных компьютеров первое время казалось, что концепция многозадачности, когда на одном компьютере одновременно выполняется несколько задач, исчерпала себя. Действительно, если каждому пользователю теперь выделяется целиком компьютер, то зачем нагружать операционную систему громоздкими функциями по разделению ресурсов между несколькими программами, запускаемыми разными пользователями? Однако очень скоро наступило осознание того, что даже при автономном использовании ПК (то есть без подключения его к сети) по-прежнему актуальна многозадачность, только теперь ресурсы компьютера должны разделяться не между программами разных пользователей, а между несколькими программами одного и того же пользователя. Более того, в ОС персональных компьютеров оказались востребованными и функции многопользовательской защиты для тех случаев, когда ПК поочередно используется несколькими людьми.

В соответствии с этой стратегией в 1987 г. в результате совместных усилий Microsoft и IBM появилась первая мультипрограммная операционная система для персональных компьютеров с процессором Intel 80286, в полной мере использующая возможности защищенного режима — OS/2. Эта ОС с ее развитыми функциями многозадачности и файловой системой, снабженной встроенными средствами многопользовательской защиты, оказалась хорошей платформой для построения локальных сетей персональных компьютеров. В семействе ОС Windows многозадачность тоже была введена почти с первых версий. Причем долгое время существовали две реализации многозадачности. Первый вариант был характерен для тех версий Windows, которые фактическим представляли собой надстройку (оболочку) над MS-DOS (то есть версии 1.0, 2.0, 3.0, 3.1, Windows 95/98/ME). Эта многозадачность была невытесняющей, то есть ОС не могла прервать выполняемую задачу, пока эта задача по своей инициативе не передавала управление операционной системе. Это ограничение снижало эффективность ОС. По-другому была решена проблема многозадачности в автономной линии Windows, начатой Windows NT и продолженной Windows 2000, Windows XP Professional, Windows Server 2003 и Vista (рис. 1.4). В этих ОС, для которых в этой книге используется обобщенное наименование «ОС семейства Windows NT», поддерживается эффективная вытесняющая многозадачность, полноценный многопользовательский режим, а также многопоточный режим, когда каждая задача может быть распараллелена на несколько независимо выполняющихся подзадач.

Рис. 1.4. Операционные системы Windows компании Microsoft. Хронологическая схема

Поддержка многопользовательского и многозадачного режимов стала в современных ОС для ПК стандартом, этими свойствами обладают и две другие популярные ОС, работающие на ПК, — Mac OS X и Linux/Fedora.

Еще одним мощным фактором возвращения в ОС ПК многозадачности и многопользовательского режима стали локальные сети. Действительно, если компьютер подключен к локальной сети, то к его ресурсам (файлам, непосредственно подключенному принтеру и т. д.) может обращаться не только тот пользователь, который работает за клавиатурой, но и все остальные пользователя сети — если, конечно, эти ресурсы сделаны разделяемыми. Не способные выполнить эту функцию первые ОС персональных компьютеров, такие, например, как MS-DOS, дополнялись внешними программами, называемыми сетевыми оболочками. В простейшем случае они просто позволяли нескольким пользователям работать с одним файлом за счет дополнительных средств блокировки доступа. В MS-DOS такая блокировка была введена, начиная с версии 3.0 (это не означает, что MS-DOS 3.0 обладала встроенными сетевыми функциями, блокировка файлов была только необходимым условием для работы сетевых оболочек сторонних производителей или самой Microsoft).

Наибольшее распространение получили сетевые оболочки LAN Manager компании Microsoft и LAN Server компании IBM, разработанные этими компаниями на основе одного базового кода. Эти оболочки уступали по производительности специализированной ОС NetWare и потребляли больше аппаратных ресурсов, но имели важные достоинства универсальной ОС — они позволяли, во-первых, выполнять на сервере любые программы, разработанные для OS/2, MS-DOS и Windows, а во-вторых, использовать компьютер, на котором они были запущены, в качестве рабочей станции. Не очень удачная рыночная судьба OS/2 не позволила системам LAN Manager и LAN Server захватить заметную долю рынка, но принципы работы этих сетевых систем во многом нашли свое воплощение в более удачливой операционной системе 90-х годов: Microsoft Windows NT, содержащей встроенные сетевые компоненты, некоторые из которых имеют приставку LM — от LAN Manager.

Иной путь выбрала компания Novell. Она изначально сделала ставку на разработку операционной системы со встроенными сетевыми функциями и добилась на этом пути выдающихся успехов. Ее сетевые операционные системы NetWare на долгое время стали эталоном производительности, надежности и защищенности для локальных сетей. С самой первой версии ОС NetWare (1983 г.) распространялась как операционная система для центрального сервера локальной сети, которая за счет специализации на выполнении функций файл-сервера обеспечивала максимально возможную для данного класса компьютеров скорость удаленного доступа к файлам и повышенную безопасность данных.

В 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 г. — Ethernet, в 1985 Token Ring, в конце 80-х FDDI. Это позволило обеспечить совместимость сетевых операционных систем на нижних уровнях, а также стандартизовать интерфейс ОС с драйверами сетевых адаптеров.

Для персональных компьютеров применялись не только специально разработанные для них операционные системы, подобные MS-DOS, NetWare и OS/2, но и адаптировались уже существующие ОС. Появление процессоров Intel 80286 и особенно 80386 с поддержкой мультипрограммирования позволило перенести на платформу персональных компьютеров ОС Unix. Наиболее известной системой этого типа в 80е годы была версия Unix компании Santa Cruz Operation (SCO Unix).

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

Развитие операционных систем в 90-е годы

В 90-е годы практически все операционные системы, занимающие заметное место на рынке, стали сетевыми. Сетевые функции сегодня встраиваются в ядро ОС, являясь ее неотъемлемой частью. Операционные системы получили средства для работы со всеми основными технологиями локальных (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) и глобальных (X.25, frame relay, ISDN, ATM) сетей, а также средства для создания составных сетей (IP, IPX, AppleTalk, RIP, OSPF, NLSP). В операционных системах используются инструменты мультиплексирования нескольких стеков протоколов, за счет чего компьютеры могут поддерживать одновременную сетевую работу с разнородными клиентами и серверами. Появились специализированные ОС, предназначенные исключительно для решения коммуникационных задач. Например, сетевая операционная система IOS компании Cisco Systems, работающая в маршрутизаторах, организует в мультипрограммном режиме выполнение набора программ, каждая из которых реализует один из коммуникационных протоколов.

Во второй половине 90-х годов все производители операционных систем резко усилили поддержку средств работы с Интернетом. Если до этого времени стек протоколов TCP/IP, на котором построен Интернет, поддерживался в основном семейством Unix, то теперь этот стек стал проникать во все популярные ОС. Помимо самого стека TCP/IP, в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Интернета, как telnet, FTP, e-mail. Влияние Интернета проявилось и в том, что компьютер превратился из чисто вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями. Появление службы World Wide Web (WWW) в 1991 году придало мощный импульс развитию популярности Интернета, так как позволило пользователям удобно, эффективно и единообразно искать и просматривать текстовую и графическую информацию, расположенную на многочисленных серверах, работающих под управлением различных ОС. Интернет приобрел после этого черты гигантской справочной системы и библиотеки, где можно найти все и чаще всего — бесплатно.

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

Проблема безопасности в век Интернета вышла на качественно новый уровень, и с этого момента средства безопасности приобрели самое приоритетное значение для разработчиков и пользователей ОС.

Особое внимание в течение всех 90-х годов уделялось корпоративным сетевым операционным системам. Их дальнейшее развитие представляет одну из наиболее важных задач и в обозримом будущем. Корпоративная операционная система отличается способностью хорошо и устойчиво работать в крупных сетях, которые характерны для больших предприятий, имеющих отделения в десятках городов и, возможно, в разных странах. Таким сетям органически присуща высокая степень неоднородности программных и аппаратных средств, поэтому корпоративная ОС должна беспроблемно взаимодействовать с операционными системами разных типов и работать на различных аппаратных платформах. Лидерами этого периода в классе корпоративных ОС были Novell NetWare 4.x и 5.0, Microsoft Windows NT 4.0, а также Unix-системы различных производителей аппаратных платформ. Для корпоративной ОС очень важно наличие средств централизованного администрирования и управления, позволяющих в единой базе данных хранить учетные записи о десятках тысяч пользователей, компьютеров, коммуникационных устройств и модулей программного обеспечения, имеющихся в корпоративной сети. В современных операционных системах средства централизованного администрирования обычно базируются на единой справочной службе. Первой успешной реализацией справочной службы корпоративного масштаба была система StreetTalk компании Banyan. Наибольшее признание в это время получила справочная служба NDS компании Novell, выпущенная впервые в 1993 году для первой корпоративной версии NetWare 4.0. Роль централизованной справочной службы настолько велика, что именно по качеству справочной службы оценивают пригодность операционной системы для работы в корпоративном масштабе.

После некоторого «забвения» снова вышли на первый план мощные корпоративные системы на базе мэйнфреймов.

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

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

Возобновилось и приостановившееся было развитие ОС мэйнфреймов. Ярким представителем этого класса является появившаяся в 1995 году OS/390 компании IBM для мэйнфреймов System/370 и System/390. Эта ОС по существу является развитием популярной в середине 70-х годов системы пакетной обработки ОС MVS, которая в свою очередь ведет историю от одной из первых мультипрограммных систем OS/360 (1964 год). Помимо выполнения базовых функций операционной системы, OS/390 включает средства сетевого взаимодействия с пользователями и устройствами в разнородной вычислительной среде на базе протоколов SNA и TCP/IP. OS/390 поддерживает стандарты системных вызовов Unix, что является отражением общей тенденции в мире мэйнфреймов.

Современный этап развития операционных систем персональных компьютеров

Следует признать, что процесс революционных изменений в области архитектурных и функциональных решений ОС затормозился, и сегодня мы видим в основном плавную эволюцию тех свойств, механизмов и функций ОС, которые появились в 60-е и 90-е годы. Иллюстрацией этого тезиса, в частности, является новая версия семейства ОС Windows Vista, на разработку которой корпорация Microsoft потратила 5 лет (больше, чем на разработку любой другой версии Windows). Несмотря на большой объем затраченных на ее создание усилий, Vista не показала принципиально новых архитектурных решений и функциональных возможностей, чем вызвала разочарование некоторых специалистов.

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

Надежность

Компьютер должен работать так же надежно, как телевизор, телефон, электрический чайник, наконец. Телевизор не позволяет себе выводить на экран грозные сообщения «Произошла серьезная ошибка. Некоторые данные могут быть потеряны. Требуется перезагрузка» — а после этого утешительно вопрошать: «Желаете ли вы послать отчет об ошибке в компанию Sony?».

Надежность ОС можно обеспечить различными способами, один из наиболее очевидных — добиться высокой степени отлаженности кода ядра. Существует также возможность повысить надежность за счет архитектурных решений. В частности микроядерная архитектура снова стала обсуждаться как стратегически важное направление. Идея состоит в том, чтобы сократить объем кода, работающего в привилегированном режиме ядра; это позволит снизить вероятность ошибок, которые могут привести к краху системы. Все остальные функции ОС (файловая система, драйверы) реализуются в виде приложений. Если ошибка возникает в одном из приложений, то аварийно завершается только это приложение, и система продолжает функционировать. Однако этот подход приводит к снижению производительности, поэтому микроядерные ОС по большей части оставались уделом учебных ОС и исследовательских проектов. Возможно, возросшие требования к надежности ОС и постоянной рост быстродействия процессоров и объемов оперативной памяти изменят эту ситуацию и заставят разработчиков коммерческих ОС перейти преимущественно к архитектуре на базе микроядра.

В своей последней ОС Windows Vista компания Microsoft предприняла усилия по повышению надежности Windows, в частности за счет встраивания механизма транзакций в файловую систему, которая хранит несколько предыдущих (теневых) версий диска, всех его каталогов и файлов, так что возможен гибкий «откат» после краха всей файловой системы или ее части. Можно, конечно, считать эту новую функцию и архитектурным новшеством, но скорее это все-таки перенос в операционную систему некоторых функций приложений, в данном случае — баз данных.

Простота обслуживания

Пользователь компьютера желает получать от него услуги, не расплачиваясь за это услугами по его обслуживанию (администрированию). Усилия человека не должны тратиться на настройку параметров вычислительного процесса, как это происходило в ОС предыдущих поколений. Например, в системах пакетной обработки для мэйнфреймов каждый пользователь должен был с помощью языка управления заданиями задать большое количество параметров, относящихся к организации вычислительных процессов в компьютере. В частности, в OS/360  язык управления заданиями (Job Command Language, JCL) предусматривал возможность определения пользователем более 40 параметров, среди которых были приоритет задания, требования к основной памяти, предельное время выполнения задания, перечень используемых устройств ввода-вывода и режимы их работы.

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

Даже в процессе установки большинство ОС предлагают режим выбора параметров по умолчанию, который гарантирует пусть не оптимальное, но всегда приемлемое качество работы систем. С одной стороны, такие ОС, как Windows, Linux и Mac OS X, прошли уже большой путь в этом направлении. С другой стороны, настройка параметров ОС по умолчанию раздражает некоторых профессиональных пользователей, лишая их возможности проделывать эти операции вручную и так, как они это хотят. Здесь уместна аналогия с автоматической коробкой передач — водителям-новичкам она нравиться, так как освобождает от необходимости постоянно следить за тем, на какой передаче они едут. В то же время некоторые опытные водители предпочитают иметь более полный контроль над автомобилем, который дает ручная коробка передач. Поэтому желательно, чтобы ОС ПК учитывала интересы обеих категорий пользователей.

Для массовых непрофессиональных пользователей такая ОС должна быть незаметной: она должна решать все задачи по установке новых программ и оборудования без малейшего вовлечения пользователя в этот процесс. Этого, к сожалению, пока не происходит, несмотря на прогресс стандарта Plug&Play и развитие интеллектуальных инсталляторов программного обеспечения. Все обычно идет хорошо до первой непредвиденной ситуации, и тут на пользователя обрушивается шквал вопросов «растерянной» ОС, требующей от него знания специальных терминов или структуры системных каталогов. Еще хуже обстоят дела, когда ОС вдруг перестает нормально стартовать — здесь рядовому пользователю никаких инструкций, как «оживить» систему, не дается, кроме рекомендации вызвать системного администратора, который в комплект стандартной поставки, к сожалению, не входит.

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

Пользовательский интерфейс

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

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

Средства информационной самоорганизации

Кто из нас не терял фотографии, письма или статьи в «дебрях» своего компьютера? Работа по информационной «уборке и чистке» компьютера может занимать не меньше времени, чем реальная генеральная уборка жилища. Очевидно, что интеллектуальная мощь компьютера должна прийти на помощь человеку, помочь ему сохранять порядок в информационном хозяйстве. Современные диски, хранящие сотни гигабайтов информации, сделали проблему организации и поиска файлов очень острой. Несмотря на то, что системы управления базами данных существуют много лет, они пока практически не используются для упорядочивания всей массы разнородной информации, хранящейся в файлах различных форматов в пользовательских каталогах персональных компьютеров. Конечно, очень хорошо было бы, если бы можно было спросить у ОС своего ПК: «А где эта статья о собаках, что я нашел пару недель назад на сайте какого-то университета? Я еще тогда несколько фото выкачал с этого сайта, неплохо бы их тоже найти» — и получить через несколько секунд и статью, и фото, которые случайно попали в разные каталоги и под странными именами, не дающими никакого намека на их содержание.

Для того чтобы начать движение в этом направлении, компания Microsoft планировала включить в версию Vista файловую систему Windows Future Storage (WinFS) со встроенной поддержкой SQL. Однако этим амбициозным планам не суждено было сбыться в положенный срок, так что и эту новую функцию пришлось удалить из этой новой версии Windows, выделив ее в отдельный продукт. Тем не менее, Microsoft реализовала кое-что из этой области в Windows Vista: включила в файловую систему метаданные, но основе которых работает новая версия быстрого поиска файлов по мета-атрибутам, причем файлы ищутся везде, в том числе и среди архивов электронных писем (проблема, правда, остается с присвоением значений метаданным файла — если вы не сделали этого на этапе создания или сохранения файла, то и найти файл по этим признакам будет невозможно). В Microsoft Vista появилась еще одна удобная функция — представление файлов в виде виртуальных папок. Для того чтобы сгруппировать файлы по какому-то признаку независимо от папок их физического хранения, необходимо просто произвести поиск файлов по какому-то критерию и объявить результаты поиска виртуальным каталогом. Далее с этим каталогом можно работать так же, как с обычным.

Защита данных

На современном этапе развития операционных систем на передний план вышли средства обеспечения безопасности. Это связано с возросшей ценностью информации, обрабатываемой компьютерами, а также с повышенным уровнем угроз, существующих при передаче данных через Интернет. Разнообразные атаки, вирусы, троянские кони и невероятно увеличившееся количество спама серьезно мешают эффективной работе на компьютере, подключенном к Интернету. Интернет был создан как открытая среда для общения исследователей и с приходом службы Web его открытость послужила причиной его огромной популярности для массового пользователя. Но сегодня эта открытость одновременно является и источником многочисленных помех в работе, так как каждый хакер в Интернете может атаковать ваш компьютер, рассылая вирусы или просто бомбардируя вас ненужными письмами. В результате значительная часть ресурсов ОС направлена сегодня на защиту компьютера от злоумышленников. Все больше средств распознавания и блокировки подозрительных действий включается в ОС и приложения, что, с одной стороны, защищает пользователя, а с другой — мешает его нормальной работе, так как даже для выполнения часто повторяющихся и рутинных операций, например, для сохранения вложений в письма, приходится преодолевать блокировки ОС, что для рядового пользователя иногда весьма непросто.

Виртуальные распределенные вычислительные системы суперкомпьютеров

Для ОС суперкомпьютеров и серверов одной из перспективных задач является поддержка работы компьютера в составе виртуальной распределенной вычислительной системы, узлы которой общаются через сеть, желательно — через Интернет. В сущности, это возврат к первоначальному назначению Интернета, который создавался для связи нескольких суперкомпьютеров и организации доступа к их вычислительным ресурсам многочисленных сотрудников исследовательских центров. Впоследствии, Интернет стал основой для других сетевых сервисов: сначала сервисов файловых архивов и электронной почты, а потом и такого массового сервиса, как Web, дающего возможность использовать интернет-серверы как универсальные справочные системы, хранящие информацию практически любого вида в свободном формате, удобном для просмотра пользователями с помощью единственной программы — интернет-браузера. Эти сервисы используют в основном способности компьютеров по хранению данных виде обычного набора файлов, их передаче по сети и представлению в удобном формате. При этом вычислительная мощность удаленных серверов (которые могут представлять собой и суперкомпьютеры) остается недоступной для пользователей Интернета — вы не можете запустить свою программу на удаленном сервере, так как этот сервер обычно не поддерживает такую услугу.

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

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

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

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

Сегодня GRID — это концепция, подкрепленная набором стандартов. Существует форум Open Grid, который помогает разработке таких стандартов и реализации на их базе программных средств и соответствующих сервисов. Первые практические GRID-сервисы были созданы в CERN, том же самом европейском центре ядерных исследований, в котором появился на свет сервис WWW. Разработка GRID-сервисов широко поддерживается Европейским Союзом, в результате чего было создано несколько пан-европейских GRID-сервисов, например, в рамках проекта Enabling Grids for E-sciencE (EGEE). На момент написания этой книги (начало 2007 года) GRID-сервис EGEE состоял из более 20 000 процессоров и обладал суммарной емкостью дисковой памяти в 5 000 000 гигабайт. Еще одной практической реализацией идеи GRID является сервис PlanetLab, который также предоставляет виртуальную вычислительную мощность ученым-исследователям.

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

Для организации GRID-вычислений нужна их программная поддержка. До недавнего времени эта поддержка реализовывалась в дополнительном относительно ОС слое программного обеспечения, но очевидно, что было бы хорошо внедрить в ОС некоторые дополнительные функции, позволяющие разделять процессор через Интернет. В середине 2006 года стартовал проект XtreemOS, спонсируемый Европейским Союзом, который ставит своей задачей создание специализированной Grid-ОС на основе кода Linux. Компания Microsoft в конце 2006 года при презентации Windows Vista также объявила о серьезности своих намерений в области создания операционных систем для вычислительных кластеров.

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

Таблица 1.1. Эволюция ОС. Хронология событий

2006

ОС Windows Vista

Старт второй очереди проекта виртуальной распределенной вычислительной системы (GRID)

2000

Windows 2000

1995

ОС для мэйнфреймов OS/390

1993

Windows NT 3.1; NetWare 4.0

1991

Первая ОС семейства LINUX

1987

OS/2 — первая мультипрограммная ОС для персонального компьютера

1985

Первая ОС семейства Windows

1984

Первая ОС семейства Mac

1983

Первая ОС семейства NetWare

1981

Операционная система MS-DOS для персонального компьютера

1980

Принят стандарт технологии Ethernet локальных сетей

1979

Рабочий вариант стека TCP/IP

1976

Первое сетевое приложение UUCP для Unix

1974

Сетевые технологии SNA и Х.25

1973

Операционные системы RSX-11 и RT-11 для миникомпьютеров

1970

Глобальная вычислительная сеть ARPANET

1969

Первая ОС семейства Unix

1968

Многомашинная система разделения времени АИСТ

1965

Первые мультипрограммные ОС: MULTICS, OS/360

1964

Первое семейство программно совместимых компьютеров IBM System/360

1962

Программный монитор для БЭСМ-6

1961

Первая реализация виртуальной памяти компанией Burroughs для ее компьютера B5000

1960

Первые программные мониторы — прообразы операционных систем

1951

Первая советская электронная вычислительная машина М-1

1950

 

Вторая половина 40-х

Первые ламповые компьютеры в Западной Европе и США

Выводы

История ОС насчитывает примерно полвека. Она во многом определяется развитием элементной базы и вычислительной аппаратуры.

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

Прообразом современных операционных систем явились мониторные системы середины 50-х, которые автоматизировали действия оператора по выполнению пакета заданий.

В 1965–1975 годах переход к интегральным микросхемам открыл путь к появлению следующего поколения компьютеров, ярким представителем которых является IBM/360. В этот период были реализованы практически все основные концепции, присущие современным ОС: мультипрограммирование, мультипроцессирование, многотерминальный режим, виртуальная память, файловые системы, разграничение доступа и сетевая работа.

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

В конце 60-х были начаты работы по созданию глобальной сети ARPANET, явившейся отправной точкой для Интернета — глобальной общедоступной сети, которая стала для многих сетевых ОС испытательным полигоном, позволившим проверить в реальных условиях возможности их взаимодействия, степень масштабируемости, способность работы при экстремальной нагрузке.

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

С середины 70-х годов началось массовое использование Unix, уникальной для того времени ОС, которая сравнительно легко переносилась на различные типы компьютеров. Хотя ОС Unix была первоначально разработана для миникомпьютеров, ее гибкость, элегантность, мощные функциональные возможности и открытость позволили ей занять прочные позиции во всех классах компьютеров.

В конце 70-х годов был создан рабочий вариант стека протоколов TCP/IP. В 1983 году стек протоколов TCP/IP был стандартизован. Независимость от производителей, гибкость и эффективность, доказанные успешной работой в Интернете, сделали протоколы TCP/IP не только главным транспортным механизмом Интернета, но и основным стеком большинства сетевых ОС.

Начало 80-х годов ознаменовалось знаменательным для истории операционных систем событием — появлением персональных компьютеров, которые стали мощным катализатором бурного роста локальных сетей, создав для этого отличную материальную основу в виде десятков и сотен компьютеров, расположенных в пределах одного здания. В результате поддержка сетевых функций стала для ОС персональных компьютеров необходимым условием.

В 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 г. — Ethernet, в 1985 — Token Ring, в конце 80-х — FDDI. Это позволило обеспечить совместимость сетевых ОС на нижних уровнях, а также стандартизовать интерфейс ОС с драйверами сетевых адаптеров.

К началу 90-х практически все ОС стали сетевыми, способными поддерживать работу с разнородными клиентами и серверами. Появились специализированные сетевые ОС, предназначенные исключительно для решения коммуникационных задач, например, система IOS компании Cisco Systems, работающая на маршрутизаторах.

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

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

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

Задачи и упражнения

1.       Какие события в развитии технической базы вычислительных машин стали вехами в истории операционных систем?

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

3.       Может ли компьютер работать без операционной системы?

4.       Как эволюционировало отношение к концепции мультипрограммирования на протяжении всей истории ОС?

5.       Какое влияние на развитие ОС оказал Интернет?

6.       Чем объясняется особое место ОС Unix в истории операционных систем?

7.       Опишите историю сетевых ОС.

8.       В чем состоят современные тенденции развития ОС?

 



[1] Историческая справедливость требует заметить, что первые успешные попытки реализации графического интерфейса состоялись значительно раньше. Так изобретение мыши — устройства столь необходимого для удобного взаимодействия с компьютером — относится к ранним 60-м, а полноценный графический интерфейс был представлен корпорацией Xerox еще в 1973 году.