You are on page 1of 25

Sistema de archivos

Sistema de archivos

Video conceptual

Referencias
LECCIÓN 1 de 3

Sistema de archivos

Los archivos son fundamentales para la mayoría de las aplicaciones, ya que


éstas obtienen información que requiere ser procesada desde un archivo o
bien, una vez procesada la información, las aplicaciones deben almacenarla
en almacenamiento secundario a fin de no perder datos ante falta de
energía. Asimismo, para evitar que cada aplicación deba disponer de un
código para interactuar con los archivos, se crea una abstracción que
permite, por ejemplo, crear archivos, guardar información, copiarlos o
eliminarlos.

En la figura 1 se observa un esquema que cuenta con diferentes niveles,


desde el programa de usuario hasta un medio de almacenamiento
secundario. En este caso, ejemplos pueden ser un disco magnético o una
cinta, pero también podrían serlo otros, como un disco de estado sólido. A
medida que se sube de nivel, hay más interacción con el software que con el
hardware. Los manejadores (nivel inferior) deben interactuar de forma
directa con el hardware. De esta manera, inician peticiones de E/S y las
finalizan.

Asimismo, este nivel es gestionado por el sistema operativo. El nivel sistema


de ficheros (archivos) básico maneja bloques entre la memoria principal y el
almacenamiento secundario. También se lo considera parte del sistema
operativo.

Figura 1: Niveles de gestión de archivos

Fuente: Stallings, 2005, p. 552.

El supervisor de E/S básico se encarga de todas las iniciaciones y


finalizaciones de E/S (Stallings, 2005). Permite, además, obtener mejores
rendimientos a partir del empleo de algoritmos de planificación. Al igual que
los niveles anteriores, es parte del sistema operativo. El sistema de ficheros
básicos se maneja con bloques, mientras que el nivel E/S lógico se maneja
con registros y su acceso. Los registros son conjuntos de campos
relacionados y tratados como una única unidad. Por su parte, un campo es la
unidad mínima de datos. Finalmente, el nivel superior se denomina método
de acceso y permite diferentes maneras de acceder a un archivo.

La figura 2 muestra el esquema de niveles en funcionamiento. Cuando los


programas o usuarios necesitan acceder a un archivo, un software de
gestión de directorios lo ubica y un software de control de acceso de usuario
válida que lo que usuario esté intentando hacer sea posible. Una vez ubicado
el archivo, se accede mediante un método de acceso a los registros. A partir
de este momento deben convertirse los registros en bloques, la unidad
utilizada por las peticiones de E/S. Así, se debe ubicar el lugar del
almacenamiento secundario en el que se grabará ese bloque o aquel donde
actualmente se encuentra para ser leído. Un planificador hará este trabajo lo
más eficiente posible.

Figura 2: Funciones de un sistema de archivos


Fuente: Stallings, 2005, p. 553.

Acceso a archivos

Los archivos están formados por registros, los cuales luego son convertidos
en bloques para ser almacenados en el disco. La forma en que se accede a
un registro (no a los bloques en el disco) determina la estructura lógica de un
archivo. Como se muestra en la figura 1, existen diversas formas de acceso.

Pila

Es la forma más simple de organizar un archivo. Los datos van llegando al
archivo y en ese orden se va formando una pila de registros. Como los
registros pueden tener diferentes tipos de campos, estos deben
autodescribirse. Su longitud debe estar indicada de manera explícita, de
modo que luego sea posible utilizar el método de búsqueda exhaustiva para
obtener un dato particular. Esta búsqueda revisa todos los registros y busca
coincidencias entre registro, campo y valor. No obstante, como en general
debe recorrerse gran parte del archivo (o todo) para encontrar el dato
buscado, este método no es el más usado por la mayoría de las aplicaciones.

Archivo secuencial

A diferencia del método de pila, en un archivo secuencial todos los registros
son de igual tamaño. Cada registro está compuesto por un número
predefinido de campos de igual tamaño. No es necesario, entonces,
identificar información adicional sobre el tamaño. Se denomina campo clave
al primer campo de cada registro, el cual identifica de forma única a cada
registro y sirve, además, para realizar un orden, ya sea alfabético o numérico.
Si bien el rendimiento no es bueno para aplicaciones interactivas que
requieren consultar y actualizar registros individuales, es ideal para
aplicaciones por lotes. Aun así, el rendimiento no es bueno, ya que se debe
buscar la clave, lo cual lleva tiempo.

