Saltar ao contido

Kernel

Na Galipedia, a Wikipedia en galego.
Conexións do kernel cas aplicacións de software e hardware do computador.

Okernelou núcleo é osoftwareque actúa como compoñente central dossistema operativos,e que ten capacidade de control de todas as compoñentes do sistema.[1]É o primeiro elemento que se inicia no arrinque dohardwaredocomputador,que xestiona o resto de procesos, e o que traballa directamente con estes. Como compoñente básico dun sistema operativo, o kernel fornece a capa de abstracción de nivel máis baixa para os recursos (especialmente amemoria,os procesadores e os dispositivos de entrada e saída) que logo controla cadaaplicación.Tipicamente, facilita estas operacións aos procesos das aplicacións mediante mecanismos de comunicación entre procesos e 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 kernels monolíticos tentan logralas executando todo o código no mesmo espazo de enderezos para incrementar a potencia do sistema; os microkernels 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.

Hai catro grandes tipos de kernel:

  • Kernel monolítico.Potente kernel que facilita a abstracción do hardware. Existe unha gran variedade de kernels monolíticos.
  • Microkernel.Proporciona un pequeno conxunto de abstraccións simples do hardware, e usa as aplicacións chamadas servidores para ofrecer unha maior funcionalidade.
  • Kernel híbrido.Parecido aomicrokernel,excepto porque inclúe código adicional no espazo de núcleo para que se execute máis rapidamente.
  • Exokernel.Non facilita ningunha abstracción, pero permite o uso debibliotecasque proporcionan unha maior funcionalidade grazas ao acceso directo ou case directo ao hardware.

Microkernels

[editar|editar a fonte]

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.

O obxectivo principal é a separación da implementación dos servizos básicos e das regras de funcionamento do sistema. Por exemplo, o proceso de bloqueo de E/S pódese implementar cun servidor en espazo de usuario executándose encima do microkernel. 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.

Algúns exemplos demicrokernelsson AIX, BeOS, L4, Mach,Minix,MorphOS, QNX, RADIOS, VSTa eGNU Hurd.

Aínda que Mach é omicrokernelxeneralista máis coñecido, desenvolvéronse outrosmicrokernelscon propósitos máis específicos. L3 desenvolveuse para demostrar que osmicrokernelsnon son necesariamente lentos. A familia demicrokernelsL4 é a descendente de L3, e unha das súas últimas implementacións, chamada Pistachio, permite executarGNU/Linuxsimultaneamente con outros procesos, en espazos de direccionamiento separados.

QNXé unsistema operativoque estivo dispoñible desde principios dos 80, e ten un deseño demicrokernelmoi minimalista. Este sistema conseguiu chegar ás metas do paradigma domicrokernelcon 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.

Kernels monolíticos

[editar|editar a fonte]

Frecuentemente prefírense oskernels monolíticosfronte aosmicrokernelsdebido ao menor nivel de complexidade que comporta o tratar con todo o código de control do sistema nun só espazo de direccionamiento.

A principios dos 90, oskernels monolíticosconsiderábanse obsoletos. O deseño deLinuxcomo unkernel monolíticono canto de como unmicrokerneldeu lugar a unha famosa disputa entreLinus TorvaldseAndrew S. Tanenbaum[2].Os argumentos de ambas as partes nesta discusión presentan algunhas motivacións interesantes.

Oskernels monolíticosadoitan ser máis fáciles de deseñar correctamente, e polo tanto poden crecer máis rapidamente que un sistema baseado nunmicrokernel,pero hai casos de éxito en ambos os dous bandos. Osmicrokernelsadoitan usarse en robóticaembebidaou 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.

  1. "Kernel".Linfo.Bellevue Linux Users Group.Consultado o 29 de abril de 2017.
  2. Existeun resumo desta disputaArquivado08 de xuño de 2015 enWayback Machine.(eninglés).