Главная страница

Лекция 5. Понятия процесса и потока. Ние процессов и потоков. Типы планирования процессора. Тупики. Методы взаимодействия процессов


Скачать 429.57 Kb.
НазваниеНие процессов и потоков. Типы планирования процессора. Тупики. Методы взаимодействия процессов
АнкорЛекция 5. Понятия процесса и потока
Дата02.06.2021
Размер429.57 Kb.
Формат файлаdocx
Имя файлаЛекция 5. Понятия процесса и потока.docx
ТипЗадача
#213193
страница2 из 4
1   2   3   4

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




      1. Переключение контекста процесса

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


      1. Иерархия процессов

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


Рис. 5.1. Дерево процессов для систем UNIX
В Windows не существует понятия иерархии процессов. Хотя можно задать специальный маркер родительскому процессу, позволяющий контролировать дочерний процесс.


      1. Состояние процессов

При исполнении процесс может изменять свое состояние следующим образом:

  • новый (new) - процесс создается операционной системой, но еще не начал выполняться;

  • исполняемый (running) - исполняются команды процесса на процессоре или процессорах компьютерной системы под управлением операционной системы;

  • ожидающий (waiting) - процесс ожидает наступления некоторого события, например, завершения ввода-вывода. В состоянии ожидания процесс не занимает процессор;

  • готовый к выполнению (ready) - процесс ожидает получения ресурсов процессора для его исполнения. В состояние готовности к выполнению процесс попадает обычно либо при его создании, либо после завершения ввода-вывода (из состояния ожидания);

  • завершенный (terminated) - исполнение процесса завершено.




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


    1. Планирование процессов и потоков

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

  • их созданием и уничтожением;

  • поддержанием взаимодействия между ними;

  • распределением процессорного времени между несколькими одновременно существующими в системе процессами и потоками;

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

  • обеспечением процессов необходимыми ресурсами;

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


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

  • назначает процессу ресурсы в единоличное пользование или в совместное пользование с другими процессами;

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

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

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




      1. Диспетчеризация процессов. Стратегии диспетчеризации процессов

Имеется пять основных критериев диспетчеризации процессора, которые так или иначе должны учитываться системой:

  • использование процессора (CPU utilization) – поддержание его в режиме занятости максимально возможный период времени. Критерий оптимизации: максимизация данного показателя;

  • пропускная способность системы (throughput) – (среднее) число процессов, завершающих свое выполнение за единицу времени. Критерий оптимизации: максимизация;

  • время обработки процесса (turnaround time) – время, необходимое для исполнения какого-либо процесса. Критерий оптимизации: минимизация;

  • время ожидания (waiting time) – время, которое процесс ждет в очереди процессов, готовых к выполнению. Критерий оптимизации: минимизация;

  • время ответа (response time) – время, требуемое от момента первого запроса до первого ответа. Критерий оптимизации: минимизация.


Существуют следующие стратегии диспетчеризации процессов:

  • стратегия First Come First Served (обслуживание в порядке поступления) – наиболее простая стратегия диспетчеризации, при которой ресурсы процессора предоставляются процессам в порядке их поступления (ввода) в систему, независимо от потребляемых ими ресурсов, в частности, от заявленного процессом времени, требуемого для его выполнения;

  • стратегия Shortest Job First (SJF, обслуживание самого короткого задания первым) – стратегия диспетчеризации процессора, при которой процессор предоставляется в первую очередь наиболее короткому процессу из имеющихся в системе процессов. В данном случае с каждым процессом связывается длина его очередного периода активности. Эта длина используется для того, чтобы первым обслужить самый короткий процесс. Возможны две схемы применения данной стратегии: без прерывания процессов – пока процессу предоставляется процессор, он не может быть прерван, пока не истечет его квант времени; с прерыванием процессов – если приходит новый процесс, время активности которого меньше, чем оставшееся время активного процесса, - прервать активный процесс. Эта схема известна под названием Shortest Remaining Time First (SRTF);

  • диспетчеризация по приоритетам (приоритетное планирование). При данной стратегии с каждым процессом связывается его приоритет (целое число). Процессор выделяется процессу с наивысшим приоритетом. Данная стратегия, как и предыдущая, имеет варианты с прерыванием и без прерывания. Более того, стратегию SJF можно рассматривать как диспетчеризацию по приоритетам, в которой приоритетом является очередное время активности. При диспетчеризации по приоритетам возникает проблема голодания (starvation) - ситуации, когда процессы с низким приоритетом могут никогда не исполниться и бесконечно ждать. Традиционным способом решение данной проблемы в операционных системах является учет возраста процесса (aging): c течением времени приоритет процесса повышается системой;

  • стратегия Round Robin (RR, круговая система, «карусельная» стратегия) – это предоставление всем процессам по очереди одинаковых квантов времени. При данной стратегии каждый процесс получает небольшой квант процессорного времени, обычно – 10-100 миллисекунд. После того, как это время закончено, процесс прерывается и помещается в конец очереди готовых процессов;

  • планирование с использование многоуровневой очереди (Multilevel queue scheduling) - разработано для ситуации, когда процессы можно легко разбить на несколько групп (например, интерактивные и фоновые - пакетные). В каждой из очередей находится процессы с одинаковыми свойствами, а каждая отдельная очередь может иметь свою стратегию планирования. Ни один процесс с более низким приоритетом не может быть запущен, пока не выполнятся процессы во всех очередях в более высокими приоритетами;

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




      1. Планирование и диспетчеризация потоков

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

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

Планирование потоков включает в себя решение двух задач:

  • определение момента времени для смены текущего активного потока;

  • выбор для выполнения потока из очереди готовых потоков.


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

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

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

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

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

  • значение счетчика команд

  • содержимое регистров общего назначения

  • режим работы процессора

  • флаги

  • маски прерываний

  • ссылки на открытые файлы

  • данные о незавершенных операциях ввода-вывода

  • коды ошибок выполняемых данным потоком системных вызовов

  • и т. д.


Диспетчеризация сводится к следующему:

  • сохранение контекста текущего потока, который требуется сменить;

  • загрузка контекста нового потока, выбранного в результате планирования;

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


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


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

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

  • выполнение — активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

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

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


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

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


      1. Вытесняющие и не вытесняющие алгоритмы планирования

Все множество алгоритмов планирования можно разделить на два класса:

  • вытесняющие алгоритмы;

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


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

Вытесняющие (preemptive) алгоритмы — это такие способы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого потока принимается операционной системой, а не активной задачей.
Основным различием между вытесняющими и не вытесняющими алгоритмами является степень централизации механизма по планированию потоков. Поэтому разработчики приложений для операционной среды с не вытесняющей многозадачностью вынуждены, возлагая на себя часть функций планировщика, создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Однако распределение функций планирования потоков между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент возвращения управления, то при этом исключаются нерациональные прерывания программ в «неудобные» для них моменты времени. Кроме того, легко разрешаются проблемы совместного использования данных: задача во время каждого цикла выполнения использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит данные. Существенным преимуществом не вытесняющего планирования является более высокая скорость переключения с потока на поток.

      1. 1   2   3   4


написать администратору сайта