Назначение и функции
операционной системы
Операционные системы для автономного
компьютера
ОС как виртуальная машина
ОС как система управления ресурсами
Функциональные компоненты операционной
системы автономного компьютера
Управление процессами
Управление памятью
Управление файлами и внешними
устройствами
Защита данных и администрирование
Интерфейс прикладного программирования
Пользовательский интерфейс
Сетевые операционные системы
Сетевые и распределенные
ОС
Два значения термина «сетевая ОС»
Функциональные компоненты сетевой
ОС
Сетевые службы и сетевые сервисы
Встроенные сетевые службы и
сетевые оболочки
Одноранговые и серверные сетевые
операционные системы
ОС в одноранговых сетях
ОС в сетях с выделенными
серверами
Требования к современным операционным
системам
Выводы .
Задачи и упражнения
Сегодня существует большое
количество разных типов операционных
систем, отличающихся областями
применения, аппаратными платформами
и методами реализации. Естественно,
это обуславливает и значительные
функциональные различия этих
ОС. Даже у конкретной операционной
системы набор выполняемых функций
зачастую определить не так
просто — та функция, которая
сегодня выполняется внешним
по отношению к ОС компонентом,
завтра может стать ее неотъемлемой
частью и наоборот. Поэтому при
изучении операционных систем
очень важно из всего многообразия
выделить те функции, которые
присущи всем операционным системам
как классу продуктов.
Операционные системы
для автономного компьютера
Операционная система компьютера
представляет собой комплекс
взаимосвязанных программ, который
действует как интерфейс между
приложениями и пользователями
с одной стороны, и аппаратурой
компьютера с другой стороны.
В соответствии с этим определением
ОС выполняет две группы функций:
предоставление пользователю
или программисту вместо реальной
аппаратуры компьютера расширенной
виртуальной машины, с которой
удобней работать и которую
легче программировать;
повышение эффективности использования
компьютера путем рационального
управления его ресурсами в
соответствии с некоторым критерием.
ОС как виртуальная
машина
Для того чтобы успешно
решать свои задачи, современный
пользователь или даже прикладной
программист может обойтись без
досконального знания аппаратного
устройства компьютера. Ему не
обязательно быть в курсе того,
как функционируют различные
электронные блоки и электромеханические
узлы компьютера. Более того, очень
часто пользователь может не
знать даже системы команд
процессора. Пользователь-программист
привык иметь дело с мощными
высокоуровневыми функциями, которые
ему предоставляет операционная
система.
Так, например, при работе
с диском программисту, пишущему
приложение для работы под
управлением ОС, или конечному
пользователю ОС достаточно представлять
его в виде некоторого набора
файлов, каждый из которых имеет
имя. Последовательность действий
при работе с файлом заключается
в его открытии, выполнении одной
или нескольких операций чтения
или записи, а затем в закрытии
файла. Такие частности, как
используемая при записи частотная
модуляция или текущее состояние
двигателя механизма перемещения
магнитных головок чтения/записи,
не должны волновать программиста.
Именно операционная система
скрывает от программиста большую
часть особенностей аппаратуры
и предоставляет возможность
простой и удобной работы с
требуемыми файлами.
Если бы программист работал
непосредственно с аппаратурой
компьютера, без участия ОС, то
для организации чтения блока
данных с диска программисту
пришлось бы использовать более
десятка команд с указанием
множества параметров: номера блока
на диске, номера сектора на
дорожке и т. п. А после
завершения операции обмена с
диском он должен был бы
предусмотреть в своей программе
анализ результата выполненной
операции. Учитывая, что контроллер
диска способен распознавать
более двадцати различных вариантов
завершения операции, можно считать
программирование обмена с диском
на уровне аппаратуры не самой
тривиальной задачей. Не менее
обременительной выглядит и работа
пользователя, если бы ему для
чтения файла с терминала потребовалось
задавать числовые адреса дорожек
и секторов.
Операционная система избавляет
программистов не только от
необходимости напрямую работать
с аппаратурой дискового накопителя,
предоставляя им простой файловый
интерфейс, но и берет на
себя все другие рутинные операции,
связанные с управлением другими
аппаратными устройствами компьютера:
физической памятью, таймерами,
принтерами и т. д.
В результате реальная машина,
способная выполнять только небольшой
набор элементарных действий, определяемых
ее системой команд, превращается
в виртуальную машину, выполняющую
широкий набор гораздо более
мощных функций. Виртуальная машина
тоже управляется командами, но
это уже команды другого, более
высокого уровня: удалить файл
с определенным именем, запустить
на выполнение некоторую прикладную
программу, повысить приоритет
задачи, вывести текст из файла
на печать. Таким образом, назначение
ОС состоит в предоставлении
пользователю/программисту некоторой
расширенной виртуальной машины,
которую легче программировать
и с которой легче работать,
чем непосредственно с аппаратурой,
составляющей реальный компьютер
или реальную сеть.
ОС как система управления
ресурсами
Операционная система не
только предоставляет пользователям
и программистам удобный интерфейс
к аппаратным средствам компьютера,
но и является механизмом, распределяющим
ресурсы компьютера.
К числу основных ресурсов
современных вычислительных систем
могут быть отнесены такие
ресурсы, как процессоры, основная
память, таймеры, наборы данных, диски,
накопители на магнитных лентах,
принтеры, сетевые устройства и
некоторые другие. Ресурсы распределяются
между процессами. Процесс (задача)
представляет собой базовое понятие
большинства современных ОС и
часто кратко определяется как
программа в стадии выполнения.
Программа — это статический
объект, представляющий собой файл
с кодами и данными. Процесс
— это динамический объект, который
возникает в операционной системе
после того, как пользователь
или сама операционная система
решает «запустить программу
на выполнение», то есть создать
новую единицу вычислительной
работы. Например, ОС может создать
процесс в ответ на команду
пользователя run prgl. exe, где prgl.
exe — это имя файла, в
котором хранится код программы.
ПРИМЕЧАНИЕ
Во многих современных ОС для
обозначения минимальной единицы
работы ОС используют термин «нить», или
«поток», при этом изменяется суть термина
«процесс». Подробнее об этом рассказывается
в главе 4 «Процессы и потоки».
В остальных главах мы будем придерживаться
упрощенного толкования, в соответствии
с которым для обозначения
выполняемой программы будет
использоваться только термин «процесс».
Управление ресурсами вычислительной
системы с целью наиболее эффективного
их использования является назначением
операционной системы. Например,
мультипрограммная операционная
система организует одновременное
выполнение сразу нескольких
процессов на одном компьютере,
поочередно переключая процессор
с одного процесса на другой,
исключая простои процессора, вызываемые
обращениями процессов к вводу-выводу.
ОС также отслеживает и разрешает
конфликты, возникающие при обращении
нескольких процессов к одному
и тому же устройству ввода-вывода
или к одним и тем же данным.
Критерий эффективности, в соответствии
с которым ОС организует управление
ресурсами компьютера, может быть
различным. Например, в одних системах
важен такой критерий, как пропускная
способность вычислительной системы,
в других — время ее реакции.
Соответственно выбранному критерию
эффективности операционные системы
по-разному организуют вычислительный
процесс.
Управление ресурсами включает
решение следующих общих, не
зависящих от типа ресурса
задач:
планирование ресурса — то
есть определение, какому процессу,
когда и в каком количестве
(если ресурс может выделяться
частями) следует выделить данный
ресурс;
удовлетворение запросов на
ресурсы;
отслеживание состояния и
учет использования ресурса —
то есть поддержание оперативной
информации о том, занят или
свободен ресурс и какая доля
ресурса уже распределена;
разрешение конфликтов между
процессами.
Для решения этих общих
задач управления ресурсами разные
ОС используют различные алгоритмы,
особенности которых в конечном
счете и определяют облик ОС
в целом, включая характеристики
производительности, область применения
и даже пользовательский интерфейс.
Например, применяемый алгоритм
управления процессором в значительной
степени определяет, может ли
ОС использоваться как система
разделения времени, система пакетной
обработки или система реального
времени.
Задача организации эффективного
совместного использования ресурсов
несколькими процессами является
весьма сложной, и сложность
эта порождается в основном
случайным характером возникновения
запросов на потребление ресурсов.
В мультипрограммной системе
образуются очереди заявок от
одновременно выполняемых программ
к разделяемым ресурсам компьютера:
процессору, странице памяти, к принтеру,
к диску. Операционная система
организует обслуживание этих
очередей по разным алгоритмам:
в порядке поступления, на основе
приоритетов, кругового обслуживания
и т. д. Анализ и определение
оптимальных дисциплин обслуживания
заявок является предметом специальной
области прикладной математики
— теории массового обслуживания.
Эта теория иногда используется
для оценки эффективности тех
или иных алгоритмов управления
очередями в операционных системах.
Очень часто в ОС реализуются
и эмпирические алгоритмы обслуживания
очередей, прошедшие проверку практикой.
Таким образом, управление
ресурсами составляет важную
часть функций любой операционной
системы, в особенности мультипрограммной.
В отличие от функций расширенной
машины большинство функций управления
ресурсами выполняются операционной
системой автоматически и прикладному
программисту недоступны.
Функциональные компоненты
операционной системы автономного
компьютера
Функции операционной системы
автономного компьютера обычно
группируются либо в соответствии
с типами локальных ресурсов,
которыми управляет ОС, либо в
соответствии со специфическими
задачами, применимыми ко всем
ресурсам. Иногда такие группы
функций называют подсистемами.
Наиболее важными подсистемами
управления ресурсами являются
подсистемы управления процессами,
памятью, файлами и внешними
устройствами, а подсистемами, общими
для всех ресурсов, являются подсистемы
пользовательского интерфейса, защиты
данных и администрирования.
Управление процессами
Важнейшей частью операционной
системы, непосредственно влияющей
на функционирование вычислительной
машины, является подсистема управления
процессами.
Для каждого вновь создаваемого
процесса ОС генерирует системные
информационные структуры, которые
содержат данные о потребностях
процесса в ресурсах вычислительной
системы, а также о фактически
выделенных ему ресурсах. Таким
образом, процесс можно также
определить как некоторую заявку
на потребление системных ресурсов.
Чтобы процесс мог быть
выполнен, операционная система
должна назначить ему область
оперативной памяти, в которой
будут размещены коды и данные
процесса, а также предоставить
ему необходимое количество процессорного
времени. Кроме того, процессу
может понадобиться доступ к
таким ресурсам, как файлы и
устройства ввода-вывода.
В информационные структуры
процесса часто включаются вспомогательные
данные, характеризующие историю
пребывания процесса в системе
(например, какую долю времени
процесс потратил на операции
ввода-вывода, а какую на вычисления),
его текущее состояние (активное
или заблокированное), степень привилегированности
процесса (значение приоритета). Данные
такого рода могут учитываться
операционной системой при принятии
решения о предоставлении ресурсов
процессу.
В мультипрограммной операционной
системе одновременно может существовать
несколько процессов. Часть процессов
порождается по инициативе пользователей
и их приложений, такие процессы
обычно называют пользовательскими.
Другие процессы, называемые системными,
инициализируются самой операционной
системой для выполнения своих
функций.
Поскольку процессы часто
одновременно претендуют на одни
и те же ресурсы, то в обязанности
ОС входит поддержание очередей
заявок процессов на ресурсы,
например очереди к процессору,
к принтеру, к последовательному
порту.