Структура операционной системы представлена на рис. 6.2. Любая операционная система, независимо от ее структуры, имеет определенный набор функциональных компонентов.
Рис. 6.2. Структура операционной системы
Управление процессами. Процесс – выполнение в процессоре компьютера инструкций программы. До тех пор, пока набор команд процессора записан на диск в виде файла, он является программой. Когда же этот набор команд загружается в память компьютера и начинает последовательно выполняться, он становится процессом. В многозадачных операционных системах в памяти компьютера одновременно может находится и выполняется несколько таких последовательностей. Причем процессор, согласно заданным параметрам, периодически останавливает выполнение одной последовательности команд и переходит к другой, к третьей. Та последовательность команд, которая в данный момент не выполняется, должна хранить свое состояние, чтобы процессор мог продолжить ее выполнение с места ее остановки. Таким образом, любой процесс связан с памятью, которую он занимает, с точкой выполнения (счетчиком команд), пользователем и связанными ресурсами (открытыми файлами, соединениями или устройствами компьютера). Вся совокупность этих данных описывает состояние процесса и хранится в таблице процесса. Операционная система должна быть способна:
– создавать или уничтожать системные и пользовательские процессы;
– приостанавливать и возобновлять выполнение процесса;
– поддерживать механизм синхронизации, взаимодействия и взаимного блокирования процессов.
Управление основной памятью. Основная, или оперативная, память – это быстродействующее хранилище данных, к которому у центрального процессора есть прямой доступ. В этом хранилище инструкции размещаются для их последующего выполнения. Процессор может разделять прямой доступ к основной памяти с устройствами ввода-вывода. В этом случае устройства ввода-вывода могут записывать в основную память массивы данных, которые процессор затем считывает для выполнения или обработки.
|
Операционная система отвечает за следующие аспекты управления основной памятью:
– следит за тем, какая часть памяти каким процессом или устройством используется;
– определяет, какие процессы должны быть загружены в память;
– выделяет и освобождает память.
Управление файлами. Файловая система является частью операционной системы и предназначена для организации, хранения и именования данных на носителях. Данные могут храниться на самых разных физических устройствах (жестких дисках, flash-картах или DVD-дисках). Операционная система обеспечивает логический уровень представления этих устройств, а также структуры хранящихся на них данных.
Логической единицей хранения данных является файл. Файловая система определяет формат содержимого и физического хранения файлов. Для облегчения работы файлы объединяют в каталоги (папки). Для манипуляции с файлами операционная система должна предоставлять следующую функциональность:
– создание и удаление файлов;
– создание и удаление каталогов;
– поддержка базовых команд для манипулирования файлами и каталогами;
– осуществление резервного копирования.
Управление системой ввода-вывода. Операционная система должна скрывать от пользователя сложные детали взаимодействия с устройствами ввода-вывода. Поэтому в ОС всегда есть функциональная часть, отвечающая за взаимодействие пользовательских программ с этими устройствами. В этой области операционная система обычно обеспечивает:
|
– общий интерфейс с драйверами устройств ввода-вывода;
– драйверы для некоторых устройств;
– управление доступом к памяти, включая кэширование, буферизацию и спулинг, а также управление памятью компонентов ввода-вывода в целом.
Буферизация – выделение области памяти, в которую одно устройство (процесс) записывает данные и из которой другое устройство считывает эти данные.
Кэширование – заблаговременная загрузка данных из медленной памяти в быстродействующую память для быстрого к ним доступа.
Спулинг – —особый вид буферизации, применяемый для согласования быстродействующих устройств.
При спулинге быстродействующее устройство (процесс) записывает данные в буфер (спул) и продолжает работу, не ожидая, когда они будут считаны медленным устройством (процессом).
Управление дисковой памятью. Во время выполнения программа и связанные с ней данные располагаются в основной памяти компьютера. Программа должна храниться где-то в моменты, когда она не выполняется. Данные программы так же должны быть сохранены. Для постоянного хранения программ и данных используется память, которая в подавляющем большинстве современных компьютеров представлена дисковыми устройствами. Кроме того, дисковые устройства могут быть использованы операционной системой с целью имитации расширения основной памяти путем свопинга (выгрузки неактивных фрагментов основной памяти на диск и замены их программами, нуждающимися в срочном выполнении). Таким образом, блок управления дисковой памятью должен обеспечивать следующую функциональность:
|
– управление свободным пространством на диске;
– выделение дисковой памяти для хранения программ и данных;
–планирование использования дисковой памяти.
Управление сетевыми соединениями. Практически все современные операционные системы имеют в своем составе функциональный блок, отвечающий за работу с сетью. В случае, если это распределенные системы, этот блок является обязательным, в случае однопользовательских операционных систем он может присутствовать в качестве дополнительного сервиса системы.
Обеспечение безопасности. В современной многопользовательской операционной системе механизм защиты ресурсов системы от неавторизованного доступа является одним из основных функциональных блоков. Этот механизм обеспечивает запрет или разрешение на использование тех или иных ресурсов системы в зависимости от прав, которые выделены пользователю.
Интерпретатор команд. Операционная система нуждается в средствах общения с пользователем. Как уже отмечалось, общее название этого средства – оболочка. В качестве оболочки может выступать программа с интерфейсом командной строки (командный интерпретатор MS-DOS, UNIX или Linux) или оконная оболочка (так называемый дружественный пользователю интерфейс), позволяющая манипулировать графическими объектами (окнами) на экране при помощи мыши. Оконную оболочку на сегодняшний день имеют практически все известные операционные системы, предназначенные для использования в персональных компьютерах.
Если рассматривать ОС как среду, предоставляющую пользовательской программе определенные услуги и обеспечивающую комфортное пребывание в ней пользователей и их прикладных программ, то надо вести речь о том, какие сервисы должна реализовывать операционная система.
Выполнение программ. Операционная система должна загружать программу в основную память и запускать ее. Программе должна быть предоставлена возможность завершить работу нормально или же с ошибкой в случае внутреннего сбоя.
Операции ввода-вывода. Когда прикладная программа запущена, у нее может возникнуть потребность в осуществлении операций ввода-вывода как со стандартных системных устройств (монитор и клавиатура), так и с дополнительных устройств хранения, передачи или обработки данных. Операционная система должна предоставлять прикладной программе возможность осуществлять эти операции на основе некоторых стандартизированных соглашений (протоколов).
Взаимодействие с файловой системой. Операционная система должна предоставлять возможность программе осуществлять операции с файлами и каталогами; программа должна получить механизм для создания, записи, чтения, поиска, удаления или изменения файлов.
Межпрограммное взаимодействие. Программы часто нуждаются во взаимодействии друг с другом в рамках одного компьютера или между компьютерами. Операционная система должна дать возможность программам передавать друг другу информацию через посылку сообщений, разделяемые области памяти или сетевые каналы.
Обработка ошибок. Работающим программам, как и создающим их людям, свойственно время от времени допускать ошибки. Операционная система должна обнаруживать эти ошибки и правильно их обрабатывать (не допуская потери устойчивости, блокирования каналов ввода-вывода или других коммуникационных каналов, бесполезного расходования областей основной памяти ОС). Для каждого типа возможных ошибок в операционной системе должны быть предусмотрены действия, обеспечивающие изоляцию ошибки и продолжение дальнейшей работы операционной системы в нормальном устойчивом режиме.
Распределение ресурсов. Операционная система должна распределять ресурсы системы между несколькими пользователями и заданиями с наибольшей эффективностью.
Обеспечение безопасности. В многопользовательских системах прикладные программы и данные одного пользователя должны быть полностью и надежно изолированы от возможности доступа со стороны программ и данных другого пользователя. Механизм этой изоляции предоставляется операционной системой.
С точки зрения проектирования, разработки и реализации операционных систем часто оказывается эффективным рассматривать операционную систему как ряд слоев программного обеспечения, располагающихся между компьютером и пользователем. Такой подход к структуре операционной системы имеет свои преимущества: поскольку слои разрабатываются последовательно, то функциональность каждого слоя полностью базируется на функциональности нижележащих слоев. Первый слой разрабатывается и воплощается в жизнь, то есть достигается полная его работоспособность. После этого начинается создание нового слоя, и любые ошибки или сбои, которые выявляются при его создании, легко локализуются и обнаруживаются внутри создаваемого слоя. Кроме того, каждый последующий слой создавать проще, чем предыдущий, поскольку каждый предыдущий слой скрывает в себе множество деталей, о которых совершенно не нужно знать вышележащему слою. В качестве примера такого послойного представления операционной системы можно привести первую операционную систему THE (Technische Hogeschool Eindhoven), построенную на принципе разделения на слои (рис. 6.3).
Рис. 6.3. Разделение на слои в операционной системе THE
6.4. Операционные системы семейства Windows (с. 481-491)