SISTEMAS OPERATIVOS

 

 

INTRODUCCION

   Durante muchos años se creó un distanciamiento entre el S.O. UNIX y el público en general, debido a su complejidad y alto precio.

   Fue allí cuando apareció LINUX, disponible en pequeños paquetes y a valores inferiores a los de UNIX, en conjunto con cientos de aplicaciones adicionales tornándose accesible prácticamente a cualquier usuario.

   Tiene también excelentes funciones de iteraciones en red, especialmente con otros S.O., por lo que puede actuar como servidor y cliente, y también trabajar en conjunto con máquinas Windows, Netware, UNIX, MASCINTOSH, terminales burros, etc.

   Una de las grandes ventajas de LINUX es la disponibilidad del código fuente y tiene la posibilidad de modificar el sistema atendiendo alguna necesidad específica de los usuarios, permite también la corrección de eventuales problemas, lo que lo hace tan estable.

 

INTRODUCCION  DE  SISTEMA DE ARCHIVOS

 

   Todos los programas precisan almacenar y recuperar la información.

   Para poder almacenar grandes cantidades de datos, y para que puedan ser utilizados por varios procesos o usuarios, en el lapso considerado, se utilizan unidades llamadas archivos localizables en discos y otros medios externos. Los archivos pueden ser creados, actualizados o destruidos. Todas estas operaciones las realiza el sistema de archivo.

   El sistema de archivo es la parte del sistema de administración del almacenamiento que se encarga de organizar y administrar los archivos del almacenamiento secundario.

   Esta parte del sistema operativo es la que permite compartir controladamente la información de los archivos.

  

   Un Archivo es un conjunto de registros relacionados que posee un nombre simbólico que se utiliza para referenciarlo.

 

   Los Directorios son utilizados por el sistema operativo para llevar un registro de los archivos  que incluye el nombre, los atributos y las direcciones en disco donde se almacenan los datos del archivo referenciado. 

 

 

ESTRUCTURA

 

   La forma más fácil de estructuración de un directorio es una lista de entradas,  una para cada archivo.

 

OPERACIONES

 

Buscar: cuando alguien referencia el archivo, debe buscarse en el  directorio la entrada correspondiente al archivo.

Crear archivo: al crear un nuevo archivo debe añadirse una entrada al directorio.

Borrar archivo: Al borrar un archivo debe eliminarse una entrada al directorio.

Listar directorio: puede solicitarse todo el directorio o una parte.

 

 

EL SISTEMA DE ARCHIVOS

 

El sistema de archivos UNIX está caracterizado por:

v      Una estructura jerárquica.

v      Un tratamiento consistente de la informacion de los archivos.

v      Proteccion de los archivos.

Este estándar del sistema de archivos Linux sigue el mismo principio básico que la mayoría de los sistemas de archivos UNIX.

Es posible definir dos categorizaciones ortogonales de archivos: Compartibles vs. no compartibles, y variables vs.estáticos. después de haber considerado:

v      Prácticas comunes en la comunidad Linux.

v      La implementación de otras estructuras de sistemas de archivos.

v      Los estándares aplicables.

 

La información compartible es aquella que puede ser compartida entre varias máquinas diferentes; la no compartible es aquella que debe ser local a una máquina particular. Por ejemplo. Los directorios hogar de los usuarios son compartibles, pero los archivos de bloqueo de dispositivo (lock files) son no compartibles.

La información estática incluye binarios, librerias, documentación y todo aquello que no cambia sin la intervención del administrador del sistema. La informacion variable es todo lo que cambia sin la intervención del administrador.

 

La distinción entre información compartible y no compartible es necesaria por varias razones:

