GNU/Linux >> Tutoriales Linux >  >> Linux

Principales diferencias entre el kernel de Linux y UNIX

UNIX ha sido considerado como la madre de la mayoría de los sistemas operativos. Algunos de los miembros populares de esta familia incluyen:

  • System V versión 4 (SVR4) desarrollado por AT&T.
  • 4.4 BSD de la Universidad de California
  • AIX de IBM.
  • HP-UX de Hewlett-Packard.
  • Solaris de Sun Microsystems.


Linux es un miembro relativamente nuevo de esta familia. Linux fue escrito inicialmente por Linus Torvalds en 1991 para computadoras personales compatibles con IBM. Como sistema operativo, GNU Linux ha experimentado un gran éxito y popularidad en los últimos 20 años y la mayoría de los servidores comerciales ahora usan GNU Linux. Para agregar a la popularidad, los usuarios finales también han comenzado a usar Linux en estos días con la mayoría de los fabricantes populares de computadoras portátiles y PC que ofrecen GNU Linux como sistema operativo por instalación.

Para aquellos que todavía están confundidos entre Linux como sistema operativo o kernel, Linux en el verdadero sentido escrito por Linus era un kernel que se escribió refiriéndose al libro sobre las partes internas de Unix (aunque el kernel de Linux ha adoptado buenas características de muchos otros kernels similares a Unix también) mientras que las distribuciones disponibles comercialmente que contienen utilidades como escritorio gráfico, editores de texto, compiladores, etc. además del kernel de Linux son sistemas operativos completos.

Aunque Linux Kernel toma prestadas la mayoría de sus características de los kernels de Unix/Unix-Like, aún así hay muchos puntos en los que los dos tipos de kernel difieren significativamente. En este artículo, el enfoque principal estará en estas diferencias. La lista no es exhaustiva pero contiene las principales diferencias.

1. Enfoque monolítico frente a micronúcleo

Los núcleos monolíticos son aquellos en los que todo el código del núcleo se ejecuta como un solo proceso, mientras que los micronúcleos son aquellos en los que el núcleo de un núcleo (que controla las diferentes partes del sistema operativo) se ejecuta en un proceso mientras que otros servicios, como los controladores de dispositivos, etc., se ejecutan de forma diferente. procesos. Linux sigue un enfoque monolítico, mientras que hay un par de excepciones en los kernels similares a Unix que siguen el enfoque de Micro-kernel.

2. Agregar/Eliminar características del kernel

Si bien los sistemas tradicionales Unix/similares a Unix requieren la vinculación estática de los nuevos módulos que se agregan, Linux admite una característica poderosa en la que los componentes del kernel, como los controladores de dispositivos, etc., se pueden cargar y descargar dinámicamente. Esta función se conoce como módulos de kernel cargables (LKM). Cualquier componente nuevo se puede agregar/quitar como un LKM al kernel. Esto significa que no hay necesidad de volver a compilar todo el kernel. Además, si no se necesita un componente, se puede descargar fácilmente. Esta función hace que el kernel de Linux sea muy flexible.

3. Subprocesamiento del núcleo

Muchos núcleos similares a Unix están organizados como un conjunto de subprocesos del núcleo. Un subproceso del kernel se puede considerar como un flujo de ejecución independiente. Un subproceso del núcleo puede ejecutar procesos de usuario o algún código del núcleo. La idea básica es hacer cambios de contexto entre los subprocesos del kernel, lo que es menos costoso que los cambios de contexto entre procesos, ya que los subprocesos operan en el mismo espacio de direcciones. Mientras que muchos sistemas operativos similares a Unix usan subprocesos del kernel para cambiar el contexto del proceso, Linux usa subprocesos del kernel solo para ejecutar algún código del kernel periódicamente.

4. Compatibilidad con aplicaciones multiproceso

Casi todos los sistemas operativos modernos, ya sean distribuciones tipo Unix o Linux, admiten subprocesos múltiples. Una aplicación de subprocesos múltiples es aquella que crea más de un flujo de ejecución. Estos flujos de ejecución independientes se conocen como subprocesos. Los hilos son procesos ligeros. En la mayoría de los sistemas similares a Unix, los procesos livianos se basan en subprocesos del núcleo, mientras que en Linux, estos LWP se crean mediante una llamada a la función clone () que permite que la aplicación cree un proceso separado como lo hace fork () pero la diferencia es que con clone () el proceso recién generado puede compartir su memoria física, archivos abiertos, espacio de direcciones, etc. Como estos procesos recién creados funcionan en un entorno compartido, se les da un nombre diferente 'subprocesos'. Entonces vemos que Linux y Unix/Unix-Like difieren en la forma en que se maneja internamente el entorno de subprocesos múltiples.

5. FLUJOS

El subsistema Streams I/O está incluido en la mayoría de los kernels de Unix y se ha convertido en una interfaz preferida para escribir controladores de dispositivos, controladores de terminales, etc. Mientras que, por otro lado, no hay nada como Streams en Linux.

6. Kernels preventivos frente a no preventivos

Los núcleos preventivos son los núcleos que pueden adelantarse al proceso que se está ejecutando actualmente. Significa que un proceso que se está ejecutando actualmente puede interrumpirse por la fuerza si un proceso con mayor prioridad está listo para ejecutarse. Por otro lado, los núcleos no preventivos son aquellos en los que un proceso en ejecución no se puede interrumpir por la fuerza, incluso si un proceso de mayor prioridad está listo para ejecutarse. Normalmente, el sistema operativo Linux no es preventivo, mientras que algunos de los sistemas Unix, como Solaris 2.x, etc., son totalmente preventivos. Por lo general, el sistema operativo en tiempo real tiene núcleos totalmente preventivos. En estos días tenemos Linux Real time OS que tiene núcleos totalmente preventivos.

Entonces vemos que, aunque Linux nació de la idea básica de Unix, aún difiere de los kernels de Unix/Unix-Like en muchos aspectos. A pesar de estas diferencias, Linux todavía hereda mucho de Unix y todavía se considera un miembro de la familia de kernels de Unix.


Linux
  1. Linux:¿un núcleo corrupto en Linux?

  2. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

  3. Servicio de sistema operativo Linux/UNIX:autofs

  4. ¿Linux es un Unix?

  5. ¿Por qué Linux es similar a Unix si su núcleo es monolítico?

Núcleo de Linux vs. Núcleo de Mac

Comando mkdir en Linux/Unix

Linux frente a Unix

Comando Grep en Linux/UNIX

Comando ls en Linux/UNIX

comando cp en Linux/UNIX