Sistema de archivos en un Sistema Operativo
Escrito por Quasi

Publicado:02/06/2001
  Actualizado:02/06/2001
 

Nota: Archivo y fichero es lo mismo. Se usaran en las l�neas de esta manual de forma aleatoria.

Archivos: Los archivos o ficheros son unas unidades l�gicas de almacenamiento que define el propio sistema operativo. No son mas que una serie de bits cuyo significado esta definido por su creador. Pongamos el ejemplo de un fichero grafico, de una escala de grises. Este archivo seria un conjunto de bits definidos por el creador, y que internamente seria una matriz num�rica, cuyos elementos representan los niveles de grises de cada uno de los p�xeles de la imagen que contiene el fichero.

Los ficheros o archivos se identifican por su nombre y su extensi�n. Seg�n que sistema operativo se utilice, podemos introducir un mayor o menor numero de caracteres a este nombre. Por ejemplo, MSDOS, solo permite 8 caracteres para el nombre, de hay que si en Windows ficheros con un nombre de mas de 8 caracteres, MSDOS, los reemplaza por "~1" ((Alt. +126) 1). En Windows, en realidad como sistema operativo solo hace un apa�o para esto, identifica solo los primeros caracteres, el resto de nombre de un fichero o archivo lo a�ade pero no lo identifica con �l, es un apa�o XD. En otros sistemas operativos como LINUX si permite la introducci�n de un nombre para ficheros con mas de 8 caracteres y si los identifica con cuantos sean.

Los ficheros almacenan dentro de ellos sus propias caracter�sticas, como son: la fecha de su creaci�n, la fecha de su ultima modificaci�n, sus atributos (solo lectura, etc.), su tama�o, etc.

Tipos y estructuras de los ficheros/archivos: La extensi�n que era la segunda parte que identificaba a un fichero, es la parte que define el tipo de fichero de que se trata. As� pues si tenemos un fichero con extensi�n: jpg, bmp, gif, estaremos hablando de un fichero de imagen. Si es con extensi�n doc, ser� de documentos, si es: exe (ejecutable), com (de comandos), bat (procesamiento por lotes (programaci�n lineal)"baths") ficheros ejecutables.
Un sistema operativo puede o no tener conocimiento de los distintos tipos de extensi�n, lo que permite un mayor servicio y rapidez. UNIX solo reconoce e interpreta los ficheros de perif�ricos y los directorios. El resto de extensiones de los ficheros se los pasa a la hora de ejecuci�n al programa con el que se han creado o son compatibles.
En Windows pasa esto con ciertas extensiones. Cuando el usuario ejecuta un fichero, el sistema operativo mira haber si la extensi�n es reconocida por el mismo para pasar directamente al procesamiento del fichero. Si no la reconoce, coge y hace una llamada a un programa (que si reconozca esa extensi�n, que pueda crear ese tipo de ficheros, o que sea compatible con ellos) y junto a esa llamada al programa le pasa un par�metro (ruta \ nombre del fichero). Entonces el programa capta la orden y ejecuta el procesamiento del par�metro, el cual alberga la localizaci�n del fichero.

Operaciones con los ficheros: Las principales operaciones que un sistema operativo puede llevar a cabo sobre un fichero son:


Directorio de archivos: Los directorios son tablas de ficheros donde cada entrada guarda informaci�n referida y relativa a ellos.
As�, pues un directorio no es mas que una tabla, con columnas y filas fijas variables. Esto es porque en un directorio podremos meter tantos ficheros como queramos y siempre podemos ir metiendo mas o quitando, de hay que sea obligatoriamente variable y redefinida cada vez que hacemos cambios dentro de un directorio. En cada casilla de esa tabla, podr�a decirse que se almacena un fichero. Llegando mas lejos, podr�amos decir que un directorio viene a ser como otro tipo de archivo, el cual en vez de contener una imagen o un texto, contienen tablas de ficheros dentro del. Al igual que los ficheros un directorio tambi�n es una unidad l�gica de almacenamiento, (no es tangible).
El sistema de directorios mas extendido es el del �rbol. En un sistema operativo multiusuario, cada usuario dispone de su propia estructura jer�rquica de directorios.

