Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / СПО2.doc
Скачиваний:
114
Добавлен:
11.02.2014
Размер:
527.87 Кб
Скачать

Потоки (нити, треды)

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

  1. Дисциплины диспетчеризации

Различают два класса дисциплин:

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

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

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

  1. FCFS (first come – first served) задачи обслуживаются в порядке очереди. В этом случае реализуется стратегия обслуживания «по возможности заканчивать вычисления в порядке их появления»

  2. SJN (shortest job next) – требует, что бы для каждого задания была известна оценка потребности машинного времени, т.е. это означает что следующим будет выполнятся кратчайшее задание.

  3. SRT (shortest remaining time) – следующее задание требует меньше всего времени для своего завершения.

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

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

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

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

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

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

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

  • отдавать предпочтения более коротким процессам;

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

Соседние файлы в папке лекции