Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Многопоточное программирование



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

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

Многопоточность — это специализированная форма многозадачности.

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

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

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

— Многопоточность дает возможность писать очень эффективные программы, которые максимально используют CPU, потому что время его простоя можно свести к минимуму.

— Скорость передачи данных по сети намного меньше, чем скорость, с которой компьютер может их обрабатывать.

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

— Многопоточность позволяет получить доступ к этому времени простоя и лучше его использовать.

№9 Проблема тупиков в ОС. Необх условия возникновения тупиков

Тупик – состояние мультипрограммной системы, которого ждет процесс, и которое никогда не реализуется (клинч, дедлок).

Задачи ОС: Предотвращение; Обход; Обнаружение.

Примеры тупиков: транспортная пробка, Кольцевая цепь запросов.

Бесконечное ожидание – состояние системы, которого ждет процесс, является возможным, но оно откладывается на неопределенное время.
Например, из-за приоритета.

Условия возникновения тупиков (необходимые):

1. Монопольное управление выделенными ресурсами (взаимоисключение);

2. Удержание ресурсов на время ожидания следующего;

3. Ресурсы у процесса нельзя отобрать, отдает их сам (неперераспределение);

4. Существование кольцевой цепи запросов.

№10 Предотвращение тупиков. Принципы Хавендера.

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

Принципы Хавендера:





Дата публикования: 2015-02-03; Прочитано: 284 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...