Otro de los problemas es donde ubicar el almacenamiento de directorios con sus ficheros dentro?
Si pensamos en la rapidez lo m�s factible seria ubicarlos en la memoria principal (RAM). Pero esto ocupar�a much�simo espacio, as� que se pens� en el disco duro, y de hay su existencia. Lo bueno de los ficheros y directorio es que est�n en el ordenador, almacenados dentro del. Y que no haya que andar cargando con ellos en fuentes de almacenamiento externas como disquetes y CDS.

Bien, la estructura en �rbol, es el tipo de estructura jer�rquica y organizada m�s empleada para el sistema de directorios. Pero con ella tambi�n se plantea un problema. Y es: cu�l es la ra�z de ese �rbol?, cual es el directorio ra�z?. Todo �rbol nace de sus ra�ces y va creciendo y ramificando. Como sabemos cual es el principio, la ra�z, el directorio donde comenz�.
Bueno, normalmente el directorio ra�z es aquel donde se arranca el sistema. Donde se encuentra almacenado el sistema operativo y donde tambi�n se almacenan los ficheros de inicio del sistema.

Cuando pulsamos el bot�n de arranque del ordenador, lo que hacemos es mandar una determinada cantidad de corriente, que activa los componentes del hardware, este luego se comunica con el software que en primera instancia es el sistema operativo. Y es este el encargado de inicializar todo el software que requiere el ordenador para iniciarse.

Operaciones con directorios: Var�an mucho dependiendo del sistema operativo.

Operaciones MSDOS
Make dir MD
Remove dir RD
Read dir DIR
Rename dir
Enlazar (link) En LINUX con la orden ( LINK )
Desenlazar (unlink) En LINUX con la orden ( UNLINK )
Copiar dir Deltree


Relaci�n del sistema de archivos: El sistema operativo aparte de realizar estas operaciones, tambi�n debe ser capaz de gestionar el espacio que hay en disco duro de manera que se acceda de forma eficiente y rapida a los distintos directorios y ficheros.

Esto supone elegir una pol�tica de asignaci�n de espacio de espacio libre. Al igual que en memoria principal. Estos pueden ser consecutivos (particiones, fijas o variables), o no consecutivas, en las que se divide el fichero en bloques o paginas.
Para asignar el espacio a disco los 3 m�todos mas usados son: asignaci�n contigua, listas enlazadas e �ndices.

Gesti�n del espacio libre: Al igual que en memoria principal para llevar un registro de que bloques del disco est�n llenos o vac�os seria bueno usar mapas de bits o listas enlazadas de bloques libre.
Otro problema es la elecci�n del tama�o del bloque, si este es muy grande se puede desperdiciar mucho espacio. Con lo que s� esta desperdiciando memoria. Y si es muy peque�o, como cada lectura de un bloque lleva impl�cito un retraso para la b�squeda de ese bloque, har�amos que el disco duro se llenase de much�simos bloques de peque�o tama�o y su lectura y b�squeda se retardar�a much�simo m�s.

M�todos de asignaci�n

M�todos de asignaci�n contigua: Haber en este m�todo el sistema operativo debe coger un grupo de bloques contiguos y vac�os en el disco duro para llenarlos con un fichero. Entonces el sistema operativo, solo requiere conocer el tama�o del fichero y la direcci�n del primer bloque libre. Sabiendo eso ya puede asignar el fichero a una serie de bloques libre contiguos en disco duro.
Pero este m�todo, plantea dos grandes problemas:
� La fragmentaci�n externa: Que se puede solucionar con procesos complejos de compactaci�n.
� La obligatoria reubicaci�n: Si un fichero crece es necesario reubicarlo en un sitio con mas bloques contiguos. Esto se podr�a solucionar si el sistema operativo conociera de antemano cual ser� el tama�o m�ximo de un fichero.

