En informática , un embudo es una primitiva de sincronización utilizada en el desarrollo del núcleo para proteger los recursos del sistema. Utilizados por primera vez en Digital UNIX como una forma de "canalizar" la ejecución de controladores de dispositivos a un solo procesador, los embudos se utilizan ahora en el núcleo de Mac OS X para serializar el acceso a la parte BSD de XNU . [ 1 ]
Un embudo es un mecanismo de exclusión mutua ( mutex ) que impide que varios hilos accedan a ciertos recursos del kernel simultáneamente. Cada hilo adquiere un embudo al entrar en una sección sincronizada del kernel y lo libera al salir. Si un hilo se bloquea (se queda inactivo) mientras mantiene un embudo, el kernel lo obliga a liberarlo automáticamente, permitiendo así que otros hilos accedan a la sección sincronizada.
Dado que un embudo se libera automáticamente cuando un hilo se bloquea, es necesario asegurarse de que los recursos sincronizados se adquieran nuevamente después de cualquier operación de bloqueo. En concreto, adquirir un embudo puede ser una operación de bloqueo, por lo que si se necesitan varios embudos, deben adquirirse simultáneamente. Esto limita la utilidad de los embudos, ya que aumenta la granularidad del bloqueo cuando se requiere mantener varios embudos a la vez.
En Mac OS X
En OS X 10.4 y versiones posteriores, solo existe un embudo. Antes de la versión 10.4, había dos: uno protegía los recursos de red y el otro, otros recursos del kernel BSD. Un hilo solo podía mantener un embudo a la vez, y mantener ambos provocaba un pánico del kernel . Debido a estas limitaciones y a la falta de granularidad, los embudos se están eliminando gradualmente de Mac OS X. Por ejemplo, el embudo de red se ha sustituido por mecanismos de bloqueo más precisos.
Véase también
Notas
Para consultar las referencias a las fuentes, véase la bibliografía a continuación.
- ↑ Singh 07, págs. 1223-1229
Referencias
- Singh, Amit (2007). Mac OS X Internals, A Systems Approach . Boston, Massachusetts : Addison-Wesley. ISBN 978-0-321-27854-8.
Enlaces externos
- Libro de OSX: Descripción general de la arquitectura xnu. Archivado el 19 de abril de 2019 en Wayback Machine .
- Artículo de BSDCon 2002: Sincronización avanzada en Mac OS X.
- Control de concurrencia
