Операционные системы – основной компонент системного ПО



СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОНЯТИЕ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ

1.1.              Структура компьютерной системы

1.2.              Подходы к определению операционной системы

1.2.1. Операционная система как виртуальная машина

1.2.2. Операционная система как менеджер ресурсов

2. АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОПЕРАЦИОННЫХ СИСТЕМ

2.1. Основные принципы построения операционных систем

2.2. Тенденции в структурном построении ОС

2.2.1. Монолитные системы

2.2.2  Слоеные (многоуровневые) системы

2.2.3. Виртуальные машины

2.2.4. Микроядерная архитектура

2.2.5. Смешанные системы

3. КЛАССИФИКАЦИЯ СОВРЕМЕННЫХ ОПЕРАЦИОННЫХ СИСТЕМ И ОБЗОР НАИБОЛЕЕ ПОПУЛЯРНЫХ

3.1. MS Windows

3.1.1. Windows Millennium Edition

3.1.2. Windows NT

3.1.3. Windows 2000

3.1.4. Windows XP

3.1.5. Windows Vista и Windows Seven

3.2. Mac OS

3.3. Linux

3.4. OS/2 Warp

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ


ВВЕДЕНИЕ

Современная компьютерная система состоит из одного или нескольких процессоров, оперативной памяти, дисков, клавиатуры, монитора, принтеров, сетевого интерфейса и других устройств, то есть является сложной комплексной системой. Написание программ, которые следят за всеми компонентами, корректно используют их и при этом работают оптимально, представляет собой крайне трудную задачу. По этой причине компьютеры оснащаются специальным уровнем программного обеспечения, называемым операционной системой. Операционная система отвечает за управление всеми перечисленными устройствами и обеспечивает пользователя имеющими простой, доступный интерфейс программами для работы с аппаратурой. Эти системы составляют предмет данной работы.

Целью работы было рассмотреть операционную систему с точки зрения основного компонента системного программного обеспечения. Мной были поставлены следующие задачи:

 определить расположение операционной системы в общей структуре компьютера;

 выявить сущность понятия «операционная система»;

 кратко рассмотреть современные концепции и технологии проектирования операционных систем;

 дать классификацию операционных систем по различным параметрам и оформить соответствующую таблицу;

 рассмотреть наиболее популярные операционные системы.

Работа состоит из 3 разделов. В первом разделе я попыталась ответить на вопрос, что такое операционная система. Во втором – рассказывается об архитектурных особенностях операционной системы, основных принципах и подходах к её построению. В третьем – даются некоторые сведения о классификации операционных систем и рассматриваются наиболее распространенные ОС на сегодняшний день.

В работе использованы материалы из литературы по данной теме таких авторов, как Гордеев А.В., Иртегов Д.В., Таненбаум Э., Коньков К. А., Карпов В. Е., Клименко Р.А. и др., а также информация из источников Интернет.


1. ПОНЯТИЕ ОБ ОПЕРАЦИОННОЙ СИСТЕМЕ

Что такое операционная система (ОС)?

В работе [Baron 1971] ОС определяют так: «Я не знаю, что это такое, но узнаю её, если увижу». [I, 7] Эта фраза сказана в 1-ой половине 1970-х гг. Но и на современном этапе неизвестно хорошего, общепринятого и приемлемо краткого определения операционной системы.

Чтобы определить суть понятия необходимо рассмотреть расположения её в общей структуре компьютера, а также обратиться к основным точкам зрения на данное понятие.

1.1.           Структура компьютерной системы

Любую компьютерную систему можно представить несколькими уровнями (рисунок 1).

Банковская система

Заказ авиабилетов

Web-браузер

Программы-приложения

Компиляторы

Редакторы

Интерпретаторы команд

 

Системные программы

Операционная система

 

Машинный язык

 

 

Микроархитектура

     Оборудование, аппаратура

Физические устройства

 

 

Примечание. Источник: [I, 10, с.22, рисунок 1.1.].

Рисунок 1. Структура компьютерной системы

Внизу находится аппаратное обеспечение, которое состоит из двух или более уровней. Самый нижний уровень содержит физические устройства, состоящие из интегральных микросхем, источников питания, электронно-лучевых трубок и т. п.

Выше расположен микроархитектурный уровень, на котором физические устройства рассматриваются с точки зрения функциональных единиц. Обычно на этом уровне находятся внутренние регистры центрального процессора (CPU – Central Processing Unit) и арифметико-логическое устройство.

Определенная система команд передается по маршруту передачи данных.

Команды, видимые для работающего на ассемблере программиста, формируют уровень ISA (Instruction Set Architecture – архитектура системы команд), часто называемый машинным языком.

