Понятия и эволюция операционных систем. Эволюция операционных систем. Основные этапы развития. Перечислим основные функции операционных систем

ПОНЯТИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ

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

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

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

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



Этапы развития операционных систем

Первый период (1945 -1955)

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

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

Второй период (1955 - 1965)

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

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

Третий период (1965 - 1980)

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

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

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

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

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

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

Базовые сетевые утилиты.

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

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

ssh user_login@host

где login - регистрационное имя пользователя на машине host. Другой вариант таков:

ssh host -l user_login

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

Например, определение среднего значения пяти ячеек можно описать формулой: =(A1 + A2 + A3 + A4 + A5)/5, а можно специальной функцией СРЗНАЧ, которая сократит выражение до следующего вида: СРЗНАЧ(А1:А5). Как видите, что вместо ввода в формулу всех адресов ячеек можно использовать определенную функцию, указав ей в качестве аргумента их диапазон.

Для работы с функциями в Excel на ленте существует отдельная закладка Формулы, на которой располагаются все основные инструменты для работы с ними

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

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

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

Многие функции могут иметь сразу несколько аргументов. В таком случае, каждый из них отделяется от следующего точкой с запятой. Например, функция =ПРОИЗВЕД(7; A1; 6; B2) считает произведение четырёх разных чисел, указанных в скобках, и соответственно содержит четыре аргумента. При этом в нашем случае одни аргументы указаны явно, а другие, являются значениями определенных ячеек.

Так же в качестве аргумента можно использовать другую функцию, которая в этом случае называется вложенной. Например, функция =СУММ(A1:А5; СРЗНАЧ(В5:В10)) суммирует значения ячеек находящихся в диапазоне от А1 до А5, а так же среднее значение чисел, размещенных в клетках В5, В6, В7, В8, В9 и В10.

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

Далеко не все функции в Ecxel имеют простое определение, как функция СУММ, осуществляющая суммирование выбранных значений. Некоторые из них имеют сложное синтаксическое написание, а так же требуют много аргументов, которые к тому же должны быть правильных типов. Чем сложнее функция, тем сложнее ее правильное составление. И разработчики это учли, включив в свои электронные таблицы помощника по составлению функций для пользователей – Мастер функций.

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

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

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

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

Сделав необходимый выбор, щелкните по кнопке ОК, после чего появится окно Аргументы функции.

Диаграммы

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

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

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

Затем, на ленте во вкладке Вставка в группе Диаграммы выберите нужный тип и вид диаграммы. Что бы увидеть краткое описание того или иного типа и вида диаграмм, необходимо задержать на нем указатель мыши

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

Так же обратите внимание, на появление дополнительной закладки на ленте Работа с диаграммами, содержащая еще три вкладки: Конструктор, Макет и Формат.

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

На вкладке Макет располагаются команды, позволяющие добавлять или удалять различные элементы диаграммы, которые можно легко форматировать с помощью закладки Формат.

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

Понятие операционной системы. Основные этапы развития операционных систем.


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

В основном эволюцию развития ОС разделяют на 5 поколений:

Первое поколение (1940 – 50). Только появились ламповые вычислительные устройства. Разработан принцип программы. ОС отсутствуют, вся работа по управлению ведется разработчиками.

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

Третье поколение (1960 - 70) . Полупроводниковые элементы объединяются в интегральные микросхемы. Появляются ОС с поддержкойаппарата прерывания,планирования заданий, мультипрограммирования. Одна и та жеОС начинает работать на различных устройствах, но она по-прежнему остается пакетной. Также появляетсяоперационная система реального времени (ОСРВ), в которой ЭВМ применяется для управления техническими объектами. Характерным свойством для ОСРВ является реактивность- готовность системы вырабатывать управляющие воздействия незамедлительно.

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

Пятое поколение (с середины 1980-х гг. по н.в.) . ОС используют возможности сетевых технологий, в том числе технологии клиент – сервер, интерфейс становится графическим и дружественным.

