Операционные системы -вопросы теории

         

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



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

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

 



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



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

По тому, какие из вышеперечисленных функций реализованы и каким было уделено больше внимания, а каким меньше, системы можно разделить на несколько классов (Рисунок В1).



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



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



К этому классу относятся системы, берущие на себя выполнение всех вышеперечисленных функций. Разделение на ОС и ДОС идет, по-видимому, от систем IBM DOS/360 и OS/360 для больших компьютеров этой фирмы, клоны которых известны у нас в стране под названием ЕС ЭВМ серии 10ХХ. (Кстати, у IBM была еще TOS/360, Tape Operating System — Ленточная Операционная Система).
Здесь под ОС мы будем подразумевать системы "общего назначения", т. е. рассчитанные на интерактивную работу одного или нескольких пользователей в режиме разделения времени, при не очень жестких требованиях ко времени реакции системы на внешние события. Как правило, в таких системах уделяется большое внимание защите самой системы, программного обеспечения и пользовательских данных от ошибочных и злонамеренных программ и пользователей. Обычно подобные системы используют встроенные в архитектуру процессора средства защиты и виртуализации памяти. К этому классу относятся такие широко распространенные системы, как Windows 2000, системы семейства Unix.

 



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



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

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

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

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

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



Открытые системы



Открытые системы

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

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