Далее следует программное обеспечение, которое частично избавляет от необходимости общения с аппаратурой напрямую, вместо этого предоставляя программисту более удобную систему команд. Программное обеспечение принято делить на две части: прикладное и системное.

Под системным программным обеспечением обычно понимают комплекс программ, которые обеспечивают эффективное управление компонентами вычислительной системы. В состав системного программного обеспечения и входит операционная система. Над операционной системой расположены остальные системные программы. Здесь находятся интерпретатор команд (оболочка), системы окон, компиляторы, редакторы и т. д.

Наконец, над системными программами расположены прикладные программы. Обычно они покупаются или пишутся пользователем для решения собственных проблем – обработки текста, электронных таблиц, технических расчетов или сохранения информации в базе данных.

1.2.           Подходы к определению операционной системы

Операционные системы выполняют две основные, но практически не связанные между собой функции: расширение возможностей машины и управление ее ресурсами. В соответствии с этим существуют 2 основных подхода к определению понятия «операционная система».

1.2.1.      Операционная система как виртуальная машина

Архитектура большинства компьютеров на уровне машинного языка примитивна и неудобна для работы с программами, особенно в процессе ввода-вывода данных. Например, работа с диском предполагает знакомство с внутренним устройством его электронного компонента – контроллера для ввода команд вращения диска, поиска и форматирования дорожек, чтения и записи секторов и т.д. Ясно, что средний программист не в состоянии учитывать все особенности работы оборудования, а должен иметь простую высокоуровневую абстракцию, скажем, представляя информационное пространство диска как набор файлов. Файл можно открывать для чтения или записи, использовать для получения или сброса информации, а потом закрывать. Это концептуально проще, чем заботиться о деталях перемещения головок дисков или организации работы мотора. Аналогичным образом, с помощью простых и ясных абстракций, скрываются от программиста все ненужные ему подробности организации прерываний, работы таймера, управления памятью и т.д. Более того, на современных вычислительных комплексах может быть создана иллюзия неограниченного размера операционной памяти и числа процессоров. Всем этим занимается операционная система. [I, 5]

Таким образом, операционная система представляется пользователю расширенной или виртуальной машиной, в которой проще программировать и легче работать, чем непосредственно с аппаратным обеспечением.

1.2.2.      Операционная система как менеджер ресурсов

Операционная система предназначена для управления всеми частями весьма сложной архитектуры компьютера. Представим для примера, что случится, если несколько программ, работающих на одном компьютере, будут пытаться одновременно осуществлять вывод на принтер. Мы получили бы неупорядоченную смесь строчек и страниц, выведенных различными программами. Операционная система предотвращает хаос такого рода за счет буферизации информации, предназначенной для печати, на диске и организации очереди на печать. Для многопользовательских компьютеров, необходимость управления ресурсами и их защиты еще более очевидна, поскольку пользователи могут обращаться к ним в абсолютно непредсказуемом порядке. К тому же часто приходится распределять между пользователями не только оборудование, но и информацию (файлы, базы данных и т. д.). С этой точки зрения основная задача операционной системы заключается в отслеживании того, кто и какой ресурс использует, в обработке запросов на ресурсы, в подсчете коэффициента загрузки и разрешении проблем конфликтующих запросов от различных программ и пользователей.

Управление ресурсами включает в себя их мультиплексирование (распределение) 2 способами: во времени и в пространстве. Когда ресурс распределяется во времени, различные пользователи и программы используют его по очереди. Здесь можно упомянуть пример с распределением заданий, посылаемых для печати на принтер.

Определение того, как долго ресурс будет использоваться, кто будет следующим и на какое время ему предоставляется ресурс – это задача операционной системы.

Другой вид распределения – это пространственное мультиплексирование. Вместо поочередной работы каждый клиент получает часть ресурса. Обычно оперативная память разделяется между несколькими работающими программами, так что все они одновременно могут постоянно находиться в памяти (например, используя центральный процессор по очереди). Если предположить, что памяти достаточно для того, чтобы хранить несколько программ, эффективнее разместить в памяти сразу несколько программ, чем выделить всю память одной программе. Другой ресурс, распределяемый пространственно, – это диск (жесткий). Распределение дискового пространства и отслеживание того, кто какие блоки диска использует, является типичной задачей управления ресурсами, которую также выполняет ОС. [I, 10]

Следовательно, операционная система как менеджер ресурсов, осуществляет упорядоченное и контролируемое распределение процессоров, памяти и других ресурсов между различными программами, их использующими.

