![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Многопоточная программа содержит две и более частей, которые могут выполняться одновременно, конкурируя друг с другом.
Каждая часть такой программы называется потоком, а каждый поток определяет отдельный путь выполнения (в последовательности операторов программы).
Многопоточность — это специализированная форма многозадачности.
В многозадачной среде, основанной на потоках, самой мелкой единицей диспетчеризации является поток. Это означает, что отдельная программа может исполнять несколько задач одновременно. Например, текстовый редактор может форматировать текст одновременно с печатью документа, поскольку эти два действия выполняются двумя отдельными потоками.
Многозадачные потоки требуют меньших накладных расходов по сравнению с многозадачными процессами. Процессы — это тяжеловесные задачи, которым требуются отдельные адресные пространства. Связи между процессами ограничены и стоят не дешево. Переключение контекста от одного процесса к другому также весьма дорогостоящая задача.
С другой стороны, потоки достаточно легковесны. Они совместно используют одно и то же адресное пространство и кооперативно оперируют с одним и тем же тяжеловесным процессом, межпоточные связи недороги, а переключение контекста от одного потока к другому имеет низкую стоимость.
Многопоточность дает возможность писать очень эффективные программы, которые максимально используют CPU, потому что время его простоя можно свести к минимуму.
Скорость передачи данных по сети намного меньше, чем скорость, с которой компьютер может их обрабатывать.
В традиционной однопоточной среде ваша программа должна ждать окончания каждой своей задачи, прежде чем она сможет перейти к следующей (даже при том, что большую часть времени CPU простаивает).
Многопоточность позволяет получить доступ к этому времени простоя и лучше его использовать.
№9 Проблема тупиков в ОС. Необх условия возникновения тупиков
Тупик – состояние мультипрограммной системы, которого ждет процесс, и которое никогда не реализуется (клинч, дедлок).
Задачи ОС: Предотвращение; Обход; Обнаружение.
Примеры тупиков: транспортная пробка, Кольцевая цепь запросов.
Бесконечное ожидание – состояние системы, которого ждет процесс, является возможным, но оно откладывается на неопределенное время.
Например, из-за приоритета.
Условия возникновения тупиков (необходимые):
1. Монопольное управление выделенными ресурсами (взаимоисключение);
2. Удержание ресурсов на время ожидания следующего;
3. Ресурсы у процесса нельзя отобрать, отдает их сам (неперераспределение);
4. Существование кольцевой цепи запросов.
№10 Предотвращение тупиков. Принципы Хавендера.
Хавендер показал, что для предотвращения тупика необходимо нарушить одно из необходимых условий его возникновения.
Принципы Хавендера:
Дата публикования: 2015-02-03; Прочитано: 297 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!