Также существует 5 основных подходов к построению ОС


  • Монолитное ядро

  • Микроядернаяархитектура

  • Многоуровневая система

  • Виртуальная машина

  • Смешанная система

  1. Архитектура операционной системы. Классификация операционных систем. Эффективность и требования, предъявляемые к ОС.
Рассмотрим существующие архитектуры ОС.

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

Многоуровневые системы. Всю вычислительную системуможно разбить на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне.

Виртуальными машинами называют программную или аппаратную среду, исполняющую некоторый код. Зачастую виртуальная машина эмулирует работу реального компьютера. Примерами служит VMWareWorkstation и VirtualBox.

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

Смешанные системы. В большинстве случаев современные операционные системы используют различные комбинации вышеприведенных подходов.

У ОС сформировалась своя классификация:


  • по назначению (общего, специального),

  • по режиму обработки задач (однозадачные, мультипрограммные),

  • по способу взаимодействия с системой (диалоговые, с пакетной обработкой)

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

  • Эффективность.

  • Надежность и отказоустойчивость.

  • Безопасность (защищенность).

  • Предсказуемость.

  • Расширяемость.

  • Переносимость.

  • Совместимость.

  • Удобство.

  • Масштабируемость.

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

Процессы могут находиться в пяти основных состояниях:


  • рождение,

  • готовность,

  • исполнение,

  • ожидание,

  • закончил исполнение
В операционной системе процессы представляются определенной структурой данных, которая содержит следующую информацию (для разных ОС различается):

  • состояние, в котором находится процесс;

  • адрес команды, которая должна быть выполнена для него следующей;

  • содержимое регистров процессора;

  • данные, необходимые для планирования использования процессора и управления памятью;

  • учетные данные;

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

  • создание процесса - завершение процесса,

  • приостановка процесса - запуск процесса,

  • блокирование процесса - разблокирование процесса,

  • изменение приоритета процесса.


  1. Уровни планирования процессов в операционных системах. Основные цели и критерии планирования и параметры, на которых оно основывается. Алгоритмы планирования.
Планирование – это работа по определению того, в какой момент времени прервать выполнение одного процесса и какому процессу предоставить возможность выполняться.

При построении алгоритмов планирования выделяют три различных уровня:


  • долгосрочное;

  • краткосрочное;

  • среднесрочное.
К числу целей можно отнести следующие:

  • Справедливость.

  • Эффективность.

  • Сокращение полного времени выполнения.

  • Сокращение времени ожидания.

  • Сокращение времени отклика.
Критерии планирования:

  • Предсказуемость.

  • Минимальные накладные расходы.

  • Равномерная загрузка ресурсов вычислительной системы

  • Масштабируемость
Параметры планирования:

  • Статические – предельные значения ресурсов системы: размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т.п.

  • Динамические – значения ресурсов системы на текущий момент.
Алгоритмы планирования

FCFS. Работает по принципу первым пришел, первым обслужен. Преимуществом алгоритма FCFS является легкость его реализации, недостатками – среднее время ожидания и среднее полное время выполнения для этого алгоритма существенно зависят от порядка расположения процессов в очереди.

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

ShortestJobFirst. Если выбирать процесс не по порядку (как в FCFS и RR ), а основываясь на его минимальном времени непрерывного использования процессора, то это позволит повысить производительность алгоритма планирования использования процессора. Описанный алгоритм получил название «кратчайшая работа первой» (англ. ShortestJobFirst , SJF ).

Основную сложность при реализации алгоритма SJF представляет невозможность точно знать в каждом случае время исполнения очередного процесса.


  1. Кооперация процессов и основные аспекты ее логической организации (санкционированное взаимодействие процессов)
Для нормального функционирования процессов операционная система старается максимально обособить их друг от друга. Тем не менее существуют причины для их взаимодействия:

  • Повышение скорости работы.

  • Совместное использование данных.

  • Модульная конструкция какой-либо системы.

  • Удобства работы пользователя
Категории средств обмена информацией

  • Сигнальные.

  • Канальные.

  • Разделяемая память.
Логическая организация механизма передачи информации

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

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

Особенности передачи информации с помощью линий связи

Буферизация


  • Буфер нулевой емкости или отсутствует.

  • Буфер ограниченной емкости.

  • Буфер неограниченной емкости.