Archivo secuencial indexado



Para mejorar el rendimiento del archivo secuencial, se agregan en este caso
dos funcionalidades:
índice;

archivo de desbordamiento.

El índice funciona como el de un libro: es mucho más rápido buscar contenido


en el índice que si se recorren todas las hojas del libro. Además, proporciona
acceso aleatorio. El índice se forma con un archivo secuencial, cuyos
registros se forman por dos campos: el campo clave, igual al campo clave del
registro del archivo que contiene todos los datos (denominado principal), y
un puntero a dicho archivo principal. De esta forma, ubicar un campo clave en
el archivo índice es mucho más rápido que hacerlo en el archivo principal. El
archivo de desbordamiento es útil para agregar información al archivo.

Archivo indexado

Este tipo de acceso permite realizar búsquedas por atributos que no sean el
campo clave. Para lograrlo, se debe utilizar un índice por cada atributo que
puede utilizarse para la búsqueda. Un índice exhaustivo contiene una entrada
por cada registro del fichero principal. Para facilitar la búsqueda, el índice, a
su vez, está organizado como un fichero secuencial. Un índice parcial
contiene entradas a los registros donde el campo de interés existe (Stallings,
2005).

Figura 3: Comparación indexado secuencial e indexado


Fuente: Stallings, 2005, p. 555
Conversión de registro en bloque

Si retomamos la figura 2, observamos que los registros deben convertirse en
bloques para poder escribirse en un disco. Asimismo, para ser traídos del
disco y colocados en la memoria principal, los bloques deben convertirse en
registros. Cada vez que se requiere grabar o leer un bloque, se necesita una
petición de entrada/salida (request, en inglés, por input/output). El tamaño del
bloque determina la cantidad de registros que podrían operarse en una
misma solicitud. Si los bloques son demasiado grandes, se corre el riesgo de
transferir registros innecesariamente. Existen tres métodos para asignar
registros a bloques, se desarrollan a continuación.

Bloques fijos: la longitud de los registros es fija, por lo que cierta cantidad
de ellos entrarán en un bloque. Si sobra lugar, se genera fragmentación
interna.

Bloques expandidos de longitud variable: en este caso, los registros son


de longitud variable y deben llenar un bloque en su totalidad. Es posible
que algún registro necesite dos bloques.
Bloques no expandidos de longitud variable: no es posible expandir un
registro, como en el caso anterior, así que si el espacio que queda en un
bloque no es suficiente para que un registro lo utilice, no podrá ser
utilizado y el registro completo demandará otro bloque.

La figura 4 muestra una comparación entre las tres técnicas. Vemos que al
no generar fragmentación, la técnica de bloques variables extendidos
optimiza el espacio utilizado, pero su implementación es más complicada.

Figura 4: Comparación entre las tres técnicas de asignación


Fuente: Stallings, 2005, p. 565.

Otros conceptos importantes


Sistemas de archivos

Figura 5: Cuadro sinóptico de la composición del disco rígido

Fuente: [imagen sin título sobre cuadro sinóptico de la composición del disco rígido], s. f.,
https://bit.ly/3aei2ca

Figura 6: Disco duro


Fuente: [imagen sin título sobre disco duro], s. f., https://bit.ly/3tb3Au6

Concepto

El sistema de archivos es la forma en que el sistema operativo


va a organizar la información dentro de un disco para su
grabación y posterior recuperación. Cada sistema operativo
tiene su propio y único sistema de archivos, lo que hace que no
pueda funcionar con otros. Por ejemplo:

DOS y Windows hasta 3.11: FAT 8 o 12.


Windows 95: FAT 16 o 32.

Windows 98, ME, XP: FAT 32.

Windows XP, 2000, NT: NTFS.

Linux, Unix.

FAT (File Allocation Table – Tabla de Asignación de Archivos):


