spl (abreviatura de set priority level , por la instrucción de ensamblador PDP-11 del mismo nombre [ 1 ] ) es el nombre de una colección de rutinas o macros del núcleo Unix que se utilizan para cambiar el nivel de prioridad de interrupción . [ 2 ] [ 3 ] Históricamente, esto era necesario para sincronizar secciones críticas del código del núcleo que no debían interrumpirse. [ 4 ] Las variantes más recientes de Unix que admiten el multiprocesamiento simétrico ahora utilizan principalmente mutexes para este propósito, que es una solución más general, de modo que varios procesadores pueden ejecutar código del núcleo al mismo tiempo. [ 5 ] [ 1 ]
En versiones anteriores de Unix para PDP-11, había ocho de estas rutinas, que iban desde spl0hasta spl7, cada una correspondiente a un nivel de prioridad de interrupción de PDP-11, [ 3 ] además de splx, que restaura un nivel de prioridad anterior (devuelto por una de las otras rutinas). [ 2 ] En BSD Unix y sus derivados, estas se llaman splhigh, splserial, splsched, splclock, splstatclock, splvm, spltty, splsofttty, splnet, splbio, splsoftnet, splsoftclock, spllowersoftclock, spl0, y splx. [ 2 ]
A fecha de marzo de 2019 , la familia de primitivas spl todavía se usa mucho en OpenBSD [ 6 ] y NetBSD , [ 7 ] lo cual se evidencia por las abundantes llamadas a splnet()dentro del código de red; [ 6 ] [ 7 ] mientras que FreeBSD y DragonFly BSD usan conceptos más modernos; por ejemplo, en DragonFly, los tokens LWKT se pueden usar en lugar de spl.
Véase también
Referencias
- 1 2 Lehey, Greg (2001), Mejora de la implementación SMP de FreeBSD , consultado el 11 de mayo de 2018
- 1 2 3 "spl(9) - Páginas del manual de OpenBSD" . Consultado el 11 de mayo de 2018 .
- 1 2 Lions, John (1976). Comentario de Lions sobre UNIX, 6.ª edición, con código fuente . pág. 43.
- ↑ Lions, John (1976). Comentario de Lions sobre UNIX, 6.ª edición, con código fuente . pág. 41.
- ↑ McKusick, Marshall Kirk; et al. (autores) (2004). El diseño e implementación del sistema operativo FreeBSD . Addison-Wesley. pág. 93.
- 1 2 "/sys/net/if.c" . Referencia cruzada de BSD . OpenBSD . 2019-03-01 . Recuperado el 2019-03-05 .
s = splnet();
- 1 2 "/sys/net/if.c" . Referencia cruzada de BSD . NetBSD . 2019-03-01 . Recuperado el 2019-03-05 .
s = splnet();
- Interrumpe
- Unix
- Stubs de Unix