Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС М1 2011.docx
Скачиваний:
9
Добавлен:
12.11.2019
Размер:
162.32 Кб
Скачать

2.2.3. Преимущества и недостатки многопотоковости

Назовем проблемы, которые могут быть решены с помощью потоков.

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

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

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

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

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

-довольно часто внедрение многопотоковости приводит к снижению надежности приложений.

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

-использование потоков может вызвать снижение производительности приложений.

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

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

2.2.4 Состояния процессов и потоков

Для потока разрешенные такие состояния:

♦ создание (new) — поток находится в процессе создания;

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

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

♦ готовность (ready) — поток ожидает, что планировщик переключит процессор на него, при этом он имеет все необходимые ему ресурсы, кроме процессорного времени;

♦ завершение (terminated) — поток завершил выполнение (если при этом его ресурсы не были изъяты с системы, он переходит в дополнительное состояние - зомби).

Возможные переходы между состояниями потока изображены на рис. 3.2

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

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

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

В многотопотоковых системах также можно выделять состояния процессов.

Например, в многотопотоковости, реализованной по схеме М:1, потоки изменяют свои состояния в режиме пользователя, а процессы - в режиме ядра.