Реферат: Системное программное обеспечение


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

Назначение, функции, классификация операционных систем (ОС).

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

Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение (этот пункт не относится к ОС, предназначенным для прошивки в ПЗУ).

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

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

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

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

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

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

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

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

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

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

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

^ Требования к современным операционным системам

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

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

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

□ Совместимость. Существует несколько «долгоживущих» популярных опера­ционных систем (разновидности UNIX, MS-DOS, Windows 3.x, Windows NT, OS/2), для которых наработана широкая номенклатура приложений. Некото­рые из них пользуются широкой популярностью. Поэтому для пользователя, переходящего по тем или иным причинам с одной ОС на другую, очень при­влекательна возможность запуска в новой операционной системе привычно­го приложения. Если ОС имеет средства для выполнения прикладных про­грамм, написанных для других операционных систем, то про нее говорят, что она обладает совместимостью с этими ОС. Следует различать совместимость на уровне двоичных кодов и совместимость на уровне исходных текстов. По­нятие совместимости включает также поддержку пользовательских интер­фейсов других ОС.

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

□ Безопасность. Современная ОС должна защищать данные и другие ресурсы вычислительной системы от несанкционированного доступа. Чтобы ОС обла­дала свойством безопасности, она должна как минимум иметь в своем составе средства аутентификации — определения легальности пользователей, автори­зации — предоставления легальным пользователям дифференцированных прав доступа к ресурсам, аудита — фиксации всех «подозрительных» для безопас­ности системы событий. Свойство безопасности особенно важно для сетевых ОС. В таких ОС к задаче контроля доступа добавляется задача защиты дан­ных, передаваемых по сети.

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




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

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

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

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

Здесь под ОС мы будем подразумевать системы "общего назначения", т. е. рассчитанные на интерактивную работу одного или нескольких пользовате­лей в режиме разделения времени, при не очень жестких требованиях ко времени реакции системы на внешние события. Как правило, в таких сис­темах уделяется большое внимание защите самой системы программного обеспечения и пользовательских данных от ошибочных и злонамеренных программ и пользователей. Обычно подобные системы используют встроен­ные в архитектуру процессора средства защиты и виртуализации памяти. К этому классу относятся такие широко распространенные системы, как Windows 2000, системы семейства Unix.
^ Системы виртуальных машин
Такие системы стоят несколько особняком. Система виртуальных машин — это ОС, допускающая одновременную работу нескольких программ, но соз­дающая при этом для каждой программы иллюзию того, что машина нахо­дится в полном ее распоряжении, как при работе под управлением ДОС. Зачастую, "программой" оказывается полноценная операционная система — примерами таких систем являются 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.

В системах виртуальных машин, как правило, приходится уделять много внимания эмуляции работы аппаратуры. Например, несколько программ могут начать программировать системный таймер. СВМ должна отследить такие попытки и создать для каждой из программ иллюзию, что она запро­граммировала таймер именно так, как хотела. Разработка таких систем явля­ется сложным и часто неблагодарным делом. Архитектура таких систем сильно зависит от свойств виртуализуемой аппаратуры, поэтому мы почти не будем обсуждать этот класс ОС.
^ Системы реального времени
Это системы, предназначенные для облегчения разработки так называемых приложений реального времени — программ, управляющих некомпьютерным оборудованием, часто с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера fly-by-wire (дословно — "летящий по проволоке", т. е. использующий систе­му управления, в которой органы управления не имеют механической и гидравлической связи с рулевыми плоскостями) самолета, системы управ­ления ускорителем элементарных частиц или промышленным оборудовани­ем. Подобные системы обязаны поддерживать многопоточность, гарантиро­ванное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам. Способность гарантировать время реакции является отличительным призна­ком систем РВ. Важно учитывать различие между гарантированностью и просто высокой производительностью и низкими накладными расходами. Далеко не все алгоритмы и технические решения, даже и обеспечивающие отличное среднее время реакции, годятся для приложений и операционных систем РВ.

По другим признакам эти системы могут относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX).

Любопытно, что новомодное течение в компьютерной технике — multimedia — при качественной реализации предъявляет к системе те же требования, что и промышленные задачи реального времени. В multimedia основной проблемой является синхронизация изображения на экране со звуком. Именно в таком порядке. Звук обычно генерируется внешним аппаратным устройством с собственным таймером, и изображение синхро­низируется с ним. Человек способен заметить довольно малые временные неоднородности в звуковом потоке, а пропуск кадров в визуальном потоке не так заметен. Расхождение же звука и изображения фиксируется челове­ком уже при задержках около 30 мс. Поэтому системы высококачественного multimedia должны обеспечивать синхронизацию с такой же или более вы­сокой точностью, что мало отличается от реального времени.

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

□ набор компиляторов и ассемблеров, работающих на инструментальной машине с "нормальной" ОС;

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

О средства отладки.

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

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

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

Некоторые системы реального времени, например QNX, могут использо­ваться как в качестве самостоятельной ОС, загружаемой с жесткого диска в оперативную память, так и будучи прошиты в ПЗУ. Эти системы могут быть отнесены одновременно и к ОС общего назначения, и к системам кросс-разработки.

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

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

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

□ Системы для больших компьютеров фирмы IBM — OS/390, z/OS и IBM vm.

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

• Unix System V Release 4.x: SunSoft Solaris, SCO UnixWare;

• Berkeley Software Distribution Unix: BSDI, FreeBSD;

• Linux.

□ Семейство прямых и косвенных потомков Control Program/Monitor (СР/М) фирмы Digital Research. В этом семействе можно выделить также весьма широко известное подсемейство \sysname{Win32}-miaT(|)opM (рис. В.2).

Еще одно практически вымершее к настоящему моменту, но оставившее в наследство ряд важных и интересных концепций семейство — это операци­онные системы для мини- и микрокомпьютеров фирмы DEC: RT-11, RSX-

11 и VAX/VMS.

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

^ Универсальные операционные системы и ОС специального назначения.

ОС реального времени.

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

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

По другим признакам эти системы могут относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX).

^ Понятие ядра и процесса. Иерархия процессов. Управление процессом.

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

□ ядро — модули, выполняющие основные функции ОС;

□ модули, выполняющие вспомогательные функции ОС.

В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/вы­грузка станиц, обработка прерываний. Эти функции недоступны для приложе­ний. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут об­ращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графиче­ской информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс приклад­ного программирования — API.

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

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

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

Ядро может состоять из следующих слоев.

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

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

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

□ Менеджеры ресурсов. Этот слой состоит из мощных функциональных моду­лей, реализующих стратегические задачи по управлению основными ресурса­ми вычислительной системы. Обычно на данном слое работают менеджеры (называемые также диспетчерами) процессов, ввода-вывода, файловой систе­мы и оперативной памяти. Разбиение на менеджеры может быть и несколько иным, например менеджер файловой системы иногда объединяют с менедже­ром ввода-вывода, а функции управления доступом пользователей к системе в целом и ее отдельным объектам поручают отдельному менеджеру безопас­ности. Каждый из менеджеров ведет учет свободных и используемых ресур­сов определенного типа и планирует их распределение в соответствии с за­просами приложений. Например, менеджер виртуальной памяти управляет перемещением страниц из оперативной памяти на диск и обратно. Менеджер должен отслеживать интенсивность обращений к страницам, время пребыва­ния их в памяти, состояния процессов, использующих данные, и многие дру­гие параметры, на основании которых он время от времени принимает реше­ния о том, какие страницы необходимо выгрузить и какие — загрузить. Для исполнения принятых решений менеджер обращается к нижележащему слою базовых механизмов с запросами о загрузке (выгрузке) конкретных страниц. Внутри слоя менеджеров существуют тесные взаимные связи, отражающие тот факт, что для выполнения процессу нужен доступ одновременно к не­скольким ресурсам — процессору, области памяти, возможно, к определенно­му файлу или устройству ввода-вывода. Например, при создании процесса менеджер процессов обращается к менеджеру памяти, который должен выде­лить процессу определенную область памяти для его кодов и данных.

□ Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утили­тами, образуя прикладной программный интерфейс операционной системы. Функции API, обслуживающие системные вызовы, предоставляют доступ к ресурсам системы в удобной и компактной форме, без указания деталей их физического расположения. Например, в операционной системе UNIX с по­мощью системного вызова fd = open(“/doc/a.txt", O_RDONLY) приложение от­крывает файл a.txt, хранящийся в каталоге /doc, а с помощью системного вызова read(fd, buffer, count) читает из этого файла в область своего адрес­ного пространства, имеющую имя buffer, некоторое количество байт. Для осуществления таких комплексных действий системные вызовы обычно об­ращаются за помощью к функциям слоя менеджеров ресурсов, причем для выполнения одного системного вызова может понадобиться несколько та­ких обращений.



^ Понятия вычислительного процесса

Понятие «вычислительный процесс» (или просто — «процесс») является одним из основных при рассмотрении операционных систем. Как понятие процесс яв­ляется определенным видом абстракции, и мы будем придерживаться следующе­го неформального определения, приведенного в работе [37]. Последовательный процесс (иногда называемый «задачей»1) — это выполнение отдельной программы с ее данными на последовательном процессоре. Концептуально процессор рас­сматривается в двух аспектах: во-первых, он является носителем данных и, во-вторых, он (одновременно) выполняет операции, связанные с их обработкой.

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

^ Понятие ядра и процесса, состояние процесса, подпроцессы. Межпроцессное взаимодействие

Диаграмма состояний процесса

Необходимо различать системные управляющие процессы, представляющие ра­боту супервизора операционной системы и занимающиеся распределением и управ­лением ресурсов, от всех других процессов: системных обрабатывающих процес­сов, которые не входят в ядро операционной системы, и процессов пользователя. Для системных управляющих процессов в большинстве операционных систем ресурсы распределяются изначально и однозначно. Эти процессы управляют ре­сурсами системы, за использование которых существует конкуренция между всеми остальными процессами. Поэтому исполнение системных управляющих программ не принято называть процессами. Термин задача можно употреблять только по отношению к процессам пользователей и к системным обрабатывающим процес­сам. Однако это справедливо не для всех ОС. Например, в так называемых «мик­роядерных» (см. главу 5 «Архитектура операционных систем и интерфейсы прикладного программирования») ОС (в качестве примера можно привести ОС реального времени QNX фирмы Quantum Software systems) большинство управ­ляющих программных модулей самой ОС и даже драйверы имеют статус высо­коприоритетных процессов, для выполнения которых необходимо выделить со­ответствующие ресурсы. Аналогично и в UNIX-системах выполнение системных программных модулей тоже имеет статус системных процессов, которые получа­ют ресурсы для своего исполнения.

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

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

□ готовности к выполнению — ресурсы могут быть предоставлены, тогда про­цесс перейдет в состояние выполнения;

□ блокирования или ожидания — затребованные ресурсы не могут быть предо­ставлены, или не завершена операция ввода/вывода.

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

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

За время своего существования процесс может неоднократно совершать перехо­ды из одного состояния в другое. Это обусловлено обращениями к операцион­ной системе с запросами ресурсов и выполнения системных функций, которые предоставляет операционная система, взаимодействием с другими процессами, появлением сигналов прерывания от таймера, каналов и устройств ввода/выво­да, а также других устройств. Возможные переходы процесса из одного состоя­ния в другое отображены в виде графа состояний на рис. 1.3. Рассмотрим эти пе­реходы из одного состояния в другое более подробно.

Процесс из состояния бездействия может перейти в состояние готовности в сле­дующих случаях:

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

□ при выборе из очереди планировщиком (характерно для операционных сис­тем, работающих в пакетном режиме);

□ по вызову из другой задачи (посредством обращения к супервизору один процесс может создать, инициировать, приостановить, остановить, уничто­жить другой процесс);

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

□ при наступлении запланированного времени запуска программы.



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

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

Из состояния выполнения процесс может выйти по одной из следующих при­чин:

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

□ процесс переводится супервизором операционной системы в состояние готов­ности к исполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;

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

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

Таким образом, движущей силой, меняющей состояния процессов, являются со­бытия. Один из основных видов событий — это прерывания.

^ Понятия приоритета и очереди процессов. Диспетчеризация и синхронизация процессов.

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

□ идентификатор процесса (так называемый PID — process identificator);

□ тип (или класс) процесса, который определяет для супервизора некоторые пра­вила предоставления ресурсов;

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

□ переменную состояния, которая определяет, в каком состоянии находится процесс (готов к работе, в состоянии выполнения, ожидание устройства вво­да/вывода и т. д.);

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