Поток ввода/вывода и сообщения

  • Поток ввода-вывода. Операции передачи/приема не интересуются содежимим данных

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

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


  1. Алгоритмы синхронизации (алгоритмы корректной организации взаимодействия процессов).
Критическая секция

Критическая секция – часть программы, результат выполнения которой может непредсказуемо меняться, если переменные, относящиеся к ней, изменяются другими потоками в то время, когда выполнение этой части еще не завершено. В примере критическая секция – файл “заказов”, являющийся разделяемым ресурсом для процессов R и S.

Алгоритм Деккера - первое известное корректное решение проблемы взаимного исключения.

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

Процессы объявляют о намерении войти в критическую секцию; это проверяется внешним циклом «while». Если другой процесс не заявил о таком намерении, в критическую секцию можно безопасно войти (вне зависимости от того, чья сейчас очередь). Взаимное исключение всё равно будет гарантировано, так как ни один из процессов не может войти в критическую секцию до установки этого флага (подразумевается, что, по крайней мере, один процесс войдёт в цикл «while»). Это также гарантирует продвижение, так как не будет ожидания процесса, оставившего «намерение» войти в критическую секцию. В ином случае, если переменная другого процесса была установлена, входят в цикл «while» и переменная turn будет показывать, кому разрешено войти в критическую секцию. Процесс, чья очередь не наступила, оставляет намерение войти в критическую секцию до тех пор, пока не придёт его очередь (внутренний цикл «while»). Процесс, чья очередь пришла, выйдет из цикла «while» и войдёт в критическую секцию.

Не требует специальных Test-and-set инструкций, по этому легко переносим на разные языки программирования и архитектуры компьютеров

Действует только для двух процессов

Алгоритм Петерсона - программный алгоритм взаимного исключения потоков исполнения кода.

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

Как и алгоритм Деккера, действует только для 2 процессов

Более простая реализация, чем у алгоритма Деккера

Алгоритм булочной. Алгоритм Петерсона дает нам решение задачи корректной организации взаимодействия двух процессов. Давайте рассмотрим теперь соответствующий алгоритм для n взаимодействующих процессов.

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


  1. Специальные механизмы синхронизации – семафоры Дейкстры, мониторы Хора, очереди сообщений.
Семафоры

