Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные теоретические положения. Пользовательских процессов




Пользовательских процессов

Программа визуализации работы системных и

 

Цель работы: освоить основные методы и приемы работы системных и пользовательских процессов.

 

Понятие «процесс» является одним из основных при рассмотрении операционных систем. Как понятие процесс является определенным видом абстракции. Последовательный процесс (иногда называемый задачей) – это выполнение отдельной программы с ее данными на последовательном процессоре.

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

Существуют разные трактовки понятия «процесс». Мы будем пользоваться следующей.

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

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

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

· аппаратным (физическим) – параллельная работа нескольких обрабатывающих устройств;

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

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

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

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

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

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

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

Общая схема выделения ресурсов такова.

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

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

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

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

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

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

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

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

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

Рассмотрим основные виды ресурсов и способы их разделения.

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

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

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

4) Важным видом ресурсов являются программные модули, и прежде всего – системные программные модули.

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

Повторно используемые программные модули могут быть непривилегированными, привилегированными, реентерабельными и повторно входимыми.

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

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

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

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

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

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

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

· выполнение – активное состояние, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором (в однопроцессорной вычислительной системе в этом состоянии в каждый момент времени может находиться только один поток);

· ожидание или блокирование – пассивное состояние, в котором поток заблокирован по своим внутренним причинам (ждет выполнения какого-либо события, например, завершения операции ввода-вывода или предоставления необходимого ресурса);

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

Замечания

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

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

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

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

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

Примером описателя процесса является объект-процесс (object-process) в Windows NT.

В общем случае дескриптор процесса содержит следующую информацию:

· идентификатор процесса (т.н. PIDprocess identificator);

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

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

· переменную состояния, которая определяет, в каком состоянии находится процесс (готовности, выполнения, ожидания);

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

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

· место (или его адрес) для организации общения с другими процессами;

· параметры времени запуска (момент времени, когда процесс должен активизироваться, и периодичность этой процедуры).

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

В некоторых ОС количество описателей определяется жестко и заранее (на этапе генерации ОС или в конфигурационном файле, который используется при загрузке ОС), в других система может по мере необходимости выделять участки памяти под новые описатели. Например, в OS/2 максимально допустимое количество описателей задач определяется в конфигурационном файле CONFIG.SYS ( например, THREADS=1024), а в Windows NT оно в явном виде не задается. Заметим, что здесь речь идет о количестве задач, под которыми понимают как собственно процессы, так и потоки этого процесса

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

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

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

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

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

1. Прием сигнала на прерывание и его идентификация.

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

3. Управление аппаратно передается программе обработки прерывания.

4. Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью действий аппаратуры.

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

6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).

7. Возврат в прерванную программу.

Шаги 1–3 реализуются аппаратно, а шаги 4–7 – программно.

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

Примеры: прерывания от таймера, прерывания от внешних устройств (прерывания по вводу/выводу), прерывания по нарушению питания, прерывания с пульта оператора вычислительной системы и прерывания от другого процессора.

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

Основные три типа прерываний:

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

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

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

Примеры исключительных ситуаций:

· Исправимые исключительные ситуации:

- нарушение адресации – происходит обращение к отсутствующей странице при организации механизмов памяти;

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

· Неисправимые исключительные ситуации:

- нарушение адресации – обращение к запрещенному или несуществующему адресу;

- деление на нуль;

- переполнение или исчезновение порядка;

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

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

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

Существует два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled). В обоих случаях информация об уровне приоритета прерывания предоставляется процессору на шине подключения внешнего устройства. В случае векторных прерываний передается еще и информация о начальном адресе программы – обработчика данного прерывания.

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

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

Существуют варианты смешанного типа обработки. Пример. Платформа компьютеров на основе процессоров Intel Pentium: процессор использует векторный механизм, а шины подключения внешних устройств (PCI, ISA, EISA, MCA) имеют опрашиваемый механизм прерываний. Контроллеры внешних устройств выставляют на шину не вектор, а сигнал некоторого уровня приоритета прерывания. Контроллер прерываний после взаимодействия с внешним устройством отображает этот сигнал на определенный номер вектора прерывания. Вектор прерываний состоит из 4 байт и задает новые значения регистров IP и CS. Таблица векторов прерываний занимает 1024 байта, следовательно, в ней может быть задано 256 векторов прерываний.

Контроллер прерываний поддерживает 8 уровней (линий) приоритета. Компьютеры на базе процессора Intel используют два контроллера и поддерживают 15 линий запросов на прерывание.

Линии IRQ(interrupt Request – запрос на прерывание ):

0 – системный таймер;

1 – контроллер клавиатуры;

2 – сигнал возврата по кадру (соединен с IRQ9);

3 – обычно COM2/COM4 (последовательный порт);

4 – обычно COM1/COM3 (последовательный порт);

5 – обычно свободен или используется звуковой картой;

6 – контроллер FDD;

7 – параллельный порт LPT1;

8 – часы реального времени;

9 – линия параллельна IRQ2;

10 – свободно;

11 – свободно;

12 – обычно контроллер мыши типа PS/2;

13 – математический сопроцессор;

14 – обычно контроллер IDE0 (первый канал);

15 – обычно контроллер IDE1 (второй канал).

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

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

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

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

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

· по принципу стека (по дисциплине LCFSlast come first served)– запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для реализации такой дисциплины необходимо не накладывать маски ни на один сигнал прерывания и не выключать систему прерываний.

Отметим, что для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1–4 и 6–7, чтобы не потерять запрос и правильно его обслужить. При этом многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса на другой.

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

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

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

Замечание. Обработчик прерываний (независимо от его приоритета) всегда имеет приоритет более высокий, чем поток, выполняемый в обычной последовательности, определяемой планировщиком потоков.

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


Схема обработки прерываний в мультипрограммной системе

приведена ниже.

 

 

Рис. 2.1. Схема обработки прерываний.

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

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

 

Задание

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

 

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

 

Рис.2.2. Модель вычислительной системы.

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

1. Используйте Вашу среду исследования функционирования операционной системы.

2. Для моделирования объекта, условно названного как «задание» используйте процесс. Создайте процесс, в теле которого выполняются следующие операции: создать текстовый файл на флоппи-диске с именем процесса; считать содержимое дескриптора процесса и записать его в созданный текстовый файл.

3. Создайте n копий процесса, созданного Вами при выполнении п.2. с уникальными именами.

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

5. Запустите все процессы с визуализацией происходящего в соответствии с рис.2.2.

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

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

 

Контрольные вопросы

1. Дайте определение понятия «ресурс»?

2. Какие виды ресурсов вам известны?

3. Каковы способы управления ресурсами?

4. Назовите виды прерываний.

5. Какие действия производит процессор при вызове программного прерывания?

6. Где в системе ОС располагаются вызываемые функции Win32 API?

7. Какая база данных дает нотацию функции Win32 API?

 

Р а з д е л III

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 2102; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.098 сек.