Krypton Solid

La última tecnología en raciones de 5 minutos

¿Qué es el kernel? – Definición de Krypton Solid

El kernel es el centro esencial de un sistema operativo (SO) de computadora. Es el núcleo que proporciona servicios básicos para todas las demás partes del sistema operativo. Es la capa principal entre el sistema operativo y el hardware, y ayuda con la gestión de procesos y memoria, sistemas de archivos, control de dispositivos y redes.

Un kernel a menudo se contrasta con un shell, que es la parte más externa de un sistema operativo que interactúa con los comandos del usuario. Núcleo y cascarón son términos que se utilizan con más frecuencia en los sistemas operativos Unix que en los sistemas mainframe de IBM o Microsoft Windows.

Un kernel no debe confundirse con un sistema básico de entrada / salida (BIOS), que es un programa independiente almacenado en un chip dentro de la placa de circuito de una computadora.

Normalmente, un kernel incluye un controlador de interrupciones que realiza todas las solicitudes u operaciones de entrada / salida (E / S) completadas que compiten por los servicios del kernel; un planificador que determina qué programas comparten el tiempo de procesamiento del kernel y en qué orden; y un supervisor que realmente da uso de la computadora a cada proceso cuando está programado.

Un kernel también puede incluir un administrador para los espacios de direcciones del sistema operativo en la memoria o el almacenamiento. El administrador comparte los espacios de direcciones entre todos los componentes y otros usuarios de los servicios del kernel. Otras partes del sistema operativo, así como los programas de aplicación, solicitan los servicios de un kernel a través de un conjunto de interfaces de programa conocidas como llamadas al sistema.

Arquitectura del kernel
Un kernel sirve como puente entre el sistema operativo y el hardware.

Controladores de dispositivo

Los controladores de dispositivo ayudan a los núcleos a ejecutar acciones. Los controladores de dispositivo son fragmentos de código que corresponden a cada dispositivo y se ejecutan cuando los dispositivos se conectan al sistema operativo o al hardware a través de una descarga de software o USB.

Los controladores de dispositivo ayudan a cerrar la brecha entre las aplicaciones de usuario y el hardware, así como a optimizar el funcionamiento interno del código. Para garantizar la funcionalidad adecuada, el kernel debe tener un controlador de dispositivo integrado para cada periférico presente en el sistema.

Existen varios tipos de controladores de dispositivos. Cada uno aborda diferentes tipos de transferencia de datos. Algunos tipos principales son:

  • Controladores de dispositivos de caracteres implementar, abrir, cerrar, leer y escribir datos, así como otorgar acceso al flujo de datos para el espacio del usuario.
  • Bloquear controladores de dispositivos proporcionan acceso a dispositivos para hardware que transfiere datos accesibles aleatoriamente en bloques fijos.
  • Controladores de dispositivos de red transmitir paquetes de datos para interfaces de hardware que se conectan a sistemas externos.

Debido a que el sistema operativo necesita el código que compone el núcleo de forma continua, el código generalmente se carga en el almacenamiento de la computadora en un área que está protegida para que no se superponga con partes del sistema operativo que se utilizan con menos frecuencia.

Historia y desarrollo del kernel

Antes del kernel, los desarrolladores codificaban acciones directamente en el procesador, en lugar de depender de un sistema operativo para completar las interacciones entre el hardware y el software.

El primer intento de crear un sistema operativo que pasara mensajes a través del kernel fue en 1969 con el sistema de multiprogramación RC 4000. El programador Per Brinch Hansen descubrió que era más fácil crear un núcleo y luego construir un sistema operativo, en lugar de convertir los sistemas operativos existentes para que fueran compatibles con el nuevo hardware. Este núcleo, o kernel, contenía todo el código fuente para facilitar las comunicaciones y los sistemas de soporte, eliminando la necesidad de programar directamente en la CPU.

Después de RC 4000, los investigadores de Bell Labs comenzaron a trabajar en Unix, que cambió radicalmente el desarrollo del sistema operativo y la integración del kernel. El objetivo de Unix era crear utilidades más pequeñas que realicen bien tareas específicas en lugar de que las utilidades del sistema intenten realizar múltiples tareas. Desde el punto de vista del usuario, esto simplifica la creación de scripts de shell que combinan herramientas simples.

A medida que aumentó la adopción de Unix, el mercado comenzó a ver una variedad de sistemas operativos de computadora similares a Unix, incluidos Berkeley Software Distribution (BSD), NeXTSTEP y Linux. La estructura de Unix perpetuó la idea de que era más fácil construir un kernel sobre un sistema operativo que reutilizaba software y tenía hardware consistente, en lugar de depender de un sistema de tiempo compartido que no requería un sistema operativo.

Unix llevó los sistemas operativos a sistemas más individuales, pero los investigadores de Carnegie Mellon expandieron la tecnología del kernel. De 1985 a 1994, ampliaron el trabajo en el kernel de Mach. A diferencia de BSD, el kernel de Mach es independiente del sistema operativo y admite múltiples arquitecturas de procesador. Los investigadores lo hicieron compatible de forma binaria con el software BSD existente, lo que le permitió estar disponible para uso inmediato y experimentación continua.

El objetivo original del kernel de Mach era ser una versión más limpia de Unix y una versión más portátil del kernel de comunicación entre procesos (IPC) Accent de Carnegie Mellon. Con el tiempo, el kernel trajo nuevas características, como puertos y programas basados ​​en IPC, y finalmente evolucionó hasta convertirse en un microkernel.

