¿Cuál es la diferencia entre un kernel y un sistema operativo?

Sistema operativo: el sistema operativo es en realidad una pila completa de software que también incluye el núcleo . Por lo tanto, las responsabilidades de un sistema operativo incluyen, entre otras, administrar el hardware de su máquina, proporcionar GUI para que interactúe con el hardware, proporcionar un marco que se puede aprovechar para escribir software de aplicación que se puede ejecutar en el sistema operativo. Ejemplos de SO son:

  • Windows (XP, 7, 8, etc. otras variantes)
  • Ubuntu, Kubuntu
  • Mac OS X
  • Solaris, etc.

Kernel : este es el nivel más bajo de pila de software del sistema operativo (repito, el kernel es parte del sistema operativo) que hace todo el trabajo sucio de hablar con el hardware de su máquina. Kernel expone la funcionalidad del hardware de la máquina en forma de llamadas al sistema . Estas llamadas al sistema son utilizadas por las capas de software anteriores para diseñar API, etc. Daré un ejemplo en el núcleo existente en referencia a los ejemplos que di para el sistema operativo. Ejemplos –

  • Windows NT es el núcleo utilizado en Windows
  • Linux es el núcleo utilizado en Ubuntu y Kubuntu
  • XNU (una bifurcación de Unix) es el núcleo de Mac OSX
  • Solaris-kernel (nuevamente una bifurcación de Unix) es el núcleo de Solaris

Originalmente las computadoras no tenían sistemas operativos. Cada vez que quisieras ejecutar un programa, cargarías ese programa en la computadora y señalarías el Contador del programador al inicio del programa. Si necesitaba acceso a una impresora o unidad de cinta, tenía que escribir el código para llenar los búferes y luego transmitir el búfer al dispositivo. El tiempo siempre fue un gran problema.

A medida que pasaba el tiempo, la gente descubrió que otros tenían módulos escritos que abordarían los problemas de comunicación con el dispositivo deseado de una manera mucho más completa de lo que usted podría escribir el dispositivo, y comenzaron a agregar estos módulos a sus programas cada vez que cargaban un programa que Se necesita acceso al dispositivo. Finalmente, a alguien se le ocurrió la idea de cargar estos módulos permanentemente en la memoria para que estuvieran disponibles para todos los programas cuando se cargaran. Esta colección de módulos disponibles permanentemente se llamaba Sistema operativo.

Esto llevó a la idea de la administración de memoria, porque no quería que su programa escribiera sobre las áreas de memoria donde estaba almacenado el sistema operativo. Eso le habría hecho imposible acceder a los módulos que necesitaba para comunicarse con los dispositivos que su Programa de Aplicación necesitaba.

Finalmente, el sistema operativo asumió tareas como la comunicación con impresoras, dispositivos de almacenamiento, terminales, la gestión de cuándo se ejecutarían los programas, la gestión de entornos multitarea, etc.

Hasta principios de la década de 1970, los sistemas operativos estaban escritos en lenguaje ensamblador y cada sistema operativo era específico de la máquina para la que estaba escrito. El sistema operativo para un PDP-11 no funcionaría en un IBM-370 o un Honeywell-6000. De hecho, el sistema operativo para un PDP-8 no funcionaría en un PDP-11, etc.

A principios de la década de 1970, los científicos (Kernighan, Ritchie, McIlroy y Neumann) de Bell Labs (Murray Hill, Nueva Jersey) estaban investigando un sistema operativo que llamaron Unics (más tarde UNIX) y decidieron volver a codificar partes del sistema. en C, un lenguaje que en ese momento estaba siendo desarrollado por Dennis Ritchie con la ayuda de Ken Thompson.

Escribir UNIX en C permitió que partes del sistema operativo se transfirieran a otras máquinas sin tener que rediseñar y volver a escribir todo el sistema operativo. Las partes del sistema operativo que no se podían portar porque involucraban acceso directo a hardware que sería diferente para cada tipo de máquina se llamaban Kernel. El Kernel es parte del sistema operativo, pero es específico del hardware en el que se ejecuta. El resto del sistema operativo se puede escribir una vez en un lenguaje de alto nivel (como C), luego se puede portar a una nueva máquina volviendo a compilarlo en la nueva máquina. El sistema operativo todavía se encarga de la gestión de memoria, gestión de dispositivos y comunicación, gestión de ejecución, etc.