Как видим, дать адекватное строгое определение операционной системе достаточно сложно. Проще сказать, не что есть операционная система, а для чего она нужна, и что она делает. Поэтому можно рассматривать её с двух точек зрения: как менеджер ресурсов и как расширенную (виртуальную) машину.


2. АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОПЕРАЦИОННЫХ СИСТЕМ

Каждая операционная система имеет определённую архитектуру, под которой понимают структурную организацию ОС на основе различных программных модулей. Существует несколько подходов к построению операционных систем.

2.1. Основные принципы построения операционных систем

Построение ОС опирается на некоторые принципы, к которым относят:

1) Принцип модульности. Он отражает технологические и эксплуатационные свойства системы. Под модулем в общем случае понимают функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами. По своему определению модуль предполагает возможность без труда заменить его на другой при наличии заданных интерфейсов.

Особо важное значение при построении ОС имеют привилегированные, повторно входимые и реентерабельные модули, так как они позволяют более эффективно использовать ресурсы вычислительной системы.

Наибольший эффект от использования принципа достижим, если он распространен одновременно на операционную систему, прикладные программы и аппаратуру.

2) Принцип функциональной избирательности. В ОС выделяется некоторая часть важных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса. Эту часть в ОС называют ядром, так как это действительно основа системы. При формировании состава ядра требуется учитывать два противоречивых требования.

 В состав ядра должны войти наиболее часто используемые системные модули.

 Количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, был бы не слишком большим.

В состав ядра, как правило, входят модули по управлению системой прерываний, средства по переводу программ из состояния счета в состояние ожидания, готовности и обратно, средства по распределению таких основных ресурсов, как оперативная память и процессор.

Помимо программных модулей, входящих в состав ядра и постоянно располагающихся в оперативной памяти, может быть много других системных программных модулей, которые получают название транзитных.

Транзитные программные модули загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями. В качестве синонима к термину «транзитный» можно использовать термин «диск-резидентный».

3) Принцип генерируемости. Его основное положение определяет такой способ исходного представления центральной системной управляющей программы ОС (ее ядра и основных компонентов, которые должны постоянно находиться в оперативной памяти), который позволял бы настраивать эту системную супервизорную часть, исходя из конкретной конфигурации конкретного вычислительного комплекса и круга решаемых задач.

Эта процедура проводится редко, перед протяженным периодом эксплуатации ОС. Процесс генерации осуществляется с помощью специальной программы-генератора и соответствующего входного языка для этой программы, позволяющего описывать программные возможности системы и конфигурацию машины.

В результате генерации получается полная версия ОС. Сгенерированная версия ОС представляет собой совокупность системных наборов модулей и данных.

Принцип генерируемости существенно упрощает настройку ОС на требуемую конфигурацию вычислительной системы.

В наши дни при использовании ПК с принципом генерируемости ОС можно столкнуться разве что только при работе с Linux. В этой UNIX-системе имеется возможность не только использовать какое-либо готовое ядро ОС, но и самому скомпилировать такое ядро, которое будет оптимальным для данного персонального компьютера и решаемых на нем задач.

Кроме генерации ядра в Linux имеется возможность указать и набор подгружаемых драйверов и служб, то есть часть функций может реализовываться модулями, непосредственно входящими в ядро системы, а часть – модулями, имеющими статус подгружаемых, транзитных.

4) Принцип функциональной избыточности, который учитывает возможность проведения одной и той же работы различными средствами. В состав ОС может входить несколько типов мониторов (модулей супервизора, управляющих тем или другим видом ресурса), различные средства организации коммуникаций между вычислительными процессами.

Наличие нескольких типов мониторов, нескольких систем управления файлами позволяет пользователям быстро и наиболее адекватно адаптировать ОС к определенной конфигурации вычислительной системы, обеспечить максимально эффективную загрузку технических средств при решении конкретного класса задач, получить максимальную производительность при решении заданного класса задач.

5) Принцип виртуализации. Он позволяет представить структуру системы в виде набора планировщиков процессов и распределителей ресурсов (мониторов) и использовать единую централизованную схему распределения ресурсов.

Наиболее естественным и законченным проявлением концепции виртуальности является понятие виртуальной машины. По сути, любая операционная система, являясь средством распределения ресурсов и организуя по определенным правилам управление процессами, скрывает от пользователя и его приложений реальные аппаратные и иные ресурсы, заменяя их некоторой абстракцией.

