La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistema de Ficheros Estructura Física Realizado por Kepa Bengoetxea.

Presentaciones similares


Presentación del tema: "Sistema de Ficheros Estructura Física Realizado por Kepa Bengoetxea."— Transcripción de la presentación:

1 Sistema de Ficheros Estructura Física Realizado por Kepa Bengoetxea

2 Referencias UNIX.Programación Avanzada. Ed:Rama Autor:Fco. Manuel Márquez García

3 Sistema de Ficheros:Tipos de Ficheros en Unix Como es evidente todos los ficheros no son iguales y además no tienen el mismo peso específico. Por este motivo vamos a realizar una distinción. Los tipos de archivos que podemos tener en UNIX/Linux son: – Ficheros ordinarios – Directorios – Ficheros especiales – Fifo

4 Sistema de Ficheros:Tipos de Ficheros en Unix->Ordinarios Los ficheros ordinarios contienen bytes de datos organizados como un array lineal. Las operaciones que se pueden realizar son: – Leer o escribir cualquier byte del fichero – Añadir bytes al final del fichero – Truncar el tamaño de un fichero a 0 bytes Dos o más procesos pueden acceder concurrentemente a un mismo fichero.

5 Sistema de Ficheros:Tipos de Ficheros en Unix->Directorios Los directorios son los ficheros que nos permiten dar una estructura jerárquica a los sistemas de ficheros de UNIX. Su función fundamental consiste en establecer la relación que existe entre el nombre de un fichero y su i-nodo correspondiente. Por tanto un directorio será un fichero que está constituido por una secuencia de entradas donde en cada entrada está formada por el i-nodo y el nombre de fichero. Pueden existir varios nombres de ficheros que hacen referencia al mismo fichero.

6 Sistema de Ficheros:Tipos de Ficheros en Unix->Directorios La estructura típica de un directorio: i-nodonombre del fichero 45. 2.. 2395inittab 371mount. tiene asociado el inodo del directorio actual.. tiene asociado el inodo del directorio padre el kernel maneja los directorios como como si fuesen ficheros ordinarios, usando la estructura inode y los bloques de acceso directos e indirectos.

7 Sistema de Ficheros:Tipos de Ficheros en Unix->Directorios un proceso puede leer el contenido de un directorio, pero sólo el kernel es capaz de modificarlo. Puede haber multiples enlaces a un directorio Los permisos de acceso a un directorio tiene los siguientes significados: – permiso de lectura: permite que un proceso pueda leer el contenido de ese fichero.  Ejm: bash:ls -lias llamadas api de c(libc):open,read,lseek,close..(se accede igual que alos ficheros ordinarios), ó también se puede usar:opendir, readdir, closedir, seekdir

8 Sistema de Ficheros:Tipos de Ficheros->Directorios – Permiso de escritura: permite a un proceso crear una nueva entrada en el directorio o borrar una existente. A través de las llamadas a sistema. bash: mkdir, touch,... llamadas a sistema:creat(crea un fichero o dispositivo),mknod(crea ficheros especiales de bloques o caracteres)... – Permiso de ejecución: Autoriza a un proceso para buscar un fichero o acceder a directorio. bash: cd,find

9 Sistema de Ficheros:Tipos de Ficheros->Directorios La conversión de pathname a inodo la realiza el kernel llamando a “namei” y recorriendo los diferentes directorios. Se aplica por ejemplo cuando: int open(const char *camino, int flags);

10 Sistema de Ficheros:Tipos de Ficheros->Especiales Especiales. o ficheros de dispositivo van a permitir comunicarse a los procesos con los dispositivos periféricos(discos,cintas,impresoras,terminales...).Dos tipos de dispositivos: – Modo caracter:dispositivo contiene un array de caracteres.Ejm:Impresora,teclado... – Modo bloque: dispositivo contiene un array de bloques de tamaño fijo(multiplo de 512 bytes) y el kernel gestiona la transferencia con los dispositivos a través de un buffer caché que acelera la transferencia de datos. Ejm: disco duro, cintas, cdroms...

11 Sistema de Ficheros:Tipos de Ficheros->Especiales

12 Sistema de Ficheros:Tipos de Ficheros->Especiales(No)‏ Los módulos del kernel que gestionan la comunicación con los dispositivos se conocen como drivers de dispositivo. Lo normal es que cada dispositivo tenga su propio driver Existen dispositivos software, se utiliza para acceder como si fuera un fichero. Ejm: /dev/mem ficheros especiales (dispositivo) tienen asociado un inodo que contiene 2 números, en vez del bloque datos: – major number: indica el tipo de dispositivo (disco,cinta...)‏ – minor number: indica el número de unidad dentro del dispositivo.

13 Sistema de Ficheros:Tipos de Ficheros->Especiales(No)‏ Estos números los utiliza el kernel para buscar dentro de las tablas (block device switch table y character device switch table) la colección de rutinas que permiten manejar el dispositivo. Esta colección de rutinas constituyen realmente el driver del dispositivo. Cuando se invoca a una llamada al sistema para realizar una operación de E/S sobre un fichero especial, el kernel se encarga de llamar al driver del dispositivo adecuado. Lo que ocurra acontinuación solo ataña a los diseñadores de drivers.