Con el paso del tiempo, la gente comenzó a incluir otros programas como compiladores, utilidades, editores, etc. en su definición de la frase Sistema operativo. A menudo, estos son programas que se instalan como parte estándar del sistema operativo. Incluso encontrará algunas personas que incluyen navegadores web, hojas de cálculo y procesadores de texto en su definición de sistema operativo. Para mí, los compiladores, los navegadores, los procesadores de texto, etc. son programas de aplicación y no son realmente parte del sistema operativo.

El sistema operativo es el conjunto de programas que residen en la computadora que administra los recursos de la computadora, permite que los programas accedan a esos recursos y arbitra entre los programas que intentan usar esos recursos simultáneamente. El kernel es la parte del sistema operativo que se escribió específicamente para la máquina en la que se está ejecutando y no se puede portar fácilmente a otra máquina.

Pregunta: ¿Cuál es la diferencia entre un núcleo y un sistema operativo?

Fuentes:

  1. Unix – Wikipedia
  2. C (lenguaje de programación) – Wikipedia
  3. Sistema operativo – Wikipedia

Para TLDR, le pediré que vea esta respuesta en Stackoverflow: Página en Stackoverflow

Un sistema operativo, también conocido como SO, es el software que hace que una computadora sea utilizable. El núcleo es simplemente el “núcleo” o nivel más bajo de un sistema operativo. El kernel proporciona numerosas rutinas invocables que permiten que otro software acceda a archivos, muestre texto y gráficos, reciba entradas desde un teclado o mouse y otras capacidades similares.

Los sistemas operativos que encontramos hoy en día, generalmente tienen muchas características que no son las necesarias para que un sistema funcione. Pero estas características son necesarias para facilitar la interacción con el sistema. Dichas características incluyen interfaz gráfica, gestión de archivos, gestión de procesos, shell, etc. Estas características se basan en la parte central del sistema operativo (denominado núcleo) para ejecutarse y proporcionar interfaz al usuario u otros programas de aplicación. Se debe tener en cuenta que estas características son inevitables, y que solo un núcleo no es útil para el usuario.

Un sistema operativo también incluye utilidades que usan el núcleo. Por ejemplo, MS-DOS proporciona un programa conocido como COMMAND.COM, que es el programa que permite que un humano use el sistema operativo. Windows Explorer, MacOS Finder y los diversos shells de UNIX ofrecen una funcionalidad similar. Otras utilidades del sistema operativo pueden incluir un administrador de archivos, un instalador de software y otros elementos necesarios para que la computadora sea útil.
Fuente: ¿Cuál es la diferencia entre un Kernel y un sistema operativo?

Déjame explicarte en una simple analogía.

Considere un automóvil con todas las funciones en su lugar pero sin exteriores, asientos ni nada. Solo trabajo de montaje.

Este conjunto es responsable del movimiento del automóvil y de otras funciones, pero no podemos viajar en él ya que no tiene asientos ni exteriores. Así que hacemos exteriores y asientos para poder interactuar con el automóvil.

Ahora el ensamblaje sin exteriores es análogo a nuestro sistema operativo. Un sistema operativo en una computadora realiza todas las tareas básicas e interactuamos con él a través del software de aplicación (Exteriores) construido sobre él.

Ahora volviendo a nuestro ejemplo. Digamos que nos vamos de viaje y que estamos tratando de arrancar el auto. Voila no está empezando. Abrimos el capó y encontramos que alguien robó nuestro motor.

Tenemos todo lo demás en su lugar, pero todavía no se puede operar el automóvil.

Este motor es análogo al kernel. Sin él, el sistema operativo no es nada. Más formalmente, también podemos llamar al kernel un tipo de micro OS que maneja todas las funciones muy importantes.

  1. gestión de la memoria
  2. administración de redes
  3. controlador de dispositivo
  4. gestión de archivos
  5. gestión de proceso

Mientras que el sistema operativo principal contiene varias otras funciones y kernel de la misma manera, el automóvil tiene ejes y neumáticos para las rotaciones.


Al igual que dos autos pueden usar el mismo motor pero pueden ser completamente diferentes, dos sistemas operativos también pueden usar el mismo kernel y ser completamente diferentes. Los ejemplos destacados pueden ser varias distribuciones basadas en kernel de Linux. Fedora es diferente de Ubuntu, pero se basan en el mismo núcleo.

Larga historia corta.

