SPL

spl (скорочення від set priority leve) — це назва для набору підпрограм або макросів ядра Unix, що використовуються для зміни рівня пріоритету переривань. Історично це було необхідно для синхронізації критичних розділів коду ядра, які не слід переривати. Новіші варіанти Unix, які підтримують симетричну багатопроцесорність, тепер здебільшого використовують для цієї мети мьютекси, що є більш загальним рішенням, тому кілька процесорів можуть виконувати код ядра одночасно.

У старих версіях Unix PDP-11 було вісім таких підпрограм, починаючи від spl0 до spl7, кожна з яких відповідала одному рівню пріоритету переривань PDP-11 на додаток до splx, який відновлює попередній рівень пріоритету). У BSD Unix і його похідних вони називаються splhigh, splserial, splsched, splclock, splstatclock, splvm, spltty, splsofttty, splnet, splbio, splsoftnet, splsoftclock, spllowersoftclock, spl0 і splx.

Станом на березень 2019 року сімейство примітивів spl все ще активно використовується в OpenBSD та NetBSD, про що свідчить велика кількість викликів splnet() у мережевому коді; тоді як FreeBSD і DragonFly BSD використовують більш сучасні концепції; наприклад, у DragonFly токени LWKT можуть використовуватися замість spl.

Посилання

  1. Lehey, Greg (2001), Improving the FreeBSD SMP implementation, retrieved 11 May 2018
  2. "spl(9) - OpenBSD manual pages". Retrieved 11 May 2018.
  3. Lions, John (1976). Lions' Commentary on UNIX 6th Edition, with Source Code. p. 41, p. 43
  4. McKusick, Marshall Kirk; et al. (authors) (2004). The Design and Implementation of the FreeBSD Operating System. Addison-Wesley.
  5. "/sys/net/if.c". BSD Cross Reference. OpenBSD. 2019-03-01. Retrieved 2019-03-05. s = splnet();
  6. "/sys/net/if.c". BSD Cross Reference. NetBSD. 2019-03-01. Retrieved 2019-03-05. s = splnet();
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.