consiste en una serie de sectores (que se agrupan bajo el
nombre de clusters) que alojan la mínima porción de
información, y una tabla que enlista los sectores libres y los
ocupados. Los sectores tienen dos características que, con el
tiempo, se les fueron en contra. Una, que son de tamaño fijo; la
otra, que cuanto más grande sea el disco, mayor es su tamaño.
En los viejos disquetes y en los primeros discos rígidos, estas
cuestiones no eran importantes porque los sectores eran
pequeños: los más grandes eran de 256 o 512 kb. Pero a medida
que la tecnología y los medios de almacenamiento crecieron,
aumentó la dimensión de los sectores. Así, los discos de menos
de 1 Gb tienen sectores de 16 kb, y de más de 1 Gb, de 32 kb. En
este último caso, un archivo de 33 kb, ocupa dos sectores, 64 kb,
y desperdicia casi el 50 % de esos 64 kb. Multiplicando estas
superficies no utilizadas por la cantidad de archivos que hay en
una computadora no es raro tener entre 30 y 40 % del espacio de
una unidad de almacenamiento desocupado.

FAT16: es el mejor para unidades o particiones con menos de


200 Mb, porque FAT se inicia con muy poca carga.
Preferiblemente, en unidades o particiones de más de 200 Mb
no se debería utilizar este sistema de archivos FAT ya que a
medida que aumenta el tamaño del volumen, el rendimiento
disminuye rápidamente. Las particiones FAT tienen un tamaño
máximo de 4 Gb en Win NT y de 2 Gb en MS-DOS. Los archivos
están restringidos a nombres de tan solo 8 caracteres y 3 de
extensión. No soporta archivos extremadamente grandes.

FAT32: mantiene la misma estructura de sectores y tablas, pero


