Особенности методов построения.
При описании операционной системы часто указываются особенности ее структурной организации и основные концепции, положенные в ее основу.
К таким базовым концепциям относятся:
- Способы построения ядра системы - монолитное ядро или микроядерный подход. Большинство ОС использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот. Альтернативой является построение ОС на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой, в то время как функции ОС более высокого уровня выполняют специализированные компоненты ОС - серверы, работающие в пользовательском режиме. При таком построении ОС работает более медленно, так как часто выполняются переходы между привилегированным режимом и пользовательским, зато система получается более гибкой - ее функции можно наращивать, модифицировать или сужать, добавляя, модифицируя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы.
- Построение ОС на базе объектно-ориентированного подхода дает возможность использовать все его достоинства, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно: аккумуляцию удачных решений в форме стандартных объектов, возможность создания новых объектов на базе имеющихся с помощью механизма наследования, хорошую защиту данных за счет их инкапсуляции во внутренние структуры объекта, что делает данные недоступными для несанкционированного использования извне, структуризованность системы, состоящей из набора хорошо определенных объектов.
- Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.
· Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб.
Концептуальная модель ОС Unix. Основные свойства ОС Unix.
Основные свойства Unix
Как пользователю, так и системному программисту Unix представляется в виде очень простой системы.
Простота была, по-видимому, одним из важнейших критериев при выборе того или иного решения.
Основные свойства Unix определяются тремя главными составляющими:
· Языком Си, обусловливающим мобильность системы;
· Файловой системой, унифицирующей все средства передачи информации в Unix;
· Командным языком, поднимающим интерфейс пользователя с системой до уровня современных языков программирования.
2.2.1. Мобильность операционных систем
Мобильность (переносимость на компьютер другой архитектуры) системного программного обеспечения определяется прежде всего мобильностью операционной системы (ОС). Перенос проблемных программ существенно упрощается, если ОС, для которой рассчитаны эти программы, обладает свойством мобильности.
Требования к мобильным системам:
· Система должна быть написана на машинно-независимом языке программирования (неизбежные машинно-зависимые части системы должны быть четко выделены);
· Язык программирования, на котором пишется система, должен допускать разнообразные типы данных, обязательно включающие структуры и данные типа указателя, и содержать аппарат адресной арифметики.
Наличие этих возможностей, как правило, обеспечивает качество трансляции, сравнимое с качеством программирования на языке Ассемблера. (Таким языком программирования является, например, язык Си.)
· Система должна быть спроектирована так, чтобы выполнять все традиционно присущие операционным системам функции. Она должна быть универсальна по своим функциональным возможностям (например, в пределах систем разделения времени).
Ввиду постановки мобильной ОС на ЭВМ с различной архитектурой система должна решать наиболее общий класс задач, удовлетворяющий пользователей любой профессиональной ориентации.
Но такой системой может быть только инструментальная система разделения времени, т.к.:
· Разработка программ;
· Обработка текстов;
· Высокий уровень сервисных возможностей, …
… всё это нужно всем пользователям на определенных этапах их деятельности.
Требование мобильности ведет к отказу от использования каких-либо специфических особенностей конкретной машинной архитектуры.
Отсюда: снижение надежности и снижение реактивности ОС.
Технические решения, позволяющие улучшить названные параметры, приведены ниже.
2.2.2. Особенности файловой системы Unix
Традиционно в операционных системах существуют 3 различных механизма управления потоками информации:
· Обмен с внешними устройствами;
· Обмен с дисковыми файлами;
· Обмен информацией между процессами.
В результате такого подхода, как правило, существуют 3 различных языковых интерфейса между пользователем и системой.
В Unix существует единый интерфейс для выполнения любого из 3-х способов передачи информации. Обмен данными в рамках указанных 3-х механизмов выполняется с помощью одних и тех же операций ввода/вывода (внешние устройства представлены в Unix специальными файлами).
Такой подход позволил разместить программы обслуживания этих механизмов непосредственно в ядре Unix.
2.2.3. Командный язык
Командный язык Unix позволяет разрабатывать развитые командные процедуры, в которых могут быть использованы уже существующие команды и вновь разработанные программы. Это позволяет быстро решать оперативные задачи управления сервером или сетью, а также решать задачи эффективной обработки данных.
Отличительной особенностью командного языка Unix является наличие управляющих структур, свойственных языкам высокого уровня (операторы цикла, ветвления, выбора).
Подробнее с командным языком Unix можно познакомиться в Модуле 4.
Концептуальная модель Unix
Основные реализации Unix - это многопользовательская многозадачная операционная система разделения времени.
Ниже приведены основные особенности Unix.
1). Все работы в системе представлены множеством конкурирующих процессов. Существует единственная операция, порождающая процесс – системный вызов fork(). При порождении процессу присваивается числовая характеристика – идентификатор.
Если процессу требуется назвать другой процесс, например, при посылке ему сигнала, он указывает идентификатор требуемого процесса. Другого способа именования процессов в системе нет.
2). Аналогичным способом именуются файлы:
· при создании файлу присваивается индекс;
· при открытии файл получает номер дескриптора.
Подобное динамическое именование – часть общей стратегии виртуализации в Unix. В результате реализации этой стратегии прикладные программы становятся болеенезависимыми от конкретных объектов, с которыми они работают.
3). В Unix также принято следующее техническое решение: большие массивыданных рассматриваются как файлы. Такой подход, замедляющий работу программы, нуждается в некоторых оптимизирующих приемах:
· с точки зрения ядра системы все файлы рассматриваются как бесструктурныеодномерные массивы байтов с прямым доступом;
· обмен с магнитными носителями подвергается тотальной системной буферизации. Часто используемые блоки оседают в буфере (КЭШе), что уменьшает число обращений к дискам и позволяет повысить реактивность операционной системы.