Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
52
Добавлен:
30.03.2021
Размер:
78.89 Кб
Скачать

У потоков есть определенные недостатки и преимущества перед процессами.

Преимущества потоков:

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

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

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

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

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

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

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

Узадач есть следующие свойства:

1.Приоритет.

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

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

2. Дескриптор.

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

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

3. Контекст.

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

1

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

4. Состояние.

Задача может находиться в одном из трех состояний:

1)активная задача (исполнение): задача выполняется системой в текущей момент времени;

2)готовая задача (готовность): задача готова к выполнению и ожидает свой очереди;

3)блокированная задача (ожидание): выполнение задачи приостановлено до возникновения определенного события, например, освобождения необходимого ресурса, поступления ожидаемого сообщения, завершения интервала ожидания и т.п.

5. Возможность многократного запуска.

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

6. Реентерабельность.

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

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

§4. Диспетчеризация (планирование) задач.

Диспетчер (планировщик) задач выполняет следующие функции:

1)определение момента времени для смены выполняемой задачи;

2)выбор задачи для выполнения из очереди готовых задач;

3)переключение контекстов задач.

Первые две задачи решаются на программном уровне, а последняя – на аппаратном.

FIFO (First In, First Out)

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

Круговая (циклическая) многозадачность «round robin»

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

Приоритетная многозадачность

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

Приоритетная многозадачность

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

Адаптивная (равнодоступная) многозадачность

1.Приоритет задачи, которая слишком долго не запускается на выполнение,

повышается.

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

Например, в системе QNX используется следующая адаптивная схема:

2

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

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

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

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

3

Соседние файлы в папке АОПИ. Лекции