En un ambiente de red, existe una buena cantidad de información que se puede compartir entre diferentes máquinas para ahorrar espacio y facilitar la tarea de administración.
En un ambiente de red, ciertos archivos contienen información específica a una sola máquina, por tanto, estos sistemas de archivos no pueden ser compartidos (sin tomar medidas especiales).
Las implementaciones de facto del sistema de archivos no permitían que la jerarquía /usr fuera montada sólo-lectura, porque contenía archivos y directorios que nesecitaban ser escritos muy frecuentemente. Éste es un factor que debe atacarse cuando algunas partes de /usr se comparten en una red, o se montan sólo-lectura debido a otras consideraciones tales como la seguridad.

La distincion "estática" contra "variable" afecta el sistema de archivos de dos maneras principales:

Dado que / contiene ambos tipos de información, variable y estática necesita montarse lectura-escritura.
Dado que el /usr tradicional contiene ambos tipos de información variable y estática y dado que podríamos desear montarlo sólo-lectura, es necesario proporcionar un método para hacer que /usr se monte sólo-lectura. Ésto se logra con la creación de una jerarquía /var que se monta lectura-escritura, que toma mucho de la funcionalidad tradicional de la particion /usr.

 

 

Tipos de sistemas de archivo.

 

No todos los sistemas de archivos son iguales. Generalmente, cada sistema operativo tiene su propio sistema de archivos, y el kernel de Linux soporta muchos de ellos. Los sistemas de archivos que no son de Linux necesitan de algún argumento para poder ser montados.

 

 

Tipo.

Nombre y especificaciones.

ext2

Second Extended File System: es el sistema de archivos mas común actualmente en Linux. Antes se usaba el 'ext' que fue reemplazado por este.

ext

Extended File System: muy parecido al 'ext2' y reemplazado por el mismo.

xiafs

Xia File SystemMuy parecido al ext2. Casi no se lo utiliza actualmente.

msdos

MS-DOS File System: Sistema de archivos de MS-DOS.

nfs

Network File System: Sistema de archivos de Red.

iso9660

ISO 9660 File System: Sistema de archivos usado comúnmente para los CD-ROMs

swap

Sistema de archivos de intercambio.

 

 

EL ÁRBOL DE DIRECTORIOS

La mayoría de los sistemas UNIX tienen una distribución de ficheros estándar, de forma que recursos y ficheros puedan ser fácilmente localizados. Esta distribución forma el árbol de directorios, el cual comienza en el directorio "/", también conocido como "directorio raíz". Directamente por debajo de / hay algunos subdirectorios importantes: /bin, /etc, /dev y /usr, entre otros. Estos a su vez contienen otros directorios con ficheros de configuración del sistema, programas, etc.

En particular, cada usuario tiene un directorio "home". Este es el directorio en el que el usuario guardara sus ficheros. Usualmente, los directorios home de los usuarios cuelgan de /home y son nombrados con el nombre del usuario al que pertenecen.

 

 

EL DIRECTORIO RAÍZ

bin             Binarios de comandos esenciales 

boot            Archivos estáticos de cargador de

                arranque (boot-loader)

dev             Archivos de dispositivos

etc             Configuración del sistema local-máquina

home            Directorios home de los usuarios

lib             Librerías compartidas

mnt             Punto de montaje de particiones temporales

root            Directorio hogar del usuario root

sbin            Binarios del sistema esenciales

tmp             Archivos temporales

usr             Segunda jerarquía mayor

var             Información variable

 

 

DIRECTORIOS:

/bin: es la abreviación de la palabra binaries (del ingles ejecutables). Aquí se guardan muchos de los programas básicos y esenciales para el funcionamiento del sistema como los comandos básicos (ls, cp, etc)

 

/dev: viene del ingles 'device' (dispositivo). Aquí se guardan los controladores de dispositivos. Se usan para acceder a los dispositivos del sistema y a sus recursos como discos rígidos, modems, memoria, mouse, etc.


Hay diferentes nombres con los que se identifica a cada dispositivo: los archivos que empiezan con las letras 'hd'se refieren a los discos rígidos IDE que hay en el ordenador.

 