14 Sistema de Ficheros:Tipos de Ficheros->FIFO o tuberias o pipe Los datos de una tubería son transitorios, cuando un dato es leido desaparece. Se utiliza para comunicar dos procesos. Un proceso abre el fifo para escribir y otro para leer. El sistema de almacenamiento es parecido al de ficheros ordinarios excepto en que sólo se utilizan las 10 entradas directas del inodo. Ejm: Si tamaño de bloque es 1kbyte solo se podrían almacenar 10 kbytes. Las funciones que usamos para trabajar con fifo son iguales que las de ficheros ordinarios. Ejm: open,close,read,write...

15 Sistema de Ficheros:Tipos de Ficheros->FIFO o tuberias o pipe Existen 2 tipos de tuberías: – Con nombre – Sin nombre Sin nombre: – Ejm de bash: $ls | sort -r – creadas a través de la llamada “pipe” desde un proceso Con nombre: – creadas a través de la llamada “mknod” desde bash o desde una aplicación.

16 Tablas de control de acceso a los ficheros Para manipular ficheros el kernel guarda en memoria las siguientes tablas:  Tabla de Inodos(TI)‏  Tabla de Ficheros(TF)‏  Tabla de Descriptores de Ficheros(TDF) ó Tabla de Canales

17 Tablas de control de acceso a los ficheros...stderrstdout stdin... minor major... TDF del proceso A TI TF TDF del proceso B Nivel de Usuario Nivel del kernel 0 1 19

18 Tablas de control de acceso a los ficheros:TF Es una estructura global del kernel Contiene una entrada por cada fichero distinto que tiene abierto cada uno de los procesos que se está ejecutando, es decir, distinto para cada proceso. Cada entrada contiene un bloque de datos y un array de punteros a funciones que traducen todas las operaciones genéricas (leer,escribir...) en acciones concretas asociadas a cada tipo de fichero. Bloque de datos contiene los siguientes campos:inodo asociado en la TI, permisos de acceso para el proceso que ha abierto el fichero,offset para saber sobre que byte se va a realizar la operación lectura o escritura,flags de modo de apertura (readonly, writeonly,...)para no permitir escrituras si se ha abierto con el flag readonly etc...

19 Tablas de control de acceso a los ficheros:TDF Es una estructura local a cada proceso Contiene una entrada por cada fichero abierto por un proceso Cada entrada del array(TDF) consta de = índice o descriptor de fichero + contenido un puntero a una entrada de la tabla de ficheros Este índice se lo da el kernel cuando el proceso usuario realiza una de las siguientes llamadas a sistema: open,creat,dup o link. TDF de un proceso tiene un límite de ficheros abiertos en un instante (ronda sobre 20,índice de 0 a 19)‏

20 Tablas de control de acceso a los ficheros:TDF Cuando se arranca un proceso en UNIX, el sistema abre para él, por defecto, tres ficheros que van a ocupar las tres primeras entradas de la tabla de descriptores que son:  fichero estándar de entrada (teclado) cuyo índice o descriptor asociado es 0  fichero estándar de salida (pantalla) cuyo índice o descriptor asociado es 1  fichero estándar de errores (pantalla) cuyo índice o descriptor asociado es 2 Puede cambiarse estos ficheros asociados por defecto usando mecanismos de redireccionamiento o tuberías: “ ” o “|”. Ejm: ls > nom_fich

21 Tablas de control de acceso a los ficheros:TDF Cuando el proceso A de usuario quiere realizar una operación de lectura de teclado:  invoca una llamada a sistema(trap) de E/S, y el kernel le devuelve un descriptor, para futuras op-s(write,read...). Ejm:fd=open(“”,r). Excepto en aquellas operaciones que trabajamos con ficheros estándar (teclado ó pantalla) que se asocian al crearse el proceso.  kernel usa el índice para ir a TDF del proceso A y coger el puntero que apunta a la TF.  kernel accede TF con el puntero y obtiene el inodo, permisos, offset...  kernel accede a TI y obtiene el minor y major number. Ejm:Para acceder al driver de /dev/input/keyboard

22 Tablas de control de acceso a los ficheros:TDF Cuando el proceso A de usuario quiere realizar una operación de lectura de teclado:  módulo del driver que se comunica con el hardware(teclado)‏

23 Herramientas Crear un sistema de ficheros: fdisk,parted,mkfs Arreglar el estado de un sistema de ficheros: fsck Montar un sistema de ficheros:mount Ver el estado de los Sistemas:  du(disk used by files and folder)‏  df(disk free of mounted file system)‏


Descargar ppt "Sistema de Ficheros Estructura Física Realizado por Kepa Bengoetxea."

Presentaciones similares


Anuncios Google