sistema de ficheros
DESCRIPTION
Sistema de Ficheros. ARISO 2 Escola Tècnica Superior d’Enginyeria de Telecomunicació de Barcelona ( Universitat Politècnica de Catalunya). Licencia Creative Commons. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/1.jpg)
Sistema de FicherosARISO 2
Escola Tècnica Superior d’Enginyeria de Telecomunicació de Barcelona(Universitat Politècnica de Catalunya)
![Page 2: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/2.jpg)
Esta obra está bajo una licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 España de Creative Commons. Para ver una copia de esta licencia, visite:
http://creativecommons.org/licenses/by-nc-sa/2.5/es/
o envíe una carta a:Creative Commons, 559 Nathan Abbott Way, Stanford,California 94305, USA.
Licencia Creative Commons
![Page 3: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/3.jpg)
Eres libre de: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas
Bajo las condiciones siguientes: Atribución. Debes reconocer la autoría de la obra en los términos especificados por el
propio autor o licenciante. No comercial. No puedes utilizar esta obra para fines comerciales. Licenciamiento Recíproco. Si alteras, transformas o creas una obra a partir de esta obra,
solo podrás distribuir la obra resultante bajo una licencia igual a ésta. Al reutilizar o distribuir la obra, tienes que dejar bien claro los términos de la licencia de
esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor
Advertencia: Los derechos derivados de usos legítimos u otras limitaciones reconocidas por ley no se
ven afectados por lo anterior. Esto es un resumen legible por humanos del texto legal (la licencia completa)
Licencia Creative Commons
![Page 4: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/4.jpg)
Sistema de FicherosIntroducción
![Page 5: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/5.jpg)
Bus
Dispositivos I/O
Dispositivo
Controlador Dispositivo
Hardware◦ Dispositivo◦ Controlador
Software◦ Driver (parte del SO)
Métodos espera◦ Busy waiting◦ Interrupts◦ DMA (Direct Memory Acces)
![Page 6: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/6.jpg)
Sistema de Ficheros Organización virtual de la información
almacenada
/
bin etc tmp lib dev usr
profes
ariso2
rubenb
docs
F1.txt F2.txt
practicas proyectos
alumnes
![Page 7: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/7.jpg)
Ficheros Tira de bytes identificados por un nombre Tipos:
◦ Regular Files Ficheros con datos de usuario
◦ Directories◦ Character Special Files
Dispositivos E/S en serie (terminales, impresoras)
![Page 8: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/8.jpg)
Ficheros Información organizada en bloques:
◦ Sector: unidad de transferencia Definida por el HW #sector disco, cara, pista, …
◦ Bloque: unidad de asignación Definido por el SO Que tamaño definimos?
![Page 9: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/9.jpg)
Ficheros Estructura
Secuenciade bytes
Secuenciade bloques
Árbol
![Page 10: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/10.jpg)
Ficheros Acceso a ficheros
◦ Secuencial Para leer el elemento n hay que leer los n-1
anteriores
◦ “Aleatorio” (Random Acces Files) Puedes escoger que elemento leer en cada momento
![Page 11: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/11.jpg)
Ficheros Atributos de un fichero
◦ Metadatos◦ Información del SO
Ejemplos de atributos◦ Creador◦ Dueño◦ Flags (Read-only, oculto, sistema)◦ Fechas (creación, modificación, último acceso) ◦ Tamaño◦ Protección
![Page 12: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/12.jpg)
Ficheros Operaciones
◦ Crear◦ Eliminar◦ Abrir◦ Cerrar◦ Leer◦ Escribir◦ Posicionar◦ Obtener atributos◦ Establecer atributos
![Page 13: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/13.jpg)
Sistema de FicherosLlamadas a sistema UNIX/Linux
![Page 14: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/14.jpg)
Llamadas a sistema: open Crea las estructuras de datos en SO para
usar un fichero
int open (char *path, int flags, [int rights])◦ path: ruta del fichero que se va a abrir◦ flags: modo de apertura◦ rights: permisos RWX (en caso de creación)
◦ Devuelve: el id de la TC que se ha asignado -1 en caso de error
![Page 15: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/15.jpg)
Llamadas a sistema: open Flags :
◦ Modo apertura (obligatorio) O_RDONLY O_WRONLY O_RDWR
◦ Modo de creación (opcional) O_CREAT : ∄, lo crea
∃, lo abre O_EXCL+O_CREAT : ∄, lo crea
∃, error O_APPEND: posiciona el puntero en EOF O_TRUNC: borra el contenido del fichero previamente
![Page 16: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/16.jpg)
Llamadas a sistema: open Ejemplos
◦ fd=open(“hola1.txt”, O_WRONLY|O_CREAT, 660);◦ fd=open(“hola2.txt”, O_CREAT|O_WRONLY|O_TRUNC);◦ fd=open(“hola3.txt”, O_RDONLY);
Que hace el SO;◦ Buscar posición en la tabla de canales (TDVA)◦ Nueva entrada en la TFA◦ TC[n] TFA
![Page 17: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/17.jpg)
Llamadas a sistema: close Libera las estructuras de datos del SO de un
fichero
int close (int file_descriptor)◦ file_descriptor : posición de la TC
◦ Devuelve: 0 OK -1 en caso de error
![Page 18: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/18.jpg)
Llamadas a sistema: close Ejemplos
◦ fd=open(“hola.txt”, O_WRONLY|O_CREAT, 660);◦ close(fd);◦ close(1);
Que hace el SO;◦ Libera la posición en la tabla de canales (TDVA)◦ Decrementa o libera TFA◦ Si el proceso finaliza, se liberan todos las entradas de la
TC
![Page 19: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/19.jpg)
Llamadas a sistema: dup Duplica una entrada de la tabla de canales
int dup (int file_descriptor)◦ file_descriptor : posición de la TC
◦ Devuelve: el id de la TC que se ha asignado -1 en caso de error
![Page 20: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/20.jpg)
Llamadas a sistema: dup Ejemplos
◦ fd=dup(1);
Que hace el SO;◦ Busca la primera posición libre de la TC◦ La nueva posición de la TC apunta al mismo punto de la
TFA que la pasada por parámetro◦ Incrementa en #referencias en la TFA
![Page 21: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/21.jpg)
Llamadas a sistema: dup2 Igual que dup, pero especificando el FD
destino
int dup2 (int fd_origen, int fd_destino)◦ fd_origen: posición de la TC a duplicar ◦ fd_destino: posición de la TC donde duplicar
◦ Devuelve: el id de la TC que se ha asignado -1 en caso de error
![Page 22: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/22.jpg)
Llamadas a sistema: read Leer datos de un dispositivo virtual
int read (int fd, void *buffer, int nbytes)◦ fd: posición de la TC◦ buffer: donde se guardaran los datos leídos◦ nbytes: numero de bytes que queremos leer
◦ Devuelve: -1: en caso de error 0: Fin de fichero (no hay mas datos) >0: #bytes leídos
![Page 23: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/23.jpg)
Llamadas a sistema: read Ejemplos
◦ n = read(fd, &c, sizeof(char));◦ n = read(fd, &vect, 16);
Que hace el SO:◦ Lee los bytes correspondientes◦ Avanza el puntero (*r/w) de la TFA
![Page 24: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/24.jpg)
Llamadas a sistema: write Escribe datos en un dispositivo virtual int write(int fd, void *buffer, int nbytes)
◦ fd: posición de la TC◦ buffer: datos a escribir◦ nbytes: numero de bytes que queremos escribir
◦ Devuelve: -1: en caso de error >0: #bytes escritos
Ejemplos◦ n = write(fd, &c, sizeof(char));
![Page 25: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/25.jpg)
Llamadas a sistema: lseek Modifica *r/w (puntero de lectura/escritura) int lseek(int fd, long offset, int whence)
◦ fd: posición de la TC◦ offset: desplazamiento en bytes de *r/w◦ whence: punto inicial del *r/w
SEEK_SET: inicio fichero SEEK_CUR: posición actual SEEK_END: final fichero
◦ Devuelve: -1: en caso de error ≥0: nueva posición de *r/w (desde el inicio)
![Page 26: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/26.jpg)
Sistema de FicherosEjercicios solucionados
![Page 27: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/27.jpg)
Ejercicio: MiCatint main(void){char c;while (read(0,&c,sizeof(char)) > 0 ){ write(1,&c,sizeof(char)); }
}
int main(void){ char buffer[64];int size;size=read(0,buffer,sizeof(buffer)); while (size > 0 ){ write(1,buffer,size);size=read(0,buffer,sizeof(buffer)); }
}
![Page 28: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/28.jpg)
Ejercicio: MiCPint main(int argc, char **argv){int fo,fd,size;char buffer[128];
fo=open(argv[1],O_RDONLY); fd=open(argv[2],O_WRONLY|O_CREAT|O_EXCL,0600);
size=read(fo,buffer,sizeof(buffer)); while (size > 0 )
{ write(fd,buffer,size);size=read(fo,buffer,sizeof(buffer)); }
close(fo); close(fd);}
![Page 29: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/29.jpg)
Ejercicio: MiAppendint main(int argc, char **argv){int fo,fd,size;char buffer[128];
fo=open(argv[1],O_RDONLY); fd=open(argv[2],O_WRONLY|O_CREAT,0600);lseek(fd,0,SEEK_END);
size=read(fo,buffer,sizeof(buffer)); while (size > 0 )
{ write(fd,buffer,size);size=read(fo,buffer,sizeof(buffer)); }
close(fo); close(fd);}
![Page 30: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/30.jpg)
Ejercicio: MiSearchint main(int argc, char** argv){char c;int fo,i,j=0,fin,size,x,actual;fo=open(argv[1],O_RDONLY);fin=lseek(fo,0,SEEK_END); lseek(fo,0,SEEK_SET);size=strlen(argv[2]);for(i=0;i<fin;i++) { read(fo,&c,sizeof(char)); if(c==argv[2][0]) {x=1; j=0; actual=lseek(fo,0,SEEK_CUR); while(c==argv[2][j] && j<size && x>0) { x=read(fo,&c,sizeof(char)); j++;} if(j==size) printf("%d\n",actual-1); lseek(fo,actual,SEEK_SET);} } }
![Page 31: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/31.jpg)
Ejercicio: Stocktypedef struct {char id[20]; int cantidad; } registro;int main(){int fic;registro r1,r2,r3;r1.cantidad=10; sprintf(r1.id,"Panrico");r2.cantidad=20; sprintf(r2.id,"Bimbo");fic=open("stock.db",O_RDWR|O_CREAT,0600);write(fic,&r1,sizeof(registro));write(fic,&r2,sizeof(registro));lseek(fic,0,SEEK_SET);read(fic,&r3,sizeof(registro));printf("%s, %d\n",r3.id,r3.cantidad);close(fic);}
![Page 32: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/32.jpg)
Sistema de FicherosEjemplos de File System
![Page 33: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/33.jpg)
CD-ROM File System (iso 9660)
Asignación de ficheros “contigua”◦ Todos los bloques del archivo están contiguos◦ Se necesita una única entrada por archivo:
Bloque inicial Longitud del archivo
◦ Ventajas: Acceso eficiente al disco Localización del bloque n sencilla
◦ Desventajas: Asignación previa, no flexible
Archivo
![Page 34: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/34.jpg)
CD-ROM File System (iso 9660)
Directory entry
Location of file: #sector inicio fichero
Location of file File Size Date and Time CD # L File Name Sys
1 1 8 8 7 1 2 4 1 4-15
Directory entry length
Extended attribute record lenghtFlags
Interleave
BaseName.Ext;Ver
Directory entry
Directory entry
Directory entry
Directory entry
Root Directory
![Page 35: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/35.jpg)
File Allocation Table (FAT) Asignación de ficheros “encadenada” Cada bloque de datos reserva espacio para un puntero que
indica cual es el siguiente bloque del archivo
Se necesita una única entrada por archivo: Bloque inicial
◦ Ventajas: Asignación previa o dinámica
◦ Desventajas: Para acceder al bloque n, hay que acceder a todos los anteriores
Archivo
![Page 36: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/36.jpg)
File Allocation Table (FAT) Asignación “encadenada” en tabla Los punteros a bloques se guardan juntos en una tabla, no
en los propios bloques
Se necesita una única entrada por archivo: Bloque inicial
◦ Ventajas sobre la anterior: Para acceder al bloque n, hay que acceder a la tabla Se puede replicar la tabla
Archivo
![Page 37: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/37.jpg)
File Allocation Table (FAT) Directory entry
FAT-12, FAT-16, FAT-32◦ 12, 16 y 32: #bits @disco
File name Ext. Atr Reserved Time Date 1st Bl Size 8 3 1 2 2 2 410
Block Size
FAT-12 FAT-16 FAT -32
0,5 KB 2 Mb
1 KB 4 Mb
2 KB 8 Mb 128 Mb
4 KB 16 Mb 256 Mb 1 Tb
8 KB 521 Mb 2 Tb
16 KB 1 Gb 2 Tb
32 KB 2 Gb 2 Tb
![Page 38: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/38.jpg)
UNIX v7 File System Asignación “indexada” Existe un bloque índice por fichero
El bloque índice contiene: Punteros a bloques que forman el fichero Acaba con un puntero a NULL
◦ Ventajas: Buen acceso secuencial y directo
◦ Desventajas: Perdida de espacio
(bloques de índices grandes) Muchos accesos en ficheros
grandes (bloques de índices pequeños)
i
Archivo
![Page 39: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/39.jpg)
UNIX v7 File System Asignación “indexada” multinivel
◦ Existe un bloque índice por fichero
El bloque índice contiene: Punteros a bloques que forman el fichero Punteros a bloques con más índices Acaba con un puntero a NULL
Se crea una estructura jerárquica de índices
◦ Ventajas: Muy pocos accesos incluso en ficheros grandes Poca perdida de espacio en ficheros pequeños
![Page 40: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/40.jpg)
UNIX v7 File SystemBloque Datos
Bloque Datos
Bloque Datos
Bloque Datos
Bloque Datos
Bloque Datos
Bloque Datos
Bloque Datos
Bloque 1 indirección
i-node
Bloque 2 indirección
Bloque 3 indirección
Bloque 168Bloque 174Bloque 185Bloque 448Bloque 251
![Page 41: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/41.jpg)
UNIX v7 File System Directory entry
i-Nodo64 bytes
# i-node File name2 14
Campo
Bytes
Descripcion
Mode 2 File Type, protection bits
Nlinks 2 # directory entries que apuntan a este i-nodo
Uid 2 Id del usuario al que pertenece el fichero
Gid 2 Id del grupo al que pertenece el fichero
Size 4 Tamaño en bytes del fichero
Addr 39 Direcciones de 13 bloques (10 datos, 3 de indirecciones)
Gen 1 Numero de generación (incrementa con la reutilización)
Atime 4 Fecha de ultimo acceso
Mtime 4 Fecha de ultima modificación
Ctime 4 Fecha del último cambio del i-nodo
![Page 42: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/42.jpg)
UNIX v7 File System
inodeFilena
me
1 .
1 ..
4 bin
7 dev
14 lib
9 etc
6 usr
8 tmp
inodeFilena
me
6 .
1 ..
19 rubenb
30 victorr
51 xavim
26 tonis
inodeFilena
me
19 .
6 ..
91 ariso2
96 fich.txt
99 notas
ModoTamañoTimes
UsuarioGrupo
132
ModoTamañoTimes
UsuarioGrupo
406
Root directoryi-nodo 6 de /usr
Bloque 132 datos de/usr
i-nodo 19 de /usr/rubenb
Bloque 406 datos de
/usr/rubenb
Accesos para buscar /usr/rubenb/fich.txt
![Page 43: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/43.jpg)
Sistema de FicherosVirtual File System
![Page 44: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/44.jpg)
Estructura
Llamadas a sistema (open, read, …)
Virutal File System (VFS)
EXT2 EXT3 NTFS FAT32
I/O Buffer Cache
DeviceDriver
DeviceDriver
DeviceDriver
![Page 45: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/45.jpg)
Virtual File System Los sistemas operativos soportan diferentes
sistemas de ficheros Linux: Ext2, Ext3, FAT, ISO9660, XFS, RaiserFS,
NTFS…
Estructura en dos niveles:◦ Estructuras independientes del SF (VFS)◦ Estructuras dependientes del SF (Ext2, Ext3…)
![Page 46: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/46.jpg)
Virtual File System VFS
◦ Contiene descripciones de los sistemas soportados file_operations, inode_operations, superblock_operations
◦ virtual i-nodes y virtual files◦ Las llamadas de sistema interaccionan con estas
estructuras independientes vfs_create, vfs_unlink, ...
Estructuras dependientes del SF◦ accedidas a través de las operaciones descritas en el VFS◦ i-nodes, FAT, ...
![Page 47: Sistema de Ficheros](https://reader035.vdocumento.com/reader035/viewer/2022062810/56815b2f550346895dc8fa2b/html5/thumbnails/47.jpg)
Virtual File System
struct files_stru
ct
struct file
f_count f_pos, f_mode,
2struct
files_struct
struct dentry
d_count d_iname
1
2
struct inode
d_count d_iname
1
1Tabla de canales
Tabla de ficheros abiertos Tabla de i-nodos virtuales
Tabla de canales
Accesocompartido
Accesoconcurrent
e