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.
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.
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.
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:
REDIRECCIONAMIENTO
DE LA ENTRADA
El
símbolo para redireccionar la entrada es < y
se utiliza de la siguiente manera:
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:
...
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.
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.
![]()
Número de visitantes actuales disponible desde el 14/07/2002:
Autor: lrmdavid@exa.unne.edu.ar
Ó FACENA - http://exa.unne.edu.ar
Servicios WEB: webmaster@exa.unne.edu.ar