M�todo de asignaci�n mediante listas enlazadas: Hab�amos visto que un directorio tenia almacenada una tabla con los ficheros. Haber, supongamos que un fichero cuando se almacena en esa tabla o disco duro, se divide en varios bloques. Ahora bien, en este m�todo los directorios poseen unas tablas con la informaci�n de la direcci�n en disco duro del primer bloque de cada fichero. Luego cada bloque tiene grabado en su cabecera la direcci�n al bloque siguiente y as� sucesivamente hasta constituir el fichero completo. Como vemos en este m�todo no se da la fragmentaci�n externa y los ficheros pueden crecer sin problemas de reubicaci�n, solamente modificando los punteros de direcciones a los bloques posteriores. No surge por tanto la necesidad del reubicamiento como anteriormente, debido a que en este caso los bloques se disponen de forma no contigua.
Pero si tiene un problema este tipo de asignaci�n. Y es que si desde un programa queremos acceder a una utilidad que es la que internamente hace la llamada a un determinado bloque de un fichero, el sistema operativo debe primero buscar el bloque inicial de ese fichero y luego ir recorriendo secuencialmente bloque a bloque hasta que llegue al bloque que se quiere.

M�todo de asignaci�n mediante la indexacion: Una forma de subsanar el problema del acceso a un bloque determinado. Es la indexaci�n. La indexaci�n es una t�cnica que desde un "lugar" madre, origen o partida, podemos referirnos a "sublugares". Haber, lo que se hace en este m�todo es crear por cada fichero un bloques index (�ndices), que contiene el puntero o la direcci�n en memoria de todos los bloques de ese fichero. Con lo que s� un programa necesita hacer una llamada a un bloque determinado de un fichero lo que hace es acudir al index y este ya la redirecciona directamente al bloque que desea acceder. Pero este m�todo tambi�n plantea su problema y es la necesariedad de crear ese bloque index por cada fichero. Con lo que estamos ocupando cada vez mucho m�s espacio, estamos "desperdiciando" memoria con "archivos / bloques de sistema"

M�todo de asignaci�n mediante indexaci�n de varios niveles: Este m�todo es el que soluciona el problema del m�todo anterior. Es el que usa UN�X. En �l disponemos de un nodo index (un nodo �ndice) que guarda el puntero de comienzo de cualquier fichero del directorio, luego se disponen bloques de �ndice de primer nivel, luego de segundo nivel, luego de tercer nivel, y por ultimo los bloques de datos.

Aspecto de dise�o: Por un lado hay que dise�ar el interface para el usuario. Vendr�a a ser como el elemento comunicacional entre el usuario y el sistema de archivos o directorios. Y por otro lado la definici�n del c�digo interno para la gesti�n del sistema de ficheros y directorios.
Windows usa una interface grafica, lo que es conocido como una GUI (interface grafica de usuario), en Windows los archivos vienen representados con unos iconos identificativos a cada fichero, y los directorios se representan como carpetas, etc.
El m�todo de dise�ar la interface grafica para el sistema de ficheros y directorios, explica la r�pida difusi�n y comercializaci�n de este sistema operativo. Haci�ndolo m�s c�modo, r�pido, manejable, intuitivo, etc. LINUX pose su modalidad de interface grafica para su sistema de archivos y directorios, con la modalidad de las XWINS.

Comparici�n de ficheros: Compartiendo un fichero lo que obtenemos es que veamos un mismo fichero en varios directorios donde hemos definido que se comparta. En UNIX se realiza con la orden LINK. En realidad no es que cree dos ficheros iguales uno para cada directorio, sino que crea una imagen l�gica y virtual del fichero, pero tal imagen sola contiene almacenado en ella una direcci�n al fichero padre, o al fichero del cual se ha linkado o compartido. As� pues cuando ejecutamos esta imagen o fichero, lo que hace el sistema operativo es ver el contenido de ese fichero y ve que contiene un enlace al fichero padre del cual se ha linkado y por tanto devuelve el resultado de este fichero. Vendr�a a ser como un espejo, en realidad solo hay una persona mir�ndose al espejo, aunque aparentemente se vean dos personas. En Windows los accesos directos causan un efecto similar. Lo que contienen �nicamente es la ruta a la direcci�n en memoria del fichero del cual se han creado. Y cuando se ejecuta ese acceso directo estamos en realidad haciendo una llamada de ejecuci�n al fichero ra�z.