disminuye el tamaño de los sectores. En discos entre los 512
Mb, así el espacio desperdiciado es mucho menor. Admite
unidades de hasta 2 Tb de tamaño. Utiliza clústeres menores
(de 4 kb a 8 kb), lo que significa un 10 y un 15 % de mejora en el
uso del espacio con respecto a unidades grandes con sistemas
de archivos FAT o FAT16. Es incompatible con todo lo anterior e
incluso parte de lo posterior. El problema principal es que las
utilidades de disco no conocían este sistema: por lo que
Microsoft actualizó todas sus utilidades. Aun así, FAT 32 es la
mejor alternativa para usuarios de Win 98 y las versiones de
Win95 que lo soportan. (Levrand, 2011, https://bit.ly/36gxmn4)

Los sistemas operativos de Microsoft distinguen el tipo de FAT


(12-16-32) utilizado en un volumen mediante la siguiente regla:

Se obtiene el número total de sectores en el volumen.

Se le resta el espacio de sectores reservados.

Se le resta el espacio ocupado por las FAT.

Se le resta el espacio ocupado por el directorio raíz.

El total anterior se divide por el número de sectores en un cluster


redondeando hacia abajo. El resultado R es el número de
clusters en el área de datos.

R < 4085 ------> FAT-12

R < 65525 ------> FAT-16


R > = 65525 ------> FAT-32 (Zator Systems, s. f.,
https://bit.ly/3abBBBN)

Figura 7: File directory entries

Fuente: [imagen sin título sobre file directory entries], 2015, https://bit.ly/39khgek

NTFS (New Technology File System): soporta completa


seguridad. Puede decidir los tipos de acceso a archivos y
directorios. Guarda un LOG (archivo) de actividades para
reconstruir el disco en el caso de problemas eléctricos. Soporta
nombres de archivos y directorios de hasta 256 caracteres.
Automáticamente genera archivos de corrección en DOS que
pueden ser utilizados y compartidos. Permite un diseño de
programa para correr bajo otro sistema operativo, como el
acceso MS-DOS a archivos de NTFS. (Levrand, 2011)

La madre de todo volumen formateado con NTFS es la Master


File Table, una base de datos que contiene los atributos de todos
los ficheros. Podríamos considerarlo similar en funciones a la
FAT, aunque hace mucho más.

Cada fichero tiene asociada una entrada en la MFT que contiene


una serie de atributos. Debemos distinguir entre
atributos internos (almacenados en el propio registro de la MFT)
y externos, que son referenciados mediante punteros en la MFT.
Casi todos los atributos de cada fichero pueden ser internos o
externos.

¿Qué atributos se almacenan de cada fichero? Una cabecera,


que es siempre interna; un atributo con información estándar
(timestamps para creación, modificación y acceso de cada
fichero), así como si un fichero es de solo lectura, oculto y
demás; otro atributo con el nombre del fichero (teniendo en
cuenta que es posible que cada fichero tenga muchos nombres,
dado que podemos realizar hard links en distintos directorios a
un mismo archivo); otro atributo con los datos del propio fichero,
y un descriptor de seguridad (como las listas de control de
acceso).

Adicionalmente, los directorios indexan los archivos en


estructuras más complejas que en el caso de FAT. De meras
colecciones de registros pasamos a utilizar una estructura
compleja como es el caso de un árbol B+, ofreciendo un
rendimiento bastante superior en operaciones que involucren a
subconjuntos de ficheros o a ficheros únicos.

La principal desventaja de NTFS es que, como podemos


imaginar, la MFT puede transformarse en un verdadero
monstruo (dado que controla todo el sistema de ficheros). En el
momento de formatear un volumen con este sistema de fichero
se reserva aproximadamente un 12,5 % del tamaño del volumen
para la MFT (dado que contiene que esté almacenada en zonas
contiguas del disco). Esto hace de NTFS un sistema de ficheros
poco adecuado para sistemas de archivos pequeños.

Ext: los sistemas de archivos de Linux, particularmente ext3 y


ext4, son a la vez similares y distintos a los anteriores. Son
similares porque existe una estructura por cada volumen con
información de los archivos. Son distintos, a su vez, por el tipo de
estructura. Es inevitable hablar de inodos: registros identificados
por un número entero que contienen los metadatos de los
archivos. El concepto fue acuñado por Dennis Ritchie y se trata,
realmente, de una estructura de datos que contiene
características de todo objeto contenido en un sistema de
ficheros, salvo su nombre, que se almacena en los ficheros de
directorio. Los directorios siguen siendo ficheros especiales con
registros que, en esta ocasión, contienen referencias a los
inodos de los archivos que contiene. Más de un directorio puede
tener referencias a un inodo concreto (lo que se llama un enlace
duro o hard link). Obviamente la estructura de inodo no es
imprescindible (ReiserFS, de hecho, podría prescindir de la
estructura como tal), aunque la información tendría que ser
almacenada en otro sitio y el sistema tendría que seguir
contando con una funcionalidad equivalente, aunque no
existieran los inodos como ente. (Mateos, 2013,
https://bit.ly/3omyJah)

Figura 8: Estructura del sistema de archivos en Linux

Fuente: [imagen sin título sobre estructura del sistema de archivos en Linux], 2017,
https://bit.ly/2YiE47V
Virtualización

Si bien la virtualización no es un concepto nuevo, en la actualidad se torna


fundamental en referencia a los sistemas operativos, especialmente en el
papel de servidores. Este concepto no se refiere a una única metodología o
tecnología, sino que agrupa varias de ellas. En términos generales,
“virtualizar consiste en proveer algo que no está ahí, para que parezca
estarlo. Es decir, presentar a un sistema elementos que se comporten de la
misma forma que un componente físico (HW) sin que exista en realidad”
(Bergero, Meza, Ruiz y Wolf, s. f., https://bit.ly/3pn08u5).

Asimismo, el concepto de virtualización se asocia siempre a dos partes:

“Es el HW o sistema real


que ofrece el mecanismo
de virtualización. En inglés
Anfitrión
se denomina host” (Bergero
et al., s. f.,
https://bit.ly/3pn08u5).
“Es el sistema o
aplicaciones que se
ejecutan en el entorno
Huésped
virtualizado. En inglés,
guest” (Bergero et al., s. f.,
https://bit.ly/3pn08u5).

Emulación

La técnica de virtualización más sencilla, y que hace más tiempo


tienen las computadoras personales, es la emulación. Emular
consiste en implementar en software algo que se presente
como el hardware de un sistema completo, típicamente de una
arquitectura de hardware distinta a la del anfitrión (la
arquitectura nativa). El emulador puede ser visto (de una forma
extremadamente simplificada) como una lista de equivalencias,
de cada una de las instrucciones en la arquitectura huésped a la
arquitectura del sistema anfitrión.

Vale la pena recalcar que una emulación no se limita con


traducir del lenguaje y la estructura de un procesador a otro —
para que una computadora pueda ser utilizada, requiere de una
serie de chips de apoyo, desde los controladores de cada uno de
los buses hasta los periféricos básicos (teclado, video). Casi
todas las emulaciones incluirán un paso más allá: los periféricos
mismos (discos, interfaces de red, puertos). Todo esto tiene que
ser implementado por el emulador.

Resulta obvio que emular un sistema completo es altamente


ineficiente. Los sistemas huéspedes resultantes típicamente
tendrán un rendimiento cientos o miles de veces menor al del
anfitrión.

Hoy en día las máquinas virtuales implementan varias técnicas


para reducir el tiempo que se desperdicia emulando.

Traducción dinámica: Compilación parcial del código a ejecutar


a formatos nativos, de modo que solo la primera vez que se
ejecuta el código intermedio tiene que ser traducido.

Traducción predictiva: Anticipar cuáles serán las siguientes


secciones de código que tendrán que ser ejecutadas para,
paralelamente al avance del programa, traducirlas a código
nativo de forma preventiva.

Compilación justo a tiempo (JIT): almacenar copia del código ya


traducido de un programa, de modo que no tenga que hacerse ni
siquiera en cada ejecución, sino que solo una vez en la vida de la
máquina virtual. (Bergero et al., s. f., https://bit.ly/3pn08u5)
Mediante estas estrategias, el rendimiento de las arquitecturas emuladas es
prácticamente idéntico al del código compilado nativamente.

Emulación versus simulación

Una pregunta frecuente que se presenta al hablar de este tema


es acerca de la diferencia entre la emulación y la simulación.

Emular significa imitar las acciones de otro, procurando


igualarlas e incluso excederlas. (…) Esto significa que un
emulador reproduce todos los procesos internos que realizaría el
sistema nativo, y busca cubrir todos los comportamientos
respectivos implementando los mismos mecanismos.

Simular, por otra parte, significa representar algo, fingiendo o


imitando lo que no es. Un sistema simulador simula o finge las
áreas de determinado sistema que interesan al usuario; puede
emplear datos precargados para generar ciertas respuestas,
obviando los procesos que los generarían. (Bergero et al., s. f.,
https://bit.ly/3pn08u5)

Fundamentos de Sistemas Operativos.pdf


11.5 MB
Fuente: Wolf, G. et al. (2015). Fundamentos de sistemas operativos. México D.F.: Universidad Nacional Autónoma

de México, Instituto de Investigaciones Económicas. Recuperado de

http://sistop.org/pdf/sistemas_operativos.pdf

C O NT I NU A R
LECCIÓN 2 de 3

Video conceptual

Verify to continue
We detected a high number of errors from your
connection. To continue, please confirm that
you’re a human (and not a spambot).

I'm not a robot


reCAPTCHA
Privacy - Terms

C O NT I NU A R
LECCIÓN 3 de 3

Referencias

[Imagen sin título sobre cuadro sinóptico de la composición del disco


rígido], (s. f.). Recuperado de
https://image.slidesharecdn.com/red2a03bthp0212-130312195853-
phpapp02/95/particionando-sistema-de-archivos-basados-en-windows-
diagrama-1-638.jpg?cb=1363118373

[Imagen sin título sobre disco duro], (s. f.). Recuperado de


https://image.slidesharecdn.com/discosduros-120114140314-
phpapp02/95/discos-duros-6-728.jpg?cb=1326998488

[Imagen sin título sobre estructura del sistema de archivos en Linux],


(2017). Recuperado de https://www.profesionalreview.com/wp-
content/uploads/2017/02/estructura-sistema-de-archivos-unix.jpg

[Imagen sin título sobre file directory entries], (2015). Recuperado de


https://social.technet.microsoft.com/wiki/cfs-
filesystemfile.ashx/__key/communityserver-components-
imagefileviewer/communityserver-wikis-components-files-00-00-00-00-
05/4331.FAT_5F00_Allocation_5F00_Chain.png_2D00_550x0.png
Bergero, F.; Meza, E.; Ruiz, E.; y Wolf, G. (s. f.). Virtualización. Recuperado de
http://sistop.gwolf.org/pdf/A2virtualizacion.pdf

Levrand, C. (2011). Sistemas de archivos más comunes. Recuperado de


https://carolev.files.wordpress.com/2011/02/sistema-de-archivos-mc3a1s-
comunes1.pdf

Mateos, M. (2013). Así funcionan: sistemas de ficheros. En Genbeta.


Recuperado de https://www.genbeta.com/sistemas-operativos/asi-
funcionan-sistema-de-ficheros#

Stallings, W. (2005). Sistemas operativos (quinta edición). Madrid, España:


Pearson Education.

Zator Systems (s. f.). Sistemas FAT y NTFS. Recuperado de


https://www.zator.com/Hardware/H8_1_2a1.htm

You might also like