Kernel: Diferenzas entre revisións

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
Sen resumo de edición
Gallaecio (conversa | contribucións)
Modificacións varias. Orixinalmente ía introducir información doutros artigos, pero esta xa estaba presente no artigo.
Liña 1:
{{Outroshomónimos|Núcleo}}
O '''kernel''' ou '''núcleo''' é o compoñente central dos [[sistema operativo|sistemas operativos]] modernos. É o [[software]] que traballa directamente co [[hardware]] do [[ordenador]]. Como componente básico dun sistema operativo, o kernel fornece a [[capa de abstracción]] de nivel máis baixo para os [[recurso (informática)|recursos]] (especialmente a [[RAM|memoria]], os [[procesador]]es e os [[dispositivos de entrada e saída]]) que logo controla cada [[Programa informático|aplicación]]. Tipicamente, facilita estas operacións aos [[proceso (informática)|procesos]] das aplicacións mediante mecanismos de [[comunicación entre procesos]] e [[chamada ao sistema|chamadas ao sistema]].
 
Existen diferentes tipos de kernels e cada un afronta estas tarefas de modo distinto dependendo do seu deseño e realización. Os [[kernel monolítico|kernels monolíticos]] tentan logralas executando todo o código no mesmo [[espazo de enderezos]] para incrementar a potencia do sistema; os [[microkernel]]smicrokernels executan a maioría dos seus servizos no [[espazo do usuario]], tentando mellorar a xestión e modularidade do código básico. O normal é que os kernels compartan características de ambos os dous modelos.
 
== Tipos de Núcleos ==
<!-- Cómpre que alguén con coñecementos do tema revise este apartado. -->
Hai catro grandes tipos de núcleoskernel:
*'''''Kernel monolítico'''''. Potente kernel que facilita a abstracción do hardware. Existe unha gran variedade de kernels monolíticos.
* Os '''micronúcleos''Microkernel'''''. (en inglés [[microkernel]]) proporcionanProporciona un pequeno conxunto de abstraccionesabstraccións simples do hardware, e usanusa as aplicacións chamadas [[servidor]]esservidores para ofrecer unha maior funcionalidadfuncionalidade.
* Os '''híbridosKernel híbrido'''. Parecido ao (''micronúcleos modificadosmicrokernel'') son moi parecidos aos micronúcleos puros, excepto porque inclúeninclúe código adicional no espazo de núcleo para que se execute máis rapidamente.
* Os '''exonúcleosExokernel'''. nonNon facilitanfacilita ningunha abstracción, pero permitenpermite o uso de [[bibliotecaBiblioteca (programasoftware)|bibliotecas]] que proporcionan unha maior funcionalidadfuncionalidade grazas ao acceso directo ou case directo ao hardware.
 
===''Microkernels''===
Hai catro grandes tipos de núcleos:
O enfoque micronúcleo consiste en definir unha abstracción moi simple sobre o hardware, cun conxunto de primitivas ou chamadas ao sistema que implementan servizos do sistema operativo mínimos, como a [[xestión de fíos]], o [[espazo de direccionamiento]] e a [[comunicación entre procesos]].
* Os '''núcleos monolíticos''' facilitan abstracciones do hardware subyacente realmente potentes e variadas.
* Os '''micronúcleos''' (en inglés [[microkernel]]) proporcionan un pequeno conxunto de abstracciones simples do hardware, e usan as aplicacións chamadas [[servidor]]es para ofrecer maior funcionalidad.
* Os '''híbridos''' (''micronúcleos modificados'') son moi parecidos aos micronúcleos puros, excepto porque inclúen código adicional no espazo de núcleo para que se execute máis rapidamente.
* Os '''exonúcleos''' non facilitan ningunha abstracción, pero permiten o uso de [[biblioteca (programa)|bibliotecas]] que proporcionan maior funcionalidad grazas ao acceso directo ou case directo ao hardware.
 
