Articulo de referencia

Gran cerradura

En los sistemas operativos , un bloqueo gigante , también conocido como big-lock o kernel-lock , es un bloqueo que se puede utilizar en el núcleo para proporcionar el control de...

En los sistemas operativos , un bloqueo gigante , también conocido como big-lock o kernel-lock , es un bloqueo que se puede utilizar en el núcleo para proporcionar el control de concurrencia requerido por los sistemas de multiprocesamiento simétrico (SMP).

Un bloqueo gigante es un bloqueo global único que se mantiene activo cuando un hilo entra en el espacio del kernel y se libera cuando regresa al espacio de usuario ; una llamada al sistema es el ejemplo arquetípico. En este modelo, los hilos en el espacio de usuario pueden ejecutarse concurrentemente en cualquier procesador o núcleo disponible , pero no puede ejecutarse más de un hilo en el espacio del kernel; cualquier otro hilo que intente entrar en el espacio del kernel se ve obligado a esperar. En otras palabras, el bloqueo gigante elimina toda concurrencia en el espacio del kernel.

Al aislar el núcleo de la concurrencia, muchas partes del núcleo ya no necesitan modificarse para admitir SMP. Sin embargo, como en los sistemas SMP de bloqueo gigante solo un procesador puede ejecutar el código del núcleo a la vez, el rendimiento para las aplicaciones que pasan una cantidad significativa de tiempo en el núcleo no mejora mucho. [ 1 ] Por consiguiente, el enfoque de bloqueo gigante se considera comúnmente un medio preliminar para incorporar soporte SMP a un sistema operativo, que solo ofrece beneficios en el espacio de usuario. La mayoría de los sistemas operativos modernos utilizan un enfoque de bloqueo de grano fino .

Linux

El kernel de Linux tenía un bloqueo de kernel grande (BKL) desde la introducción de SMP, hasta que Arnd Bergmann lo eliminó en 2011 en la versión 2.6.39 del kernel, [ 2 ] [ 3 ] y los usos restantes del bloqueo grande se eliminaron o reemplazaron por bloqueos de grano más fino. Por lo tanto, las distribuciones de Linux CentOS 7 o superior , Debian 7 (Wheezy) y Ubuntu 11.10 no utilizan BKL.

A partir de septiembre de 2022 El kernel de Linux todavía tiene console_lock y rtnl_lock , que a veces se denominan BKL, y su eliminación está en curso. [ 4 ] [ 5 ] [ 6 ] [ 7 ]

BSD

A partir de julio de 2019 OpenBSD y NetBSD siguen utilizando la familia de primitivas spl para facilitar la sincronización de secciones críticas dentro del núcleo, [ 8 ] [ 9 ] [ 10 ] lo que significa que muchas llamadas al sistema pueden inhibir las capacidades SMP del sistema y, según Matthew Dillon , las capacidades SMP de estos dos sistemas no pueden considerarse modernas. [ 11 ]

FreeBSD todavía tiene soporte para el mutex gigante , [ 12 ] que proporciona una semántica similar a la antigua interfaz spl, pero los componentes centrales críticos para el rendimiento se han convertido hace tiempo para usar bloqueos de grano más fino. [ 1 ]

Según Matthew Dillon, de entre los sistemas operativos de propósito general de software de código abierto , solo Linux , DragonFly BSD y FreeBSD tienen soporte SMP moderno, mientras que OpenBSD y NetBSD se quedan atrás. [ 11 ]

La Fundación NetBSD considera que el soporte SMP moderno es vital para la dirección del Proyecto NetBSD y ha ofrecido subvenciones a desarrolladores dispuestos a trabajar en mejoras de SMP; NPF (cortafuegos) fue uno de los proyectos que surgieron como resultado de estos incentivos financieros, pero aún podrían ser necesarias mejoras adicionales en la pila de red central. [ 9 ] [ 13 ]

Véase también

Referencias

  1. 1 2 Robert NM Watson (25-11-2007). "Antes y después bajo el candado gigante" . FreeBSD-Hackers@ (lista de correo). FreeBSD . Recuperado el 25-07-2019 .
  2. "git.kernel.org: BKL: eso es todo, amigos " . Consultado el 28 de diciembre de 2019 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  3. https://kernelnewbies.org/BigKernelLock – BigKernelLock en kernelnewbies.org
  4. PARCHE - fbcon: Hacer de fbcon una dependencia de compilación para fbdev . Daniel Vetter. 28 de junio de 2017
  5. Thomas Gleixner (11 de septiembre de 2022). " [ parche RFC 19/29 ] printk: Agregar infraestructura básica para consolas que no son BKL" . linux-kernel (Lista de correo).
  6. Florian Westphal (noviembre de 2017). rtnl mutex, el gran bloqueo del kernel de la pila de red (PDF) . netdev 2.2. Seúl.
  7. Kuniyuki Iwashima (18 de septiembre de 2024). Por Netns RTNL . Conferencia Linux Plumbers 2024. Viena, Austria.
  8. "/sys/net/if.c" . Referencia cruzada de BSD . OpenBSD . 30-06-2019 . Consultado el 25-07-2019 . s = splnet();
  9. 1 2 "/sys/net/if.c" . Referencia cruzada de BSD . NetBSD . 2019-07-25 . Recuperado el 2019-07-25 . s = splnet();
  10. "splx(9) — modifica el nivel de prioridad de interrupción del sistema" . NetBSD , OpenBSD . Consultado el 25 de julio de 2019 .
  11. 1 2 Matthew Dillon (22/07/2019). "Actualización del proyecto DragonFlyBSD: actualización de colo, tendencias futuras" . users@ (Lista de correo). DragonFly BSD . Recuperado el 25/07/2019 .
  12. Julian Elischer (2007). "locking(9) — primitivas de sincronización del kernel" . Referencia cruzada de BSD . FreeBSD . Consultado el 25 de julio de 2019. Giant es un mutex especial que se utiliza para proteger las estructuras de datos que aún no tienen sus propios bloqueos. Dado que proporciona una semántica similar a la antigua interfaz spl(9), …
    • "Bloqueo: primitivas de sincronización del kernel". Páginas del manual de FreeBSD .
  13. "Redes SMP (también conocidas como eliminar el gran bloqueo de red)" . NetBSD . 14 de febrero de 2013. Archivado del original el 25 de julio de 2019. Consultado el 26 de marzo de 2023 .