Эти задачи предполагается решать при помощи открытых стандартов -стандартных сетевых протоколов, стандартных форматов данных, стандартизации программных интерфейсов — API (Application Program Interface, интерфейс прикладных программ) и, наконец, стандартизации пользовательского интерфейса.
В качестве стандартного сетевого протокола предлагалась семиуровневая модель OSI, но прежде, чем на основе этой модели было разработано что-то
полезное, получило широкое распространение семейство протоколов TCP/IP. Документация по протоколам этого семейства имеет статус public domain (общественная собственность); кроме того, есть, по крайней мере, одна программная реализация этого протокола, также имеющая статус public domain — сетевое ПО системы BSD Unix, это стало вполне приемлемым основанием для применения TCP/IP в открытых системах.
Обсуждение стандартных форматов данных увело бы нас далеко от основной темы, но нужно отметить следующее: в настоящее время существует много общепризнанных стандартов представления изображений (особенно растровых) и звуковых данных, но некоторые типы данных так и не имеют признанной стандартной формы. Например, есть несколько открытых форматов представления форматированного текста: troff, LATEX и другие пакеты макросов для системы ТЕХ, и, наконец, стандарт SGML (Standard Generalized Markup Language), но ни один из этих стандартов не пользуется популярностью среди разработчиков коммерческих текстовых процессоров
(Справедливости ради нужно отметить, что форматы troff и LATEX очень неудобны для WYSIWYG текстовых процессоров, но SGML разрабатывался специально для них). Причины такого отношения понятны: предоставление пользователю возможности без проблем обмениваться данными с текстовым процессором конкурента означает дать пользователю возможность выбирать между твоим процессором и его. Впрочем, пользователю от понимания не легче.
Для того чтобы как-то обеспечить переносимость программ между системами различных типов, принимались различные стандарты интерфейса между пользовательской (обычно говорят-- прикладной, но это не всегда правильно) программой и ОС. Одним из первых таких стандартов был стандарт библиотек ANSI С. Он основан на системных вызовах ОС Unix, но функции MS DOS для работы с файлами (использующие file handle) тоже достаточно близки к этому стандарту.
Позднее делалось еще несколько попыток стандартизировать интерфейс системных вызовов. Одной из относительно удачных попыток такого рода был POSIX (Portable Operating System Interface [based on] uniX — переносимый интерфейс операционной системы, основанный на Unix), который в той или иной форме поддерживается всеми системами семейства Unix и некоторыми ОС, не входящими в это семейство, например Windows NT. Но наибольший успех имела деятельность консорциума Х/Ореп, который в 1998 году сертифицировал операционную систему OS/390 фирмы IBM как соответствующую спецификациям Unix/95 [



Проблема



Проблема

Организация имеет двенадцать велосипедов. Стоит задача: перевезти рояль. Что делать? Грузовик не предлагать.

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

 



В1 Классификация операционных систем



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




 











В2 Генеалогия ОС семейства СР/М



Рисунок В2. Генеалогия ОС семейства СР/М


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



Семейства операционных систем



Семейства операционных систем

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

Системы для больших компьютеров фирмы IBM — OS/390, z/OS и IBM VM. Обширное, бурно развивающееся и имеющее трудно определимые границы семейство Unix. В этой книге под системами данного семейства мы будем подразумевать прежде всего ОС трех основных родов: Unix System V Release 4.x: Sunsoft Solans, SCO UnixWare; Berkeley Software Distribution Unix: BSDI, FreeBSD; Linux. Семейство прямых и косвенных потомков Control Program/Monitor (СР/М) фирмы Digital Research. В этом семействе можно выделить также весьма широко известное подсемейство \sisname{Win 32}-платформ (Рисунок В.2).

Еще одно практически вымершее к настоящему моменту, но оставившее в наследство ряд важных и интересных концепций семейство — это операционные системы для мини- и микрокомпьютеров фирмы DEC: RT-11, RSX-11 и VAX/VMS.
Ряд систем, в том числе и коммерчески успешных, например OS/400, не могут быть с уверенностью отнесены ни к одному из перечисленных семейств, поэтому, как и к классификации предыдущего раздела, к данной классификации надо относиться с осторожностью.

 



Системы промежуточных типов



Системы промежуточных типов

Существуют системы, которые нельзя отнести к одному из вышеперечисленных классов. Такова, например, система RT-11, которая, по сути своей, является ДОС, но позволяет одновременное исполнение нескольких программ с довольно богатыми средствами взаимодействия и синхронизации. Другим примером промежуточной системы являются MS Windows 3.x и Windows 95, которые, как ОС, используют аппаратные средства процессора для защиты и виртуализации памяти и даже могут обеспечивать некоторое подобие многозадачности, но не защищают себя и программы от ошибок других программ, подобно ДОС.
Некоторые системы реального времени, например QNX, могут использоваться как в качестве самостоятельной ОС, загружаемой с жесткого диска в оперативную память, так и будучи прошиты в ПЗУ. Эти системы могут быть отнесены одновременно и к ОС общего назначения, и к системам кросс-разработки.
Таких примеров "гибридизации" можно привести множество, поэтому к вышеприведенной классификации следует относиться с определенной осторожностью.

 



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



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

Это системы, предназначенные для облегчения разработки так называемых приложений реального времени — программ, управляющих некомпьютерным оборудованием, часто с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера fly-by-wire (дословно - "летящий по проволоке", т. е. использующий систему управления, в которой органы управления не имеют механической и гидравлической связи с рулевыми плоскостями) самолета, системы управления ускорителем элементарных частиц или промышленным оборудованием. Подобные системы обязаны поддерживать многопоточность, гарантированное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам.
Способность гарантировать время реакции является отличительным признаком систем РВ. Важно учитывать различие между гарантированностью и просто высокой производительностью и низкими накладными расходами. Далеко не все алгоритмы и технические решения, даже и обеспечивающие отличное среднее время реакции, годятся для приложений и операционных систем РВ.
По другим признакам эти системы могут относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX).
Любопытно, что новомодное течение в компьютерной технике — multimedia — при качественной реализации предъявляет к системе те же требования, что и промышленные задачи реального времени. В multimedia основной проблемой является синхронизация изображения на экране со звуком. Именно в таком порядке. Звук обычно генерируется внешним аппаратным устройством с собственным таймером, и изображение синхронизируется с ним. Человек способен заметить довольно малые временные неоднородности в звуковом потоке, а пропуск кадров в визуальном потоке не так заметен. Расхождение же звука и изображения фиксируется человеком уже при задержках около 30 мс. Поэтому системы высококачественного multimedia должны обеспечивать синхронизацию с такой же или более высокой точностью, что мало отличается от реального времени.
Так называемое "мягкое реальное время" (soft real lime), предоставляемое современными Win32 платформами, не является реальным временем вообще, это что-то вроде "осетрины второй свежести". Система "мягкого РВ" обеспечивает не гарантированное, а всего лишь среднее время реакции. Для мультимедийных приложений и игр различие между "средним" и "гарантированным" не очень критично — ну дернется картинка, или поплывет звук. Но для промышленных приложений, где необходимо настоящее реальное время, это обычно неприемлемо.

 



