El Sistema de Archivos de Unix
-
Upload
jesus-manuel-vazquez-nicolas -
Category
Documents
-
view
35 -
download
2
Transcript of El Sistema de Archivos de Unix
El sistema operativo UNIX El sistema de archivos
Expositor: José Luis Oropeza Rodríguez
México D. F., a 06 de agosto 2007
OBJETIVO
• Presentar al alumno los elementos básicos que comprende el sistema de archivos contenido dentro del sistema operativo UNIX.
BOSQUEJO DE LA
PRESENTACIÓN
• Introducción
• Sistemas de archivos
• Medios de almacenamiento del sistema de archivos
• Lista de i-nodos
• Tipos de archivos del sistema
SISTEMA DE CÓMPUTO DE ESCRITORIO
SISTEMA DE ARCHIVOS Mientras que un proceso se esté
ejecutando, puede almacenar
una cantidad de información
limitada dentro de su propio
espacio de direcciones. Sin
embargo, la capacidad de
almacenamiento está restringida
al tamaño del espacio de
direcciones virtual. En el caso de
algunas aplicaciones, este
tamaño es adecuado, pero en el
de otras, como las de
reservaciones de líneas aéreas,
las aplicaciones bancarias o las
bases de datos corporativas,
dicho tamaño resulta
excesivamente pequeño. Tales
aplicaciones requieren que la
información permanezca mucho
tiempo.
LOS SISTEMAS DE ARCHIVOS
SOLUCIONAN LOS PROBLEMAS DE:
1.Debe ser posible almacenar gran cantidad de información.
2.La información debe sobrevivir a la terminación del procesa que la usa.
3.Múltiples procesos deben poder acceder a la información de forma
concurrente.
NOMBRES DE
ARCHIVOS
TIPOS DE ACCESOS A ARCHIVOS
ast
jim
bin
etc lib usr tmp
bin etc lib usr tmp
ast jim IMPLEMENTACIÓN DEL
SISTEMA DE ARCHIVOS
TIPOS DE ARCHIVOS En la siguiente figura se ilustra un archivo binario ejecutable sencillo tomado de una de las
primeras versiones de UNIX. Aunque técnicamente el archivo no es sino una secuencia de
bytes, el sistema operativo sólo ejecuta un archivo si éste tiene el formato correcto. El
ejemplo tiene cinco secciones: encabezado, texto, datos, bits de reubicación y tabla de
símbolos. El encabezado comienza con lo que se conoce como un número mágico, que
identifica al archivo como ejecutable.
Luego vienen enteros de 16 bits
que indican los tamaños de los
distintos componentes del archivo,
la dirección en la que se inicia la
ejecución y algunos bits de
banderas. Después del encabezado
vienen el texto y los datos del
programa mismo. Éstos se
encargan en la memoria y se
reubican empleando los bits de
reubicación. La tabla de símbolos
sirve para la depuración.
CARACTERÍSTICAS DE DIFERENTES
SISTEMAS DE ARCHIVOS
EL SISTEMA DE ARCHIVOS DE UNIX
Un sistema de archivos es un mecanismo de abstracción de los dispositivos
físicos de almacenamiento que nos permite manejarlos a un nivel lógico sin la
necesidad de conocer su arquitectura hardware particular. El sistema de archivos
de UNIX se caracteriza por:
Poseer una estructura jerárquica
Realizar un tratamiento consistente
de los datos de los archivos
Poder crear y borrar archivos
Permitir un crecimiento dinámico de
los archivos
Proteger los datos de los archivos
Tratar los dispositivos y periféricos
–terminales, unidades de cinta,
discos, etc.-
como si fuesen archivos.
directorio raíz
Archivos
normales
subdirectorios
ESTRUCTURA DEL SISTEMA DE ARCHIVOS
SISTEMA DE ARCHIVOS DISPOSITIVOS DE
ALMACENAMIENTO
DE MODO BLOQUE
DISCOS
CINTAS
RESIDE
SISTEMA
DE ARCHIVOS
SISTEMA
DE ARCHIVOS
SISTEMA
DE ARCHIVOS
SISTEMA UNIX
particiones
ORGANIZACIÓN DEL SISTEMA DE
ARCHIVOS
Los sistemas de archivos se almacenan en discos. Casi todos
los discos pueden dividirse en una o más particiones, con
sistemas de archivos independientes en cada partición. El
sector 0 del disco se llama registro maestro de arranque
(MBR; Master Boot Record) y sirve para arrancar la
computadora.
Esta tabla contiene las direcciones inicial y final de cada partición. Una de las particiones de
la tabla está marcada como activa. Cuando se enciende la computadora, el BIOS lee el MBR
y lo ejecuta. Lo primero que hace el MBR es localizar la partición activa, leer su primer
bloque, llamado bloque de arranque, y ejecutarlo. El programa del bloque de arranque carga
el sistema operativo contenido en esa partición.
PARTES INTERNAS
DE UN DISCO DURO
•taza de transferencia.- es la razón en la cual se
presenta el flujo de datos entre el controlador y la
computadora.
•Tiempo de posicionamiento.- algunas veces
llamado tiempo de acceso aleatorio, consiste del
tiempo que se mueve el brazo del disco al cilindro
deseado, llamado tiempo de búsqueda.
•Latencia rotacional.- es el tiempo en el que el
sector deseado rota a la cabeza de disco.
CONCEPTOS BÁSICOS DE UN DISCO DURO
Plato: Cada uno de los discos que hay dentro del disco duro.
Cara: Cada uno de los dos lados de un plato
Cabeza – Head: Número de cabezas de Lectura/Escritura
Pista - Track: Una circunferencia dentro de una cara;
la pista 0 está en el borde exterior.
Cilindro: Conjunto de varias pistas; son todas las
circunferencias que están alineadas verticalmente (una de
cada cara).
Sector : Cada una de las divisiones de una pista. El tamaño
del sector no es fijo, siendo el estándar actual 512 bytes.
Antiguamente el número de sectores por pista era fijo, lo cual
desaprovechaba el espacio significativamente, ya que en las
pistas exteriores pueden almacenarse más sectores que en
las interiores. Así, apareció la tecnología ZBR (grabación de
bits por zonas) que aumenta el número de sectores en las
pistas exteriores, y usa más eficientemente el disco duro (ver
Nota Inferior). Los sectores son las unidades mínimas de
información que puede leer o escribir un disco duro.
Cluster: agrupación de varios sectores.
EJEMPLO DE PARTICIÓN DE UN DISCO
DURO
CARACTERÍSTICAS DE LOS DISCOS IDE
IDE significa "Integrated Device Electronic", su traducción es componente electrónico integrado.
ATA significa "Advanced Technology Attachment" ó tecnología avanzada de contacto
PATA: significa "Parallel Advanced Technology Attachment" ó tecnología paralela avanzada de contacto. Es
una nueva sigla acuñada a partir de la inserción en el mercado de los discos SATA, ello para diferenciarlos
entre sí.
Esta especificación permite transferencia de datos de modo paralelo, con un cable de datos de 40 conectores,
genera una transferencia de datos (Rate) de 66, 100 y hasta 133 MegaBytes/segundo (MB/s). Por sus
características de circuito paralelo, permite conectar hasta 2 dispositivos por conector.
Característica Traducción Función Ejemplo
FSB "Frontal Side Bus", transporte frontal interno
Para discos duros significa la velocidad de transferencia de datos del disco duro, en función de los demás dispositivos. Se mide en MegaBytes/segundo (MB/s) y es denominado también "Rate". Este dato en discos duros IDE puede estar entre 66 MB/s, 100 MB/s y 133 MB/s.
Disco duro IDE tiene dentro de sus características lo siguiente: Marca Maxtor®, 80 GB, 7200 RPM, FSB 100/133*. * Este último dato indica que el FSB soportado es 100 MB/s hasta 100 MB/s.
RPM "Revolutions per Minute", vueltas por minuto
Este valor determina la velocidad a que los discos internos giran cada minuto. Su unidad de medida es: revoluciones por minuto (RPM). Este dato en discos duros IDE puede ser 4800 RPM, 5200 RPM y hasta 7200 RPM.
Disco duro IDE tiene dentro de sus características lo siguiente: Marca Maxtor®, 80 GB, FSB 100/133, 7200 RPM*. * Este último dato indica que el su eje de giro permite hasta 7200 vueltas por minuto.
DISCOS IDE (Integrated Device
Electronics) El interfaz ATA (Advanced Technology Attachment) o PATA, originalmente conocido como IDE (Integrated
device Electronics), es un estándar de interfaz para la conexión de los dispositivos de almacenamiento masivo
de datos y las unidades ópticas que utiliza el estándar derivado de ATA y el estándar ATAPI.
En el interfaz ATA se permite conectar dos
dispositivos por BUS. Para ello, de los dos
dispositivos, uno tiene que estar como
esclavo y el otro como maestro para que
la controladora sepa a qué dispositivo
enviar los datos y de qué dispositivo
recibirlos. El orden de los dispositivos será
maestro, esclavo. Es decir, el maestro será
el primer dispositivo y el esclavo, el
segundo. La configuración se realiza
mediante jumpers.
Historia de producción
Diseñador Western Digital
Diseñado en 1986
Especificaciones
Conectable en caliente no
Externo no
Ancho 16 bits
Ancho de banda 16 MB/s originalmente
Después 33, 66, 100, 133 y
166 MB/s
Max nº
dispositivos 2 (maestro/esclavo)
Protocolo Paralelo
Cable Cable de cinta plano de 40 hilos, posteriormente
incrementado a 80 por seguridad.
Pines 40 (factor forma 3.5) o 44 (factor forma 2.5).Ver enlaces
externos
FUNCIÓN DE CADA UNA
DE LAS TERMINALES DEL
IDE
Función de las terminales
Pin 1 Reset
Pin 2 Ground
Pin 3 Data 7
Pin 4 Data 8
Pin 5 Data 6
Pin 6 Data 9
Pin 7 Data 5
Pin 8 Data 10
Pin 9 Data 4
Pin 10 Data 11
Pin 11 Data 3
Pin 12 Data 12
Pin 13 Data 2
Pin 14 Data 13
Pin 15 Data 1
Función de las terminales
Pin 16 Data 14
Pin 17 Data 0
Pin 18 Data 15
Pin 19 Ground
Pin 20 Key o VCC_in
Pin 21 DDRQ
Pin 22 Ground
Pin 23 I/O write
Pin 24 Ground
Pin 25 I/O read
Pin 26 Ground
Pin 27 IOC HRDY
Pin 28 Cable select
Pin 29 DDACK
Pin 30 Ground
Pin 31 IRQ
CARACTERÍSTICAS DE LOS DISCOS SATA
Serial ATA o SATA (acrónimo de Serial Advanced Technology Attachment)
es una interfaz de transferencia de datos entre la placa base y algunos
dispositivos de almacenamiento, como puede ser el disco duro, lectores y
regrabadores de CD/DVD/BR, Unidades de Estado Sólido u otros
dispositivos de altas prestaciones que están siendo todavía desarrollados.
Serial ATA sustituye a la tradicional Parallel ATA o P-ATA. SATA
proporciona mayores velocidades, mejor aprovechamiento cuando hay
varias unidades, mayor longitud del cable de transmisión de datos y
capacidad para conectar unidades al instante, es decir, insertar el
dispositivo sin tener que apagar el ordenador o que sufra un cortocircuito
como con los viejos Molex.
Actualmente es una interfaz aceptada y estandarizada en las placas base
de PC. La Organización Internacional Serial ATA (SATA-IO) es el grupo
responsable de desarrollar, de manejar y de conducir la adopción de
especificaciones estandarizadas de Serial ATA. Los usuarios de la interfaz
SATA se benefician de mejores velocidades, dispositivos de
almacenamientos actualizables de manera más simple y configuración
más sencilla. El objetivo de SATA-IO es conducir a la industria a la
adopción de SATA definiendo, desarrollando y exponiendo las
especificaciones estándar para la interfaz SATA.
CARACTERÍSTICAS DE LOS DISCOS
SATA Al referirse a velocidades de transmisión, conviene recordar que en ocasiones se confunden las unidades de
medida, y que las especificaciones de la capa física se refieren a la tasa real de datos, mientras que otras
especificaciones se refieren a capacidades lógicas.
La primera generación especifica en transferencias de 150 MB por segundo, también conocida por SATA 150
MB/s o Serial ATA-150. Actualmente se comercializan dispositivos SATA II, a 300 MB/s, también conocida
como Serial ATA-300 y los SATA III con tasas de transferencias de hasta 600 MB/s.
Las Unidades que soportan la velocidad de 3Gb/s son compatibles con un bus de 1,5 Gb/s.
En la siguiente tabla se muestra el cálculo de la velocidad real de SATAI 1.5 Gb/s, SATAII 3 Gb/s y SATAIII 6
Gb/s: SATA I SATA II SATA III
Frecuencia 1500 MHz 3000 MHz 6000MHz
Bits/clock 1 1 1
Codificación 8b10b 80% 80% 80%
bits/Byte 8 8 8
Velocidad real 150 MB/s 300 MB/s 600 MB/s
Fue estandarizado a mediados de 2004, con definiciones específicas de cables, conectores y requisitos de la señal para
unidades eSATA externas. eSATA se caracteriza por:
•Velocidad de SATA en los discos externos (se han medido 115 MB/s con RAID externos)
•Sin conversión de protocolos de PATA/SATA a USB/Firewire, todas las características del disco están disponibles para el anfitrión.
•La longitud de cable se restringe a 2 metros; USB y Firewire permiten mayores distancias.
•Se aumentó la tensión de transmisión mínima y máxima a 500mV - 600mV (de 400 mV - 600 mV)
Actualmente, la mayoría de las placas bases han empezado a incluir conectores eSATA, también es posible usar adaptadores
de bus o tarjetas PC Card y CardBus para portátiles que aún no integran el conector.
CARACTERÍSTICAS DE LAS TERMINALES
DEL SATA Tipo masivo interno
Historia de producción
Diseñado en 2003
Sustituye a Parallel ATA
Especificaciones
Conectable en caliente Sí, con soporte de otros componentes del
sistema.
Externo Sí, con eSATA. Y por USB, con case o caja
externa.
Cable Cable plano
Pines 7
Notación de las terminales
Pin 1 GND Masa
Pin 2 HT+/DR+ Transmisión diferencial +
Pin 3 HT-/DR- Transmisión diferencial -
Pin 4 GND Masa
Pin 5 HR-/DT- Recepción diferencial -
Pin 6 HR-/DT+ Recepción diferencial +
Pin 7 GND Masa
LA TABLA DE PARTICIONES
La tabla de particiones está alojada en el MBR (del inglés Master Boot Record) a partir del byte 446 del
MBR y ocupa 64 bytes, conteniendo 4 registros de 16 bytes, los cuales definen las particiones primarias. En
ellos se almacena toda la información básica sobre la partición: si es arrancable, si no lo es, el formato, el
tamaño y el sector de inicio.
Es una estructura de datos de 64 bytes que define la forma en que un disco duro está dividido en secciones lógicas, conocidas como particiones.
Estructura de entradas de la Tabla de Particiones
Offset Naturaleza Size
+OOh
Status de partición 00h = no activa 80h = Partición de Boot
1 byte
+01h Inicio de partición : Cabecera 1 byte
+02h Inicio de partición : Cilindro - Sector 1 palabra
+04h Tipo de partición 1 byte
+05h Fin de partición : Cabecera 1 byte
+06h Inicio de partición : Cilindro - Sector 1 palabra
+08h Número de sectores entre el MBR y el 1er sector de la partición
4 bytes
+0Ch Número de sectores en la partición 4 bytes
LA TABLA DE PARTICIONES
Offset
Naturaleza Size
+OOh
Status de partición 00h = no activa 80h = Partición de Boot
1 byte
+01h Inicio de partición : Cabecera 1 byte
+02h Inicio de partición : Cilindro - Sector 1 palabra
+04h Tipo de partición 1 byte
+05h Fin de partición : Cabecera 1 byte
+06h Inicio de partición : Cilindro - Sector 1 palabra
+08h Número de sectores entre el MBR y el 1er sector de la partición
4 bytes
+0Ch Número de sectores en la partición 4 bytes
PARTICIONES GUID
Dentro de los discos básicos existe una
nueva modalidad en lugar de estar
basado en el clásico MBR, está basado
en tablas de particiones GUID. Esta tabla
de particiones es una nueva
implementación de Intel basada en
itanium cuyas limitaciones son bastantes
menos restrictivas que las actuales
basadas en inicio MBR.
Las tablas de particiones basadas en
GUID admiten hasta 128 particiones
primarias de 18 exabytes, y no existen las
particiones extendidas. Mientras que en
las tablas de particiones MBR el límite
como hemos visto está en cuatro
primarias o bien tres primarias y una
extendida, siendo el límite máximo de
cada partición de dos terabytes.
PARTICIONES GUID
Para trabajar con particiones GUID y
discos GPT es necesario tener la
versión de Windows XP de 64 bits, y
naturalmente que el hardware que se
compre tenga esas características.
Tabla de partición Guid (GPT) es un
estándar para la colocación de la
Tabla de Particiones en un disco duro
físico. Es parte del estándar
Extensible Firmware Interface (EFI)
propuesto por Intel para reemplazar la
vieja Bios del PC, heredada del IBM
PC original. La GPT sustituye al
Master Boot Record (MBR) usado con
la BIOS.
http://es.wikipedia.org/wiki/Tabla_d
e_partici%C3%B3n_GUID
FORMATO A UN DISCO Cuando un disco se fabrica por primera vez, éste se divide en sectores y pistas desde fábrica,
que el controlador puede leer y escribir. Dicho proceso se conoce como formato a bajo nivel o
formato físico. Dicho formato llena el disco con una estructura de datos especial por cada
sector. La estructura de datos para un sector típico consiste de una cabecera, un área de
datos (por lo regular de 512 bytes), y una parte trasera. Tanto la cabecera como la parte
trasera contienen información que el controlador de disco utiliza, tal como el número de
sectores y un código de corrección de errores (CCE). Cuando el controlador escribe un sector
de datos durante una operación de I/O normal, el CCE es actualizado con el valor calculado
de todos los bytes en el área de datos. Cuando el sector es leído, el CCE se recalcula y se
compara con el valor almacenado. Si ambos números son diferentes, esta discrepancia indica
que el área de datos se ha corrompido y que el sector del disco puede estar mal. EL CCE
puede encargarse de realizar la reparación del error, tras lo cual se reporta un error suave. El
controlador realiza la tares del CCE cada vez que un sector se escribe o se lee.
•ID Information: Dentro de cada sector se deja un pequeño espacio para identificar el número
de sector y su lugar dentro del disco, el cual se utiliza para localizar a dicho sector dentro de
dicho disco y poder otorgar el estado del mismo. Por ejemplo, un simple bit se utiliza para
indicar si el sector ha sido marcado como defectuoso o bien reasignado.
•Synchronization Fields: Son utilizados internamente por el controlador de dispositivo para
guiar el proceso de lectura.
•Data: El dato actual en el sector.
•ECC: Código corrector de error utilizado para asegurar la integridad de los datos.
•Gaps: Por lo regular conocido como espaciadores los cuales se utilizan para separar áreas de
sectores y otorgar tiempo que el controlador procese lo que ha leído antes del procesamiento
de datos adicionales.
ESTRUCTURA DEL SISTEMA DE ARCHIVOS
Un sistema de archivos se compone de una secuencia de bloques lógicos, cada
uno de los cuales tiene un tamaño fijo. El tamaño de cada bloque es el mismo para
todo el sistema de archivos y suele ser múltiplo de 512 bytes. Aunque puede variar
de un sistema a otro. Si el tamaño del bloque es grande es bueno para la
transferencia de información entre los dispositivos de bloque, pero repercute
cuando se desea almacenar una cantidad determinada de información, por ejemplo
unos cuantos caracteres de un archivo determinado. Valores típicos son de 512,
1024, 2048, etc.
Bloque de datos bloque de boot superbloque lista de i-nodos
Primer sector,
puede contener
el código de
arranque, el cual
se encarga de
carga al Sistema
Operativo en
memoria
Describe el
estado de un
sistema de
archivos.
Contiene
información de
su tamaño,
numero total de
archivos, el
espacio
disponible, etc.
Tiene una entrada para
cada archivo, que
guarda la descripción
del mismo: ubicación
en el disco,
propietario, permisos
de acceso, fecha de
actualización. El
administrador
especifica su tamaño.
Ocupan el resto del
sistema de archivos.
Se encuentra el
contenido de los
archivos a los que
hace referencia la
lista de i-nodos.
Cada bloque por
cada archivo.
EL SUPERBLOQUE
En algunos sistemas en el archivo de cabecera <sys/filsys.h> se encuentra
declarada una estructura en C que describe el significado del contenido del
superbloque. El superbloque contiene entre otras cosas, la siguiente información:
1) Tamaño del sistema de archivos
2) Lista de bloques libres disponibles
3) Índice del siguiente bloque libre en la lista de bloques libres
4) Tamaño de la lista de i-nodos
5) Lista de i-nodos libres
6) Índice del siguiente i-nodo en la lista de i-nodos libres
7) Campos de bloqueo de elementos de las listas de bloques libres y de
i-nodos libres. Campos que se utilizan cuando se realiza una petición
de bloques de i-nodo libre.
8) Indicador que informa si el superbloque ha sido modificado o no.
Cada vez que, desde un proceso, se accede a un archivo, es necesario consultar el
superbloque y la lista de i-nodos. Por cuestiones de tiempo de acceso, el sistema
mantiene en memoria una copia del superbloque y de la lista de i-nodos.
EL SUPERBLOQUE
NODOS ÍNDICE (i-nodos)
En el archivo de cabecera <sys/ino.h> se declara la estructura en C struct dinode
que describe la información de un i-nodo. Los campos que componen a un i-nodo
son los siguientes:
1) Identificador del propietario del archivo. La posición se divide entre un
propietario individual y un grupo de propietarios y define el conjunto de usuarios
que tienen derecho al acceso sobre el archivo. El super usuario tiene el derecho de
acceso a todos los archivos del sistema.
NODOS ÍNDICE (i-nodos)
2) Tipo de archivo. Los archivos pueden ser ordinarios de datos, directorios,
especiales de dispositivo –en modo carácter o en modo bloque- y tuberías –o
FIFO-.
3) Tipo de acceso al archivo. Se tienen tres niveles de permisos: de propietario, de
grupo y del resto de los usuarios. Cada clase de usuarios puede tener
habilitados o deshabilitados los derechos de lectura, escritura y ejecución. Para
los directorios, el derecho de ejecución significa poder acceder o no a los
archivos que contiene.
4) Tiempos de acceso al archivo. Da información sobre la fecha de la última
modificación al archivo, la última vez que se accedió a él y la última vez que se
modificaron los datos de su i-nodo.
5) Número de enlaces del archivo. Representa el total de los nombres que el
archivo tiene en la jerarquía de directorios. Un archivo puede tener asociados
diferentes nombres que correspondan a diferentes rutas y a través de los cuales
se accede a un mismo i-nodo y por consiguiente a los mismos bloques de datos.
6) Tamaño del archivo. Los bytes de un archivo se pueden direccionar indicando un
desplazamiento a partir de la dirección de inicio del archivo. El tamaño es igual
al desplazamiento del byte más alto, incrementando en una unidad.
NODOS ÍNDICE (i-nodos)
El nombre de los archivos no queda especificado en su i-nodo, sino en los
archivos de directorio en donde cada nombre de archivo se asocia con su i-
nodo correspondiente. El contenido del i-nodo cambia cuando se modifican
los datos del archivo o la situación administrativa del mismo –propietario,
permisos, etc.- cambia.
La tabla de i-nodos contiene la misma información que la lista de i-nodos a
excepción de:
a) El número de dispositivos lógicos que contienen al archivo
b) Punteros a otros i-nodos cargados en la memoria.
c) El número de i-nodo.
d) El estado del i-nodo, que indica: 1 si el i-nodo está bloquedo. 2 Si la copia del i-
nodo que está en memoria difiere de la que existe en el disco. 3 Si existe
algún proceso esperando a que el i-nodo quede desbloqueado.
ESTRUCTURA DE UN ARCHIVO ORDINARIO
archivo A archivo B archivo C
10 20 30 40
archivo A libre archivo C archivo B
10 20 30 40 55
Direcciones en
tamaño de
bloque
18 sectores
80 pistas
512 bytes/sector
2 caras
* = 1474560 bytes
Bloque
inicial Bloque
final
MÉTODOS DE ADMINISTRACIÓN DEL ESPACIO EN DISCO
LA VELOCIDAD LINEAL CONSTANTE. Un
aspecto importante a considerar está en el
hecho de que para conservar la misma taza
de transferencia de información de la
unidad de disco a la computadora, para ello
el controlador debe de
incrementar su velocidad
de rotación conforme la
cabeza se mueve de las
pistas externas a las
internas.
O bien, la velocidad puede
ser constante, pero
incrementando la densidad
de bits de las pistas
internas a las externasm
este método se conoce
también como velocidad
angular constante.
FRAGMENTACIÓN INTERNA ocurre
cuando un archivo no ocupa por
completo un bloque. Por ejemplo, si
tenemos un archivo de 10K y un
tamaño de bloque de 8K, el sistema
de archivos asignará dos bloques para
alojar el archivo, pero 6K del segundo
bloque se desaprovecharán. Nótese
que a mayor tamaño de bloque mayor
será el espacio desperdiciado.
FRAGMENTACIÓN EXTERNA ocurre
cuando los bloques lógicos que
forman un archivo se encuentran
esparcidos por todo el disco (no están
contiguos). Este tipo de fragmentación
produce un bajo rendimiento.
CAPACIDAD DE UN DISCO DURO
ASIGNACIÓN CONTIGUA
CARACTERÍSTICAS DE DIFERENTES
TIPOS DE SISTEMAS DE ARCHIVOS
FORMAS DE ALMACENAMIENTO DE
ARCHIVOS
Bloque
de
archivo
0
Bloque
de
archivo
1
Bloque
de
archivo
2
Bloque
de
archivo
3
Bloque
de
archivo
4
Archivo A
4 7 2 10 12
Bloque
de
archivo
1
Bloque
de
archivo
2
Bloque
de
archivo
3
Bloque
de
archivo
4
Archivo B
6 3 11 14
Bloque
físico
Bloque
físico
10
11
7
3
2
12
14
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
El archivo A comienza aquí
El archivo B comienza aquí
Bloque no utilizado
Bloque físico
ASIGNACIÓN POR LISTA ENLAZADA ASIGNACIÓN POR LISTA ENLAZADA
EMPLEANDO UN ÍNDICE
ASIGNACIÓN
POR LISTA
ENLAZADA
TAMAÑO DEL BLOQUE Una vez que se ha decidido almacenar los archivos en bloques de tamaño fijo, surge la
pregunta de qué tamaño deben de tener los bloques. Dada la forma en la que están
organizados los discos, el sector, la pista y el cilindro son candidatos obvios para
utilizarse como unidad de asignación. En un sistema con paginación, el tamaño de
página es un importante contendiente.
Tener una unidad de asignación grande, como un cilindro, implica que cada archivo,
incluso un archivo de 1 byte, ocupará todo un cilindro. Estudios realizados (Mullender y
Tanenbaum, 1984) han demostrado que la mediana del tamaño de los archivos en los
entornos UNIX es de alrededor de 1K, así que asignar un cilindro de 32K a cada archivo
implicaría un desperdicio de 31/32=97% del espacio en disco total. Por otro lado, el
empleo de una unidad de asignación pequeña implica que cada archivo consistirá de
muchos bloques. La lectura de cada bloque normalmente requiere una búsqueda y un
retardo rotacional, así que la lectura de un archivo que consta de muchos bloques
pequemos será lenta.
Por ejemplo, considérese un disco con 32,768 bytes por pista, tiempo de rotación de
16.67 msegs y tiempo de búsqueda medio de 30 msegs. El tiempo en milisegundos
requerido para leer un bloque de k bytes es la suma de los tiempos de búsqueda, retardo
rotacional y transferencia:
67.16)32768/(3.830 xk
TAMAÑO DE BLOQUE La curva continua (escala de la
izquierda) da la taza de datos en un
disco. La curva de guiones (escala de
la derecha) da la eficiencia de
espacio de disco. Todos los archivos
son de 1K.
Una buena utilización del espacio
(tamaño de bloque <2K) implica tasas
de datos bajas y viceversa. La
eficiencia del tiempo y la eficiencia de
espacio están inherentemente en
conflicto.
CONTROL DE BLOQUES LIBRES Una vez escogido un tamaño de bloque, la siguiente cuestión es cómo llevar el
control de los bloques libres. Se utilizan dos métodos principalmente: lista enlazada
de bloques de disco. Con bloques de 1KB y números de bloque de 32 bits, cada
bloque de la lista libre contendrá los números de 255 bloques libres. Un disco de 16
GB necesitará una lista de 16,794 bloques como máximo para contener los 224
números de bloque.
CONTROL DE BLOQUES LIBRES
La otra técnica de
administración del espacio libre
es el mapa de bits. Un disco
con n bloques requiere un
mapa de bits de n bits. Los
bloques libres se representan
con unos en el mapa, y los
blqoues asignados con ceros
(o viceversa). Un disco de 16
GB tiene 224 bloques de 1KB y
por tanto requiere 224 bits para
el mapa, lo cual ocupa un total
de 2048 bloques.
ESTRUCTURA DE UN ARCHIVO ORDINARIO
Para una mayor flexibilidad, el núcleo del sistema reserva los bloques para un
archivo de uno en uno, y permite que los datos de una archivo estén esparcidos por
todo el sistema de archivos.
Las entradas de direcciones del i-nodo consisten en una lista de direcciones de los
bloques que contiene los datos del archivo.
Bloque 1
de 1 Kbyte
Bloque 2
de 1 Kbyte
Bloque 10
de 1 Kbyte
i-nodo
Archivo de longitud
de 10 Kbytes
Lista de direcciones de
los bloques
ESTRUCTURA DE UN ARCHIVO ORDINARIO
Bloque 1
de 1 Kbyte
Bloque 2
de 1 Kbyte
Bloque 100
de 1 Kbyte
i-nodo
Archivo de longitud
de 100 Kbytes
Lista de direcciones de
los bloques con
crecimiento variable
La administración de archivos anteriormente planteada presenta problemas cuando
la dimensión del archivo es grande
ESTRUCTURA DE UN ARCHIVO ORDINARIO
Para conseguir tamaños del i-nodo pequeño y a la vez gestionar archivos grandes, las
entradas de direcciones del i-nodo se ajustan al siguiente esquema:
Entradas directas.- Contienen direcciones
de bloques en los que existen datos de
archivos (10 en total).
Entrada Indirecta simple.- Contiene la
dirección a un bloque de datos que
contiene una tabla de direcciones de
bloques de datos.
Entrada Indirecta doble.- Contiene la
dirección de un bloque cuyas entradas
actúan como entradas indirectas simples.
Entrada Indirecta triple.- Contiene la
dirección de un bloque cuyas entradas
actúan como entradas indirectas dobles.
Suponga la siguiente situación de un sistema de archivos, cada inodo tiene:
•capacidad para 10 direcciones directas
•1 entrada indirecta simple
•1 entrada indirecta doble
•1 entrada indirecta tripe
El tamaño del bloque es 512 bytes y una dirección requiere 4 bytes(32 bits), por lo que un
bloque de datos puede almacenar 512/4 = 128 direcciones.
¿ Cuál es el tamaño máximo que puede tener un archivo en este sistema ?
Resumen detallado
Tipo de Entrada Total de bloques accesibles Total de bytes accesibles
10 entradas directas 10 bloques de datos 10*512 = 5120 bytes
1 entrada indirecta
simple
1 bloque indirecto simple =
128 bloques de datos 128*512 = 65536 bytes
1 entrada indirecta
doble
1 bloque indirecto doble =
128 bloques indirectos simples =
128*128=16384 bloques de datos
16384*512 = 8388608 bytes
1 entrada indirecta
triple
1 bloque indirecto triple =
128 bloques indirectos dobles =
128*128 bloques indirectos simples
=
128*128*128 = 2097152 bloques
de datos
2097152*512 = 1073741824
bytes
TAMAÑO MAXIMO 1082201088 bytes ~ 1 GByte
TIPOS DE ARCHIVOS EN UNIX
ORDINARIOS
DIRECTORIOS
DE DISPOSITIVOS
TUBERÍAS
TIPOS DE
ARCHIVOS
Contienen bytes de datos organizados
como un arreglo lineal
Nos permiten darle una estructura
jerárquica a los sistemas de archivos de
UNIX. Su función consiste en establecer
la relación que existe entre el nombre del
archivo y su i-nodo correspondiente.
Se utilizan para que los procesos se
comuniquen con los dispositivos periféricos:
discos, cintas, impresoras, terminales,
redes, etc.
Archivo con una estructura similar a la de uno
ordinario con la diferencia es que éstos son
transitorios. Lo que quiere decir, que los
datos desaparecen de la tubería conforme
son leídos.
ARCHIVOS ORDINARIOS
Operaciones que se realizan con los datos de un archivo:
a)Leer o escribir cualquier byte del archivo.
b)Añadir bytes al final del archivo, con lo que aumenta su tamaño.
c)Truncar el tamaño de un archivo a cero bytes. Esto es como si se borrara el
contenido del archivo.
Las siguientes operaciones no son permitidas:
a)Insertar bytes en un archivo, excepto al final. Pero si se pueden modificar
los bytes existentes.
b)Borrar bytes de un archivo. No confundir con la puesta a cero de los
existentes.
c)Truncar el tamaño de un archivo a un valor distinto de cero.
Los archivos ordinarios, como tales, no tienen nombre y el acceso a ellos se realiza
a través de los i-nodos.
DIRECTORIOS
Los directorios son los archivos que permiten darle una estructura jerárquica a los
sistemas de archivos de UNIX. Su función consiste en establecer la relación que
existe entre el nombre de un archivo y su i-nodo correspondiente.
ESTRUCTURA TÍPICA
Un directorio es un archivo cuyos datos
están organizados como una secuencia de
entradas, cada una de las cuales contiene
un número de i-nodos y el nombre de un
archivo que pertenece al directorio. Al par
[i-nodo] <-> [nombre de archivo] se le
conoce como enlace y pueden haber
varios nombres de archivos –distribuidos
por la jerarquía de directorios – que estén
enlazados con un mismo i-nodo.
El tamaño de cada entrada es de 16
bytes; dos dedicados al i-nodo y 14
dedicados al nombre del archivo.
0
16
32
48
64
Tiene asociado
el i-nodo del
directorio actual
Tiene asociado
el i-nodo del
directorio padre
del actual
1
1
4
7
14
9
6
8
.
..
bin
dev
lib
etc
usr
tmp
Modo
tamaño
tiempos
132
6
1
19
30
51
26
45
.
..
dick
erick
jim
ast
bal
i-nodo 6 es para /usr i-nodo 132
es para el
directorio
/usr
DIRECTORIOS
Los procesos pueden leer el contenido de un directorio como si se tratase de un
archivo de datos, pero no pueden modificarlo.
Los permisos de acceso a un directorio tienen los siguientes significados:
a) Lectura, permite que un proceso lea ese directorio.
b) Escritura, permite a un proceso crear una nueva entrada en el directorio o
borrar alguna ya existente. Esto deberá hacerlo a través de las llamadas:
creat, mknod, link o unlink.
c) Ejecución, autoriza a un proceso para buscar el nombre de un archivo
dentro del directorio.
IMPLEMENTACIÓN DE DIRECTORIOS Antes de poder leer un archivo, hay que abrirlo.
Cuando se abre un archivo, el sistema operativo usa
el nombre de ruta proporcionado por el usuario para
localizar la entrada de directorio. Esta entrada
proporciona la información necesaria para encontrar
los bloques de disco.
DIRECTORIO DE MS—DOS
En el caso de los directorios de MS-DOS que es un
ejemplo de sistemas con árboles de directorios
jerárquicos. Se muestra a continuación la entrada de
directorio de MS-DOS, la cual contiene 32 bytes de
longitud y contiene el nombre del archivo, los
atributos y el número del primer bloque del disco. El
primer número de bloque se emplea como índice de
una tabla del tipo de la figura a la derecha. Siguiendo
la cadena, se pueden encontrar todos los bloques.
Nombre
de archivo Tamaño
Extensión Atributos Reservado Hora Fecha Primer número
de bloque
Bytes 8 3 1 10 2 2 2 4
10
11
7
3
2
12
14
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
El archivo A comienza aquí
El archivo B comienza aquí
Bloque no utilizado
Bloque físico
NOMBRE Y USO DE LOS PRINCIPALES
DIRECTORIOS DE LINUX
ARCHIVOS ESPECIALES
Estos archivos se utilizan para que los procesos se comuniquen con los dispositivos
periféricos: archivos modo bloque (discos, cintas) y archivos modo carácter
(terminales serie y las líneas de la impresora). Cada dispositivo debe de tener su
propio manejador.
major number minor number
i-nodo
ARCHIVOS
COMUNES
ARCHIVOS DE
DISPOSITIVO
Tipo de dispositivo:
disco, cinta, terminal
Número de unidad
dentro del dispositivo
Estos números los utiliza el núcleo para buscar
dentro de unas tablas BDST (Block Device Switch
Table) y CDSW (Character Device Switch Table) una
colección de rutinas que permiten manejar el
dispositivo.
TUBERÍAS CON NOMBRE
PROCESO
A
PROCESO
B
Tubería
Una tubería es un archivo con una estructura similar a la de un archivo ordinario,
con la diferencia es que los archivos tipo tubería son transitorios; esto es, que
desaparecen conforme son leídos.
La tuberías se utilizan para comunicar
procesos. Los datos siguen se escriben y
leen bajo el formato FIFO. La
sincronización es tarea del núcleo del
sistema.
El almacenamiento sólo se realiza de
forma directa del bloque del i-nodo.
Abre
para leer
Abre
para
escribir
TUBERÍAS SIN NOMBRE
No tienen asociado un nombre de archivo y sólo existen mientras un proceso esté
unido a ellas. También actúan como un canal de comunicación entre dos procesos
y tienen asociado un i-nodo mientras existen.
Ejemplo:
$ ls | sort –r
La ejecución de la línea anterior implica la ejecución de dos procesos, el resultado
de uno de ellos se complementa con el otro.
¿Cuál es el resultado que se obtendrá?
PROCESO
A
PROCESO
B
Tubería
ls
envía
sort –r
lee
PROCESO DE INICIO DE UN
ORDENADOR El POST es el acrónimo inglés de Power On Self Test (Auto diagnóstico al
encender). Es un proceso de verificación e inicialización de los componentes de
entrada y salida en un sistema de cómputo que se encarga de configurar y
diagnosticar el estado del hardware. Código o cantidad de pitidos Significado
1 tono corto El chequeo ha terminado satisfactoriamente.
Ningún tono No hay electricidad, las bocinas están desconectadas o BIOS corrupta
Tono ininterrumpido Fallo en el suministro eléctrico
Tonos cortos y seguidos Placa base estropeada
1 tono largo La memoria RAM no funciona o no hay instalada
1 tono largo y 1 corto Fallo en la placa base o en ROM
1 tono largo y 2 cortos Fallo en la tarjeta de vídeo o no hay instalada
1 tono largo y 3 cortos Fallo en la tarjeta EGA
2 tonos largos y 1 corto Fallo en la sincronización de imagen.
2 tonos cortos Error en la paridad de la memoria
3 tonos cortos Fallo en los primeros 64 Kb de la memoria RAM
4 tonos cortos Temporizador o contador defectuoso
5 tonos cortos El procesador o la tarjeta de vídeo no pasan el test
6 tonos cortos Fallo en el controlador del teclado
7 tonos cortos Modo virtual de procesador AT activo, Error de excepción/identificador del procesador.
8 tonos cortos Fallo en la escritura de la RAM de video.
9 tonos cortos Error de checksum de la ROM en la BIOS
10 tonos cortos Error de CMOS.
PROCESO DE INICIO DE UN
ORDENADOR
Las funciones principales de la BIOS durante la
POST principales son las siguientes:
verificar la integridad del código del BIOS.
encontrar, dimensionar y verificar la memoria
principal del sistema.
descubrir, inicializar y catalogar todos los buses
del sistema y dispositivos.
pasar el control a otras BIOS especializadas
(siempre y cuando sea necesario).
proporcionar una interfaz de usuario para la
configuración del sistema.
identificar, organizar y seleccionar los
dispositivos que están disponibles para el
arranque.
construcción de cualquier entorno de sistema
que es requerido por el sistema operativo
destino.
PROCESO DE INICIO DE UN
ORDENADOR
Code Meaning
100–199 System boards
200–299 Memory
300–399 Keyboard
400–499 Monochrome display
500–599 Color/graphics display
600–699 Floppy-disk drive or adapter
700–799 Math coprocessor
900–999 Parallel printer port
1000–1099 Alternate printer adapter
1100–1299 Asynchronous communication device, adapter, or port
1300–1399 Game port
1400–1499 Color/graphics printer
1500–1599 Synchronous communication device, adapter, or port
PROCESO DE INICIO DE UN
ORDENADOR
Code Meaning
1700–1799 Hard drive and/or adapter
1800–1899 Expansion unit (XT)
2000–2199 Bisynchronous communication adapter
2400–2599 EGA system-board video (MCA)
3000–3199 LAN adapter
4800–4999 Internal modem
7000–7099 Phoenix BIOS chips
7300–7399 3.5-inch disk drive
8900–8999 MIDI adapter
11200–11299 SCSI adapter
21000–21099 SCSI fixed disk and controller
21500–21599 SCSI CD-ROM system
PROCESO DE INICIO DE UN
ORDENADOR Una vez que el PC arranca, comienza a
ejecutarse el código que se encuentra en la dir.
F000:FFF0 el cual pertenece al ROM-BIOS y es
el encargado de realizar una serie de tests e
inicializaciones. Esta rutina se llama POST
(Power On Self-Test). Una vez que la BIOS
termina con sus tests e inicializaciones carga el
primer sector (cilindro 0, cabeza 0, sector 1) en
la dir. 0000:7C00 (7C00 lineal), comprueba que
contenga código válido (comprueba que esté
firmado con 55H, AAH en los bytes 511 y 512) y
salta a esa dirección (CS:IP apuntan a esa
dirección).
El bootstrapping también puede referirse al
proceso mediante el cual se han desarrollado
entornos de programación cada vez más
complejos a partir de otros más simples. El
entorno más simple sería, quizás, un editor de
textos muy sencillo (p. e. ed) y un programa
ensamblador. Utilizando estas herramientas, se
puede escribir un editor de texto más complejo y
un compilador simple para un lenguaje de más
alto nivel y así sucesivamente, hasta obtener un
entorno de desarrollo integrado y un lenguaje de
programación de muy alto nivel.
El programa inicial bootstrap inicializa todos
los aspectos del sistema, desde los registros
del procesador hasta los controladores de
dispositivos y el contenido de la memoria
principal, tras lo cual inicia el sistema
operativo. Para ello encuentra al kernel del
sistema operativo en el disco, lo carga en
memoria, y salta a la dirección inicial para
comenzar la ejecución del sistema operativo.
Dicho bootstrap se almacena en la memoria
ROM. Una alternativa a lo anterior es que
una parte pequeña del bootstrap se
almacena en la ROM, la cual tiene como
trabajo saltar al programa bootstrap
completo que se encuentra en el disco.
Dicho código se almacena en los bloques de
inicio del sistema operativo, y por lo tanto
puede ser modificado más fácilmente que el
almacenado de manera completa en la
ROM.
PROCESO DE ARRANQUE
DE UNA MÁQUINA CON
WINDOWS 2000
MBR
PARTICIÓN 1
PARTICIÓN 2
PARTICIÓN 3
PARTICIÓN 4
CÓDIGO DE
ARRANQUE
TABLA DE
PARTICIÓN
PARTICIÓN
DE
ARRANQUE
a) El código en la ROM instruye al controlador de
disco a leer los bloques de arranque a memoria y
ejecuta el código
b) Windows 2000 coloca su código de arranque en
el MBR, considerando además que el disco puede
estar dividido en varias particiones
c) Se lee y ejecuta el pequeño
código almacenado en el MBR
(contenido en los primeros 440
bytes)
d) Se carga luego
entonces la partición
de arranque del
sistema y demás
controladores de
dispositivos.
e) Se inicializa el
sistema
nota En las versiones anteriores del sistema operativo Windows que se ejecutan en un equipo
basado en el sistema básico de entrada/salida (BIOS, Basic Input/Output System), como
Windows XP, el proceso de arranque se inicia con el BIOS del sistema. El BIOS determina el
dispositivo de arranque y, después, carga el primer sector físico. Este sector físico se conoce
como el registro de arranque maestro (MBR, Master Boot Record). El MBR contiene la tabla
de particiones y el código de ejecución de arranque necesario. Este código busca en la tabla
de particiones las particiones activas y pasa el control al sector de arranque en la partición
activa. Después, el sector de arranque de la partición activa carga el programa Ntldr.exe. El
programa Ntldr.exe analiza el archivo Boot.ini. Este archivo se usa para enumerar los
sistemas operativos que están instalados.
LA FAT 32 DE MS-DOS
http://en.wikipedia.org/wiki/File_Allocation_Table
BOOT SECTOR
TABLAS DE CONTROL DE ACCESO A
LOS ARCHIVOS Además de la tabla de i-nodos, el núcleo mantiene en memoria otras dos tablas
que contienen información necesaria para poder manipular un archivo: la tabla de
archivos y la tabla de descriptores de archivo. Cada entrada de la tabla de archivos
contiene también un apuntador a una estructura de datos que contiene información
del estado actual del archivo.
TABLA DE ARCHIVOS
La tabla de archivos es una estructura global del núcleo y en ella existe una
entrada por cada archivo distinto que los procesos del núcleo o los procesos del
usuario tienen abiertos. Cada vez que un proceso abre o crea un archivo nuevo, se
reserva una nueva entrada en la tabla. Las operaciones que se deben implementar
por cada tipo ce archivo son:
•Funciones para leer y escribir en un archivo.
•Una función para realizar la multiplexación síncrona de la E/S,.
•Una función para controlar los modos de E/S, ioctl.
•Una función para cerrar el archivo. close.
TABLA DE DESCRIPTORES DE ARCHIVO La tabla de descriptores de archivo es una estructura local a cada proceso. Esta
tabla identifica todos los archivos abiertos por un proceso. Cuando se utilizan las
llamadas al sistema open, creat, dup, o link, el núcleo devuelve un descriptor de
archivo, que es un índice para poder acceder a las entradas de la tabla anterior. En
cada una de las entradas de la tabla exite un apuntador a una entrada de la tabla
de archivos del sistema.
El núcleo manipula las tablas anteriores a través del descriptor de archivo dado por
el proceso. Cuando un proceso utiliza una llamada para realizar una operación
sobre un archivo, le pasa al núcleo el descriptor de ese archivo. El núcleo utiliza
este número para acceder a la tabla de descriptores de archivo del proceso y
buscar en ella cuál es la entrada de la tabla de archivos que le da acceso a su i-
nodo. El tamaño de la tabla de descriptores está limitado (20).
En informática los términos descriptor de archivo o descriptor de fichero son
usados generalmente en sistemas operativos POSIX. En la terminología de
Microsoft Windows y en el contexto de la biblioteca stdio, se prefiere el término
"manipulador de archivos" o "manipulador de ficheros", ya que es técnicamente un
objeto diferente.
En POSIX, un descriptor de archivo es un entero, específicamente del tipo int de C.
Hay 3 descriptores de archivo estándar de POSIX que presumiblemente tiene cada
proceso, salvo quizá los demonios:
Suponga que un segundo proceso ejecuta el
siguiente código:
fd1= open("/etc/passwd", O_RDONLY);
fd2 =open("private", O_RDONLY);
Como se ve en la figura cada open crea una entrada en la tabla de descriptores y
en la tabla de archivos abiertos. Pero en la tabla de inodos sólo se incrementa el
contador de archivos abiertos.
Generalmente, un descriptor de archivo es una clave a una estructura de datos residente en el núcleo, que
contiene detalles de todos los archivos abiertos. En POSIX, esta estructura de datos se llama "tabla de
descriptores de archivos", y cada proceso tiene la suya. La aplicación que lanza un usuario pasa al núcleo la
clave abstracta mediante una llamada al sistema, y el núcleo tendrá acceso al archivo a nombre de la
aplicación, que se basará en la clave. Esa misma aplicación no puede acceder a la tabla de descriptores de
archivo directamente, ni para leer ni para escribir.
En los sistemas Unix, los descriptores de archivo se pueden referir a archivos, directorios, dispositivos de
bloques o dispositivos de caracteres (también llamados "archivos especiales"), sockets, FIFOs (también
llamados "tuberías con nombre") o tuberías sin nombre.
CARACTERÍSTICAS DE EFICIENCIA DEL
SISTEMA DE ARCHIVOS Ext2
Cuando se crea un sistema de archivo Ext2, el administrador del mismo puede seleccionar el tamaño
de bloque óptimo (de 1,024 a 4,096 bytes), dependiendo de la longitud de los archivos promedio que se
podrían esperar. Por ejemplo, un tamaño de bloque de 1,024-block es deseable cuando la longitud del
archivo promedio es más pequeña que unos cientos de de bytes dado que esto implicaría una menor
fragmentación interna —esto es, menos semejanza entre la longitud del archivo y la porcion del disco
que la contiene. Por otro lado, tamaños de bloques más grandes son regularmente preferibles para
archivos más grandes que unos cuantos de bytes dado que esto permitirá menores transferencias de
disco, reduciendo.
Cuando se crea el sistema de archivos Ext2, el administrador del sistema debe de seleccionar cuantos
i-nodos son permisibles para una partición de una tamaño determinado, dependiendo del número
esperado de archivos que serán almacenados. Esto maximiza el espacio de disco efectivamente útil.
El sistema de archivos particiona los bloques de disco en grupos. Cada grupo incluye bloques de datos
e i-nodos almacenados en pistas adjuntas. Debido a esta estructura, los archivos almacenados en un
grupo de bloques sencillo puede ser accedido tiempo de búsqueda en disco en promedio más pequeño.
El sistema de archivos prealmacena bloques de datos del disco para archivos ordinarios antes de que
sean utilizados. Así, cuando un archivo incrementa su tamaño, muchos bloques son reservados en
posiciones físicas adyacentes, reduciendo con ello la fragmentación de disco.
Enlaces simbólicos rápidos son soportados. Si el nombre de trayectoria de un enlace simbólico tiene 60
bytes o menos, se almacena en un inodo y puede así ser traducido sin leer un bloque de datos.
CARACTERÍSTICAS DE ROBUSTEZ Y
FLEXIBILIDAD
• Una implementación cuidadosa de la estrategia de actualización de archivos que minimiza
el impacto de las caídas del sistema. Por ejemplo, cuando se crea un nuevo enlace duro
de un archivo, el contador de enlaces duros en un i-nodo del disco se ve incrementado, y
el nuevo nombre se agrega en un directorio próximo. De esta forma, si ocurre una falla en
el hardware después de que el i-nodo se actualiza pero antes de que el directorio sea
cambiado, el directorio es consistente, incluso si el contador de enlace duro del i-nodo es
incorrecto. La eliminación de archivos no conduce a resultados catastróficos, sin embargo
los bloques de datos del archivo no pueden ser reclamados. Errores grandes se
produjeran si se cambia primero el directorio antes de la actualización del i-nodo.
• Soporta para la verificación de consistencia automática sobre el estado del sistema de
archivos al tiempo en que arranca el sistema. Las verificaciones son realizadas por el
programa externo e2fsck, el cual puede ser activado no sólo por después del crash del
sistema, sino también después de un número de veces que un sistema de archivos se
monta.
• Soporte para archivos inmutables (no pueden ser modificados, borrados o renombrados)
y para archivos de sólo lectura (los datos pueden ser agregados sólo al final de ellos).
• La compatibilidad con el Sistema Unix versión 4 y la semántica BSD del proceso que lo
crea; en BSD, el nuevo archivo hereda el ID del Grupo del directorio que lo contiene. Ext2
incluye una opción de montado que específica qué semántica se está utilizando.
EL SISTEMA DE
ARCHIVOS ext2
La estructura física de Ext2fs está fuertemente influenciada por la distribución (layout) del
sistema de ficheros BSD [McKusic et al. 1984]. Un sistema de archivos se compone de grupos
de bloques. Los grupos de bloques son análogos a los grupos de cilindros. Sin embargo los
grupos de bloques no se encuentran atados a la disposición física de los bloques en el disco.
Como resultado, la mayor parte de la gestión del
sistema de ficheros se reduce a la gestión de un sólo
grupo de bloques.
Ext2fs divide el disco en pequeñas unidades
lógicas llamadas ‘bloques’.
El ext2 divide las particiones lógicas que ocupa en Grupo de
Bloques (BG), conjuntos de bloques secuenciales. Dichos grupos
reducen la fragmentación de disco
$fdisk –l
$dd if=/dev/sda count=1 | hexdump –C | more
$df
$dumpe2fs /dev/sda -h
Todos los grupos de bloques
en el sistema de archivos
tienen el mismo tamaño y
son almacenados de forma
secuencial.
EL SISTEMA DE ARCHIVOS ext2 Cada grupo contiene una copia redundante de información de control crucial del FS (el
superbloque y los descriptores del FS) además de parte del propio FS (block bitmap, inode
bitmap, una porción de la tabla de inodos, y bloques de datos). La estructura de un grupo de
bloques es como sigue:
Cada Grupo de Bloques BG contiene:
· Una copia del superbloque.
· Tabla con los descriptores del grupo.
· Un mapa de bits de bloques de datos.
· Un mapa de bits de inodos.
· Un grupo de inodos.
· Bloques de datos.
Usar grupos de bloques es un gran avance en términos de fiabilidad: el hecho de guardar una copia de las
estructuras de control superbloque y tabla de descriptores en cada grupo facilita la recuperación del FS ante
una corrupción del superbloque, si ocurre una corrupción de datos y el super bloque principal o los descriptores
de bloque principal en el grupo de bloque 0 son inválidos, el administrador del sistema puede indicar a la
aplicación e2fsck que se refiera a dopias del superbloque de otro grupos de bloque.
También ayuda a alcanzar un buen rendimiento: reduciendo la distancia entre la tabla de inodos y los bloques
de datos es posible reducir las búsquedas de las cabezas de los discos.
Sólo esta parte es usada por el kernel
Este esquema reduce la fragmentación, debido a
que el kernel conserva los bloques de datos de un
archivo dentro de un mismo grupo de bloques, si es
posible.
TOTAL DE GRUPOS DE BLOQUE
El número total de grupos de bloque depende del tamaño de la partición y el tamaño del
bloque. La condición principal es que el bloque de mapas de bits, que se utiliza para
identificar los bloques que son utilizados y libres dentro del grupo, deben de ser
almacenados en un bloque simple. Por lo tanto, en cada grupo de bloque, deben de existir al
menos 8xb bloques, donde b es el tamaño del bloque en bytes. Así, el número total de
bloques de grupo es exactamente s/(8xb), siendo s el tamaño de la partición en bloques.
Por ejemplo:
Partición: 8GB
Tamaño de bloque: 4 kB
Cada mapa de bits de 4kB describe a 32k bloques de datos, esto es 128 MB.
Número total de grupos de bloque: 64
DESCRIPTORES DE GRUPO Y MAPAS
DE BITS
Cada grupo de bloques tiene su propio descriptor de grupo, la estructura ext2_group_desc
mantiene campos referenciados a este tipo de estructura.
Los campos bg_free_blocks_count,
bg_free_inodes_count y
bg_used_dirs_count se utilizan cuando
se almacenan nuevos i-nodos y
bloques de datos. Estos campos
determinan el bloque adecuado en el
cual almacenar cada estructura de
datos. Los mapas de bits son
secuencias de bits, en donde el valor 0
especifica que el i-nodo
correspondiente o bloque de datos se
encuentra libre y un 1 es indicativo de
que se encuentra ocupado. Debido a
que cada mapa de bits debe de
almacenarse dentro de un bloque
sencillo y dado que cada tamaño de
bloque puede ser de 1, 2 0 4k, un
mapa de bits simple describe el estado
de 8, 16 y 32k bloques.
TABLA DE i-nodos
Consiste de una serie de bloques
consecutivos, cada uno de los cuales
contiene un número predefinido de i-nodos.
El número de bloque del primer bloque de la
tabla de i-nodo es almacenado en el campo
bg_inode_table del grupo descriptor.
Todos los i-nodos tienen el tamaño de 128
bytes. Un bloque de 1024 bytes contiene 8 i-
nodos, mientras que un bloque de 4k
contiene 32 i-nodos, varios campos
controlan esta información.
TIPOS DE ARCHIVOS
DIRECTORIOS
Los directorios en Ext2fs son listas enlazadas con entradas de longitud
variable. Cada entrada contiene el número de inodo, la longitud de la entrada,
el nombre de archivo y su longitud. La estructura de un directorio se muestra
a continuación:
El superbloque es un bloque que contiene la información más relevante y describe al
sistema de ficheros. Se encuentra en el offset fijo 1024 del disco y ocupa 1024 bytes.
370/*
371 * Structure of the super block
372 */
373struct ext2_super_block {
374 __le32 s_inodes_count; /* Inodes count */
375 __le32 s_blocks_count; /* Blocks count */
376 __le32 s_r_blocks_count; /* Reserved blocks count */
377 __le32 s_free_blocks_count; /* Free blocks count */
378 __le32 s_free_inodes_count; /* Free inodes count */
379 __le32 s_first_data_block; /* First Data Block */
380 __le32 s_log_block_size; /* Block size */
381 __le32 s_log_frag_size; /* Fragment size */
382 __le32 s_blocks_per_group; /* # Blocks per group */
383 __le32 s_frags_per_group; /* # Fragments per group */
390 __le16 s_state; /* File system state */
391 __le16 s_errors; /* Behaviour when detecting errors */
392 __le16 s_minor_rev_level; /* minor revision level */
393 __le32 s_lastcheck; /* time of last check */
394 __le32 s_checkinterval; /* max. time between checks */
395 __le32 s_creator_os; /* OS */
396 __le32 s_rev_level; /* Revision level */
397 __le16 s_def_resuid; /* Default uid for reserved blocks */
398 __le16 s_def_resgid; /* Default gid for reserved blocks */
384 __le32 s_inodes_per_group; /* # Inodes per group */
385 __le32 s_mtime; /* Mount time */
386 __le32 s_wtime; /* Write time */
387 __le16 s_mnt_count; /* Mount count */
388 __le16 s_max_mnt_count; /* Maximal mount count */
389 __le16 s_magic; /* Magic signature */
Por lo regular, si el nombre de la trayectoria de un enlace simbólico tiene hasta
60 caracteres, éstos son almacenados en el campo i_block del i-nodo, el cual
consiste de un arreglo de 15 enteros de 4 bytes; por lo que no se requieren
bloques de datos, si el nombre de la trayectoria es mayor a 60 si se requiere 1
bloque. Los archivos de dispositivo, tubería y sockets no requieren bloques.
Toda la información se almacena en el i-nodo.
ESTRUCTURAS DE DATOS DE ext2 EN
LA MEMORIA Por aspectos de eficiencia, la mayor parte de la información de la estrcutura de datos del disco de una
partición de ext2 es copiada a la RAM cuando el sistema de archivos es montado, así se le permite al kernel
evitar muchas operaciones de lectura de disco subsecuentes. Debido a que las estructuras de datos de disco
Ext2 se almacenan en bloques de la partición Ext2, el kernel utiliza el buffer cache y la página cache para
conservarlos actualizados.
La siguiente tabla muestra cada tipo de
datos relacionado al sistema de
archivos Ext2 y los archivos, la
estructura de datos utilizada sobre el
disco para representar sus datos, la
estructura de datos utilizada por el
kernel en memoria, y la regla de
utilizada para determinar cuantos
almacenamiento en caché es utilizado.
ESTRUCTURAS DE DATOS DE ext2 EN
LA MEMORIA
Cuando el núcleo monta el sistema de ficheros ext2, se asigna un búfer para el superbloque
de Ext2 y lee su contenido desde el disco. El buffer se libera sólo cuando el sistema de
archivos Ext2 es desmontado. Cuando el kernel debe modificar un campo en el superbloque
Ext2, simplemente escribe el nuevo valor en la posición correcta del buffer correspondiente y
luego marca el buffer como sucio.
Por desgracia, este enfoque no puede ser adoptado por todas las estructuras de Ext2. El
aumento en la capacidad de los discos alcanzado en los últimos años ha provocado un
aumento en el tamaño del i-nodo y de los mapas de bits de los bloques de datos, por lo que
hemos llegado al punto en que ya no es conveniente guardar todos los mapas de bits en la
memoria RAM, al mismo tiempo.
Por ejemplo, considere un disco de 4 GB con un tamaño de bloque de 1 KB. Ya que cada uno
de los mapas de bits llena todos los bits de un bloque sencillo, cada uno de ellos describe el
estado de 8,192 bloques -es decir, de 8 MB de almacenamiento en disco-. El número de
grupos de bloques es de 4.096 MB / 8MB = 512 . Debido a que cada grupo de bloques
requiere un mapa de bits de i-nodos y un mapa de bits de bloques de datos, 1 MB de RAM
sería necesario para almacenar todos los 1024 mapas de bits en memoria.
EL SISTEMA DE ARCHIVOS ext3 La principal diferencia con ext2 es el registro por diario. Un sistema de archivos ext3 puede ser
montado y usado como un sistema de archivos ext2. Otra diferencia importante es que ext3
utiliza un árbol binario balanceado (árbol AVL) e incorpora el asignador de bloques de disco
Orlov, además de tener un crecimiento en línea.
El journaling es un mecanismo por el cual un sistema informático puede implementar
transacciones. También se le conoce como «registro por diario».
Se basa en llevar un journal o registro de diario en el que se almacena la información
necesaria para restablecer los datos afectados por la transacción en caso de que ésta falle.
El procedimiento es básicamente el siguiente:
Se bloquean las estructuras de datos afectadas por la transacción para que ningún otro
proceso pueda modificarlas mientras ésta dura.
Se reserva un recurso para almacenar el journal. Por lo general suelen ser unos bloques de
disco, de modo que si el sistema se para de forma abrupta (corte eléctrico, avería, fallo del
sistema operativo...) el journal siga disponible una vez reiniciado el sistema.
Se efectúan una a una las modificaciones en la estructura de datos. Para cada una:
Se apunta en el journal como deshacer la modificación y se asegura de que esta información se
escribe físicamente en el disco.
Se realiza la modificación.
Si en cualquier momento se quiere cancelar la transacción se deshacen los cambios uno a
uno leyéndolos y borrándolos del journal.
Si todo ha ido bien, se borra el journal y se desbloquean las estructuras de datos afectadas.
EL SISTEMA DE ARCHIVOS ext3
Las aplicaciones más frecuentes de los sistemas de journaling se usan para implementar
transacciones de sistemas de bases de datos y, más recientemente, para evitar la corrupción de
las estructuras de datos en las que se basan los sistemas de archivos modernos.
En el caso concreto de los sistemas de archivos, el journaling se suele limitar a las operaciones
que afectan a las estructuras que mantienen información sobre:
Estructuras de directorio.
Bloques libres de disco.
Descriptores de archivo (tamaño, fecha de modificación...)
El hecho de que no se suela implementar el journaling de los datos concretos de un archivo
suele carecer de importancia, puesto que lo que persigue el journaling de sistemas de archivos
es evitar los engorrosos y largos chequeos de disco que efectúan los sistemas al apagarse
bruscamente, ya que el sistema al arrancar solo deberá deshacer el journal para tener un
sistema coherente de nuevo.
POSIBLES NIVELES DEL REGISTRO
POR DIARIO
DIARIO (bajo riesgo)
Los metadatos y los archivos de contenido son copiados al diario antes
de ser llevados al sistema de archivos principal. Como el diario está en
el disco continuamente puede mejorar el rendimiento en ciertas
ocasiones. En otras ocasiones el rendimiento es peor porque los datos
deben ser escritos dos veces, una al diario y otra a la parte principal del
sistema de archivos.
PEDIDO (riesgo medio)
Solo los metadatos son registrados en el diario, los contenidos no, pero
está asegurado que el contenido del archivo es escrito en el disco antes
de que el metadato asociado se marque como transcrito en el diario. Es el
sistema por defecto en la mayoría de las distribuciones de Linux. Si hay
un error de tensión o kernel Panic cuando el archivo se está escribiendo o
está empezando, el diario indicará que el nuevo archivo o el intento no ha
sido pasado, por lo que será purgado por el proceso de limpiado.
REESTRUCTURA
(riesgo alto)
Solo los metadatos son registrados en el diario, el contenido de los
archivos no. Los contenidos pueden estar escritos antes o después de que
el diario se actualice. Como resultado, los archivos modificados
correctamente antes de una ruptura pueden volverse corruptos. Por
ejemplo, un archivo pendiente de ser marcado en el diario como mayor de
lo que actualmente es, convirtiendo en basura al final de la comprobación.
Las versiones antiguas de los archivos pueden aparecer inesperadamente
después de una recuperación de diario. La carencia de sincronización entre
los datos y el diario es rápidamente subsanada en muchos casos. JFS usa
este nivel de journaling, pero se asegura de que cualquier basura es
borrada al reiniciar.
DESVENTAJAS DEL SISTEMA DE
ARCHIVOS ext3 Funcionalidad
Como ext3 está hecho para ser compatible con ext2, la mayoría de las estructuras del almacenamiento son
similares a las de ext2. Por ello, ext3 carece de muchas características de los diseños más recientes como
las extensiones, la localización dinámica de los i-nodos, y la sub-localización de los bloques. Hay un límite
de 31998 subdirectorios por cada directorio, que se derivan de su límite de 32 links por i-nodo. Ext3, como
la mayoría de los sistemas de archivos actuales de Linux, no puede ser verificado por el fsck mientras el
sistema de archivos está montado para la escritura. Si se intenta verificar un sistema de archivos que está
montado puede detectar falsos errores donde los datos no han sido volcados al disco todavía, y corromper
el sistema de archivos al intentar arreglar esos errores.
Fragmentación
No hay herramienta de desgragmentación online para ext3 que funcione en nivel del sistema de archivos.
Existe un desfragmentador offline para ext2, e2defrag, pero requiere que el sistema de archivos ext3 sea
reconvertido a ext2 antes de iniciarse. Pero dependiendo de los bits encendidos en el sistema, e2defrag
puede destruir datos. No sabe como tratar la mayoría de las nuevas características de ext3. Hay
herramientas de usuario para desfragmentar como Shake y Defrag. Shake trabaja localizando para todo el
archivo como una operación, lo que generalmente causa que el localizador encuentre espacio continuo en
el disco. También intenta escribir archivos usados al mismo tiempo que otros. Defrag trabaja copiando cada
archivo sobre sí mismo. De todas formas solo funcionan si el sistema de archivos esta razonablemente
vacío. No existe una verdadera herramienta de desfragmentación para ext3.
CARACTERÍSTICAS DEL SISTEMA DE
ARCHIVOS ext4
Características Ventajas
Sistema de archivos
más grande
El sistema de archivos Ext3 alcanza un máximo de 32 TB (TIB), y una longitud de los archivos de 2 TB,
pero los límites, en la realidad, pueden ser inferiores a éstos y están en función de la arquitectura y
configuración de un sistema determinado, tal vez un mínimo de 2TB en el sistemas de archivos y 16 GB en
la longitud de loa archivos. Ext4, por el contrario, permite que los sistemas de archivos lleguen hasta 1024
(PetaBytes), o 1 (ExaByte), y archivos de hasta 16 TB. Esto puede no ser importante (por ahora) para la
computadora de escritorio o un servidor de medios, pero es importante para los usuarios con los arrays de
disco de gran tamaño.
Extents Un extents es una forma de mejorar la eficiencia de los descriptores de archivo en el disco, reduciendo los
tiempos de acceso a archivos de gran tamaño, entre otras cosas.
Pre-almacenamiento
persistente
Si una aplicación requiere asignar espacio en disco antes de utilizarla, la mayoría de los sistemas de
archivos lo hacen pero escribiendo 0s en el espacio de disco que aún no es utilizado. Ext4 permite la
preasignación sin hacer esto, lo que puede mejorar el rendimiento de algunas herramientas de multimedia
y en base de datos.
Asignación retardada Ext4 puede retrasar la asignación de espacio en disco hasta el último momento, lo que puede mejorar el
rendimiento.
Mas subdirectorios Ext3 sólo puede contener 32.000 subdirectorios dentro de un directorio, en ext4 este límite ha sido
eliminado.
Verificación tipo
checksum Ext4 añade una suma de comprobación de los datos de diario, lo que mejora la fiabilidad y el rendimiento.
Ext4 adds a checksum to the journal data, which improves reliability and performance.
De-fragmentación en
línea
Aunque ext3 no es propenso a la fragmentación excesiva, los archivos almacenados en ella pueden llegar
a ser al menos un poco fragmentado. Ext4 añade soporte para la desfragmentación en línea, lo que debe
mejorar el rendimiento general.
CARACTERÍSTICAS DEL SISTEMA DE
ARCHIVOS ext4
Recuperación Aunque no ha sido implementado, ext4 puede recuperar la recuperación (después de una eliminación), lo
cual, por supuesto, es muy útil cuando alguien accidentalmente borra un archivo.
Verificación del
sistema de archivos
más rápida
Ext4 añade estructuras de datos que permiten a fsck no analizar partes no utilizadas del disco en sus
verificaciones, lo que permite acelerar los controles del sistema de archivos
Nanosecond
timestamps
La mayoría de los sistemas de archivos, incluyendo ext3, incluyen los datos de fecha y hora que son
precisas en un segundo. Ext4 extiende la exactitud de estos datos a un nanosegundo. Algunas fuentes
también indican que el ext4 brinda apoyo a fechas del 25 de abril 2514, contra el 18 de enero 2038, para
ext3.
EL SISTEMA DE ARCHIVOS VIRTUAL
Los distintos SO suelen usar su
propio Sistema de Ficheros, esto
complica la compartición de datos
en un disco duro entre distintos SO.
Linux ofrece soporte para distintos
Sistemas de Ficheros como EXT2,
Minix, FAT…
Los procesos necesitan de un
acceso uniforme a los datos, sin
preocuparse de qué Sistema de
Ficheros se trata, el VFS es la
interfaz entre las llamadas al
sistema y la gestión de archivos.
Las llamadas se dirigen al VFS,
que redirige la petición al módulo
que gestiona el archivo.
INVESTIGACIÓN
¿Cómo se realiza la administración del sistema de archivos?
¿Qué son las particiones del disco?
¿Qué implica dar formato a un disco?
¿Cómo se construye un sistema de archivos?
¿Cómo se comprueba el estado de un sistema de archivos?
¿Cómo se monta y desmonta un sistema de archivos?
CONCLUSIONES
• Un sistema de archivos es un mecanismo de abstracción de los dispositivos físicos de almacenamiento que nos permite manejarlos a un nivel lógico sin la necesidad de conocer su arquitectura hardware particular.
• Existen CUATRO partes importantes que componen a un sistema de archivos dentro de la unidad de almacenamiento correspondiente: .bloques de boot, superbloque, lista de i-nodos y bloques de datos.
• Para conseguir tamaños del i-nodo pequeño y a la vez gestionar archivos grandes, las entradas de direcciones del i-nodo se ajustan a un esquema de entradas directas, indirectas simples, indirectas dobles e indirectas triples.
• El subsistema de archivos controla los recursos del sistema de archivos y tiene funciones como reservar espacio para los archivos, administrar el espacio libre, controlar el acceso a los archivos, permitir el intercambio de datos entre los archivos y el usuario, etc.
• Los directorios son los archivos que permiten darle una estructura jerárquica a los sistemas de archivos de UNIX. Su función consiste en establecer la relación que existe entre el nombre de un archivo y su i-nodo correspondiente.
IMPLEMENTACIÓN DEL SISTEMA DE
ARCHIVOS
http://www.clubdelphi.com/trucos/index.php?id=356