Poco después del kernel de Mach, en 1986, el desarrollador de Vrije Universiteit Amsterdam, Andrew Tanenbaum, lanzó MINIX (mini-Unix) para casos de uso educativos y de investigación. Esta distribución contenía una estructura basada en microkernel, multitarea, modo protegido, soporte de memoria extendido y un compilador C del Instituto Nacional Estadounidense de Estándares (ANSI).

El siguiente gran avance en la tecnología del kernel se produjo en 1992, con el lanzamiento del kernel de Linux. El fundador Linus Torvalds lo desarrolló como un pasatiempo, pero aún así obtuvo la licencia del kernel bajo la licencia pública general (GPL), lo que lo convierte en código abierto. Fue lanzado por primera vez con 176,250 líneas de código.

La mayoría de los sistemas operativos, y sus núcleos, se remontan a Unix, pero hay un valor atípico: Windows. Con la popularidad de las PC compatibles con DOS e IBM, Microsoft desarrolló el kernel de NT y basó su sistema operativo en DOS, razón por la cual la escritura de comandos para Windows difiere de los sistemas basados ​​en Unix.

Tipos de granos

El kernel de Linux está en constante crecimiento, con 20 millones de líneas de código en 2018. Desde un nivel básico, este kernel se distribuye en una variedad de subsistemas. Estos grupos principales incluyen una interfaz de llamada al sistema, gestión de procesos, pila de red, gestión de memoria, sistema de archivos virtual, arch y controladores de dispositivos.

Los administradores pueden migrar el kernel de Linux a sus sistemas operativos y ejecutar actualizaciones en vivo. Estas características, junto con el hecho de que Linux es de código abierto, lo hacen más adecuado para sistemas de servidor o entornos que requieren mantenimiento en tiempo real.

Más allá de Linux, Apple desarrolló el kernel XNU OS en 1996 como un híbrido de los kernels Mach y BSD y lo combinó con una interfaz de programación de aplicaciones (API) Objective-C. Debido a que es una combinación del kernel monolítico y el microkernel, ha aumentado la modularidad y partes del sistema operativo obtienen protección de la memoria.

Microkernels versus granos monolíticos

Los núcleos se dividen en dos arquitecturas principales: monolítica y microkernel. La principal diferencia entre estos tipos es la cantidad de espacios de direcciones que admiten.

Un microkernel delega los servicios de usuario y los servicios del kernel en diferentes espacios de direcciones, mientras que los kernels monolíticos implementan servicios en el mismo espacio de direcciones.

El microkernel tiene todos sus servicios en el espacio de direcciones del kernel. El kernel monolítico es más grande porque alberga tanto el kernel como los servicios de usuario en el mismo espacio de direcciones.

El protocolo de comunicación también difiere entre los dos, con núcleos monolíticos que utilizan una llamada al sistema más rápida para ejecutar procesos entre el hardware y el software. Los micronúcleos utilizan el paso de mensajes, que envía paquetes de datos, señales y funciones a los procesos correctos.

Los micronúcleos proporcionan una mayor flexibilidad; para agregar un nuevo servicio, los administradores pueden modificar el espacio de direcciones del usuario. Los núcleos monolíticos requieren más trabajo porque los administradores deben reconstruir todo el núcleo para admitir el nuevo servicio.

Debido a su naturaleza aislada, los microkernels son más seguros y no se ven afectados si falla un servicio dentro del espacio de direcciones. Los núcleos monolíticos representan un mayor riesgo de seguridad para los sistemas porque, si un servicio falla, todo el sistema se apaga.

Los núcleos monolíticos no requieren tanto código fuente como un microkernel, lo que significa que son menos susceptibles a los errores.

En general, estas implementaciones del kernel presentan una compensación: los administradores obtienen la flexibilidad de más código fuente o una mayor seguridad sin opciones de personalización.

Deja un comentario

También te puede interesar...

Definición de potencial de ingresos

¿Cuál es el potencial de ganancias? El potencial de ganancias se refiere a las ganancias potenciales de los pagos de dividendos y la apreciación del capital que los accionistas podrían obtener al tener una acción.

Definición de no residente

¿Qué es un no residente? Un no residente es una persona que reside principalmente en una región o jurisdicción pero tiene intereses en otra región. En la región donde no residan principalmente, serán clasificados por

Cómo apagar GoPro

Después de leer mi guía sobre qué GoPro comprar, decidiste comprar tu primera cámara de acción de esta famosa marca. Una vez que llegaste a casa, te fuiste inmediatamente. hazte profesional para descubrir sus características

Supongo que Vista no es tan malo

Eso dijo el director en cuyo escritorio lancé mi primer escritorio Vista. Hemos ofrecido portátiles con Vista a algunos usuarios, pero este es el primer lanzamiento a gran escala con lo último y lo mejor

Una introducción a las opciones de estímulo

Uno de los principales beneficios que muchos empleadores ofrecen a sus empleados es la posibilidad de comprar acciones de la empresa con algún tipo de ventaja fiscal o descuento incorporado. Hay varios tipos de planes

Definición de expatriado

¿Qué es un expatriado? Un expatriado o expatriada es una persona que vive y/o trabaja en un país distinto a su país de nacionalidad, muchas veces de forma temporal y por motivos laborales. Un expatriado

Definición de la tarjeta regalo

¿Qué es una tarjeta de regalo? Una tarjeta de regalo es una tarjeta de débito prepaga que contiene una cierta cantidad de dinero disponible para usar en una variedad de compras. Las tarjetas de regalo