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


Варианты
Круговое обслуживание задач на базе

Данный вариант иллюстрирует принцип работы планировщика однопроцессорной системы с
Перейдем теперь к рассмотрению более сложных дисциплин планирования, применяющихся в
Можно выделить два подхода к планированию исполнения процессов в
Ниже описывается алгоритм, который используется в планировщике библиотеки PFX, и в основе которого лежит идея заимствования работ (work stealing, коротко
Идея
Пул потоков процессора представляет собой двустороннюю очередь (часто называемую bottom. После извлечения потока, процессор исполняет поток до тех пор, пока поток не завершится или исполнение потока не будет блокировано каким-то внешним событием. В этом случае процессор извлекает новый поток из bottom, а блокированный поток помещает назад в bottom. Таким образом, пока очередь не пуста, процессор работает с ней по принципу
В том случае, когда в очереди процессора нет потоков, он произвольно выбирает другой процессор и извлекает из очереди этого процессора поток с противоположной от bottom стороны (назовем ее top ). Если же очередь другого процессора также пуста, то процессор-вор ищет другую "жертву".
Дополнительные сведения о планировании исполнения процессов будут приведены в лекции 5.
Конструкция , реализованная в PFX, является, по сути, параллельным аналогом последовательного цикла for перебора в некотором диапазоне чисел. Однако, конструкция цикла for в языке C# не ограничена только перебором чисел из определенного диапазона - она также поддерживает произвольные выражения для инициализации цикла, условия окончания и обновления индекса:
for(var i = init(); cond(i); i = upd(i)) { Use(i); }
В PFX, однако, отсутствуют аналоги подобного for -цикла. Вместе с тем основной идеей, заложенной в PFX, было создание базовых конструкций, которые могли бы расширяться пользователями под их собственные задачи. Пример с циклом for позволяет продемонстрировать это. Рассмотрим следующий код:
public static void ParallelFor<T> (
Func<T> init, Func<T,bool> cond, Func<T,T> upd, Action<T> body)
{
Parallel.ForEach(Iterate(init, cond, upd), body);
}
private static IEnumerable<T> Iterate<T> (
Func<T> init, Func<T,bool> cond, Func<T,T> upd)
{
for(var i=init(); cond(i); i = upd(i)) yield return i;
}
Можно видеть, что здесь создана некоторая версия конструкции , которая поддерживает произвольные выражения для инициализации цикла, условия окончания и обновления индекса. Другими словами, здесь представлена параллельная версия C#-
Приведем пример использования новой конструкции. Допустим нам дан список узлов, который мы хотим обработать. Последовательная версия обработки может выглядеть следующим образом:
for(Node n = list; n != null; n = n.Next)
{
Process(n);
}
Параллельная версия на основе введенной нами выше конструкции выглядит так:
ParallelFor(() => list, n => n != null, n => n.Next, n =>
{
Process(n);
});
В и приведены описания и приложены исходные коды параллельных программ быстрого преобразования Фурье (БПФ) и теста RandomAccess. Рассмотрите применение в них конструкций Paralell.For, а также возможность их замены на более высокоуровневые аналоги по типу тех, которые описаны в разделе 1 данного семинарского занятия. Кроме того, посредством запуска этих примеров на различном количестве процессоров, оцените эффективность данных реализаций БПФ и RandomAccess и выявите возможные проблемы с производительностью этих приложений.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.