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