Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_ОС.doc
Скачиваний:
44
Добавлен:
14.02.2015
Размер:
506.88 Кб
Скачать
  1. Основы организации и функционирования операционных систем.

1.1. Назначение операционных систем.

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

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

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

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

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

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

1.2. Этапы развития ВМ и ОС.

Первый период (1945 -1955

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

Второй период (1955 - 1965)

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

Третий период (1965 - 1980)

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

Для этого периода характерно также создание семейств программно-совместимых машин. Одним из первых семейств программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Программная совместимость требовала и совместимости операционных систем.

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

Четвертый период (1980 - настоящее время)

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

В середине 80-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых ОС.

1.3.Основные функции операционных систем

По современным представлениям ОС должна уметь делать следующее:

1. Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение.

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

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

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

5. Предоставлять некоторый пользовательский интерфейс. Слово «некоторый» здесь сказано не случайно — часть систем ограничивается командной строкой, в то время как другие на 90% состоят из интерфейсной подсистемы.

Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа — дисковая операционная система MS DOS.

Более развитые ОС предоставляют также следующие возможности:

1. Параллельное (или псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач.

2. Организацию взаимодействия задач друг с другом.

3. Организацию межмашинного взаимодействия и разделения ресурсов.

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

5. Аутентификацию {проверку того, что пользователь является тем, за кого он себя выдает), авторизацию (проверка, что тот, за кого себя выдает пользователь, имеет право выполнять ту или иную операцию) и другие средства обеспечения безопасности.

1.4. Классификация ОС

По тому, какие из вышеперечисленных функций реализованы и каким

было уделено больше внимания, а каким меньше, системы можно разделить на несколько классов (рис. 1.1).

Промежуточные системы

Рис. 1.1. Классификация операционных систем

ДОС (Дисковые Операционные Системы)

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

Дисковая операционная система MS DOS для IBM PC-совместимых машин является прямым наследником одного из таких резидентных мониторов.

Существование систем этого класса обусловлено их простотой и тем, что они потребляют мало ресурсов.

ОС общего назначения

К этому классу относятся системы, берущие на себя выполнение всех вышеперечисленных функций. Разделение на ОС и ДОС идет, по-видимому, от систем IBM DOS/360 и OS/360 для больших компьютеров этой фирмы. (Кстати, у IBM была еще TOS/360, Tape Operating System — Ленточная Операционная Система).

Системы реального времени

Это системы, предназначенные для облегчения разработки так называемых приложений реального времени — программ, управляющих некомпьютерным оборудованием, часто с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера самолета, системы управления ускорителем элементарных частиц или промышленным оборудованием. Подобные системы обязаны поддерживать многопоточность, гарантированное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам. Multimedia - приложения (при качественной реализации) предъявляет к системе те же требования, что и промышленные задачи реального времени.

1.4.1. Классификация по способу построения ОС

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

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

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

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

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

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

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

Для управления портами связи существуют 4 операции: создать порт, уничтожить порт, читать из порта и записать в порт. Если не работает ни одна задача, то все менеджеры отключены от ядра. При решении задач к ядру подключаются через вновь созданный порт только те менеджеры, ко­торые непосредственно нужны задаче, что позволяет исключить ситуации, возникающие в монолитном ядре.

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

Существенным минусом является требование ресурсов на передачу данных между процессами.

Представители этого класса: QNX; Minix; ChorusOS развиваются медленно, но они обладают огромным потенциалом.

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

В большинстве случаев современные операционные системы используют различные комбинации этих подходов (в основном Unix-подобные системы, новые версии). В тоже время микроядерная архитектура сохраня­ет по возможности хорошо отлаженный код монолитного ядра. Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT.Операционные системы на основе экзоядра имеют ядро, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов, остальные функции выносятся в библиотеку пользовательского уровня. Это несколько увеличивает объем пользовательских программ, но повышает надежность системы. Так как для реализации безопасного распределения ресурсов не нужны ни сложные алгоритмы, ни большой объем кода, экзоядро может быть крохотным и легко понятным. Разделяя защиту и управление, экзоядро выполняет три важные задачи: отслеживает принадлежность ресурсов, гарантирует стабильность, защищая использование ресурсов, отменяет доступ к ресурсам. Выполнение этих задач возможно тремя способами. Во-первых, используя безопасные связи, библиотеки пользовательского уровня могут безопасно соединяться с ресурсами компьютера. Во-вторых, видимые ревокации (отзывы) ресурсов позволяют библиотекам пользовательского уровня участвовать в процессе отзывов ресурсов. В-третьих, протокол отмены позволяет экзоядру насильно нарушать безопасные связи «несговорчивых» приложений.

Архитектуры на основе экзоядер являются дальнейшим развитием и усовершенствованием микроядерных архитектур. Пока существуют толькоакадемические разработки, такие как The Pandora OS, XOK/ExOS, Nemesis, но данное направление стремительно развивается.

Объектно-ориентированная операционная система — операционная система, имеющая объектно-ориентированную архитектуру. Основные функции объектно-ориентированной ОС реализует микроядро, над кото­рым располагаются сервисные модули. С микроядром связаны объектно-ориентированные языки программирования. Ресурсы объектно-ориентированной ОС используют прикладные программы. Такая система в своем составе может иметь несколько мини-ядер (на рис. 1.2 они обозначе­ны Ml и М2), каждое из которых поддерживает свою область.