/etc: Aquí se guardan muchos de los archivos de configuración del sistema, y de los programas, por ejemplo: /etc/passwd guarda información de cada uno de los usuarios como por ejemplo el directorio de inicio del usuario, el interprete de comandos que usara', su UID, GID, etc.

 

/mnt: Este directorio se ha provisto para que el administador pueda montar temporalmente sistemas de archivos cuando lo necesite. El contenido de este directorio es un asunto local y no debe afectar la manera en la cual se ejecuta ningún programa.

 

/root: El directorio / es tradicionalmente el directorio hogar del usuario root en los sistemas UNIX. /root se usa en muchos sistemas Linux y en algunos sistemas UNIX.

 

/boot: Este directorio contiene todo para arrancar excepto los archivos de configuración y el instalador de mapas.

 

/sbin: aquí, al igual que en bin se guardan muchos programas que son solo usados por el administrador del sistema, por ejemplo: el comando exit, el comando halt, el comando reboot, etc.

 

/home: aquí se encuentran generalmente los directorios de inicio (home directory) de los distintos usuarios. Aunque no es obligatorio esto, se usa ya por costumbre para ello.

 

/lib: acá están las imágenes de las librerías compartidas. Estos archivos son usados por muchos programas y se guardan aquí para que cada programa no tenga que tener cada rutina en sus ejecutables. Esto ahorra espacio en disco.

 

/proc: es un sistema de archivo virtual. Contiene archivos que residen en memoria pero no en disco rígido. Hace referencia a los programas que se están corriendo en el momento en el sistema.

 

/tmp: al igual que en el popular sistema operativo de Microsoft, en el directorio tmp se guardan archivos de carácter temporal, es decir, si un programa necesita mantener cierta información

guardada, pero que no será necesaria en otro momento, guardara esa información en el directorio tmp que se vaciara en cuanto el sistema sea reiniciado.

 

/usr: Este directorio es muy importante porque contiene mas subdirectorios que contienen a su vez, muchos archivos importantes, programas, y archivos de configuración del sistema.
La mayoria de las cosas que hay en el directorio usr son opcionales, es decir, el sistema no las necesita para funcionar correctamente.

 

/usr/X11R6: contiene el sistema X-window (no Windows) que es el entorno gráfico de los sistemas UNIX. El X-window, al igual que el entorno de Micorsoft Windows se maneja con ventanas y programas gráficos, por llamarlos de alguna manera.

 

/usr/bin: contiene otros programas que no se encuentran en el directorio /bin.

 

/usr/etc: Tiene algunos archivos de configuración y programas del sistema. Estos archivos, a diferencia de los del directorio

 

 

/etc no son esenciales para el correcto funcionamiento del sistema, aunque puede que algunos si lo sean.

 

/usr/include: contiene archivos que utiliza el compilador de C. Son esenciales para compilar casi cualquier programa hecho en C.

 

/usr/lib: contiene las librerías equivalentes 'stub' y 'static' a los archivos de /lib. Muchos programas, ademas, guardan archivos de configuración en /usr/lib.

 

/usr/local: contiene al igual que /usr una gran cantidad de programas. Este directorio difiere mucho entre cada sistema UNIX.

 

/usr/man: aquí se encuentran la mayoria de las paginas del manual de cada programa. Para acceder a los manuales se utiliza el comando man seguido del nombre del programa.

 

/usr/src: contiene el código fuente (programas por compilar) de muchos programas.

 

/usr/src/linux: contiene el código fuente del núcleo, que puede ser recompilado nuevamente por el administrador. (no aconsejable para usuarios inexpertos).

 

/var: aquí están los programas que cambian de vez en cuando o a menudo de tamaño.

 

/var/adm: contiene archivos que son de incumbencia para el administrador del sistema, mas que nada históricos, donde se loguea (graba) todos los errores, entradas, salidas, etc

 

 

FICHEROS Y DIRECTORIOS

 

 

   Bajo la mayoría de los sistemas operativos (UNIX incluido), existe el concepto de fichero, el cual es un conjunto de información al que se le ha asignado un nombre (llamado nombre del fichero).

