Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_СГTУ new v10.doc
Скачиваний:
148
Добавлен:
12.11.2019
Размер:
4.13 Mб
Скачать

1.7. Общие сведения о процессах и потоках

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

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

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

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

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

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

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

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

Процесс можно разделить на 3 компоненты:

  • выполняющиеся программы (подпрограммы);

  • данные, необходимые для её работы (переменные, рабочее пространство, буферы);

  • контекст выполнения программы.

Потоки имеют следующие преимущества по сравнению с процессами:

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

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

  3. контекст потоков меньше, чем контекст процессов, а значит время переключения между потоками, меньше, чем между процессами;

  4. т. к. все потоки реализуются в одном исполнительном модуле, значительно упрощается использование программ-отладчиков.

Недостатки потоков:

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

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

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

Процесс может находиться в активном состоянии и участвовать в конкуренции за ресурс ВС и в пассивном состоянии (рис.19).

Рис. 19. Схема состояния задачи в вычислительной системе

Состояния потоков активного процесса:

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

  2. Готовность к выполнению: все ресурсы предоставлены за исключением процессора.

  3. Блокировка (ожидание): не предоставлены запрошенные ресурсы или не завершена операция ввода/вывода.

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

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

Наличие процессов в состоянии бездействия в ОС реального времени позволяет уменьшить время на перевод процесса в состояние готовности. За время своего существования процесс может многократно переходить из состояния в состояние. Из пассивного состояния процесс может перейти в состояние готовности в следующих случаях:

  • по команде оператора (для ОС, поддерживающих пассивное состояние);

  • при выборе из очереди планировщиком (для пакетного режима);

  • по вызову другого процесса через обращение к супервизору процессов;

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

Из состояния выполнения процесс выходит по причинам:

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

  • процесс переводится супервизором в состояние готовности в связи с появлением более приоритетного процесса, либо при истечении определённого времени;

  • процесс переводится в состояние ожидания либо вследствие запроса операции вода/вывода, либо в силу невозможности предоставления ему запрошенного ресурса, либо по команде оператора на приостановку процесса, либо по требованию через супервизор от другого процесса.

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

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

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

  1. идентификатор процесса (PID);

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

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

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

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

  6. информация о ресурсах, которыми владеет или имеет право владеть процесс;

  7. область памяти или её адрес для организации общения с другими процессами;

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

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

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