Conceptos de UNIX

Los sistemas operativos como Unix o Linux, tienen sus orígenes en el sistema operativo de las antiguas mainframes, conocidos como Multics (Multiplexed Information and Computing Service). Desarrollado a mediados de la década de los 60ís (1965), Multics fue uno de los primeros sistemas multiusuario y se desarrolló en los Laboratorios de Bell Telephone con la colaboración de investigadores del MIT y de General Electric.

Dos Ingenieros de los Laboratorios Bell, Ken Thompson y Dennis Ritchie, trabajaban en el desarrollo del sistema operativo Multics cuando el proyecto decidió darse por terminado, en 1969. Debido a que tenían una afición por un juego multiusuario llamado Viaje del Espacio (Space Travel), decidieron migrar este juego a una computadora del laboratorio, una PDP-7; para poder hacer lo anterior, decidieron desarrollar un rudimentario sistema operativo, al cual lo llamaron Unics, en contraposición el anterior Multics, cambiándose el nombre en algún momento por Unix.

Este nuevo sistema operativo fue muy novedoso en varios aspectos. El sistema era portable, en contraposición con los sistemas desarrollados hasta esa época, los cuales era casi imposible cambiarlos de una computadora a otra. Para poder hacer esto, Thompson y Ritchie crearon primeramente un lenguaje de programación, llamado C. Como los lenguajes ensambladores, C permite a los programadores tener acceso al hardware de bajo nivel, característica imposible para los programadores de lenguajes de alto nivel como FORTRAN o COBOL; sin embargo, al igual que FORTRAN y COBOL, C no dependía de alguna computadora en particular.

Thompson y Ritchie distribuyeron copias de su sistema operativo a programadores de todo el mundo, recibiendo de esta manera una retroalimentación para mejorar su producto poco a poco. Fue así como muchas variaciones de Unix fueron apareciendo; una de estas variaciones es el BSD (Berkeley Systems Division) Unix, desarrollado en la Universidad de California, en Berkeley, en 1978. Bill Joy, uno de los participantes en dicho desarrollo, se convirtió posteriormente en el fundador de Sun Microsystems en donde se desarrolló otra variante más del sistema operativo Unix (SunOS) usado en sus computadoras. En 1984, AT&T empezó a vender su versión propia de Unix, conocida como SystemV.

Shells

Los Shells son procesadores de comandos y son la interfase entre el kernel de UNIX y el usuario. El shell es el encargado de correr comandos cuando se teclea el nombre, expande caracteres especiales como * y toma el cuidado de redireccionar la entrada y la salida. Existen varios shells disponibles, los más conocidos son el Bourne shell (escrito por Stephen R. Bourne) y el C shell desarrollado por William Joy en la Universidad de California en Berkeley. Como su nombre implica, los comandos escritos en este shell recuerdan a los programas escritos en el lenguaje C. El uso de este shell ofrece ciertas ventajas al administrador del sistema. Una ventaja es el mecanismo de historia, que permite reejecutar comandos y permite ver los comandos que se ejecutaron durante una sesión de login.

Aún viendo que el C shell ofrece ventajas, es fuertemente recomendado que los programas de shell sean escritos en Bourne shell. Se ejecutarán mas rápido, usan menos memoria y son portables a cualquier sistema UNIX.

El Kernel

Lo que es referido generalmente como el kernel de UNIX incluye al administrador de tareas, las rutinas de administración de memoria y los manejadores de dispositivos así como un gran número de funciones del sistema interconstruídas y que están ocultas al usuario casual. Estas funciones, conocidas como llamadas al sistema, son en realidad sub-programas o funciones primitivas que son accedidas por los programas de los usuarios. El kernel es sencillamente un programa llamado Unix o Xenix o Linux y que es cargado cuando el sistema se inicia y se mantiene corriendo hasta que éste se da de baja.

La portabilidad es una característica significativa porque indica el fin de un sistema operativo dependiente de la máquina. Unix es independiente del sistema, está diseñado para ser portable, puede correrse en un gran número de máquinas, desde supercomputadoras hasta microcomputadoras; los usuarios requieren de poco reentrenamiento. La portabilidad es una de las características más importantes y únicas de Unix.

Unix es portable porque en su mayor parte está escrito en el lenguaje C con solo una pequeña porción en código ensamblador nativo. Los manejadores de dispositivos están escritos en C y en código ensamblador, aún así el 90% del kernel de UNIX está escrito en C.

UNIX es un sistema operativo especial, no está limitado en las aplicaciones, y es ideal para la escritura de sistemas, programación y comunicaciones

La visión tradicional de Unix es de un conjunto de esferas en capas, cada esfera representa un nivel diferente del sistema. La última esfera representa a los usuarios, la primer esfera al hardware del sistema.

Estructura de directorios

La estructura de los directorios en Unix es una estructura jerárquica en donde al nivel de directorio que se encuentra en la parte más superior del sistema se le conoce con el nombre de "root" y se simboliza con una diagonal (/). Dentro de dicho directorio se deberán crear todos los demás directorios del sistema. Dos directorios podrán tener el mismo nombre siempre y cuando no estén en el mismo nivel dentro de la jerarquía.

Los directorios más utilizados dentro de un Sistema Operativo tipo UNIX son los siguientes:

/bin - Guarda la mayoría de los comandos de Unix.

/dev - Archivos de dispositivos. Para utilizar cualquier dispositivo en el sistema de requiere que exista el archivo correspondiente en ese directorio:

/etc - Comandos y archivos de administración del sistema.

/lost+found - Almacena archivos recuperados después de una falla del sistema.

/usr - Almacena comandos y aplicaciones del usuario, correo, listas de impresión, etc.

/home - Guarda los directorios de todos los usuarios dados de alta en el sistema