Kernel es como un mini sistema operativo que realiza todas las funciones básicas e importantes y se puede usar de forma independiente, mientras que el sistema operativo usa el núcleo como base para proporcionar un entorno o interfaz al hardware, agregando muchas otras cosas como GUI, etc.

Espero que haya ayudado.
Aclamaciones

El sistema operativo es el paquete de software completo que hace funcionar su computadora.
En su interior se encuentran todas las aplicaciones básicas como navegadores web, administradores de archivos y reproductores multimedia. Luego, el Marco de software o API (interfaz de programación de aplicaciones) que admite estas aplicaciones y cualquier otra que pueda instalar. También existen bibliotecas de rutinas de uso frecuente (como redes, manejo de archivos, gráficos) para facilitar las cosas. Debajo de todo esto (y a veces además) están los controladores de hardware que permiten que el software “controle” el hardware. Se necesita un controlador para que las aplicaciones comprendan cómo usar una tarjeta de red o cómo hacer que la tarjeta gráfica represente una escena.

En el núcleo del sistema operativo está el núcleo.

El núcleo más básico gestiona el tiempo de CPU y el espacio de memoria. Decide qué programa obtiene qué espacio a qué hora . Dado que todas las aplicaciones, API, bibliotecas y controladores están hechos en forma de programas, es el núcleo el que los maneja en CPU y memoria. Este tipo de núcleos simples se llaman Microkernels .
Luego hay núcleos más sofisticados llamados núcleos monolíticos que tienen una funcionalidad crítica adicional incorporada en ellos, como un sistema de archivos, controladores (principalmente controladores de almacenamiento y gráficos), etc.

La palabra “núcleo” significa el “núcleo”. Es el componente central de cualquier sistema operativo. Maneja la interfaz de bajo nivel con el hardware, es decir, el “trabajo sucio” como administrar el uso de la memoria, programar tareas, acceso de E / S, etc.

El sistema operativo, por otro lado, incluye el núcleo, además de todo lo que hace que una máquina sea utilizable. Esto incluye herramientas para administrar archivos y directorios, bibliotecas estándar que interactúan con el kernel, servidores de impresión y redes, suites de oficina, servidores GUI, etc.

Por ejemplo, Linux es un núcleo. GNU es todo lo demás. Juntos, GNU y Linux, forman un sistema operativo completo: GNU / Linux.

De la “octava edición de” Conceptos del sistema operativo “(también conocido como The Dinosaur Book)

Un sistema operativo actúa como intermediario entre el usuario de una computadora y el hardware de la computadora. El propósito de un sistema operativo es proporcionar un entorno en el que un usuario pueda ejecutar programas de manera conveniente y eficiente. Un sistema operativo es un software que administra el hardware de la computadora. El hardware debe proporcionar mecanismos apropiados para garantizar el funcionamiento correcto del sistema informático y evitar que los programas del usuario interfieran con el funcionamiento adecuado del sistema.

Por lo tanto, un sistema operativo gestiona las interacciones entre el usuario y el hardware.

Un núcleo consta de algunas partes del sistema operativo, qué y qué parte del sistema operativo es parte del núcleo depende del sistema operativo y su configuración.

Una forma de ver el núcleo es por función. El núcleo sería las partes del sistema operativo que administran la CPU, es decir, qué programas se ejecutan, durante cuánto tiempo y con qué prioridad. Memoria: el recurso de espacio de trabajo de la computadora y los dispositivos: cómo los datos pasan de la CPU / memoria a otras cosas.

Otra forma de ver el kernel sería mirar los programas y servicios basados ​​en su disponibilidad. El núcleo en este sentido es la colección de rutinas y servicios que están garantizados para estar allí. Esto es lo que quiere decir el usuario de Linux cuando dice que puede: “tener un controlador de dispositivo como módulo cargable o compilado en el núcleo”.

Una tercera forma podría ser desde un punto de vista privilegiado. La mayoría de las CPU admiten alguna forma de limitar la forma en que un código interactúa con otro código. Estos pueden considerarse niveles de privilegio, o “anillos”. El núcleo generalmente ocupa el nivel de privilegio más alto en una CPU. Cuando la gente habla de un “controlador en modo kernel”, quiere decir que el software del controlador se ejecuta con el mismo nivel de privilegio que el kernel.

Hay muchos significados para los sistemas operativos. Para algunas personas, el sistema operativo es el núcleo. Para otras personas, el sistema operativo es todo el software que se instala en una computadora nueva (en ese sentido, el navegador también es parte del sistema operativo).

