GNU/Linux >> Tutoriales Linux >  >> Linux

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

Creo que la respuesta radica en cómo defines "similar a Unix". Según la entrada de wikipedia para "similar a Unix", no parece haber una definición estándar.1

Un sistema operativo similar a Unix (a veces denominado UN*X o *nix) es aquel que se comporta de manera similar a un sistema Unix, aunque no necesariamente cumple o está certificado por ninguna versión de la Especificación Única de UNIX.

No existe un estándar para definir el término, y es posible que haya alguna diferencia de opinión en cuanto al grado en que un sistema operativo determinado es "similar a Unix".

El término puede incluir sistemas operativos gratuitos y de código abierto inspirados en Unix de Bell Labs o diseñados para emular sus funciones, versiones comerciales y patentadas, e incluso versiones basadas en el código fuente UNIX con licencia (que puede ser lo suficientemente "similar a Unix" para aprobar la certificación). y llevan la marca comercial "UNIX").

Probablemente la razón más obvia es que UNIX y MINIX son antecedente de Linux, habiendo inspirado su creación.2

Torvalds comenzó el desarrollo del kernel de Linux en MINIX y las aplicaciones escritas para MINIX también se usaron en Linux. Más tarde, Linux maduró y se llevó a cabo un mayor desarrollo del kernel de Linux en los sistemas Linux.

Linus Torvalds había querido llamar a su invento Freax, un acrónimo de "free", "freak" y "x" (como una alusión a Unix).

No parece tenerse en cuenta si un sistema es monolítico o microkernel al llamar a un sistema operativo "similar a Unix". Al menos, no tan a menudo como si el sistema es compatible con POSIX o en su mayoría compatible con POSIX.


El "modo UNIX" realmente se refiere a la experiencia del usuario. Se puede combinar un pequeño conjunto de utilidades para construir una línea de comando de sistema operativo efectiva. Relacionado con esto, las utilidades de los sistemas operativos no son de ninguna manera "especiales" o tienen poder más allá de los programas que puede escribir usted mismo.

Este es un punto difícil de abordar en estos días, ya que UNIX tuvo tanto éxito en este aspecto que se ha convertido en la forma en que se espera que los sistemas operativos presenten sus interfaces de línea de comandos. El punto se ilustra mejor con un contraejemplo:así es como se hace cp a.txt b.txt en un sistema central de IBM:

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

Esto ni siquiera copiará todo tipo de archivo.

UNIX hizo una serie de suposiciones que simplifican la usabilidad a costa del rendimiento. Los canales de archivo 1 (stdin), 2 (stdout) y 3 (stderr) van hacia y desde el terminal, lo que elimina gran parte del texto modelo del JCL anterior. El sistema de archivos admite un tipo de datos, bytes, y un modo de acceso, secuencial (aunque el puntero donde se pueden leer o escribir los datos secuenciales se puede mover para implementar una especie de "acceso aleatorio"). Esto significa que las utilidades del sistema solo necesitan tratar con un tipo de archivo y un tipo de datos para cubrir todos los archivos y tipos de datos. El sistema de archivos no requiere asignación previa. La adición de archivos al directorio (también conocido como "catálogo de discos" en los mainframes de IBM) ocurre automáticamente si el sistema operativo conoce el nombre del archivo.

Estas suposiciones tuvieron tanto éxito que en estos días ni siquiera les damos un segundo pensamiento. Mientras que en ese momento habrían parecido derrochadores:imagine la sobrecarga de un sistema de archivos al que no se le dijo de antemano el tamaño máximo de un archivo.

Pero UNIX no se detuvo allí. Promovió un enfoque de "caja de herramientas" para las utilidades del sistema. IEBGENER del mainframe puede imprimir archivos, reorganizar campos dentro de los registros, eliminar registros, crear registros en blanco. Por el contrario, en UNIX, cp copia archivos, cat enumera el contenido de los archivos y corta los campos. Hay una sintaxis ordenada para encadenar la salida estándar de un comando a la entrada estándar del siguiente archivo, todo en una línea de terminal. Usando esta sintaxis de "tubería" y esos pequeños comandos podemos hacer todo lo que IEBGENER puede hacer. Y cosas con las que los autores de IEBGENER nunca soñaron.

Kernighan y Plauger escribieron un influyente libro en 1976 sobre este enfoque:Herramientas de software -- y esa es realmente la primera exposición del "modo UNIX". Kernighan y Pike reafirmaron este enfoque en su libro de 1984 El entorno de programación UNIX. .


Linux
  1. Cómo manejar un pánico en el kernel de Linux

  2. Linux:¿por qué no hay un sistema de archivos Rootfs presente en el sistema?

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

  4. Principales diferencias entre el kernel de Linux y UNIX

  5. La llamada al sistema Linux más rápida

¿Linux es un sistema operativo o un kernel?

Kernel de Linux y sus funciones

Historia de Unix y Linux

Linux frente a Unix

¿Linux es un Unix?

¿Los diferentes kernels de Linux/Unix son intercambiables?