spl (abreviatura de establecer nivel de prioridad , después de la instrucción del ensamblador PDP-11 del mismo nombre [1] ) es el nombre de una colección de rutinas o macros del kernel de Unix que se utilizan para cambiar el nivel de prioridad de interrupción . [2] [3] Esto fue históricamente necesario para sincronizar secciones críticas del código del kernel que no deberían ser interrumpidas. [4] Las variantes más recientes de Unix que admiten el multiprocesamiento simétrico ahora utilizan principalmente mutexpara este propósito, que es una solución más general, para que múltiples procesadores puedan ejecutar el código del kernel al mismo tiempo. [5] [1]
En versiones anteriores de PDP-11 de Unix, había ocho de estas rutinas, que iban desde spl0
hasta spl7
, cada una correspondiente a un nivel de prioridad de interrupción PDP-11, [3] además de splx
, que restaura un nivel de prioridad anterior (devuelto por uno de los otras rutinas). [2] En BSD Unix y sus derivados, éstos se llaman splhigh
, splserial
, splsched
, splclock
, splstatclock
, splvm
, spltty
, splsofttty
, splnet
, splbio
, splsoftnet
, splsoftclock
, spllowersoftclock
, spl0
, y splx
. [2]
En marzo de 2019 [actualizar], la familia spl de primitivas todavía se usa mucho en OpenBSD [6] y NetBSD , [7] lo que se evidencia por la gran cantidad de llamadas splnet()
dentro del código de red; [6] [7] mientras que FreeBSD y DragonFly BSD usan conceptos más modernos; por ejemplo, en DragonFly, se pueden usar tokens LWKT en lugar de spl.
Ver también
Referencias
- ^ a b Lehey, Greg (2001), Mejorando la implementación de FreeBSD SMP , consultado el 11 de mayo de 2018
- ^ a b c "spl (9) - Páginas de manual de OpenBSD" . Consultado el 11 de mayo de 2018 .
- ^ a b Leones, John (1976). Comentario de los Leones sobre UNIX 6ª edición, con código fuente . pag. 43.
- ^ Leones, John (1976). Comentario de los Leones sobre UNIX 6ª edición, con código fuente . pag. 41.
- ^ McKusick, Marshall Kirk; et al. (autores) (2004). El diseño e implementación del sistema operativo FreeBSD . Addison-Wesley. pag. 93.
- ^ a b "/sys/net/if.c" . Referencia cruzada BSD . OpenBSD . 2019-03-01 . Consultado el 5 de marzo de 2019 .
s = splnet ();
- ^ a b "/sys/net/if.c" . Referencia cruzada BSD . NetBSD . 2019-03-01 . Consultado el 5 de marzo de 2019 .
s = splnet ();