Sugiero leer Sistemas operativos: tres piezas fáciles para forjar su propia opinión.

Y algunos diseños de sistemas operativos (académicos) ni siquiera tienen núcleo.

Ver también la respuesta de Basile Starynkevitch a ¿Por qué es importante que un sistema operativo tenga modo kernel y modo usuario?

Básico:

Kernel es una parte importante del sistema operativo.

Sistema operativo es un programa del sistema.

Interfaz :

Kernel es una interfaz entre software y hardware de la computadora.

El sistema operativo es una interfaz entre el usuario y el hardware de la computadora.

Tipo :

Granos monolíticos y microkernels.

Sistema de lote único y multiprogramación, sistema operativo distribuido, sistema operativo en tiempo real.

Propósito :

Gestión de memoria del núcleo, gestión de procesos, gestión de tareas, gestión de discos.

Además de las responsabilidades de Kernel, el sistema operativo es responsable de la protección y seguridad de la computadora.

Saludos,

Entrenamiento en línea de Linux

Descripción muy básica:

Kernel es la parte más básica. El diseño inteligente tiene un núcleo multinúcleo o unicore según lo requiera el requisito.
Kernel proporciona interacciones con hardware y diversas gestiones, como potencia, proceso, puertos, etc. En cuanto a tecnología, aquí encontramos cosas. Entonces, si surge un nuevo puerto USB (digamos cualquier hardware), tendrá su código dentro del kernel y solo nosotros podremos usarlo. Estos servicios se escribieron principalmente en C o Asamblea.

Además de esto, tenemos un sistema operativo que combina un núcleo y varias otras necesidades como GUI (si es necesario), terminal, otras aplicaciones (de diversas necesidades), gestión de usuarios (lo más importante), gestión de red, etc. y crea varios paquetes de sí mismo . Por lo tanto, obtenemos estos paquetes y con el uso de scripts (instrucciones combinadas en un solo lugar) podemos instalarlos. Estas secuencias de comandos también ayudan a varias gestiones útiles.

De esta manera, el mismo núcleo puede estar presente en múltiples sistemas operativos.

El núcleo es el núcleo de un sistema operativo y es responsable de administrar y controlar: dispositivos (con controladores), programación de procesos, administración de memoria y paginación de memoria. El sistema operativo se basa en el núcleo y proporciona servicios para el usuario final, como un shell, una GUI o servicios de aplicaciones base. El núcleo proporciona un conjunto de instrucciones para interactuar con él: el sistema llama. Un desarrollador puede invocar una llamada al sistema para interactuar indirectamente con el núcleo, esto es posible con un conjunto de API nativas incluidas en lenguajes de programación de bajo nivel como C o C ++. Una llamada al sistema generalmente está controlada por el sistema operativo que cambia la ejecución del programa en modo de usuario o en modo kernel.

Respuesta corta: es la parte del sistema operativo que interactúa directamente con el hardware de la computadora.

Respuesta más larga: proporciona servicios de sistemas básicos como manejo de interrupciones, programación, administración de memoria, comunicación entre procesos y E / S de dispositivos y archivos. Se ejecuta con privilegios del sistema de la CPU, a diferencia de los privilegios de usuario más limitados.

Kernel es la pieza mínima de software que se requiere para manejar el hardware de la computadora para lograr los objetivos del usuario: hacer un resumen, leer datos desde el teclado, enviar datos a la impresora, etc.

El sistema operativo, por otro lado, es algo más grande que abarca el núcleo mismo. El sistema operativo evolucionó como resultado de la resolución de los desafíos enfrentados mientras solo operaba con Kernel.

El sistema operativo construye capas de abstracciones en la parte superior del núcleo que permiten a un usuario promedio usar la computadora y aumenta la productividad de los ingenieros.

Imagina que puedes controlar una computadora a través de tus pensamientos. Es decir, sin pantalla o dispositivos de entrada.

Esta raza de superhumanos es capaz de usar un sistema equipado solo con kernel, porque la interacción humana tradicional requiere una compleja amalgama de características de software que se conoce colectivamente como un sistema operativo.

El núcleo puede considerarse como un administrador de software primitivo de hardware, que incluye la contabilidad y la programación de los recursos del sistema, como la CPU, el disco, la memoria y el uso de la red. El sistema operativo es el puente que permite a un usuario poner el kernel a trabajar.