Ejemplos de fichero son un mensaje de correo, o un programa que puede ser ejecutado. Esencialmente, cualquier cosa salvada en el disco es guardada en un fichero individual.

 

Los ficheros son identificados por sus nombres. Por ejemplo, el fichero que contiene su historial podría ser salvado con el nombre history-paper. Estos nombres usualmente identifican el fichero y su contenido de alguna forma significativa. No hay un formato estándar para los nombres de los ficheros como lo hay en MS-DOS y en otros sistemas operativos; en general estos pueden contener cualquier carácter (excepto /_), y están limitados a 256 caracteres de longitud.

Con el concepto de fichero aparece el concepto de directorio. Un directorio es simplemente una colección de ficheros. Puede ser

considerado como una "carpeta" que contiene muchos ficheros
diferentes. Los directorios también tienen nombre con el que los podemos identificar. Además, los directorios mantienen una estructura de árbol; es decir, directorios pueden contener otros directorios.

Un fichero puede ser referenciado por su nombre de camino, el cual esta constituido por su nombre, antecedido por el nombre del directorio que lo contiene. Por ejemplo, supongamos que se tiene un directorio de nombre articulos que contiene tres ficheros: historia-final, english-lit y memoria-tesis. Para referirse al fichero especifico se debe especificar su camino:

         

articulos/english-lit

 

El directorio y el nombre del fichero van separados por un carácter /. Por esta razón, los nombres de fichero no pueden contener este carácter. Los usuarios de MS-DOS encontraran esta convención familiar, aunque en el mundo MS-DOS se usa el carácter \).

Los directorios pueden anidarse uno dentro de otro. Por ejemplo, supongamos que se tiene otro directorio dentro de articulos llamado notes. El camino de este fichero seria articulos/notes.

 Por lo tanto, el camino realmente es la "ruta" que se debe tomar para localizar a un fichero. El directorio sobre un subdirectorio dado es conocido como el directorio padre. Aquí, el directorio articulos es el padre del directorio notes.



SISTEMA DE ENTRADA Y SALIDA

 

   El control de todos los dispositivos  de entrada/ salida de la  computadora lo realiza el sistema operativo. Este se ocupa de:

v      Enviar  comandos a los dispositivos.

v      Detectar las interrupciones.

v      Controlar los errores.

v      Presentar todos los perifericos pueden presentar una misma interfaz con el resto del sistema, lo que logra independencia de los mismos.

 

En LINUX las entradas/salidas sobre un dispositivo se hacen gracias a los archivos situados en el directorio /dev/. Cada uno de ellos se identifica por un nombre (por ejemplo, hda para el primer disco duro del controlador IDE) pero sobre todo por dos únicos números: mayor y menor. Estos archivos especiales son de dos tipos: caracteres (terminal, impresora, etc) o bloques (disco por ejemplo).

 

Es muy importante conocer estos archivos. Las diferentes distribuciones (Slackware, Jurix, SLS, etc.) Crean estos archivos. Ciertas versiones pueden generar estos archivos de manera incorrecta (Slackware). Igualmente, resulta inútil crear los archivos necesarios para la utilización de dispositivos de un tipo dado si no se dispone de la tarjeta adecuada.

Para crear un archivo especial,es suficiente la orden mknod Nom_Archivo Tipo Mayor Menor.

Dentro del directorio /dev tambien existe un archivo de comandos llamado Makedev, el cual permite crear archivos especiales sin utilizar directamente mkmod.

El Sistema Operativo maneja todas las operaciones de entrada/salida. La atención de los dispositivos de entrada/salida requieren de mucho esfuerzo por parte de la computadora, por lo tanto se deben realizar de forma eficiente.

Existen tres técnicas de antender a los dispositivos de entrada/

Salida:

 

v      ENCUESTAS (POLLING)