Чаще виртуальная машина, предоставляемая пользователю, воспроизводит архитектуру реальной машины, но архитектурные элементы в таком представлении выступают с новыми или улучшенными характеристиками:

 единообразная по логике работы память (виртуальная) практически неограниченного объема. Среднее время доступа соизмеримо со значением этого параметра оперативной памяти. Организация работы с информацией в такой памяти производится в терминах обработки данных – в терминах работы с сегментами данных на уровне выбранного пользователем языка программирования;

 произвольное количество процессоров (виртуальных), способных работать параллельно и взаимодействовать во время работы. Способы управления процессорами, в том числе синхронизация и информационные взаимодействия, реализованы и доступны пользователям;

 произвольное количество внешних устройств (виртуальных), способных работать с памятью виртуальной машины параллельно или последовательно, асинхронно или синхронно по отношению к работе того или иного виртуального процессора, которые инициируют работу этих устройств. Информация, передаваемая или хранимая на виртуальных устройствах, не ограничена допустимыми размерами. Доступ к такой информации осуществляется на основе либо последовательного, либо прямого способа доступа.

Чем больше виртуальная машина, реализуемая средствами ОС на базе конкретной аппаратуры, приближена к «идеальной» по характеристикам машине и, следовательно, чем больше ее архитектурно-логические характеристики отличны от реально существующих, тем больше степень виртуальности.

Одним из аспектов виртуализации является организация возможности выполнения в данной ОС приложений, которые разрабатывались для других ОС. Реализация этого принципа позволяет такой ОС иметь очень сильное преимущество перед аналогичными ОС, не имеющими такой возможности.

6) Принцип независимости программ от внешних устройств заключается в том, что связь программ с конкретными устройствами производится не на уровне трансляции программы, а в период планирования её исполнения. В результате перекомпиляция при работе программы с новым устройством, на котором располагаются данные, не требуется.

Принцип позволяет одинаково осуществлять операции управления внешними устройствами независимо от их конкретных физических характеристик. Например, программе, содержащей операции обработки последовательного набора данных, безразлично, на каком носителе эти данные будут располагаться. Смена носителя и данных, размещаемых на них, не принесет каких-либо изменений в программу, если в системе реализован принцип независимости.

7) Принцип совместимости, т.е. способность ОС выполнять программы, написанные для других ОС или для более ранних версий данной, а также для другой аппаратной платформы.

Необходимо разделять вопросы двоичной совместимости и совместимости на уровне исходных текстов приложений.

Двоичная совместимость достигается тогда, когда можно взять исполняемую программу и запустить ее на выполнение на другой ОС. Для этого необходимы:

 совместимость на уровне команд процессора,

 совместимость на уровне системных вызовов и даже на уровне библиотечных вызовов, если они являются динамически связываемыми.

Совместимость на уровне исходных текстов требует наличия соответствующего транслятора в составе системного программного обеспечения, а также совместимости на уровне библиотек и системных вызовов. При этом необходима перекомпиляция имеющихся исходных текстов в новый выполняемый модуль.

Гораздо сложнее достичь двоичной совместимости между процессорами, основанными на разных архитектурах. Для того чтобы один компьютер выполнял программы другого (например, программу для ПК типа IBM PC желательно выполнить на ПК типа Macintosh фирмы Apple), этот компьютер должен работать с машинными командами, которые ему изначально непонятны. Выходом в таких случаях является использование так называемых прикладных сред или эмуляторов.

Одним из средств обеспечения совместимости программных и пользовательских интерфейсов является соответствие стандартам POSIX. Использование стандарта POSIX позволяет создавать программы в стиле UNIX, которые впоследствии могут легко переноситься из одной системы в другую.

8) Принцип открытой и наращиваемой операционной системы. Открытая ОС доступна для анализа как пользователям, так и системным специалистам, обслуживающим вычислительную систему. Наращиваемая (модифицируемая) ОС позволяет не только использовать возможности генерации, но и вводить в ее состав новые модули, совершенствовать существующие и т. д. Необходимо, чтобы можно было внести дополнения и изменения, и не нарушить целостность системы.

Прекрасные возможности для расширения предоставляет подход к структурированию ОС по типу «клиент-сервер» с использованием микроядерной технологии. В соответствии с этим подходом ОС строится как совокупность привилегированной управляющей программы и набора непривилегированных услуг – «серверов». Основная часть ОС остается неизменной и в то же время могут быть добавлены новые серверы или улучшены старые. Этот принцип иногда трактуют как расширяемость системы.

9) Принцип мобильности (переносимости). Операционная система относительно легко должна переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы (которая включает наряду с типом процессора и архитектуру вычислительной системы) одного типа на аппаратную платформу другого типа. Этот принцип очень близок принципу совместимости, но это не одно и то же.