Sistema operativo que se ejecuta en la parte superior de la computadora y permite comunicarse con él sin tener que usar lenguaje de máquina. Proporciona una interfaz, ya sea gráfica o de texto, que podemos ver como resultado de nuestras operaciones de entrada, también nos proporciona un montón de herramientas para configurar la computadora.

Pero sin el núcleo, todo esto no sería posible y es el núcleo del sistema operativo y es responsable de convertir los comandos en algo que la computadora pueda entender.

El núcleo es algo que solo funciona en la RAM de su computadora.

El sistema operativo siempre incluye una gran cantidad de bibliotecas y controladores (incluidos los integrados), que su software utiliza bajo demanda.

Hay Gbytes de herramientas que se envían con una gran cantidad de sistemas operativos, también señalados como partes estándar de la distribución del sistema operativo. El paquete busybox Linux es una muestra mínima de esto.

Encontré dos respuestas en stack que pueden ayudarte a entenderlo mejor:

Un núcleo es la parte del sistema operativo que media el acceso a los recursos del sistema. Es responsable de permitir que múltiples aplicaciones compartan efectivamente el hardware controlando el acceso a la CPU, memoria, E / S de disco y redes.
Un sistema operativo es el núcleo más aplicaciones que permiten a los usuarios hacer algo (es decir, compilador, editor de texto, administrador de ventanas, etc.).

Y

La definición técnica es “plataforma que consiste en un conjunto específico de bibliotecas e infraestructura para que las aplicaciones se construyan e interactúen entre sí”. Un kernel es un sistema operativo en ese sentido.
La definición del usuario final suele ser algo en torno a “un paquete de software que proporciona un escritorio, accesos directos a aplicaciones, un navegador web y un reproductor multimedia”. Un núcleo no coincide con esa definición.
Entonces, para un usuario final, una distribución de Linux (digamos Ubuntu) es un sistema operativo, mientras que para un programador, el núcleo de Linux en sí es un sistema operativo perfectamente válido, dependiendo de lo que intente lograr. Por ejemplo, los sistemas integrados son principalmente kernel con un número muy pequeño de procesos especializados que se ejecutan sobre ellos. En ese caso, el núcleo se convierte en el sistema operativo.
Creo que puede trazar la línea de lo que requiere la mayoría de las aplicaciones que se ejecutan sobre ese sistema operativo. Si la mayoría de ellos solo requieren kernel, el kernel es el sistema operativo, si la mayoría de ellos requieren que se ejecute el sistema X Window, entonces su sistema operativo se convierte en X + kernel.

Ref: ¿Qué es un núcleo del sistema operativo? ¿Cómo se diferencia de un sistema operativo?

Kernel es un pequeño aunque una parte importante del sistema operativo. Kernel proporciona un mecanismo para acceder a los recursos de manera controlada entre múltiples subprocesos de espacio de usuario, dándoles una noción falsa de que poseen la CPU CPU

El sistema operativo se puede ver como un conjunto de aplicaciones y kernel que proporciona una forma de usar un sistema informático para el propósito para el que está destinado. Por ejemplo, para ejecutar un servidor web, simplemente tener un kernel de Linux es insuficiente. Necesita LAMP (Linux + Apache + MySQL + PHP) o algo similar.

La idea general es que necesita un sistema operativo para ejecutar sus aplicaciones y el núcleo es el que administra los recursos del sistema.

La principal diferencia entre un sistema operativo y un núcleo es que:
i) Ambos dependen uno del otro …
ii) Kernel funciona como un “SECRETARIO”: es decir:
Kernel recopila tareas de un software / programa / aplicación y luego lo envía al sistema operativo (SO).
iii) El sistema operativo es como un “BOSS”, especialmente se ocupa únicamente de “SECRETARIO” como la principal fuente de recopilación de tareas para realizar la producción deseada.
Ejemplo:
MS WORD -> Impresión (Tarea) -> Kernel -> SO -> Impresora (Hardware) -> Salida: es decir: “Documento informativo impreso” …

Kernel es la parte principal de un sistema operativo y es el nivel más bajo del sistema operativo. Es responsable de traducir el comando en un mensaje significativo que pueda ser entendido por una computadora.

Funciones principales del kernel:

  1. Gestión de proceso
  2. Gestión de la memoria
  3. Controladores de dispositivo y etc.

OS es una colección de software que hace que una computadora funcione. Todas sus aplicaciones se ejecutan sobre un sistema operativo. En otras palabras, el sistema operativo es la columna vertebral de todo el software en una computadora.