Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

ЛЕКЦИЯ №5 Процессы и потоки



Понятие "процесс" является одним из основных при рассмотрении операционных систем. Как понятие процесс является определенным видом абстракции.

Последовательный процесс (иногда называемый задачей) – это выполнение отдельной программы с ее данными на последовательном процессоре.

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

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

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

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

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

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

При этом параллелизм может быть:

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

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

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

Ресурсы и их классификация

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

 
 

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

Классификация ресурсов

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

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

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

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

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

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

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

– он свободен и в системе нет запросов к этому же ресурсу от задач более высокого приоритета;

– текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;

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

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

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

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

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

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

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

– быстро обслуживать отдельные наиболее важные запросы,

– предоставлять всем процессам равные возможности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Состояния потока

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

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

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

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

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

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

Рассмотрим такой переход. (см. схему)


Только что созданный поток готов к выполнению и стоит в очереди к процессору. Когда в результате планирования принимается решение об его активизации, он переходит в состояние выполнения (переход 1 на рисунке). В этом состоянии он находится до тех пор, пока либо он сам освободит процессор (завершится – переход 2 или перейдет в состояние ожидания какого-либо события – переход 3), либо будет приостановлен (переход 4) вследствие окончания отведенного ему кванта времени. В состояние готовности поток переходит из состояния ожидания после того, как ожидаемое им событие произойдет (переход 5).

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

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

– при выборе из очереди планировщиком (характерно для ОС, работающих в пакетном режиме);

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

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

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

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

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

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

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

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

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





Дата публикования: 2015-10-09; Прочитано: 901 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...