запускается другой процесс, то при попытке заполучить мьютекс
второй процесс будет тут же блокирован, и много времени потеряно
не будет.
Чтобы решить данную проблему, в некоторых системах
применяется так называемое «умное» планирование, при котором
процесс, захватывающий спин-блокировку, устанавливает флаг,
демонстрирующий, что он в данный момент обладает спин-
блокировкой. Когда процесс освобождает спин-блокировку, он также
очищает и флаг. Таким образом, планировщик не останавливает
процесс, удерживающий спин-блокировку, а, напротив, дает ему еще
немного времени, чтобы тот завершил выполнение критической
области и отпустил мьютекс.
Другая проблема, играющая важную роль в планировании,
заключается в том факте, что хотя все центральные процессоры
равны, но некоторые центральные процессоры как бы «равнее»
других. В частности, когда процесс А достаточно долго работает на
центральном процессоре K, кэш процессора K будет во многом
заполнен блоками процесса А. Если процесс А должен быть снова
вскоре запущен, его производительность может оказаться выше, если
он будет запущен опять на центральном процессоре K, так как кэш
процессора K может все еще содержать некоторые блоки процесса А.
Наличие блоков в кэше увеличит частоту попаданий в кэш и, таким
образом, увеличит скорость выполнения процесса. Кроме того, буфер
ассоциативной памяти также может содержать «правильные»
страницы памяти, что снизит количество прерываний из-за ошибок
буфера. Некоторые мультипроцессорные ОС учитывают данные
соображения и используют так называемое «родственное
планирование». Основная идея этого метода заключается в
приложении серьезных усилий для того, чтобы процесс был запущен
на том же центральном процессоре, что и в прошлый раз. Один из
способов реализации этого метода состоит в использовании
двухуровневого алгоритмам планирования. В момент создания
процесс назначается конкретному центральному процессору,
например, наименее загруженному в данный момент. Такое
назначение процессов процессорам представляет собой верхний
уровень алгоритма. В результате каждый центральный процессор
получает свой набор процессов. Действительное планирование
процессов находится на нижнем уровне алгоритма. Оно выполняется
Управление процессами и ресурсами в автономных
многопроцессорных вычислительных машинах