Для устранения этого недостатка во многих ОС предусматриваются специальные системные вызовы (аппарат для работы с критическими секциями.

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

Обобщающее средство синхронизации процессов предложил Дейкстра, который ввел новые примитивы, обозначаемые V (“открытие”) и P (“закрытие”), оперирующие над целыми неотрицательными переменными, называемыми семафорами.

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

Смысл P(S) заключается в проверке текущего значения семафора S, и если S>0, то осуществляется переход к следующей за примитивом операции, иначе процесс переходит в состояние ожидания.

Процесс блокируется; S=S-1;

Операция V(S) связана с увеличением значения S на 1 и переводом одного или нескольких процессов в состояние готовности к исполнению процессором.

В простом случае, когда семафор работает в режиме 2-х состояний (S>0 и S=0), ео алгоритм работы полностью совпадает с алгоритмом работs мьютекса, а S выполняет роль блокирующей переменной.

“+”: пассивное ожидание (постановка в очередь и автоматическая выдача ресурсов)


  • возможность управления группой однородных ресурсов
“-”: не указывают непосредственно на критический ресурс

  • некорректное использование операций может привести к нарушению работоспособности (например, переставив местами операции P(e) и P(b) в функции Writer()).
Мониторы

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

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

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

Доступ к мониторам в каждый момент времени имеет только один процесс.

Для организации не только взаимоисключений, но и очередности процессов, подобно семафорам f(full) и e(empty), было введено понятие условных переменных, над которыми можно совершать две операции wait и signal, отчасти похожие на операции P и V над семафорами.

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

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

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

Требуются специальные языки программирования и компиляторы (встречаются в языках, “параллельный Евклид”,”параллельный Паскаль”,Java).

Следует отметить, что условные переменные мониторов не запоминают предысторию, поэтому операцию signal всегда должна выполняться после операции wait(иначе выполнение операции wait всегда будет приводить к блокированию процесса).

Очереди сообщений

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

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

При чтении сообщения из очереди удаления сообщения из очереди не происходит, и сообщение может быть прочитано несколько раз.

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

Основные функции управления очередью:


  • Создание новой очереди

  • Открытие существующей очереди

  • Чтение и удаление сообщений из очереди

  • Чтение без последующего удаления

  • Добавление сообщения в очередь

  • Завершение использование очереди

  • Удаление из очереди всех сообщений

  • Определение числа элементов в очереди

  1. Взаимоблокировки, тупиковые ситуации, "зависания" системы

страница 1
  • II. Основные принципы и правила служебного поведения государственных гражданских служащих Федеральной налоговой службы
  • II. Основные цели и задачи Программы, срок и этапы ее реализации, целевые индикаторы и показатели
  • II. Основные этапы развития физики Становление физики (до 17 в.).
  • III.2.1) Понятие преступления, его основные характеристики.
  • История развития операционных систем насчитывает уже более половины века и неразрывно связана с техническим уровнем развития электроники, материаловедения, математического аппарата, всех тех дисциплин науки и техники, без которых немыслимо построить вычислительный комплекс. Поэтому этапы развития операционных систем тесно связаны с определенными этапами научно-технического прогресса в данной области.

    Первый период (1945 – 1955 гг.)

    Первые электронные вычислительные машины появились после второй мировой войны. В 40-х были созданы первые вычислительные устройства, основанные на лампах, и появился принцип программы, хранящейся в памяти машины (Говард Айкен из Гарвардского университета, Джон фон Нейман из Института углубленного изучения в Принстоне и другие, июнь 1945 г.). Вычислительные машины были громоздкими, занимающими несколько комнат. Их конструкция предполагала использование нескольких тысяч электронных ламп. Такой же громоздкой была и работа с вычислительной машиной. Одна группа людей одновременно выполняла их обслуживание, эксплуатацию и программирование. Такие машины вполне можно отнести к категории экспериментальных, и выполняемые на них вычисления, скорее, носили пробный (экспериментальный) характер. Программирование выполнялось исключительно на машинном языке, т.е. последовательным вводом с клавишного пульта кодов команд и данных, и ни о каком системном или прикладным программным обеспечении речи не шло. Программа загружалась в память машины с помощью коммутационной панели либо с колоды перфокарт. Существующие устройства ввода/вывода не были стандартизированы и представляли собой примитивные пульты с набором переключателей, кнопок и индикаторов. Всеми ресурсами вычислительной машины распоряжался обслуживающий ее персонал, который вручную запускал программу на исполнение, выделял ей необходимый объём памяти и визуально контролировал весь процесс вычислений. Вычислительная система выполняла одновременно только одну операцию (ввод-вывод или собственно вычисления). Отладка программ велась с пульта управления с помощью изучения состояния памяти и регистров машины. Однако уже в этот период времени были созданы библиотеки математических и служебных программ, к которым программист мог обращаться при выполнении основной программы.



    В конце этого периода появляется первое системное программное обеспечение: в 1951–1952 гг. возникают прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat Rochester разрабатывает Ассемблер для IBM-701.

    Существенная часть времени уходила на подготовку запуска программы, а сами программы выполнялись строго последовательно. Такой режим работы называется последовательной обработкой данных. В целом первый период характеризуется крайне высокой стоимостью вычислительных систем, их малым количеством и низкой эффективностью использования. Так, ЭВМ UNIVAC I, разработанная в марте 1951 года, содержала 5000 ламп и могла работать со скоростью 1000 операций в секунду. Стоимость такой машины составляла 159000 долларов США.

    Второй период (1955 г. – начало 60-х).

    В середине 50-х годов ХХ века начался новый период в развитии вычислительной техники. На смену реле и лампам пришли полупроводниковые транзисторы. Это позволило увеличить производительность процессоров, резко возрос объём оперативной и внешней памяти, появились принципиально новые устройства сопряжения. В целом вычислительная система стала более сложной, что изменило отношение к ней со стороны операторов. Возникла необходимость в автоматизации вычислительных работ и, как следствие, упрощение самого процесса программирования. В эти годы появились первые алгоритмические языки и сопутствующее им специальное программное обеспечение – трансляторы. Среди языков того времени наибольшее распространение получили АЛГОЛ и Фортран.



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

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

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

    Компьютеры второго поколения использовались главным образом для научных и технических расчетов, таких, например, как решение дифференциальных уравнений. Программирование велось на Фортране или Ассемблере, а типичными операционными системами служили FMS (Fortran Monitor System) и IBSYS (операционная система компании IBM для компьютера IBM 7094).

    Третий период (начало 60-х – 1980 г.).

    Появление в 1965-1975 годах вычислительных машин на базе интегральных схем открыло новую страницу в развитии вычислительной техники. Новые машины имели сложную развитую архитектуру, наиболее приближённую к архитектуре современных компьютеров. К этому времени полностью определились с основным периферийным оборудованием. Типичными представителями таких машин являются серии ЭВМ IBM/360 или их отечественные аналоги – ЭВМ семейства ЕС. Так как машины этой серии имели одинаковую структуру и набор команд, то программы, написанные для одного компьютера, могли работать в принципе и на всех других. Еще одним преимуществом серии компьютеров IBM/360 было то, что данные ЭВМ могли использоваться как в научных целях (числовые вычисления для науки и техники), так и для коммерческого использования (сортировка и печать данных). Это предопределило успех фирмы IBM, которая заявила себя мировым лидером на рынке вычислительных машин. Идею семейства совместимых компьютеров стали принимать и другие производители. Операционная система OS/360 была предназначена для работы на всех компьютерах данного семейства машин независимо от того, какое предназначение было у используемого компьютера (расчет прогноза погоды или обычное копирование информации с перфокарт на магнитные ленты).

    Несмотря на то, что операционная система OS/360 была очень громоздкой и сложной (миллионы строк на ассемблере), именно в этот период были реализованы практически все основные механизмы, встраиваемые в современные операционные системы: многозадачность, поддержка многопользовательского режима, виртуальная память, файловая система и т.п. Из направления прикладной математики, связанного с программированием, выделяется отдельная отрасль - системное программирование. В условиях резко возросших вычислительных мощностей выполнение только одного задания в каждый момент времени оказалось малоэффективным. Решение было найдено в мультипрограммировании (многозадачности) – способе организации вычислительного процесса, при котором в оперативную память загружается несколько задач одновременно, но попеременно выполняющихся на одном процессоре. Мультипрограммирование было реализовано в двух вариантах: в хорошо зарекомендовавшей себя системе пакетной обработки и в системе разделения времени (разработчик – Массачусетсский технологический институт, IBM 7094), благодаря которой у каждого пользователя появился свой диалоговый терминал.

    Использование интегральных схем позволило значительно уменьшить размеры вычислительных машин. Такие ЭВМ стали называть мини-компьютеры (PDP-1, корпорация DEC, 1961 год), и, хотя стоимость их составляла порядка 120 000 долларов США, они были коммерчески успешными и имели хороший спрос. Их стоимость составляла 5% от стоимости ЭВМ IBM 7094, однако, некоторые операции компьютеры серии PDP выполняли с такой же скоростью.

    Именно для компьютеров серии PDP-7 специалист фирмы Bell Labs Кен Томпсон разработал однопользовательскую версию операционной системы MULTICS, которая позже развилась в операционную систему UNIX, у которой затем появились разновидности System V (корпорация AT&T), BSD (Калифорнийский институт Беркли) и другие. Для операционной системы UNIX Кен Томпсон и Денис Ритчи разработали язык C, который до сих пор является лидирующим в области системного программирования. В 1974 году они опубликовали статью “The UNIX Timesharing System” в журнале Commun. of the ACM, благодаря которой система UNIX стала популярной.

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

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

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

    Первым этапом развития системного программного обеспечения можно считать использование библиотечных программ, стандартных и служебных подпрограмм и макрокоманд. Концепция библиотек подпрограмм является наиболее ранней и восходит к 1949 году. С появлением библиотек получили развитие автоматические средства их сопровождения – программы-загрузчики и редакторы связей. Эти средства использовались в ЭВМ первого поколения, когда операционных систем как таковых еще не существовало (рис.3.2).

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


    Рис. 3.2.

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

    Началось интенсивное развитие методов управления данными, возникала такая важная функция ОС, как реализация ввода-вывода без участия центрального процесса – так называемый спулинг (от англ. SPOOL – Simultaneous Peripheral Operation on Line ).

    Появление новых аппаратных разработок (1959-1963 гг.) – систем прерываний, таймеров, каналов – стимулировало дальнейшее развитие ОС [ , ]. Возникли исполнительные системы, которые представляли собой набор программ для распределения ресурсов ЭВМ, связей с оператором, управления вычислительным процессом и управления вводом-выводом. Такие исполнительные системы позволили реализовать довольно эффективную по тому времени форму эксплуатации вычислительной системы – однопрограммную пакетную обработку. Эти системы давали пользователю такие средства, как контрольные точки, логические таймеры, возможность построения программ оверлейной структуры , обнаружение нарушений программами ограничений, принятых в системе, управления файлами , сбор учетной информации и др.

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

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

    Одной из первых ОС, использующих эти новейшие решения, была операционная система МСР (главная управляющая программа ), созданная фирмой Burroughs для своих компьютеров В5000 в 1963 году. В этой ОС были реализованы многие концепции и идеи, ставшие впоследствии стандартными для многих операционных систем (рис.3.3):

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

    Известной системой разделения времени того периода стала система CTSS (Compatible Time Sharing System ) – совместимая система разделения времени, разработанная в Массачусетском технологическом институте (1963 год) для компьютера IBM -7094 . Эта система была использована для разработки в этом же институте совместно с Bell Labs и General Electric системы разделения времени следующего поколения MULTICS (Multiplexed Information And Computing Service ). Примечательно, что эта ОС была написана в основном на языке высокого уровня EPL (первая версия языка PL/1 фирма IBM ).

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


    Рис. 3.3.

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

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

    В начале 70-х годов появились первые сетевые ОС, которые позволили не только рассредоточить пользователей, как в системах телеобработки данных, но и организовать распределенное хранение и обработку данных между компьютерами, соединенными электрическими связями. Известен проект ARPANET MO США. В 1974 году IBM объявила о создании собственной сетевой архитектуры SNA для своих мэйнфреймов, обеспечивающей взаимодействие типа " терминал – терминал ", " терминал – компьютер ", " компьютер – компьютер ". В Европе активно разрабатывалась технология построения сетей с коммутацией пакетов на основе протоколов Х.25.

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

    Важной вехой в истории мини-компьютеров и вообще в истории операционных систем явилось создание ОС UNIX . Написал эту систему Кен Томпсон (Ken Thompson), один из специалистов по компьютерам в BELL Labs , работавший над проектом MULTICS . Собственно, его UNIX – это усеченная однопользовательская версия системы MULTICS . Первоначальное название этой системы – UNICS (UNiplexed Information and Computing Service ) – "примитивная информационная и компьютерная служба". Так в шутку была названа эта система, поскольку MULTICS (MULTiplexed Information and Computing Service ) – мультиплексная информационная и компьютерная служба. С середины 70-х годов началось массовое использование ОС UNIX , написанной на 90% на языке С. Широкое распространение С-компиляторов сделало UNIX уникальной переносимой OC, а поскольку она поставлялась вместе с исходными кодами, то она стала первой открытой операционной системой. Гибкость, элегантность, мощные функциональные возможности и открытость позволили ей занять прочные позиции во всех классах компьютеров – от персональных до супер-ЭВМ .

    Доступность мини-компьютеров послужила стимулом для создания локальных сетей. В простейших ЛВС компьютеры соединялись через последовательные порты. Первое сетевое приложение для ОС UNIX – программа UUCP ( Unix to Unix Copy Program) – появилось в 1976 году.

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

    Все восьмидесятые годы характерны появлением все более совершенных версий UNIX : Sun OS, HP-UX , Irix, AIX и др. Для решения проблемы их совместимости были приняты стандарты POSIX и XPG, определяющие интерфейсы этих систем для приложений.

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

    Наиболее популярной версией ОС раннего этапа развития персональных компьютеров была MS-DOS компании Microsoft – однопрограммная, однопользовательская ОС с интерфейсом командной строки. Многие функции, обеспечивающие удобство работы пользователя, в этой ОС предоставлялись дополнительными программами – оболочкой Norton Commander , PC Tools и др. Наибольшее влияние на развитие программного обеспечения ПК оказала операционная среда Windows , первая версия которой появилась в 1985 году. Сетевые функции также реализовались с помощью сетевых оболочек и появились в MS-DOS версии 3.1. В это же время вышли в свет сетевые продукты Microsoft – MS-NET , а позже – LAN Manager , Windows for Workgroup, а затем и Windows NT.

    Другим путем пошла компания Novell, ее продукт NetWare является операционной системой со встроенными сетевыми функциями. ОС NetWare распространялась как

    ГЛАВА 1


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Мультипрограммные системы пакетной обработки так же, как и их однопрограммные предшественники, имели своей целью обеспечение максимальной загрузки аппаратуры компьютера, однако решали эту задачу более эффективно. В мультипрограммном пакетном режиме процессор не простаивал, пока одна программа выполняла операцию ввода-вывода (как это происходило при последовательном выполнении программ в системах ранней пакетной обработки), а переключался на другую готовую к выполнению программу. В результате достигалась сбалансированная загрузка всех устройств компьютера, а следовательно, увеличивалось число задач, решаемых в единицу времени. В мультипрограммных системах пакетной обработки пользователь по-прежнему был лишен возможности интерактивно взаимодействовать со своими программами. Для того чтобы хотя бы частично вернуть пользователям ощущение непосредственного взаимодействия с компьютером, был разработан другой вариант мультипрограммных систем - системы разделения времени. Этот вариант рассчитан на многотерминальные системы, когда каждый пользователь работает за своим терминалом. В числе первых операционных систем разделения времени, разработанных в середине 60-х годов, были TSS/360 (компания IBM), CTSS и MULTICS (Массачусетский технологический институт совместно с Bell Labs и компанией General Electric). Вариант мультипрограммирования, применяемый в системах разделения времени, был нацелен на создание для каждого отдельного пользователя иллюзии единоличного владения вычислительной машиной за счет периодического выделения каждой программе своей доли процессорного времени. В системах разделения времени эффективность использования оборудования ниже, чем в системах пакетной обработки, что явилось платой за удобства работы пользователя.

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

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

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

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

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

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

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

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

    Операционные системы и глобальные сети

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

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

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

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

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

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

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

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

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

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

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

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

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

    Рабочий вариант стека протоколов 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, которое в русском языке со временем (и с легкой руки локализаторов Microsoft) превратилось в Интернет. Интернет стал отличным полигоном для испытаний многих сетевых операционных систем, позволившим проверить в реальных условиях возможности их взаимодействия, степень масштабируемости, способность работы при экстремальной нагрузке, создаваемой сотнями и тысячами пользователей. Стек протоколов TCP/IP также ждала завидная судьба. Независимость от производителей, гибкость и эффективность, доказанные успешной работой в Интернете, а также открытость и доступность стандартов сделали протоколы TCP/IP не только главным транспортным механизмом Интернета, но и основным стеком большинства сетевых операционных систем.

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

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

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

    Недостающие функции для MS-DOS и подобных ей ОС компенсировались внешними программами, предоставлявшими пользователю удобный графический интерфейс (например, Norton Commander) или средства тонкого управления дисками (например, PC Tools). Наибольшее влияние на развитие программного обеспечения для персональных компьютеров оказала операционная среда Windows компании Microsoft, представлявшая собой надстройку над MS-DOS.

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

    Вместе с выпуском версии MS-DOS 3.1 в 1984 году компания Microsoft также выпустила продукт, называемый Microsoft Networks, который обычно неформально называют MS-NET. Некоторые концепции, заложенные в MS-NET, такие как введение в структуру базовых сетевых компонентов - редиректора и сетевого сервера, успешно перешли в более поздние сетевые продукты Microsoft: LAN Manager, Windows for Workgroups, а затем и в Windows NT.

    Сетевые оболочки для персональных компьютеров выпускали и другие компании: IBM, Artisoft, Performance Technology и другие.

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

    Первая сетевая операционная система компании Novell появилась на рынке в 1983 году и называлась OS-Net. Эта ОС предназначалась для сетей, имевших звездообразную топологию, центральным элементом которых был специализированный компьютер на базе микропроцессора Motorola 68000. Немного позже, когда фирма IBM выпустила персональные компьютеры PC XT, компания Novell разработала новый продукт - NetWare 86, рассчитанный на архитектуру микропроцессоров семейства Intel 8088.

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

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

    В 1987 году в результате совместных усилий Microsoft и IBM появилась первая многозадачная операционная система для персональных компьютеров с процессором Intel 80286, в полной мере использующая возможности защищенного режима - OS/2. Эта система была хорошо продуманна. Она поддерживала вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс (не с первой версии) и виртуальную машину для выполнения DOS-приложений. Фактически она выходила за пределы простой многозадачности с ее концепцией распараллеливания отдельных процессов, получившей название многопоточности.

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

    Сетевые разработки компаний Microsoft и IBM привели к появлению NetBIOS - очень популярного транспортного протокола и одновременно интерфейса прикладного программирования для локальных сетей, получившего применение практически во всех сетевых операционных системах для персональных компьютеров. Этот протокол и сегодня применяется для создания небольших локальных сетей.

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

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

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

    Особенности современного этапа развития операционных систем

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

    Во второй половине 90-х годов все производители операционных систем резко усилили поддержку средств работы с Интернетом (кроме производителей UNIX-систем, в которых эта поддержка всегда была существенной). Кроме самого стека TCP/IP в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Интернета, как telnet, ftp, DNS и Web. Влияние Интернета проявилось и в том, что компьютер превратился из чисто вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями.

    Особое внимание в течение всего последнего десятилетия уделялось корпоративным сетевым операционным системам. Их дальнейшее развитие представляет одну из наиболее важных задач и в обозримом будущем. Корпоративная oпeрационная система отличается способностью хорошо и устойчиво работать в крупных сетях, которые характерны для больших предприятий, имеющих отделения в десятках городов и, возможно, в разных странах. Таким сетям органически присуща высокая степень гетерогенности программных и аппаратных средств, поэтому корпоративная ОС должна беспроблемно взаимодействовать с операционными системами разных типов и работать на различных аппаратных платформах. К настоящему времени достаточно явно определилась тройка лидеров в классе корпоративных ОС - это Novell NetWare 4.x и 5.0, Microsoft Windows NT 4.0 и Windows 2000, а также UNIX-системы различных производителей аппаратных платформ.

    Для корпоративной ОС очень важно наличие средств централизованного администрирования и управления, позволяющих в единой базе данных хранить учетные записи о десятках тысяч пользователей, компьютеров, коммуникационных устройств и модулей программного обеспечения, имеющихся в корпоративной сети. В современных операционных системах средства централизованного администрирования обычно базируются на единой справочной службе. Первой успешной реализацией справочной службы корпоративного масштаба была система StreetTalk компании Banyan. К настоящему времени наибольшее признание получила справочная служба NDS компании Novell, выпущенная впервые в 1993 году для первой корпоративной версии NetWare 4.O. Роль централизованной справочной службы настолько велика, что именно по качеству справочной службы оценивают пригодность операционной системы для работы в корпоративном масштабе. Длительная задержка выпуска Windows NT 2000 во многом была связана с созданием для этой ОС масштабируемой справочной службы Active Directory, без которой этому семейству ОС трудно было претендовать на звание истинно корпоративной ОС.

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

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

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

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

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

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

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

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

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

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

    § В годах переход к интегральным микросхемам открыл путь к появлению следующего поколения компьютеров, ярким представителем которых является 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. В чем состоят современные тенденции развития ОС?