stringtranslate.com

Núcleo híbrido

Estructura de sistemas operativos basados ​​en núcleo monolítico, micronúcleo y núcleo híbrido

Un kernel híbrido es una arquitectura de kernel de sistema operativo que intenta combinar aspectos y beneficios de las arquitecturas de microkernel y kernel monolítico utilizadas en los sistemas operativos. [1] [2] [ ¿fuente no confiable? ]

Descripción general

Las categorías tradicionales de núcleos son los núcleos monolíticos y los micronúcleos (los nanonúcleos y exonúcleos se consideran versiones más extremas de los micronúcleos). La categoría "híbrida" es controvertida, debido a la similitud de los núcleos híbridos y los núcleos monolíticos comunes; Linus Torvalds ha descartado el término como simple marketing. [3]

La idea detrás de un núcleo híbrido es tener una estructura de núcleo similar a la de un microkernel, pero implementar esa estructura a la manera de un núcleo monolítico. A diferencia de un microkernel, todos (o casi todos) los servicios del sistema operativo en un núcleo híbrido todavía están en el espacio del núcleo . No existen ninguno de los beneficios de confiabilidad de tener servicios en el espacio del usuario , como con un microkernel . Sin embargo, al igual que con un núcleo monolítico ordinario , no hay ninguna de las sobrecargas de rendimiento para el paso de mensajes y el cambio de contexto entre el modo kernel y el modo de usuario que normalmente vienen con un microkernel.

Ejemplos

Núcleo NT

La arquitectura de la familia del sistema operativo Windows NT consta de dos capas ( modo de usuario y modo kernel ), con muchos módulos diferentes dentro de ambas capas.

Un ejemplo destacado de un núcleo híbrido es el núcleo de Microsoft Windows NT , que impulsa todos los sistemas operativos de la familia Windows NT , hasta Windows 11 y Windows Server 2022 inclusive , y que impulsa Windows Phone 8 , Windows Phone 8.1 y las consolas Xbox One y Xbox Series .

Windows NT fue el primer sistema operativo Windows basado en un núcleo híbrido [ cita requerida ] . El núcleo híbrido fue diseñado como un microkernel modificado , influenciado por el microkernel Mach desarrollado por Richard Rashid en la Universidad Carnegie Mellon, pero sin cumplir todos los criterios de un microkernel puro. Windows basado en NT se clasifica como un núcleo híbrido (o un macrokernel [4] ) en lugar de un núcleo monolítico porque los subsistemas de emulación se ejecutan en procesos de servidor en modo usuario, en lugar de en modo kernel como en un núcleo monolítico, y además debido a la gran cantidad de objetivos de diseño que se asemejan a los objetivos de diseño de Mach (en particular, la separación de las personalidades del sistema operativo de un diseño de núcleo general). Por el contrario, la razón por la que NT no es un sistema de microkernel es porque la mayoría de los componentes del sistema se ejecutan en el mismo espacio de direcciones que el kernel, como sería el caso con un diseño monolítico (en un diseño monolítico tradicional, no habría un microkernel per se, pero el kernel implementaría una funcionalidad ampliamente similar a los subsistemas de microkernel y modo kernel de NT).

La personalidad principal del sistema operativo en Windows es la API de Windows , que siempre está presente. El subsistema de emulación que implementa la personalidad de Windows se denomina Subsistema de tiempo de ejecución de cliente/servidor (csrss.exe). En las versiones de NT anteriores a la 4.0, este proceso del subsistema también contenía el administrador de ventanas, la interfaz del dispositivo gráfico y los controladores del dispositivo gráfico. Sin embargo, por razones de rendimiento, en la versión 4.0 y posteriores, estos módulos (que a menudo se implementan en modo de usuario incluso en sistemas monolíticos, especialmente aquellos diseñados sin soporte gráfico interno) se ejecutan como un subsistema en modo kernel. [4]

Las aplicaciones que se ejecutan en NT se escriben en una de las personalidades del SO (normalmente la API de Windows), y no en la API nativa de NT, para la que no hay documentación disponible públicamente (con la excepción de las rutinas utilizadas en el desarrollo de controladores de dispositivos). Una personalidad del SO se implementa mediante un conjunto de DLL de modo de usuario (consulte la Biblioteca de vínculos dinámicos ), que se asignan a los espacios de direcciones de los procesos de aplicación según sea necesario, junto con un proceso de servidor del subsistema de emulación (como se describió anteriormente). Las aplicaciones acceden a los servicios del sistema llamando a las DLL de personalidad del SO asignadas a sus espacios de direcciones, que a su vez llaman a la biblioteca de tiempo de ejecución de NT (ntdll.dll), también asignada al espacio de direcciones del proceso. La biblioteca de tiempo de ejecución de NT atiende estas solicitudes entrando en el modo kernel para llamar a rutinas ejecutivas de modo kernel o hacer llamadas a procedimientos locales (LPC) a los procesos de servidor del subsistema de modo usuario adecuados, que a su vez utilizan la API de NT para comunicarse con los procesos de aplicación, los subsistemas de modo kernel y entre sí. [5]