1.      Большая часть ОС должна быть написана на языке, который имеется на всех системах, на которые планируется в дальнейшем ее переносить. Это, прежде всего, означает, что ОС должна быть написана на языке высокого уровня, предпочтительно стандартизованном, например на языке С. Программа, написанная на ассемблере, не является в общем случае переносимой.

2.      Важно минимизировать или, если возможно, исключить те части кода, которые непосредственно взаимодействуют с аппаратными средствами. Зависимость от аппаратуры может иметь много форм. Некоторые очевидные формы зависимости включают прямое манипулирование регистрами и другими аппаратными средствами.

3.      Если аппаратно-зависимый код не может быть полностью исключен, то он должен быть изолирован в нескольких хорошо локализуемых модулях. Аппаратно-зависимый код не должен быть распределен по всей системе. Например, можно спрятать аппаратно-зависимую структуру в программно задаваемые данные абстрактного типа.

10) Принцип обеспечения безопасности вычислений. Нужно сказать, что обеспечение безопасности при выполнении вычислений является желательным свойством для любой многопользовательской системы. Правила безопасности определяют такие свойства, как защита ресурсов одного пользователя от других и установление квот по ресурсам для предотвращения захвата одним пользователем всех системных ресурсов (таких, как память).

Обеспечение защиты информации от несанкционированного доступа является обязательной функцией сетевых операционных систем. Во многих современных ОС гарантируется степень безопасности данных, соответствующая уровню С2 в системе стандартов США.

Безопасной считается система, которая «посредством специальных механизмов защиты контролирует доступ к информации таким образом, что только имеющие соответствующие полномочия лица или процессы, выполняющиеся от их имени, могут получить доступ на чтение, запись, создание или удаление информации».

Иерархия уровней безопасности, приведенная в стандартах, помечает низший уровень безопасности как D, а высший – как А.

В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов.

Основными свойствами, характерными для систем класса С, являются наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. Класс (уровень) С делится на 2 подуровня: уровень С1, обеспечивающий защиту данных от ошибок пользователей, но не от действий злоумышленников; и уровень С2. На уровне С2 должны присутствовать:

 средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе;

 избирательный контроль доступа, позволяющий владельцу ресурса определить, кто имеет доступ к ресурсу и что он может с ним делать. Владелец делает это путем предоставляемых прав доступа пользователю или группе пользователей;

 средства учета и наблюдения (auditing), обеспечивающие возможность обнаружить и зафиксировать важные события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы;

 защита памяти, заключающаяся в том, что память инициализируется перед тем, как повторно используется.

Системы уровня В основаны на помеченных данных и распределении пользователей по категориям, то есть реализуют мандатный контроль доступа. Каждому пользователю присваивается рейтинг защиты, и он может получать доступ к данным только в соответствии с этим рейтингом. Этот уровень в отличие от уровня С защищает систему от ошибочного поведения пользователя.

Уровень А является самым высоким уровнем безопасности, он требует в дополнение ко всем требованиям уровня В выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности. Этот уровень безопасности занимает своими управляющими механизмами до 90 % процессорного времени.

Более безопасные системы не только снижают эффективность, но и существенно ограничивают число доступных прикладных пакетов, которые соответствующим образом могут выполняться в подобной системе. Например, для ОС Solaris есть несколько тысяч приложений, а для ее аналога В-уровня – только около ста. [I, 1]

2.2. Тенденции в структурном построении ОС

2.2.1. Монолитные системы

В общем случае "структура" монолитной системы представляет собой отсутствие структуры (рисунок 2.1.). ОС написана как набор процедур, каждая из которых может вызывать другие, когда ей это нужно. При использовании этой техники каждая процедура системы имеет хорошо определенный интерфейс в терминах параметров и результатов, и каждая вольна вызвать любую другую для выполнения некоторой нужной для нее полезной работы.

Для построения монолитной системы необходимо скомпилировать все отдельные процедуры, а затем связать их вместе в единый объектный файл с помощью компоновщика (примерами могут служить ранние версии ядра UNIX или Novel NetWare). Каждая процедура видит любую другую процедуру (в отличие от структуры, содержащей модули, где большая часть информации является локальной для модуля, и процедуры модуля можно вызвать только через специально определенные точки входа).

Однако даже такие монолитные системы могут быть немного структурированными. При обращении к системным вызовам, поддерживаемым ОС, параметры помещаются в строго определенные места, такие, как регистры или стек, а затем выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра, называемый также режимом супервизора, и передает управление ОС. Затем ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен. После этого ОС индексирует таблицу, содержащую ссылки на процедуры, и вызывает соответствующую процедуру. Такая организация ОС предполагает следующую структуру:

Операционные системы – основной компонент системного ПО