Linux
El núcleo es la parte del sistema operativo que sirve para interactuar con el hardware. Proporciona una serie de servicios que pueden ser utilizados por los programas, sin que éstos tengan que preocuparse de cómo se administra el hardware.
En general, el núcleo es el encargado de administrar la memoria, mantener el sistema de archivos, manejo de las interrupciones, manejo de errores, realización de los servicios de entrada/salida, asignación de los recursos de la CPU, gestión de periféricos de entrada/salida, etcétera.
Cada programa se relaciona con la máquina a través del núcleo. Un programa realizará al núcleo las llamadas al sistema. Con estas el programa indicará, por ejemplo, que le abra un archivo, que escriba en otro, que utilice la impresora, que cambie la prioridad de ejecución de otro proceso, etcétera.
El núcleo del sistema operativo Unix/Linux, que recibe el nombre de KERNEL, actúa directamente con los elementos físicos de la computadora, y se carga en memoria al arrancar la máquina. Permanece en ella hasta que ésta se apaga. Recordemos que en DOS, el núcleo estaba formado por dos programas MSDOS.SYS y IO.SYS.
El Shell es el intérprete de mandatos o de comandos con el que cuenta este sistema operativo. En DOS es el Command. Com el que se encarga de realizar esta función.
El Shell actúa como interfaz de comunicación entre el usuario y la computadora, y cuando un usuario se conecta con el servidor Unix/Linux, automáticamente se arranca un Shell para que pueda trabajar. Cada usuario conectado al servidor tendrá un Shell para su uso.
Al contrario que en DOS, en el que el intérprete de comandos es único, en Unix/Linux existen varios. Éstos son los siguientes:
Shell Bourne (sh). Creado por S. Bourne, es el más utilizado en la actualidad. El prompt del sistema queda representado por el símbolo «$». Este shell es el estándar de AT&T y el que se monta en casi todos los sistemas Unix/Linux.
C-Shell (csh). Procedente del sistema BSD, proporciona características tales como control de trabajos, historia de comandos (como el doskey en DOS), capacidades de edición, etc. Ofrece importantes características para los programadores que trabajan en lenguaje C. Su prompt de sistema queda representado con el símbolo «%».
Shell job (jsh). Incorpora algunas características de control al shell estándar del sistema.
Shell Korn (ksh). Escrito por David Korn, amplia el shell del sistema añadiendo historia de comandos, edición de la línea de órdenes y características ampliadas de programación.
Bourne Again shell (Bash). Fue creado para usarlo en el proyecto GNU. BASH, por lo tanto, es un shell o intérprete de comandos GNU; éste es compatible con el shell sh. Además, incorpora algunas características útiles de ksh y csh, y otras propias, como la edición de línea de comandos, tamaño ilimitado del histórico de comandos, control de trabajos y procesos, funciones y alias, cálculos aritméticos con números enteros, etcétera.
Fuente: Apuntes de la materia Sistemas Operativos Multiusuario de la FCA – UNAM