GRUPO Nº 7                                                                          Tema 10

 

LINUX

 Sistemas de archivos y Sistemas de Entrada/Salida

Introducción

LINUX es un sistema operativo, compatible con UNIX. Dos características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningún tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente. El sistema lo forman el núcleo del sistema (kernel) mas un gran número de programas / librerías que hacen posible su utilización.

El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partió la idea de este proyecto, a principios de la década de los noventa.

Día a día, más y más programas / aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen gratuitamente bajo los términos de licencia de la GNU Public License.

En los últimos tiempos, ciertas casas de software comercial han  empezado a distribuir sus productos para Linux y la presencia del mismo en empresas aumenta rápidamente por la excelente relación calidad-precio que se consigue con Linux.

Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC.

ir a pagina principal

Hardware

Linux puede ser utilizado sobre múltiples arquitecturas de ordenadores, (Digital, Solaris, ...) si bien en estas páginas revisaremos los parámetros esenciales de la más típica: intel386.

Procesador

Es necesario un procesador Intel 386 o superior. Puede utilizar procesadores compatibles (p.ej. AMD) que dan las mismas prestaciones y son más baratos.
Hoy en día no encontrará ordenadores nuevos con menos de un Pentium o un K6. De este modo, cualquier procesador es suficientemente potente para Linux.
En cuanto a los Megahercios, sólo necesitará un modelo de gama alta si va a dedicar el equipo a un servidor.

Memoria

Aunque con 8 megas es suficiente, le recomendamos emplear el máximo de memoria que pueda, especialmente si instala XWindows y aplicaciones ofimáticas.
Con 64 Megas obtendrá buenos rendimientos.
 

Disco Duro

Linux acepta discos IDE y SCSI, que es tanto como decir que vale cualquier disco. Con un giga de disco es más que suficiente para instalarlo, no obstante dado el precio actual de los discos le recomendamos adquirir ordenadores con al menos 8 gigas de disco.

Otros dispositivos de almacenamiento

Todas las distribuciones incorporan de forma automática módulos para gestionar disqueteras y unidades de CD-ROM. Además, no tendrá problemas para utilizar disquetes u otras particiones de disco en formato MS-DOS o Windows (FAT16, FAT32 y NT). No obstante, si desea emplear otros dispositivos menos comunes (unidades de CD de lectura/escritura, unidades ZIP, cintas) deberá instalar explícitamente los módulos necesarios. Si su distribución no dispusiese de los mismos, puede descargárselos por Internet.

Swap

El espacio de Swap es una parte del disco duro que Linux emplea cuando la memoria principal RAM es insuficiente. Incluso si dispone de una memoria RAM amplia, el sistema puede necesitar espacio extra temporalmente. A la hora de instalar defina o bien el doble de su memoria principal o bien 128 megas como espacio de Swap.  

Módem

Como regla general, evite los módem internos: actualmente la mayoría son WinModem en mayor o menor medida. Esto significa que para funcionar deben consumir parte de la potencia de su PC y además que sólo funcionan con Windows. Le recomendamos que evite los winmodem incluso si va a utilizar Windows, a menos que tenga un verdadero problema de presupuesto.
Los módem externos no suelen dar problemas con Linux y, por otra parte, en caso de error de comunicaciones se pueden reiniciar fácilmente.

Tarjetas de red

En general, las tarjetas Ethernet no le darán problemas. Otros tipos de tarjetas también se encuentran soportadas, pero puede que su distribución no instale automáticamente los módulos de control.

Tarjeta Gráfica

Prácticamente todas las tarjetas gráficas tradicionales sirven para Linux, aunque no todas las más modernas disponen de un servidor X actualizado.
En el peor de los casos deberá configurar una tarjeta de última generación como si fuese una simple SVGA. Consulte en XFree la disponibilidad de servidores X para su tarjeta.

Impresoras

La mayoría de los programas en Linux generan sus listados o informes o bien como texto puro o bien como PostScript. (texto ASCII). Así, todas las impresoras PostScript funcionan sin problemas con Linux. Para las restantes impresoras, existen conversores de PostScript al formato nativo de la impresora. Obviamente, no todas las impresoras están contempladas, pero la mayoría se ajusta a alguno de los estándares más reconocidos (Epson, IBM, HP, ...)

