spl (Unix)

Команды управления приоритетом прерываний Unix

spl (сокращение от set priority level , по названию ассемблерной инструкции PDP-11 с тем же названием [1] ) — это название набора подпрограмм или макросов ядра Unix, используемых для изменения уровня приоритета прерываний . [2] [3] Исторически это было необходимо для синхронизации критических разделов кода ядра, которые не должны прерываться. [4] Более новые варианты Unix, поддерживающие симметричную многопроцессорную обработку, теперь в основном используют для этой цели мьютексы , что является более общим решением, так что несколько процессоров могут выполнять код ядра одновременно. [5] [1]

В более старых версиях Unix для PDP-11 таких процедур было восемь, от spl0до spl7, каждая из которых соответствовала одному уровню приоритета прерывания PDP-11, [3] в дополнение к splx, которая восстанавливает предыдущий уровень приоритета (возвращаемый одной из других процедур). [2] В BSD Unix и его производных они называются splhigh, splserial, splsched, splclock, splstatclock, splvm, spltty, splsofttty, splnet, splbio, splsoftnet, splsoftclock, spllowersoftclock, spl0, и splx. [2]

По состоянию на март 2019 года [обновлять]семейство примитивов spl по-прежнему активно используется в OpenBSD [6] и NetBSD [7] , о чем свидетельствуют многочисленные вызовы splnet()в сетевом коде; [6] [7] тогда как FreeBSD и DragonFly BSD используют более современные концепции; например, в DragonFly вместо spl могут использоваться токены LWKT .

Смотрите также

Ссылки

  1. ^ ab Lehey, Greg (2001), Улучшение реализации FreeBSD SMP , получено 11 мая 2018 г.
  2. ^ abc "spl(9) - Страницы руководства OpenBSD" . Получено 11 мая 2018 г. .
  3. ^ ab Lions, John (1976). Комментарий Lions к UNIX 6-е издание, с исходным кодом . стр. 43.
  4. Lions, John (1976). Комментарий Lions к UNIX 6-го издания с исходным кодом . стр. 41.
  5. ^ МакКьюсик, Маршалл Кирк и др. (авторы) (2004). Проектирование и реализация операционной системы FreeBSD . Addison-Wesley. стр. 93.
  6. ^ ab "/sys/net/if.c". Перекрестная ссылка BSD . OpenBSD . 2019-03-01 . Получено 2019-03-05 . s = splnet();
  7. ^ ab "/sys/net/if.c". Перекрестная ссылка BSD . NetBSD . 2019-03-01 . Получено 2019-03-05 . s = splnet();


Взято с "https://en.wikipedia.org/w/index.php?title=Spl_(Unix)&oldid=1178760214"