Установка граничного приоритета
Установка граничного приоритета
int pthread_mutexattr_setprioceiling(
pthread_mutexattr_t* attr, int prioceiling);
int pthread_mutexattr_getprioceiling(
const pthread_mutexattr_t* attr, int* prioceiling);
Эти функции записывают/читают значение приоритета, которое будет присваиваться потоку, захватившему мьютекс, если поле protocol структуры pthread_mutexattr_t установлено в значение PTHREAD_PRIO_PROTECT.
Этот параметр используется для реализации протокола граничного приоритета (Priority Ceiling Protocol), предлагающего альтернативный вариант защиты от инверсии приоритетов там, где наследование приоритетов может быть неэффективно или нежелательно.
Примечание
Как известно, классический случай инверсии приоритетов может возникать, когда более двух потоков разного приоритета конкурируют и разделяют один общий ресурс. В этой ситуации возможно такое стечение обстоятельств, когда низкоприоритетный поток захватывает ресурс, но позже вытесняется потоком среднего приоритета, а поток с высоким приоритетом блокируется в ожидании освобождения ресурса, захваченного низкоприоритетным потоком. Эта ситуация детально описана в соответствующей главе [4], где приводится сравнительный анализ поведения различных ОС в этой ситуации. Классическим решением этой проблемы является протокол наследования приоритетов, когда ОС распознает ситуацию подобного блокирования и автоматически повышает приоритет вытесненного потока (низкого приоритета) до уровня наивысшего приоритета из числа потоков, ожидающих освобождения ресурса. В результате поток с низким приоритетом не вытесняется, как надлежало бы в соответствии с его изначальным приоритетом, а быстро проходит критическую секцию (освобождая ее), после чего его приоритет возвращается на исходный уровень.
В ряде случаев наследование приоритетов может оказаться не самым оптимальным решением. Примером здесь может служить ситуация, когда один высокоприоритетный поток разделяет много ресурсов с низкоприоритетными потоками — по одному ресурсу на каждый поток. В такой ситуации может возникнуть положение, когда много низкоприоритетных потоков (вытесненных) выстроятся перед высокоприоритетным. Но тогда длинный ряд последовательных операций вытеснения («поштучно») и наследования приоритетов блокирующих потоков может привести к тому, что не хватит времени до окончания критического срока выполнения потока высокого приоритета, пока ОС будет анализировать ситуацию и последовательно проводить протокол наследования приоритетов.
Именно для таких ситуаций и предназначен протокол граничного приоритета. В соответствии с этим протоколом примитив синхронизации (в нашем рассмотрении это мьютекс) наделяется собственным фиксированным приоритетом, а приоритет любого потока, захватившего этот мьютекс, поднимается до предустановленного граничного уровня приоритета мьютекса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Установка GCC-3.2
Установка GCC-3.2 Приблизительное время компиляции: 9.48 SBU Необходимое дисковое пространство: 326 MBИнсталляция GCCПеред установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.Этот пакет известен своим нестабильным поведением при
Установка Sed-3.02
Установка Sed-3.02 Приблизительное время компиляции: 0.09 SBU Необходимое дисковое пространство: 2 MBИнсталляция SedДля инсталляции Sed выполните:CPPFLAGS=-Dre_max_failures=re_max_failures2 ====./configure –prefix=$LFS/static && make LDFLAGS=-static && make installСодержимое SedПоследняя проверка: версия
Установка Tar-1.13
Установка Tar-1.13 Приблизительное время компиляции: 0.25 SBU Необходимое дисковое пространство: 10 MBИнсталляция TarДля того чтобы использовать tar с файлами формата bzip2 напрямую, примените патч с FTP-сервера LFS. Этот патч добавляет опцию -j, которая работает с командой tar также как
Установка M4-1.4
Установка M4-1.4 Приблизительное время компиляции: 0.08 SBU Необходимое дисковое пространство: 3 MBИнсталляция M4Для инсталляции M4 выполните:./configure –prefix=/usr && make && make installСодержимое M4Последняя проверка: версия 1.4.Программыm4Описанияm4m4 – макропроцессор. Копирует из ввода
Установка Ed-0.2
Установка Ed-0.2 Приблизительное время компиляции: 0.06 SBU Необходимое дисковое пространство: 3 MBИнсталляция EdПеред установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.Вряд ли вы будете использовать Ed. Мы его устанавливаем
Установка Tar-1.13
Установка Tar-1.13 Приблизительное время компиляции: 0.26 SBU Необходимое дисковое пространство: 6 MBИнсталляция TarЕсли вы хотите иметь возможность распаковывать файлы bzip2 программой tar напрямую, примените патч с FTP-сервера LFS. Этот патч добавляет возможность использования опции
Установка
Установка При подготовке и установке нового дистрибутива следует выполнять все обычные меры предосторожности. Экспресс-установка (Express Installation) удалит с жесткого диска все существующие операционные системы. Чтобы попробовать поработать с AsteriskNOW, но сохранить при этом
12.5.1. Установка SSL
12.5.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности в Интернет. Этот метод поддерживает несколько способов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне сервера. SSL
16.10.1. Установка SSL
16.10.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности передачи данных. Этот метод поддерживает несколько методов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне сервера,
2.3.2. Установка в Red Hat 7.1
2.3.2. Установка в Red Hat 7.1 RedHAt 7.1, с установленным ядром 2.4.x уже включает предустановленные netfilter и iptables. Однако, для сохранения обратной совместимости с предыдущими дистрибутивами, по умолчанию работает пакет ipchains. Сейчас мы коротко разберем – как удалить ipchains и запустить
Получение приоритета
Получение приоритета В более сложных выражениях, включающих несколько знаков операций, VBA нужно знать, какие операции выполнять первыми, вторыми, а какие третьими. В выражении intA + intB * intC два знака операций: + (операция сложения) и * (операция умножения). На русском это
Установка PGP.
Установка PGP. Версия PGP 2.2 для MS-DOS распространяется в виде архивного файла с именем PGP22.ZIP (каждая новая версия будет иметь имя вида PGPxy.ZIP для PGP с номером версии x.y). Этот архив нужно распаковать с помощью утилиты PKUNZIP для MS-DOS (распространяемой как shareware) или утилиты для Unix unzip.
Установка
Установка Загрузите файл joomlasolutions1.0.mxp(http://developer.joomla.org/sf/frs/do/viewRelease/projects.joomlasolutions/frs.dreamweaverjoomlatemplateextejoomladreamweaverext10). Запустите Dreamweaver, в главном меню программы выберите Команды | Управление расширениями (Commands | Manage Extensions). На экране появится Менеджер расширений Макромедиа (Macromedia
Установка
Установка Установка спутниковой антенны – один из самых сложных этапов в создании системы спутникового телевидения на компьютере. Обычно этим занимаются специалисты, которые берут соответствующую плату за свой труд. Однако читатели этой книги наверняка хотят делать
Режимы приоритета выдержки и диафрагмы
Режимы приоритета выдержки и диафрагмы Практически любые сюжетные режимы можно смоделировать соответствующей установкой выдержки и диафрагмы, но обратное невозможно. Если знать, какую выдержку с диафрагмой и светочувствительность следует установить, вполне можно