O obxectivo principal é a separación da implementación dos servizos básicos e dadas políticaregras de funcionamento do sistema. Por exemplo, o proceso de bloqueo de [[entrada/saída|E/S]] pódese implementar cun servidor en espazo de usuario executándose encima do micronúcleomicrokernel. Estes servidores de usuario, usados para xestionar as partes de alto nivel do sistema, son moi modulares e simplifican a estrutura e deseño do núcleo. Se falla un destes servidores, non se colgará o sistema enteiro, e poderase reiniciar este módulo independentemente do resto.
== Micronúcleos ==
 
Algúns exemplos de ''microkernels'' son AIX, BeOS, L4, Mach, [[Minix]], MorphOS, QNX, RADIOS, VSTa e [[GNU Hurd]].
O enfoque micronúcleo consiste en definir unha abstracción moi simple sobre o hardware, cun conxunto de primitivas ou chamadas ao sistema que implementan servizos do sistema operativo mínimos, como a [[xestión de fíos]], o [[espazo de direccionamiento]] e a [[comunicación entre procesos]].
 
Aínda que [[Mach kernel|Mach]] é o micronúcleo''microkernel'' xeneralista máis coñecido, desenvolvéronse outros micronúcleos''microkernels'' con propósitos máis específicos. [[L3 (microkernel)|L3]] foi creadodesenvolveuse para demostrar que os micronúcleos''microkernels'' non son necesariamente lentos. A familia de micronúcleos''microkernels'' L4 é a descendente de L3, e unha das súas últimas implementacionesimplementacións, chamada [[Pistachio (microkernel L4)|Pistachio]], permite executar [[GNU/Linux]] simultaneamentesimultáneamente con outros procesos, en espazos de direccionamiento separados.
O obxectivo principal é a separación da implementación dos servizos básicos e da política de funcionamento do sistema. Por exemplo, o proceso de bloqueo de [[entrada/saída|E/S]] pódese implementar cun servidor en espazo de usuario executándose encima do micronúcleo. Estes servidores de usuario, usados para xestionar as partes de alto nivel do sistema, son moi modulares e simplifican a estrutura e deseño do núcleo. Se falla un destes servidores, non se colgará o sistema enteiro, e poderase reiniciar este módulo independentemente do resto.
 
[[QNX]] é un [[sistema operativo]] que estivo dispoñible desde principios dos [[anos 1980]]80, e ten un deseño de micronúcleo''microkernel'' moi minimalista. Este sistema conseguiu chegar ás metas do paradigma do micronúcleo''microkernel'' con moito máis éxito que Mach. Úsase en situacións en que non se pode permitir que haxa fallos de software, o que inclúe desde brazos robóticos en naves espaciais, ata máquinas que púen cristal onde un pequeno erro podería custar moito diñeiro.
Algúns exemplos de micronúcleos:
* [[AIX]]
* A familia de micronúcleos [[L4 (microkernel)|L4]]
* O micronúcleo [[GNU Mach|Mach]], usado en [[GNU]] [[Hurd]] e en [[Mac VOS X]]
* [[BeOS]]
* [[Minix]]
* [[MorphOS]]
* [[QNX]]
* [[RADIOS]]
* [[VSTa]]
* [[Hurd]]
 
== Núcleos=''Kernels monolíticos en contraposición a micronúcleos ''===
Frecuentemente prefírense os [[núcleo monolítico|núcleos''kernels monolíticos]]'' fronte aos micronúcleos''microkernels'' debido ao menor nivel de complexidade que comporta o tratar con todo o código de control do sistema nun só espazo de direccionamiento. Por exemplo, [[XNU]], o núcleo de Mac VOS X, está baseado no núcleo Mach 3.0 e en FreeBSD, no mesmo espazo de direccionamiento para diminuír a latencia que comporta o deseño de micronúcleo convencional.
 