ir a pagina principal

Características  

·                Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.

·                Multiusuario: Muchos usuarios usando la misma máquina al mismo tiempo.

·                Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC.

·                Multiprocesador: Soporte para sistemas con mas de un procesador esta disponible para Intel y SPARC.

·                Funciona en modo protegido 386.

·                Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.

·                Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.

·                Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.

·                Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha  Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este limite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente.

·                La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.

·                Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.

·                Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.

·                Compatible con POSIX, System V y BSD a nivel fuente.

·                Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario. (emulación : dispositivo, hardware,  que se usa para trabajar como otro; una terminal)

·                Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.

·                Control de tareas POSIX.

·                Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.

·                Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.

·                Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video).  Se crean dinámicamente y puedes tener hasta 64.

·                Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.

·                Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS.

·                Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.

·                TCP/IP, incluyendo ftp, telnet, NFS, etc.

·                Appletalk (construcción de una máquina para que funcione como otra).

·                Software cliente y servidor Netware.

 ir a pagina principal

El sistema de Archivos

El sistema de archivos UNIX está caracterizado por:

Una estructura jerárquica. Un tratamiento consistente de la información de los archivos.

Protección 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

Definir dos categorizaciones ortogonales de archivos: Compartibles vs. no compartibles, y variables vs. estáticos.

La información compatible 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, librerías, documentación y todo aquello que no cambia sin la intervención del administrador del sistema. La información variable es todo lo que cambia sin la intervención del administrador.

El entendimiento de estos principios básicos ayudará a guiar la estructura, a lo largo de este documento, y en cualquier sistema de archivos bien planeado, esto brindará consistencia adicional.

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

En un ambiente de red (i.e. más de un host en un site), 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.

La distinción "compatible" puede ser usada para soportar, por ejemplo:

·                Una partición /usr (o componentes de /usr) montada (sólo-lectura) a través de la red (usando NFS).

·                Una partición /usr (o componentes de /usr) montada desde medios de sólo-lectura. Un CD-ROM puede ser considerado como un sistema de archivos sólo-lectura compartido con otros sistemas Linux utilizando el sistema de correo como una red.

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 

Cada directorio listado será discutido en detalle en una subsección separada más delante. /usr y /var, cada uno tiene en su propia sección en este documento.  

La jerarquía /usr

usr es la segunda mayor sección del sistema de archivos. /usr es /información compartible, de sólo-lectura, esto significa que /usr, debe ser compatible entre varias máquinas que corren Linux y no se debe  escribir. Cualquier información que es local a una máquina o varía con el tiempo, se almacena en otro lugar.

/usr --- Segundo mayor punto de montaje (permanente) 

bin             La mayoría de los comandos de usuario

dict            Listas de palabras

doc             Documentación miscelánea

etc             Configuración del Sistema (todo el site)

games           Juegos y binarios educacionales

include         Archivos header incluidos por programas C

info            Directorio primario del sistema GNU Info

lib             Librerías

local           Jerarquía local (vacía justo después de la instalación principal)

man             Manuales en línea

sbir            Binarios de Administración del Sistema No-Vitales

share           Información independiente de la arquitectura

src             Código fuente 

La Jerarquía /var

/var    Información variable 

		adm             Info administrativa del sistema (obsoleto). Enlace simbólico hacia /var/log

        catman          Páginas del manual formateadas localmente

        lib             Información del estado de aplicaciones

        local           Información variable del software de /usr/local

        lock            Archivos de bloqueo

        log             Archivos de bitácora

        named           Archivos DNS, sólo red

        nis             Archivos base de datos NIS

        preserve        Archivos almacenados después de una falla de ex ó vi 

        run             Archivos relevantes a procesos ejecutándose

        spool           Directorios de trabajos en fila para realizarse después

        tmp             Archivos temporales, utilizado para mantener /tmp pequeño 

