Поддержка отказоустойчивости
также входит в обязанности
системного администратора. В состав
ОС обычно входят утилиты, позволяющие
администратору выполнять регулярные
операции резервного копирования
для обеспечения быстрого восстановления
важных данных.
Интерфейс прикладного
программирования
Прикладные программисты используют
в своих приложениях обращения
к ОС, когда для выполнения
тех или иных действий им
требуется особый статус, которым
обладает только операционная
система. Например, в большинстве
современных ОС все действия,
связанные с управлением аппаратными
средствами компьютера, может выполнять
только ОС. Помимо этих функций
прикладной программист может
воспользоваться набором сервисных
функций ОС, которые упрощают
написание приложений. Функции такого
типа реализуют универсальные
действия, часто требующиеся в
различных приложениях, такие,
например, как обработка текстовых
строк. Эти функции могли бы
быть выполнены и самим приложением,
однако гораздо проще использовать
уже готовые, отлаженные процедуры,
включенные в состав операционной
системы. В то же время даже
при наличии в ОС соответствующей
функции программист может реализовать
ее самостоятельно в рамках
приложения, если предложенный операционной
системой вариант его не вполне
устраивает.
Возможности операционной системы
доступны прикладному программисту
в виде набора функций, называющегося
интерфейсом прикладного программирования
(Application Programming Interface, API). От конечного
пользователя эти функции скрыты
за оболочкой алфавитно-цифрового
или графического пользовательского
интерфейса.
Для разработчиков приложений
все особенности конкретной операционной
системы представлены особенностями
ее API. Поэтому операционные системы
с различной внутренней организацией,
но с одинаковым набором функций
API кажутся им одной и той
же ОС, что упрощает стандартизацию
операционных систем и обеспечивает
переносимость приложений между
внутренне различными ОС, соответствующими
определенному стандарту на API. Например,
следование общим стандартам API UNIX,
одним из которых является
стандарт Posix, позволяет говорить
о некоторой обобщенной операционной
системе UNIX, хотя многочисленные
версии этой ОС от разных
производителей иногда существенно
отличаются внутренней организацией.
Приложения выполняют обращения
к функциям API с помощью системных
вызовов. Способ, которым приложение
получает услуги операционной
системы, очень похож на вызов
подпрограмм. Информация, нужная
ОС и состоящая обычно из
идентификатора команды и данных,
помещается в определенное место
памяти, в регистры и/или стек.
Затем управление передается
операционной системе, которая
выполняет требуемую функцию
и возвращает результаты через
память, регистры или стеки. Если
операция проведена неуспешно,
то результат включает индикацию
ошибки.
Способ реализации системных
вызовов зависит от структурной
организации ОС, которая, в свою
очередь, тесно связана с особенностями
аппаратной платформы. Кроме того,
он зависит от языка программирования.
При использовании ассемблера
программист устанавливает значения
регистров и/или областей памяти,
а затем выполняет специальную
инструкцию вызова сервиса или
программного прерывания для
обращения к некоторой функции
ОС. При использовании языков
высокого уровня функции ОС
вызываются тем же способом, что
и написанные пользователем подпрограммы,
требуя задания определенных
аргументов в определенном порядке.
Пользовательский интерфейс
Операционная система должна
обеспечивать удобный интерфейс
не только для прикладных программ,
но и для человека, работающего
за терминалом. Этот человек может
быть конечным пользователем,
администратором ОС или программистом.
В ранних операционных системах
пакетного режима функции пользовательского
интерфейса были сведены к
минимуму и не требовали наличия
терминала. Команды языка управления
заданиями набивались на перфокарты,
а результаты выводились на
печатающее устройство.
Современные ОС поддерживают
развитые функции пользовательского
интерфейса для интерактивной
работы за терминалами двух
типов: алфавитно-цифровыми и
графическими.
При работе за алфавитно-цифровым
терминалом пользователь имеет
в своем распоряжении систему
команд, мощность который отражает
функциональные возможности данной
ОС. Обычно командный язык ОС
позволяет запускать и останавливать
приложения, выполнять различные
операции с файлами и каталогами,
получать информацию о состоянии
ОС (количество работающих процессов,
объем свободного пространства
на дисках и т. п.), администрировать
систему. Команды могут вводиться
не только в интерактивном
режиме с терминала, но и
считываться из так называемого
командного файла, содержащего
некоторую последовательность команд.
Программный модуль ОС, ответственный
за чтение отдельных команд
или же последовательности команд
из командного файла, иногда
называют командным интерпретатором.
Ввод команды может быть
упрощен, если операционная система
поддерживает графический пользовательский
интерфейс. В этом случае пользователь
для выполнения нужного действия
с помощью мыши выбирает на
экране нужный пункт меню или
графический символ.
Сетевые операционные системы
Операционная система компьютерной
сети во многом аналогична
ОС автономного компьютера —
она также представляет собой
комплекс взаимосвязанных программ,
который обеспечивает удобство
работы пользователям и программистам
путем предоставления им некоторой
виртуальной вычислительной системы,
и реализует эффективный способ
разделения ресурсов между множеством
выполняемых в сети процессов.
Компьютерная сеть — это
набор компьютеров, связанных
коммуникационной системой и
снабженных соответствующим программным
обеспечением, позволяющим пользователям
сети получать доступ к ресурсам
этого набора компьютеров. Сеть
могут образовывать компьютеры
разных типов, которыми могут
быть небольшие микропроцессоры,
рабочие станции, мини-компьютеры,
персональные компьютеры или
суперкомпьютеры. Коммуникационная
система может включать кабели,
повторители, коммутаторы, маршрутизаторы
и другие устройства, обеспечивающие
передачу сообщений между любой
парой компьютеров сети. Компьютерная
сеть позволяет пользователю
работать со своим компьютером
как с автономным и добавляет
к этому возможность доступа
к информационным и аппаратным
ресурсам других компьютеров
сети.
При организации сетевой
работы операционная система
играет роль интерфейса, экранирующего
от пользователя все детали
низкоуровневых программно-аппаратных
средств сети. Например, вместо числовых
адресов компьютеров сети, таких
как МАС-адрес и IP-адрес, операционная
система компьютерной сети позволяет
оперировать удобными для запоминания
символьными именами. В результате
в представлении пользователя
сеть с ее множеством сложных
и запутанных реальных деталей
превращается в достаточно понятный
набор разделяемых ресурсов.
Сетевые и распределенные
ОС
В зависимости от того, какой
виртуальный образ создает операционная
система для того, чтобы подменить
им реальную аппаратуру компьютерной
сети, различают сетевые ОС и
распределенные ОС.
Сетевая ОС предоставляет
пользователю некую виртуальную
вычислительную систему, работать
с которой гораздо проще, чем
с реальной сетевой аппаратурой.
В то же время эта виртуальная
система не полностью скрывает
распределенную природу своего
реального прототипа, то есть
является виртуальной сетью.
При использовании ресурсов
компьютеров сети пользователь
сетевой ОС всегда помнит, что
он имеет дело с сетевыми
ресурсами и что для доступа
к ним нужно выполнить некоторые
особые операции, например отобразить
удаленный разделяемый каталог
на вымышленную локальную букву
дисковода или поставить перед
именем каталога еще и имя
компьютера, на котором тот расположен.
Пользователи сетевой ОС обычно
должны быть в курсе того, где
хранятся их файлы, и должны
использовать явные команды передачи
файлов для перемещения файлов
с одной машины на другую.
Работая в среде сетевой
ОС, пользователь хотя и может
запустить задание на любой
машине компьютерной сети, всегда
знает, на какой машине выполняется
его задание. По умолчанию пользовательское
задание выполняется на той
машине, на которой пользователь
сделал логический вход. Если
же он хочет выполнить задание
на другой машине, то ему нужно
либо выполнить логический вход
в эту машину, используя команду
типа remote login, либо ввести специальную
команду удаленного выполнения,
в которой он должен указать
информацию, идентифицирующую удаленный
компьютер.
Магистральным направлением
развития сетевых операционных
систем является достижение как
можно более высокой степени
прозрачности сетевых ресурсов.
В идеальном случае сетевая
ОС должна представить пользователю
сетевые ресурсы в виде ресурсов
единой централизованной виртуальной
машины. Для такой операционной
системы используют специальное
название — распределенная ОС,
или истинно распределенная ОС.
Распределенная ОС, динамически
и автоматически распределяя
работы по различным машинам
системы для обработки, заставляет
набор сетевых машин работать
как виртуальный унипроцессор. Пользователь
распределенной ОС, вообще говоря,
не имеет сведений о том,
на какой машине выполняется
его работа.
Распределенная ОС существует
как единая операционная система
в масштабах вычислительной системы.
Каждый компьютер сети, работающей
под управлением распределенной
ОС, выполняет часть функций этой
глобальной ОС. Распределенная ОС
объединяет все компьютеры сети
в том смысле, что они работают
в тесной кооперации друг с
другом для эффективного использования
всех ресурсов компьютерной сети.
Два значения термина «сетевая
ОС»
В настоящее время практически
все сетевые операционные системы
еще очень далеки от идеала
истинной распределенности. Степень
автономности каждого компьютера
в сети, работающей под управлением
сетевой операционной системы,
значительно выше по сравнению
с компьютерами, работающими под
управлением распределенной ОС.
В результате сетевая ОС
может рассматриваться как набор
операционных систем отдельных
компьютеров, составляющих сеть.
На разных компьютерах сети
могут выполняться одинаковые
или разные ОС. Например, на всех
компьютерах сети может работать
одна и та же ОС UNIX. Более
реалистичным вариантом является
сеть, в которой работают разные
ОС, например часть компьютеров
работает под управлением UNIX,
часть — под управлением NetWare,
а остальные — под управлением
Windows NT и Windows 98. Все эти операционные
системы функционируют независимо
друг от друга в том смысле,
что каждая из них принимает
независимые решения о создании
и завершении своих собственных
процессов и управлении локальными
ресурсами. Но в любом случае
операционные системы компьютеров,
работающих в сети, должны включать
взаимно согласованный набор
коммуникационных протоколов для
организации взаимодействия процессов,
выполняющихся на разных компьютерах
сети, и разделения ресурсов этих
компьютеров между пользователями
сети.
Если операционная система
отдельного компьютера позволяет
ему работать в сети, то есть
предоставлять свои ресурсы в
общее пользование и/или потреблять
ресурсы других компьютеров сети,
то такая операционная система
отдельного компьютера также
называется сетевой ОС.
Таким образом, термин «сетевая операционная
система» используется в двух значениях:
во-первых, как совокупность ОС всех
компьютеров сети и, во-вторых, как
операционная система отдельного компьютера,
способного работать в сети. Исходя
из этого определения следует, что
такие операционные системы, как, например,
Windows NT, NetWare, Solaris, HP-UX, являются сетевыми,
поскольку все они обладают средствами,
которые позволяют их пользователям работать
в сети.
Функциональные компоненты
сетевой ОС
На рис. 2.1 показаны основные
функциональные компоненты сетевой
ОС:
средства управления локальными
ресурсами компьютера реализуют
все функции ОС автономного
компьютера (распределение оперативной
памяти между процессами, планирование
и диспетчеризацию процессов,
управление процессорами в мультипроцессорных
машинах, управление внешней памятью,
интерфейс с пользователем и
т. д.);