Caches de disco: El acceso a disco duro es del orden de 100.000 veces mas lento que a la memoria principal, por este motivo se usan las denominadas caches de disco. Las caches son un tipo de memoria alternativa y de mas r�pido acceso. El sistema consiste en llevar bloques del disco duro que son normalmente utilizados, de uso repetitivo, a la cache. Hacer un volcado de bloques del disco duro a la memoria cache de disco. De esta forma, cuando el usuario desee hacer sus operaciones comunes, estar� recurriendo al acceso a la cache y no al disco duro, aunque parezca lo contrario. De hay que se optimice mas la eficiencia y velocidad. Directamente el sistema operativo llama a la cache sin recurrir en ning�n momento al disco duro, en caso pues de que las operaciones que realiza el usuario est�n grabadas en la cache, de no ser as�, recurre al disco duro y luego lo vuelca o lo lleva a la cache, para las posteriores veces.
El problema de esto es cuando se escribe en un bloque de la cache y hay que actualizarlo en el disco. De no ser as�, podr�an darse situaciones de corrupci�n de ficheros.
La soluci�n ha esto es, volcar la cache sobre el disco duro, obligando al sistema operativo a actualizar los bloques del disco que est�n cambiados en la cache. Esta operaci�n se puede realizar peri�dicamente. El propio sistema operativo se encarga de hacerlo de forma autom�tica o preprogramada por el usuario.

El uso de la cache presenta estos problemas:
� Aumenta el riesgo de inconsistencias o corrupciones.
� La gesti�n es m�s compleja.

Las ventajas que presenta el uso de la cache son:
� Mejora los tiempos de acceso y respuesta.
� Al utilizar escritura retardada las aplicaciones no tienen que esperar a la terminaci�n de dicha escritura.
� Se puede conseguir que los ficheros temporales no se escriban en disco, por ejemplo: los que se generan al compilar en cualquier lenguaje de programaci�n, que duran mientras se compilan.

Seguridad y protecci�n: Los problemas de seguridad de la informaci�n son debidos a diferentes causas.
1. Incendios, apagones de luz, etc.
2. Aver�as en el ordenador, como el mal funcionamiento del procesador, errores en el disco duro, etc. Problemas del hardware.
3. Errores en los programas o en el SO (sistema operativo), etc. Problemas en el software.
4. Errores humanos como ejecuciones incorrectas, borran archivos indebidos, etc.

Los mecanismos de protecci�n pretenden luchar contra estos ataques.

Integridad del sistema de archivos y directorios: Si el sistema operativo, falla en mitad de una operaci�n de modificaci�n y escritura de un bloque puede ser critico y pueden ocurrir cosas como:
� Que el bloque aparezca en las listas de bloques libre y usados a la vez.
� Que el bloque este repetido.
� Que un bloque este asignado a mas de un fichero.

Existen utilidades que detectan y corrigen estos errores siempre que no sean muy graves. Cuando el deterioro del sistema es irreparable se necesitan de copias de seguridad del sistema de archivos.
Para realizar estas copias se usan unidades de cintas, o un disco duro de iguales dimensiones o mayores, para hacer un volcado del contenido del primero al segundo disco duro.
Otra t�cnica consiste en realizar un backup de todo el sistema. Por ejemplo, la noche del lunes de cada semana.

Otra forma de atentar contra la integridad del sistema de archivos es: Que un usuario legitimo abandone su puesto o terminal sin realizar un log out dejando el terminal abierto para otro usuario indebido o intruso que pueda continuar con la sesi�n abierta que dejo el usuario legitimo.
Programas caballos de trolla: Estos ocultan su funcionabilidad. Por ejemplo: un programa falso de login, con id�ntica identificaci�n que el original. EL usuario teclea su password y posteriormente el intruso es capaz de acceder a todo su sistema de archivos.
Un caballo de trolla o un troyano, consta de dos partes principales, por un lado tiene la consola, este es el dispositivo desde el cual se controlan a los usuarios infectados. Y por otro lado tiene el fichero que cumple la misi�n de infectar. Este fichero al ejecutarse deja como una l�nea virtual abierta, deja la sesi�n en login. Y el dise�o del troyano puede desde su consola actuar sobre todo, absolutamente todo el sistema de ficheros del usuario que ha infectado.

A continuaci�n explicare un ejemplo, muy conocido y propio de lamers con ganas de sentirse hackers.

El lamer en cuesti�n es el que dispone de un troyano, se encuentra en el IRC. Y encuentra a una persona que es un poco novatillo. Entonces le dice al usuario novatillo que le va a pasar un programa de guerra o de defensa para nose que royo, wueno la t�pica chorada. Lo que en verdad le va a pasar es el fichero para infectarse, el que abre la sesi�n una vez clikeado, el que hace un auto-login. Wueno, el lamercillo se lo pasa por dcc al novato, y este lo coje con ilusi�n, lo abre y ve que aquello, no hace nada (en algunos troyanos el fichero desaparece). Bueno, pues apartir de que el novato ejecuto ese fichero, es como si dejara una sesi�n abierta, una l�nea de comunicaci�n directa entre, la consola del troyano, que la tiene el lamer y todo el sistema de ficheros del novato. A partir de entonces el lamer puede actuar a sus anchas dentro del ordenador del novato, modificar, borrar ficheros, etc. Act�a totalmente sobre el software del novato. Pudiendo pues joderle completamente el ordenador.

Algunos de estos troyanos son:
NETBUS (NT) = puerto: 12345
BACKORIFICE (BO) = puerto: 31337
SUBSEVEN (S7) = puerto: ----
PARADISE (P) = puerto: ----

Gusanos y virus inform�ticos:
� Los primeros son programas en si que usan desproporcionadamente los recursos del sistema bloqueando.
� Los segundos son trozos de c�digo que se copian en otros programas o que son capaces de borrar ficheros, etc.

Normalmente el virus se suele distribuir a traves de medios que lleguen a muchos usuarios, cuantos m�s mejor. Por ello Internet es un buen medio para la transmisi�n de virus. Tambi�n lo seria un juego, etc.

Identificaci�n de usuarios:
1. La seguridad de acceso de un sistema se basa en la combinaci�n de tres tipos de identificaci�n:
2. Por contrase�a
3. Artefactos
4. F�sica

Contrase�as: Suelen estar almacenadas en ficheros. El problema es que muchos usuarios usan el nombre de ciudades, parientes, fechas de nacimiento, etc.; faciles de obtener. Hay software especial, que tras un numero de intentos te denegan el acceso, bloquean la cuenta. Y otros que tras un periodo de tiempo determinadote piden y obligan a cambiar la password.

Artefactos: Suelen ser bandas magn�ticas, tarjetas electr�nicas, donde la password esta almacenada internamente en la tarjeta lo que hace dif�cil hacerse con ella.

Identificaci�n f�sica: consiste en usar caracter�sticas f�sicas del usuario:
Fisiol�gicas: huellas dactilares, caracter�sticas faciales, geometr�a de la mano, etc.
De comportamiento: an�lisis de firma, o patrones de voz.

Mecanismos de protecci�n
Entendemos por objeto tanto a las unidades del ordenador (discos impresoiras,m etc) como a las informaciones que sed almacenan (archivos de datos, programas ,etc.). A cada objeto podemos acceder a traves de operaciones (leer, escribir, ejecutar). Un dominio es un conjunto de objetos y las operaciones permitidas para cada objeto. La capacidad para ejecutar una operaci�n sobre un objeto es un derecho de acceso. As� pues un dominio es un conjunto de derechos de acceso cada uno de las cuales esta formado por un par de la forma:



En UNIX a trabes del identificador de usuarios (uid) y del grupo (gid) se define el dominio. Es decir 1 lista de todos los objetos a los que puede tener acceso cada usser y el tipo de permiso cde acceso