Совместное планирование — это принцип для параллельных систем планирования связанных процессов для одновременного выполнения на разных процессорах ( параллельно ). Существуют различные конкретные реализации для реализации этого .
Если приложение состоит из набора тесно работающих процессов, и если некоторые, но не все процессы запланированы для выполнения, выполняющиеся процессы могут попытаться связаться с теми, которые не выполняются, что приведет к их блокировке. В конечном итоге другие процессы будут запланированы для выполнения, но к этому времени ситуация может быть обратной, так что эти процессы также заблокируют ожидание взаимодействия с другими. В результате приложение продвигается со скоростью не более одного межпроцессного взаимодействия за временной отрезок и будет иметь низкую пропускную способность и высокую задержку .
Совместное планирование состоит из двух идей:
Некоторые методы совместного планирования демонстрируют фрагменты процессов, которые не выполняются одновременно с остальной частью совместного планирования. Возникновение этих фрагментов обычно минимизируется этими алгоритмами. Групповое планирование — это более строгий вариант совместного планирования, который полностью запрещает фрагменты.
Исследователи классифицировали три типа совместного планирования: явное совместное планирование , локальное планирование и неявное или динамическое совместное планирование . [1]
Явное совместное планирование требует, чтобы вся обработка происходила одновременно, и обычно реализуется путем глобального планирования по всем процессорам. Конкретный алгоритм известен как групповое планирование .
Локальное совместное планирование позволяет отдельным процессорам планировать обработку независимо друг от друга.
Динамическое (или неявное) совместное планирование — это форма совместного планирования, при которой отдельные процессоры могут планировать обработку независимо, но принимают решения о планировании совместно с другими процессорами.
Термин «coscheduling» был введен Оустерхаутом (1982). Первоначальное определение заключается в том, что рабочий набор процесса должен быть coscheduled (запланирован для одновременного выполнения) для того, чтобы параллельная программа могла выполняться .