Файл: Функции операционных систем персональных компьютеров (ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ОПЕРАЦИОННЫХ СИСТЕМ).pdf
Добавлен: 28.03.2023
Просмотров: 90
Скачиваний: 2
- ограничение функций ядра (а, следовательно, и количества модулей ядра) до минимального количества необходимых самых важных функций.
Первые ОС разрабатывались как монолитные системы без четко выраженной структуры (рис. 3).
Рис. 3. Монолитная архитектура
Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novell NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, в которой большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).[8]
Однако даже такие монолитные системы могут быть немного структурированными. При обращении к системным вызовам, поддерживаемым ОС, параметры помещаются в строго определенные места, такие как регистры или стек, а затем выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра, называемый также режимом супервизора, и передает управление ОС. Затем ОС проверяет параметры вызова, для того чтобы определить, какой системный вызов должен быть выполнен. После этого ОС индексирует таблицу, содержащую ссылки на процедуры, и вызывает соответствующую процедуру.
Такая организация ОС предполагает следующую структуру:
- главная программа, которая вызывает требуемые сервисные процедуры;
- набор сервисных процедур, реализующих системные вызовы;
- набор утилит, обслуживающих сервисные процедуры.[9]
В этой модели для каждого системного вызова имеется одна сервисная процедура. Утилиты выполняют функции, которые нужны нескольким сервисным процедурам. Это деление процедур на три слоя показано на рис. 4.
Рис. 4. Структурированная архитектура
Классической считается архитектура ОС, основанная на концепции иерархической многоуровневой машины, привилегированном ядре и пользовательском режиме работы транзитных модулей. Модули ядра выполняют базовые функции ОС: управление процессами, памятью, устройствами ввода-вывода и т.п. Ядро составляет сердцевину ОС, без которой она является полностью неработоспособной и не может выполнить ни одну из своих функций. В ядре решаются внутрисистемные задачи организации вычислительного процесса, недоступные для приложения.[10]
Особый класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий, например, открытие и чтение файла, получение системного времени, вывода информации на дисплей и т.д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API (Application Programming Interface).
Для обеспечения высокой скорости работы ОС модули ядра (по крайней мере, большая их часть) являются резидентными и работают в привилегированном режиме (Kernel mode). Этот режим, во-первых, должен обезопасить работу самой ОС от вмешательства приложений, и, во-вторых, должен обеспечить возможность работы модулей ядра с полным набором машинных инструкций, позволяющих собственно ядру выполнять управление ресурсами компьютера, в частности, переключение процессора с задачи на задачу, управлением устройствами ввода-вывода, распределением и защитой памяти и др.
Остальные модули ОС выполняют не столь важные функции, как ядро, и являются транзитными. Например, это могут быть программы архивирования данных, дефрагментации диска, сжатия дисков, очистки дисков и т.п.
Вспомогательные модули обычно подразделяются на группы:
- утилиты – программы, выполняющие отдельные задачи управления и сопровождения вычислительной системы;
- системные обрабатывающие программы – текстовые и графические редакторы (Paint, Блокнот, WordPad), компиляторы и др.;
- программы предоставления пользователю дополнительных услуг (специальный вариант пользовательского интерфейса, калькулятор, игры, средства мультимедиа Windows 2000);
- библиотеки процедур различного назначения, упрощения разработки приложений, например, библиотека функций ввода-вывода, библиотека математических функций и т.п.
Эти модули ОС оформляются как обычные приложения, обращаются к функциям ядра посредством системных вызовов и выполняются в пользовательском режиме (user mode). В этом режиме запрещается выполнение некоторых команд, которые связаны с функциями ядра ОС (управление ресурсами, распределение и защита памяти и т.п.).
В концепции многоуровневой (многослойной) иерархической машины структура ОС также представляется рядом слоев. При такой организации каждый слой обслуживает вышележащий слой, выполняя для него некоторый набор функций, которые образуют межслойный интерфейс. На основе этих функций следующий верхний по иерархии слой строит свои функции – более сложные и более мощные и т.д. Такая организация системы существенно упрощает ее разработку, т.к. позволяет сначала "сверху вниз" определить функции слоев и межслойные интерфейсы, а при детальной реализации, двигаясь «снизу-вверх», – наращивать мощность функции слоев. Кроме того, модули каждого слоя можно изменять без необходимости изменений в других слоях, но не меняя межслойных интерфейсов.[11]
Многослойная структура ядра ОС может быть представлена, например, вариантом, показанным на рис. 4.
Рис. 4. Многослойная структура ОС
В данной схеме выделены следующие слои.
Средства аппаратной поддержки ОС. Значительная часть функций ОС может выполняться аппаратными средствами. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др.
Машинно-зависимые модули ОС. Этот слой образует модули, в которых отражается специфика аппаратной платформы компьютера. Назначение этого слоя – «экранирование» вышележащих слоев ОС от особенностей аппаратуры (например, Windows 2000 – это слой HAL (Hardware Abstraction Layer), уровень аппаратных абстракций).[12]
Базовые механизмы ядра. Этот слой модулей выполняет наиболее примитивные операции ядра: программное переключение контекстов процессов, диспетчерскую прерываний, перемещение страниц между основной памятью и диском и т.п. Модули этого слоя не принимают решений о распределении ресурсов, а только обрабатывают решения, принятые модулями вышележащих уровней. Поэтому их часто называют исполнительными механизмами для модулей верхних слоев ОС.
Менеджеры ресурсов. Модули этого слоя выполняют стратегические задачи по управлению ресурсами вычислительной системы. Это менеджеры (диспетчеры) процессов ввода-вывода, оперативной памяти и файловой системы. Каждый менеджер ведет учет свободных и используемых ресурсов и планирует их распределение в соответствии запросами приложений.
Интерфейс системных вызовов. Это верхний слой ядра ОС, взаимодействующий с приложениями и системными утилитами, он образует прикладной программный интерфейс ОС. Функции API, обслуживающие системные вызовы, предоставляют доступ к ресурсам системы в удобной компактной форме, без указания деталей их физического расположения.[13]
2. ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ
2.1. Функции операционных систем
ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. Критерием эффективности может быть, например, пропускная способность или реактивность системы.
Управление ресурсами предполагает решение ряда задач:
- планирование ресурса (какому процессу, когда и в каком количестве следует выделить конкретный ресурс);
- удовлетворение запросов на выделение ресурсов;
- отслеживание состояния и учёт использования каждого из ресурсов;
- разрешение конфликтов между процессами за обладание ресурсами.
Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, что в конечном счете и определяет их облик в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Так, например, алгоритм управления процессором в значительной степени определяет, является ли ОС системой разделения времени, системой пакетной обработки или системой реального времени.[14]
Сложность организации эффективного совместного использования ресурсов несколькими процессами во многом объясняется случайным характером возникновения запросов на потребление этих ресурсов.
Часто группы близких по содержанию функций называют подсистемами (в рамках ОС). Наиболее важными подсистемами управления ресурсами являются:
- подсистема управления процессами. Планирует выполнение процессов (т.е. распределяет процессорное время между несколькими выполняемыми процессами), обеспечивает процессы необходимыми системными ресурсами и организует их взаимодействие (при необходимости);
- подсистема управления памятью. Отслеживает свободные и занятые области памяти, выделяет память процессам, защищает необходимые области памяти;
- подсистема управления файлами и внешними устройствами. Обеспечивает (ещё со времени появления ОС UNIX) поддержку унифицированного интерфейса по доступу к разнородным устройствам ввода-вывода на основе концепции файлового доступа. При этом обмен с любым внешним устройством выглядит как обмен с файлом, имеющим имя, и представляющим собой неструктурированную последовательность байтов;
- подсистема защиты данных и администрирования. Безопасность данных в системе обеспечивается средствами отказоустойчивости ОС, ориентированными на защиту от сбоев и отказов аппаратуры и ошибок программного обеспечения, а также средствами защиты от несанкционированного доступа. Администрирование задаёт права пользователей при обращении к различным ресурсам системы (файлам, каталогам, принтерам и др.). В состав ОС обычно входят утилиты, позволяющие выполнять регулярно операции резервного копирования для обеспечения быстрого восстановления необходимых данных;
- подсистема пользовательского интерфейса. За терминалом может работать программист, системный администратор или пользователь. Для любой категории работающих с компьютером наиболее удобен ввод команд через Windows-подобный графический интерфейс. Для программистов возможности ОС доступны также в виде набора функций, называемого интерфейсом практического программирования (Application Programming Interface - API). ОС с различной внутренней организацией, но с одинаковым набором функций API, обеспечивают возможность переноса приложений из одной операционной системы в другую. Вызов конкретных функций API из приложений осуществляется аналогично вызову программы.[15]
В целом, современные ОС должны обладать следующими возможностями:
- поддерживать многооконный графический интерфейс пользователя, позволяющий одновременно отображать на экране состояние нескольких объектов (процессов);
- осуществлять мультипрограммную обработку данных с параллельным выполнением многих процессов;
- работать с виртуальной памятью, обеспечивая доступ практически к любому адресному пространству вне зависимости от физического расположения программ и данных;
- позволять вносить изменения в коды ОС с целью улучшения её функциональных возможностей (характерный пример - ОС UNIX) без нарушения целостности системы. Расширяемость обеспечивается за счёт модульной структуры ОС;
- обладать свойством переносимости на аппаратные платформы различных типов (т.е. на процессоры различных семейств);
- обладать совместимостью с другими популярными ОС, что позволяет выполнять приложения в различных операционных системах;
- характеризоваться высокой надёжностью и отказоустойчивостью. Это обеспечивает защиту как от внутренних, так и внешних ошибок, сбоев и отказов. Эти свойства определяются, в первую очередь, архитектурными решениями ОС и качеством её реализации;
- иметь средства защиты вычислительных ресурсов от несанкционированного доступа, что особенно важно для сетевых ОС;
- характеризоваться высокой производительностью, проявляющейся в быстродействии системы и малом времени реакции на события в системе;
- иметь средства поддержки служб сети Интернет и др.
2.2. Функции компонентов операционных систем
Современные ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые аппаратные платформы. Обычно в состав ОС входят исполняемые и объектные модули стандартных для данной ОС форматов, библиотеки разных типов, модули исходного текста программ (самой ОС), программные модули специального формата (например, загрузчик ОС, драйверы ввода-вывода), файлы конфигурации, файлы документации, модули справочной системы и др. Единой общепринятой архитектуры ОС не существует, но на практике выработаны универсальные подходы к структурированию ОС. Наиболее общим подходом является разделение всех её модулей на две группы: