Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Киев 2003


Основные функции ОС.

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

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

3. Обеспечивать работу с устройствами долговременной памяти.

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

5. Предоставить пользовательский интерфейс.

В ряде ОС этим функции исчерпываются.(MS-DOS)

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

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

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

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

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

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

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

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

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

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

Характерный пример – различные загрузочные мониторы. Такие системы работают одновременно только с одной программой.

MS DOS для IBM PC – прямой наследник такого монитора.

Существование таких систем обусловлено их простотой и тем, что для их реализации необходимо мало ресурсов.

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

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

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

Примерами таких систем являются IBMDOS и OC/360 и наши аналоги ОС ЕС.

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

К этому классу относится известная ОС Windows 2000, а также системы семейства UNIX.


 

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

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

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

Для таких систем характерны высокие накладные расходы и сравнительно низкая надежность. Поэтому они редко используются для промышленного применения.

В системах виртуальных машин уделяется большое внимание эмуляции работы аппаратуры.

Часто эти системы являются подсистемами ОС общего назначения: например подсистема W0W в Windows NT, Windows 2000, эмулятор RT-II в VAX и т.д.

 

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

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

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

Типичными представителями этого класса систем являются известные системы OS-9 и OS-9000.

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

 

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

Это алгоритмы, предназначенные для разработки программ в двухмашинной конфигурации.

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

Примерами таких ОС являются системы программирования микроконтроллеров Intel. Такие системы, как правило, включают в себя:

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

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

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

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

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

 


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

Часто существует преемственность между различными ОС.

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

На основе такой преемственности можно построить “генеалогические деревья” ОС.

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

Процветают:

· системы для больших компьютеров IBM OS-360, IBM-Vm, OS/2;

· семейство UNIX, в том числе ОС Linux.


Архитектура ОС.

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

1. Ядро – модули, выполняющие основные функции ОС.

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

Модули ядра выполняют:

· управление процессами

· управление памятью

· управление устройствами ввода-вывода

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

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

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

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

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

Решение о том, является ли какая-либо программа частью ОС или нет, принима­ет производитель ОС.

Вспомогательные модули ОС подразделяются на следующие группы:

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

· системные обрабатывающие программы — текстовые и графические редакторы, компиляторы, компоновщики, отладчики;

· программы предоставления пользователю дополнительных услуг — специальный пользовательский интерфейс, калькулятор и т. п.

· библиотеки процедур – упрощают разработку при­ложений (например, библиотека математических функций, функций ввода-вывода и т. п.).

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

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


 
 

 


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

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

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

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

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

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

Между количеством уровней привилегий, реализуемых аппаратно, и количест­вом уровней привилегий, поддерживаемых ОС, нет прямого соответствия.

Так, например, на базе четырех уровней, обеспечиваемых процессорами Intel, ОС OS/2 строит трехуровневую систему привилегий, а Windows NT – двухуровневую.

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

Рассмотренная архитектура ОС, основанная на привилегированном ядре и приложениях поль­зовательского режима, стала классической. Ее используют многие известные ОС: UNIX, VMS, OS/390, OS/2, Windows NT.

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

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


Многослойная структура ОС

Вычислительную систему, работающую под управлением ОС на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположен­ных слоев:

· нижний слой – образуется аппаратурой;

· промежуточный — ядро;

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

 
 

 


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

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

 
 

 


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

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

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


Достоинства такой системы организации:

· упрощается разработка системы;

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

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

Например:

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

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

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

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

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

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

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

Приведенное разбиение ядра ОС на слои – достаточно условно. Такое разбиение и распределение функций может быть иным.

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

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

 

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

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

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

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

4. Предсказуемостью. Требование, которое пользователь может предъявлять к системе, в большинстве случаев, непредсказуемы. Но пользователь предпочитает, что бы обслуживание не очень сильно менялось в течении продолжительного времени. В частности, ввода программы в машину пользователь должен иметь основанные на предыдущем опыте приблизительное представление о том, когда ему следует ожидать выдачи результатов.

5. Удобством. Все ясно, как и то, что универсальных удобств не существует. Здесь может идти речь об определенном классе задач.

Пару слов о выполняемых функциях:

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

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

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

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

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

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

Эффективное распределение периферийных устройств трудно реализовать по двум причинам:

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

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

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

Методы распределения устройств ввода-вывода, контроллеров и каналов сильно зависит от устройств.

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

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

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

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

Супервизор.

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

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

Функции супервизора. Функции супервизора можно грубо разделить на четыре области:

· контроль и управление;

· организация связей;

· защита и ограничения;

· обслуживающие программы;

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

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

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

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

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

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

Супервизор может также организовать систему защиты с помощью специальных “паролей”.

Доступ к защищенным ресурсам разрешается только по соответствующему паролю.

С целью защиты супервизора в некоторых системах существуют два типа режима работы:

· режим супервизора;

· рабочий режим.

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

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

Использование супервизора – это пример построения ОС на принципе централизованного управления.

Идеология централизации ключевых функций системы под контролем супервизора имеет свои преимущества и недостатки. Одно из преимуществ – простая реализация защиты. Второе преимущество – простота реализации.

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

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

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

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

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

 

 

 

 


В состав микроядра входят

  1. Машинно-зависимые модули;
  2. Модули, выполняющие основные базовые функции ядра по управлению процессами;
  3. Обработка прерываний;
  4. Управлению виртуальной памятью;
  5. Пересылка сообщений и управление вводом-выводом

 

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

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

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


Процессы.

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

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

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

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

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

Понятие процесса – формализация идеи “независимой работы”.

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

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

Эти параллельно выполняемые задания вообще не должны учитывать существование друг друга. Когда какое либо задание отдает приказ “печатать”, его не касается то, что другое в это время осуществляет запись на диск и т.д.

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

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

Итак, процессы – независимые работы, которые выполняются параллельно и различными скоростями.

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

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

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

Пространство состояний для данного набора переменных состояния – множество состояний, которые может принимать этот набор переменных.

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

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

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

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

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

Пример:

Пусть задан процесс P имеющий две переменные x и y. Работу процесса Р можно описать последовательностью состояний: .

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

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

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

В ряде ОС кроме понятия процесс выделяется еще более мелкая единица, которая называется поток.

В чем же разница?

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

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

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

Реализация процессов.

Каждый программный процесс однозначно определяется информационной структурой, называемой дескриптором процесса. В типичной системе дескриптор процесса состоит из:

1. Переменной состояния, которая определяет положение процесса (готов к работе, работающий, заблокирован).

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 847; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.089 с.)
Главная | Случайная страница | Обратная связь