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:
-
fd0
-
Disco flexible.
-
dsk
-
Discos duros.
-
lp
-
Puertos paralelos.
-
rmt
-
Unidad de cinta.
/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