A principios dos [[anos 1990]]90, os núcleos''kernels monolíticos'' considerábanse obsoletos. O deseño de [[Linux]] como un núcleo''kernel monolítico'' en lugar de como un micronúcleo''microkernel'' foideu olugar temaa dunhaunha famosa disputa entre [[Linus Torvalds]] e [[Andrew Tanenbaum]] (hai dispoñible<ref>Existe [http://www.dina.dk/abraham/Linus_vs_Tanenbaum.html un resumo] endesta [[Linguadisputa] inglesa|inglés]]){{En}}.</ref>. Os argumentos de ambas as partes nesta discusión presentan algunhas motivacións interesantes.
Frecuentemente prefírense os [[núcleo monolítico|núcleos monolíticos]] fronte aos micronúcleos debido ao menor nivel de complexidade que comporta o tratar con todo o código de control do sistema nun só espazo de direccionamiento. Por exemplo, [[XNU]], o núcleo de Mac VOS X, está baseado no núcleo Mach 3.0 e en FreeBSD, no mesmo espazo de direccionamiento para diminuír a latencia que comporta o deseño de micronúcleo convencional.
 
Os núcleos''kernels monolíticos'' adoitan ser máis fáciles de deseñar correctamente, e polo tanto poden crecer máis rapidamente que un sistema baseado ennun micronúcleo''microkernel'', pero hai casos de éxito en ambos os dous bandos. Os micronúcleos''microkernels'' adoitan usarse en robótica ''embebida'' ou computadoras médicas, xa que a maioría dos compoñentes do sistema operativo residen no seu propio espazo de memoria privado e protexido. Isto non sería posible cos núcleos monolíticos, nin sequera cos modernos que permiten cargar módulos.
A principios dos [[anos 1990]], os núcleos monolíticos considerábanse obsoletos. O deseño de [[Linux]] como un núcleo monolítico en lugar de como un micronúcleo foi o tema dunha famosa disputa entre [[Linus Torvalds]] e [[Andrew Tanenbaum]] (hai dispoñible [http://www.dina.dk/abraham/Linus_vs_Tanenbaum.html un resumo] en [[Lingua inglesa|inglés]]). Os argumentos de ambas as partes nesta discusión presentan algunhas motivacións interesantes.
 
==Notas==
Os núcleos monolíticos adoitan ser máis fáciles de deseñar correctamente, e polo tanto poden crecer máis rapidamente que un sistema baseado en micronúcleo, pero hai casos de éxito en ambos os bandos. Os micronúcleos adoitan usarse en robótica embebida ou computadoras médicas, xa que a maioría dos compoñentes do sistema operativo residen no seu propio espazo de memoria privado e protexido. Isto non sería posible cos núcleos monolíticos, nin sequera cos modernos que permiten cargar módulos.
{{Listaref}}
 
Aínda que [[Mach kernel|Mach]] é o micronúcleo xeneralista máis coñecido, desenvolvéronse outros micronúcleos con propósitos máis específicos. [[L3 (microkernel)|L3]] foi creado para demostrar que os micronúcleos non son necesariamente lentos. A familia de micronúcleos L4 é a descendente de L3, e unha das súas últimas implementaciones, chamada [[Pistachio (microkernel L4)|Pistachio]], permite executar Linux simultaneamente con outros procesos, en espazos de direccionamiento separados.
 
[[QNX]] é un sistema operativo que estivo dispoñible desde principios dos [[anos 1980]], e ten un deseño de micronúcleo moi minimalista. Este sistema conseguiu chegar ás metas do paradigma do micronúcleo con moito máis éxito que Mach. Úsase en situacións en que non se pode permitir que haxa fallos de software, o que inclúe desde brazos robóticos en naves espaciais, ata máquinas que púen cristal onde un pequeno erro podería custar moito diñeiro.
 
== Véxase tamén ==
* [[Microkernel]]
* [[Kernel Monolítico]]
* [[Kernel Híbrido]]
{{Link FA|fr}}