/var contiene archivos con información variable. Esto incluye archivos y /directorios en fila de ejecución, información de bitácora administrativa y /archivos temporales y transitorios. Algunas porciones de /var son no-compartibles entre diferentes sistemas. Por ejemplo, /var/log, /var/lock y /var/run. Otras porciones son compartibles, notablemente /var/spool/mail y /var/spool/news.

/var se especifica aquí para hacer posible el montar /usr sólo-lectura. /Todo aquello que alguna vez fue en /usr que es escrito durante la operación /normal del sistema (pero no durante la instalación y el mantenimiento del /software) debe ir en /var.

Si /var no puede ser una participación separada, es preferible mover /var fuera de la participación raíz pero dentro de la partición /usr (esto se hace algunas veces para reducir el tamaño de la partición raíz o cuando hay poco espacio en la partición raíz). Como sea, /var no debe ser enlazada a /usr, porque hace que la separación entre /usr y /var sea más difícil y seguramente creará un conflicto de nombres, En vez enlace /var a / usr/var.

ir a pagina principal

Dispositivos de entrada-salida.

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 maneara 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 también existe un archivo de comandos llamado MAKEDEV, el cual permite crear archivos especiales sin utilizar directamente mknod.

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 3 técnicas de atender los dispositivos de entrada-salida: 

Ø          Encuestas (Polling).

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

Ø          Interrupciones.

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

Ø          Acceso directo a memoria (DMA).

Este método se utiliza para aquellos dispositivos capaces de transmitir o recibir datos a alta velocidad, como 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.

ir a pagina principal

Redireccionamiento De Entrada / Salida

Cualquier comando de UNIX necesita recibir información de algún "lugar" y enviar los resultados del procesamiento a algún "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

Algunas Precauciones Que Se Deben Tener Al Redireccionar La Salida  

Veamos 2 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 UNIX 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 contenido y reescribe encima. Afortunadamente, existe una manera de prevenir borrar ficheros de esta forma sin darnos cuenta, utilizando 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 sesió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 esta protección, hay que teclear >!.    

B.- Redireccionar La Salida A Un Fichero Utilizado Como Entrada.

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

%cat frutas
plátano
naranja
manzana
%sort frutas>frutas
%cat frutas
%

Figura 7.2.

 

Observemos que cuando se ejecuta el comando sort el UNIX borra el contenido del fichero frutas y crea un fichero nuevo de nombre frutas, por lo que cuando va a ordenar alfabéticamente el fichero frutas, y éste 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.  

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 existente 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 utilizan los símbolos >& de la forma siguiente:

 

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 parte 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 UNIX 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.  

Utilizando pipes no es necesario utilizar ficheros temporales ni hacer pasos intermedios para obtener la información que se desea. Por ejemplo, si ponemos:

who | sort | lpr

entonces la lista de usuarios conectados al sistema se ordenan alfabéticamente y se imprime (ordenada) por la impresora del sistema.

 

Filtros  

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.  

 

En el ejemplo:

who | sort | lpr

el comando sort actúa como filtro.

 

Comando tee

 

Cuando después de un pipe aparece el comando tee la redirección de la salida la hace a dos sitios, a un fichero especificado y al standar output:

 

comando | comando | tee nombre_fichero | comando | ......

En el ejemplo:

who | sort | tee listin | more

la lista de usuarios ordenada alfabéticamente, aparece por pantalla y se almacena en el fichero listin  

ir a pagina principal  

Conclusión

LINUX puede emplearse en una gran cantidad de aplicaciones. Desde manejo de redes, pasando por desarrollo de software hasta llegar a ser una plataforma de trabajo para el usuario final. Es además, una excelente alternativa de bajo costo frente a otros sistemas operativos de precio mas elevado. Soporta una amplia gama de programas incluyendo X-WINDOWS, Redes TCP/IP y juegos tan populares como DOOM. También se encuentra aplicaciones para servidores de archivos ( File Servers ) , Web Servers, FTP y en desarrollo emuladores que permitirán correr aplicaciones DOS y WINDOWS sobre la plataforma LINUX .

No existen muchas aplicaciones comerciales para LINUX, pero de todas maneras las grandes empresas se inclinan hacia este tipo de sistema operativo.  

ir a pagina principal

                      

   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