Técnica utilizada para dispositivos lentos. El dispositivo deberá tener una bandera que indica si está ocupado o listo, el procesador entrará en un bucle en el cual consultará ese bit cada cierto tiempo. El procesador se pasa mucho tiempo dentro de un bucle esperando que los dispositivos esten listos, por lo tanto, esta técnica es ineficiente.

 

v      INTERRUPCIONES

El procesador y el dispositivo realizan tareas simultáneamente, cuando el dispositivo terminó alguna tarea le avisa al procesador mediante una interrupción. Este método es eficiente.

 

v      ACCESO DIRECTO A MEMORIA (DMA)

Este método se utiliza para aquellos dispositivos capaces de transmitir o recibir datos a alta velocidad, por ejemplo los

 

 

discos. El controlador del dispositivo transfiere bloques de datos desde su buffer a la memoria principal sin la intervención del procesador.

 

 

REDIRECCIONAMIENTO DE ENTRADA SALIDA

Cualquier comando de UNIX necesita recibir información de algún lugar y enviar los resultados del procesamiento a algun lugar, así como los mensajes de error. Estos lugares se llaman respectivamente, STANDAR INPUT, STANDAR OUTPUT y STANDAR ERROR.

El STANDAR INPUT se refiere al medio desde el cual el comando recibe la información.

De forma similar, el STANDAR OUTPUT se refiere al lugar que el comando envía la salida. Cuando se redireccionan los datos el comando recibe o envía la información desde otra fuente.

El STANDAR ERROR se refiere al medio al que se mandan los mensajes de los errores que se cometen al ejecutar un comando.

Normalmente (aunque depende de cada comando), el STANDAR INPUT  es el teclado y el STANDAR OUTPUT  y   el STANDAR ERROR es la pantalla.

 

REDIRECCIONAMIENTO DE LA SALIDA

 

El símbolo para redireccionar la salida es: > , y se utiliza de la siguiente forma:

 

 

                     Comando > nombre_fichero

 

 

 

Veamos dos problemas que pueden ocurrir si accidentalmente cometemos un error:

 

 

 

 

a)     REDIRECCIONAR LA SALIDA A UN FICHERO YA EXISTENTE

 

 Cuando se redirecciona una salida, el Sistema LINUX crea un fichero con el nombre especificado. Cuando el fichero no existe, al redireccionar la salida a él, crea uno nuevo; pero si el fichero existe borra su cotenido y reescribe encima.

 

Afortunadaente, existe una manera de prevenir borrar ficheros de esta manera sin darnos cuenta, utilizamos el comando:

 

SET NOCLOBBER

 

 

Si tecleamos este comando antes de redireccionar la salida, en el caso de que el fichero donde se envía la salida ya exista, aparecerá en la pantalla el siguiente mensaje:

 

Nombre del Fichero FILE EXISTS y no machacaría el contenido del fichero.

El comando SET NOCLOBBER evita que se:

     -Redireccione una salida a un fichero ya existente.

     -Añada un fichero a otro que no existe.

El comando sólo es efectivo para la seción en que se teclee. Si se quiere que permanezca de forma permanente hay que incluir el comando SET NOCLOBBER en el fichero .cshrc. del Home Directory.

Si en algún momento se quisiera quitar esa protección, hay que teclear  >! .

 

b)REDIRECCIONAR LA SALIDA A UN FICHERO UTILIZADO COMO ENTRADA

 

Veamos  con un ejemplo lo que ocurre cuando se direcciona la salida al fichero utilizado como entrada.

 

          % cat           carreras

 

          medicina

          bioquímica

          abogacía

          %sort           carreras>carreras

          %cat            carreras 

 

Cuando se ejecuta el comando SORT el LINUX borra el contenido del fichero carreras y crea un fichero nuevo de nombre carreras por lo que cuando va a ordenar alfabéticamente el fichero carreras, este está vacío. Por lo tanto hay que tener cuidado de no redireccionar la salida al fichero utilizado como entrada, pues se perdería la información.

 

