Curso de Introducción a Unix - por F.C.

INTRODUCCION y CONCEPTOS BASICOS

El sistema operativo UNIX

Un sistema operativo es un programa que controla otras partes del ordenador tanto hardware como software. Permite además al usuario acceder a las facilidades que ofrece el sistema.

UNIX comienza en 1969 como un proyecto de investigación de Bell Laboratories, estando disponible la primera versión comercial en 1977 y ganando rápidamente en popularidad y difusión.

Los objetivos que persiguieron los primeros diseñadores de UNIX fueron conseguir un sistema operativo que permitiera un desarrollo eficiente de programas, que fuera pequeño y eficiente en el uso de la memoria y fácil de mantener.

Los sistemas operativos, hasta la aparición de UNIX, eran pensados para funcionar únicamente en el sistema en que eran desarrollados. Esto implicaba un gran esfuerzo en aprender un nuevo sistema operativo cada vez que se usaban sistemas distintos. Aplicaciones que funcionaban en un sistema no estaban disponibles en otros e inclluso los propios programas requerían modificaciones para transportarlos a otro sistema.

Una de las razones que han hecho que UNIX haya alcanzado una gran popularidad es resolver estos problemas, pues permite transportarlo fácilmente a diferentes sistemas. Esto se consiguió diseñando el sistema operativo de forma que hiciera muy pocas suposiciones sobre la arquitectura de la computadora y escribiendo la mayor parte del sistema operativo en un lenguaje de alto nivel (C). Sólo una pequeña parte (el kernel) está escrito en lenguaje ensamblador.

Actualmente UNIX puede ser usado desde pequeños ordenadores personales a grandes computadoras. Así pues un programador puede encontrar las mismas herramientas de programación, entornos similares y ejecutar fácilmente sus programas en cualquier sistema que use UNIX.

No hay una única versión de UNIX. En la actualidad existen dos versiones principales: System V (la más popular y es la usada en el IAC) y la BSD. Con pequeñas diferencias en la estructura de ficheros y en algunos comandos. En el IAC la red UNIX usa como sistema operativo la versión de UNIX de Sun Microsystem llamada SunOS. Hay varias versiones del sistema operativo. A partir de la versión SunOS 5.0 se distribuye como Solaris version 2.
SunOS 5.4 = Solaris 2.4
SunOS 5.5 = Solaris 2.5
No todas las máquinas del IAC tienen la misma versión.

Al entrar en nuestra cuenta en el IAC tenemos fundamentalmente dos opciones:
Common Desktop Enviroment (CDE).
OpenWindows (OW).
No hay que confundir estas dos opciones con versiones del sistema operativo. Los sistemas de ventanas son utilidades que usualmente se distribuyen con el sistema operativo para facilitar la forma que tiene el usuario de interactuar con el sistema operativo (GUI Grafical User Interface), pero no forman parte del sistema operativo.

Partes del sistema operativo

Las partes más importantes en que puede dividirse el sistema operativo UNIX son:
Kernel
Shell
UNIX file system

Además, normalmente con el sistema operativo se suministran otra serie de programas, utilidaeds para comunicaciones, editores, lenguajes de programación, etc, que no forman parte estrictamente del sistema operativo.

Kernel

Puede considerarse como el núcleo del sistema operativo y es leido cada vez que se inicializa el sistema. Realiza una serie de tareas básicas como son:

Shell

La forma que el usuaruio tiene de acceder a los servicios del kernel es mediante la shell. Se puede considerar como el interprete de comandos, que permite que los comandos y programas que tecleamos sean ejecutados.

En UNIX hay varios tipos de shell que ofrecen diferentes características:

Bourne shell. Es la original de UNIX y está disponible en todos los sistemas, sin embargo no ofrece las facilidades de interacción con el usuario que ofrecen las shell más modernas.

C shell. Es la que tenemos normalmente cuando nos abren la cuenta en el IAC, (aunque podemos pedir que nos pongan otra).

TC shell es similar a la anterior pero ofrece más facilidades para editar la línea de comandos de forma interactiva. En lo que resta del curso supondremos que estamos trabajando con la TC o C shell.

Korn shell y Bourne Again SHell proporcionan las facilidades de interacción de TC shell pero el lenguaje de programación en shell es más parecido al original Bourne shell que a TC o C shell.

En la tabla se muestra un resumen de las características más importantes de las distintas shells.


                    Bourne   C    TC   Korn   BASH
________________________________________________________


command history        No   Yes   Yes   Yes    Yes

command alias          No   Yes   Yes   Yes    Yes

shell scripts          Yes  Yes   Yes   Yes    Yes

filename completion    No   Yes*  Yes   Yes*   Yes

command line editing   No   No    Yes   Yes*   Yes

job control            No   Yes   Yes   Yes    Yes

________________________________________________________

* Esta opción no está puesta por defecto

Para cambiar de shell basta con teclear en la línea de comandos el nombre de la shell que deseemos (sh, csh, tcsh, ksh o bash). Sin embargo no podemos cambiar la opción que tenemos por defecto al entrar en la cuenta, si queremos cambiarla hay que pedirlo al administrador del sistema.

UNIX file system

La tercera parte que define el sistema operativo UNIX es la estructura de su sistema de ficheros.

Un sistema de ficheros es la forma que tiene el sistema operativo de organizar los datos en una estructura o colección de ficheros. UNIX considera como ficheros no sólo a los ficheros normales (en los que guardamos datos, programas, etc) sino también a los directorios y los dispositivos conectados al sistema.

El sistema de ficheros en UNIX está organizado en una estructura jerárquica de directorios que comienza en el directorio root representado por / .

Los directorios que cuelgan de root pueden variar dependiendo del sistema, aunque los mostrados en el arbol a continuación, sí son comunes a todos los sistemas UNIX.

                              /(root)
                                 |
 ----------------------------------------------------
 |         |       |       |        |       |       |     
  /bin    /dev    /etc    /home    /lib    /tmp    /usr   

Los ficheros pueden clasificarse dentro de las siguientes categorías:

Los ficheros normales pueden tener contenidos muy diferentes, por ejemplo texto, imágenes, ejecutables, etc. Todos los ficheros tienen un propietario, los que creamos nosotros desde nuestra cuenta nos pertenecen y cada propietario es el que puede controlar los permisos de acceso a ese fichero.

Los directorios son ficheros que contienen referencias a otros ficheros. Aunque todos los ficheros se encuentran dentro de algún directorio, no residen realmente dentro de él. El directorio mantiene dos informaciones básicas sobre cada fichero contenido en él: El nombre y un número llamado inode number que es un puntero que le indica al sistema donde encontrar toda la información que necesita del fichero.

A la correspondencia entre el nombre de un fichero y el inode number se le denomina link. Un mismo inode number puede tener asociados varios nombres y nos podemos referir al fichero por cada uno de estos nombres.

Los dispositivos especiales son ficheros que representan dispositivos físicos como impresoras, dispositivos magnéticos, el ratón, etc. Se encuentran dentro del directorio /dev. Por ejemplo, si la salida por pantalla de un programa no nos interesa podemos enviarla al dispositivo /dev/null que en realidad no tiene un dispositivo físico asociado, perdiendose de esta forma la salida del progrma.
programa1 >/dev/null

Los pipes permiten enlazar la sailda de un comando a la entrada de otro, esto se hace a través de la creación de un fichero temporal donde se guarda la salida del primer programa hasta que es leido por el segundo.