Системы виртуальных машин



Системы виртуальных машин

Такие системы стоят несколько особняком. Система виртуальных машин -это ОС, допускающая одновременную работу нескольких программ, но создающая при этом для каждой программы иллюзию того, что машина находится в полном ее распоряжении, как при работе под управлением ДОС. Зачастую, "программой" оказывается полноценная операционная система - примерами таких систем являются VMWare для машин с архитектурой х86 или VM для System/370 и ее потомков.
Виртуальные машины являются ценным средством при разработке и тестировании кросс-платформенных приложений. Реже они используются для отладки модулей ядра или самой операционной системы.
Такие системы отличаются высокими накладными расходами и сравнительно низкой надежностью, поэтому относительно редко находят промышленное применение.
Часто СВМ являются подсистемой ОС общего назначения: MS DOS и MS Windows-эмуляторы для UNIX и OS/2, подсистема WoW в Windows NT/2000/XP, сессия DOS в Windows З.х/95/98/МЕ, эмулятор RT-11 в VAX/ VMS.
В системах виртуальных машин, как правило, приходится уделять много внимания эмуляции работы аппаратуры. Например, несколько программ могут начать программировать системный таймер. СВМ должна отследить такие попытки и создать для каждой из программ иллюзию, что она запрограммировала таймер именно так, как хотела. Разработка таких систем является сложным и часто неблагодарным делом. Архитектура таких систем сильно зависит от свойств виртуализуемой аппаратуры, поэтому мы почти не будем обсуждать этот класс ОС.

 



Средства кроссразработки



Средства кросс-разработки

Это системы, предназначенные для разработки программ в двухмашинной конфигурации, когда редактирование, компиляция, а зачастую и отладка кода производятся на инструментальной машине (в англоязычной литературе ее часто называют host — дословно, "хозяин"), а потом скомпилированный код загружается в целевую систему. Чаще всего они используются для написания и отладки программ, позднее прошиваемых в ПЗУ. Примерами таких ОС являются системы программирования микроконтроллеров Intel, Atmel, PIC и др., системы Windows СЕ, Palm OS и т. д. Такие системы, как правило, включают в себя:

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

Иногда встречаются кросс-системы, в которых компилятор работает не на инструментальной машине, а в целевой системе — так, например, устроена среда разработки для семейства микропроцессоров Transputer компании Inmos.

 



Выбор операционной системы



Выбор операционной системы

Выбор типа операционной системы часто представляет собой нетривиальную задачу. Некоторые приложения накладывают жесткие требования, которым удовлетворяет только небольшое количество систем. Например, задачи управления промышленным или исследовательским оборудованием в режиме жесткого реального времени вынуждают нас делать выбор между специализированными ОС реального времени и некоторыми ОС общего назначения, такими как Unix System V Release 4 (хотя Unix SVR4 теоретически способна обеспечивать гарантированное время реакции, системы этого семейства имеют ряд недостатков с точки зрения задач РВ, поэтому чаще всего предпочтительными оказываются специализированные ОС -- QNX, VxWorks, OS-9 и т. д.). Другие приложения, например серверы баз данных, просто требуют высокой надежности и производительности, что отсекает системы класса ДОС и MS Windows.
Наконец, некоторые задачи, такие как автоматизация конторской работы в небольших организациях, не предъявляют высоких требований к надежности, производительности и времени реакции системы, что предоставляет широкий выбор между различными ДОС, MS Windows, Mac OS и многими системами общего назначения. При этом технические параметры системы перестают играть роль, и в игру вступают другие факторы. На заре развития персональной техники таким фактором была стоимость аппаратного обеспечения, вынуждавшая делать выбор в пользу ДОС и, позднее, MS Windows.



Www opengroup org xu007] и таким



www.opengroup.org xu007] и, таким образом, дал представителю самого древнего из современных родов операционных систем право называться UNIX ™.

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