El núcleo XNU

Núcleo XNU

XNU es el núcleo que Apple Inc. adquirió y desarrolló para su uso en los sistemas operativos macOS , iOS , watchOS y tvOS y lo lanzó como software libre y de código abierto como parte del sistema operativo Darwin . XNU es un acrónimo de X is Not Unix . [6]

Desarrollado originalmente por NeXT para el sistema operativo NeXTSTEP , XNU era un kernel híbrido que combinaba la versión 2.5 del kernel Mach con componentes de 4.3BSD y una API orientada a objetos para escribir controladores llamada Driver Kit.

Después de que Apple adquiriera NeXT, el componente Mach se actualizó a OSFMK 7.3, [7] que es un microkernel. [8] Apple utiliza un OSFMK 7.3 muy modificado que funciona como un kernel híbrido con partes de FreeBSD incluidas. [7] (OSFMK 7.3 incluye código aplicable del kernel Mach 4 de la Universidad de Utah y código aplicable de las muchas variantes de Mach 3.0 que se bifurcaron del kernel Mach 3.0 original de la Universidad Carnegie Mellon). Los componentes BSD se actualizaron con código del proyecto FreeBSD y el Driver Kit se reemplazó con una API de C++ para escribir controladores llamada I/O Kit [ cita requerida ] .

Descripción

Al igual que otros núcleos modernos , XNU es un híbrido que contiene características tanto de los núcleos monolíticos como de los micronúcleos , intentando hacer el mejor uso de ambas tecnologías, como la capacidad de paso de mensajes de los micronúcleos que permite una mayor modularidad [ cita requerida ] y que porciones más grandes del sistema operativo se beneficien de la memoria protegida , [ cita requerida ] además de conservar la velocidad de los núcleos monolíticos para ciertas tareas críticas.

Otros

Véase también

Notas

  1. ^ "Núcleo híbrido - Wiki OSDev". wiki.osdev.org . Consultado el 11 de enero de 2021 .
  2. ^ "¿Qué es el núcleo híbrido? - Definición de Techopedia". Techopedia.com . 22 de agosto de 2011 . Consultado el 11 de enero de 2021 .
  3. ^ "Linus Torvalds". En cuanto a todo el asunto del "núcleo híbrido", es sólo marketing. Es "Oh, esos micronúcleos tenían buenas relaciones públicas, ¿cómo podemos intentar conseguir buenas relaciones públicas para nuestro núcleo funcional? Oh, ya sé, usemos un nombre atractivo e intentemos dar a entender que tiene todas las ventajas de relaciones públicas que tiene ese otro sistema.
  4. ^ ab "Libro blanco sobre el usuario y GDI en modo kernel de MS Windows NT". Microsoft Corporation. 2007. Consultado el 24 de agosto de 2022 .
  5. ^ Probert, Dave (2005). "Descripción general de la arquitectura de Windows". Uso de proyectos basados ​​en API internas de NT para enseñar principios del sistema operativo . Microsoft Research/Asia - Beijing. Archivado desde el original el 28 de noviembre de 2007. Consultado el 1 de marzo de 2007 .
  6. ^ "Portar aplicaciones UNIX/Linux a OS X: glosario". Apple Computer. 2005. Consultado el 16 de junio de 2017 .
  7. ^ por Jim Magee. WWDC 2000 Sesión 106 - Mac OS X: Kernel. 14 minutos.
  8. ^ Douglas M. Wells (1994). Un entorno de sistema operativo confiable, escalable y en tiempo real (PDF) . Conferencia sobre tecnologías y aplicaciones de doble uso del IEEE de 1994. S2CID  5205380. Archivado desde el original (PDF) el 22 de agosto de 2017.
  9. ^ Drew Major; Greg Minshall; Kyle Powell. "Una descripción general del sistema operativo NetWare".
  10. ^ "OS/2 Kernel" . Consultado el 4 de septiembre de 2020 .

Referencias