FILTRO:es un programa que lee los datos de la entrada estándar los procesa de alguna forma y devuelve los datos procesados por la salida estándar.

Un filtro es cualquier comando situado entre dos pipes y manipula los datos obtenidos por un comando previo antes de utilizarse por el comando situado a continuación del filtro. Una línea de comando puede contener varios filtros

 

SORT: es un filtro simple que ordena los datos de entrada y envía los resultados a la salida estándar.

 

CAT: es incluso más simple, no hace nada con los datos de entrada, simplemente envía a la salida cualquier cosa que le llega.

 

 

AÑADIR LA SALIDA DE UN COMANDO A UN FICHERO

 

Se puede añadir la salida de un comando al final de un fichero ya esistente sin borrar su contenido. El símbolo que se utiliza para ello es: >>; se hará de la siguiente forma:

 

comando>>nombre_fichero

 

 

REDIRECCIONAMIENTO DEL STANDAR ERROR

 

Para redireccionar el STANDAR OUTPUT Y el STANDAR ERROR a un fichero, se utiliza los símbolos >& de la siguiente forma:

 

comando >& nombre_fichero

 

Para añadir la salida de un comando, así como los mensajes de error a un fichero, se utilizan los símbolos >>& de la siguiente manera:

 

Comando >>& nombre_fichero

 

 

REDIRECCIONAMIENTO DE LA ENTRADA

 

 

El símbolo para redireccionar la entrada es < y se utiliza de la siguiente manera:

 

 

Comando < nombre_fichero

 

Si se quiere utilizar como entrada aparte del contenido de un fichero, habría que poner en el fichero un “string”, que puede ser cualquier símbolo excepto : zzFunyzz.

 

 

PIPES: TRANSFERENCIA DE DATOS

 

El Sistema LINUX permite transferir datos entre diferentes procesos (comandos). Este proceso se llama “PIPING” pues “PIPE” es el nombre que se le da al símbolo utilizado para transferir datos.

El símbolo para PIPING es |  y se utiliza de la siguiente manera:

 

Comando_1 | comando_2 | comando_3 |

              ...

 

 

 

 

es decir, el comando_2 utiliza como entrada los resultados obtenidos por el comando_1; la salida del comando_2 se utiliza como entrada del comando _3 y así sucesivamente.

Utilizandopipes no es necesario utilizar ficherostemporales ni hacer pasos intermedios para obtener la información que se desea.

 

 

COMANDO TEE

 

Cuando despues de Pipes aparece el comando tee la redirección de la salida la hace a dos sitios, a un fichero especificado y al estándar output

 

Comando | comando | tee nombre_fichero | comando |

       ...

 

 

 

 

 

 

CONCLUSION

 

  Linux es un sistema con características de apoyo: multitarea,

multiusuario, multiprocesamiento, multiplataforma, ejecución en modo protegido, que cumple con los patrones de UNIX  en especial tiene un formato de desarrollo comunitario de código abierto.Es maduro, barato y lo suficientememte estable como para utilizarlo en una computadora de uso personal, en forma genérica para edición de textos, hoja de cálculo, gráficos, acceso a Intenet, desarrollo de programas, etc.

  Día a día, más y más programas están disponibles en este sistema y la calidad de los mismos aumenta de versión a versión. La presencia de LINUX en las empresas aumenta rápidamente por la excelente relación calidad-precio del mismo.

 

 

 

                     

   Anterior          Índice          Siguiente

Para mayor información, seleccione una opción:

Número de visitas efectuadas desde el 17/12/2001: 
 
Estadísticas diarias desde el 10/07/2002:    

Número de visitantes actuales disponible desde el 14/07/2002:

 

AddFreeStats.com Free Web Stats in real-time !  

 

 

 

Autor: lrmdavid@exa.unne.edu.ar

Ó FACENA - http://exa.unne.edu.ar

Servicios WEB: webmaster@exa.unne.edu.ar