4
En un sistema de ficheros UNIX con un tamaño de inodo de 128 bytes, un tamaño de bloque de 1024 bytes, y donde la zona de inodos ocupa 2048 bloques ¿Cuántos bloques ocupa el mapa de bits de inodos libres? En primer lugar calculamos cuantos inodos caben en un bloque 1024 (bytes por bloque) / 128 (bytes por inodo) = 8 inodos por bloque El número total de inodos será por tanto: 2048 x 8 = 2^11 * 2^3 = 2^14 inodos Por cada inodo tenemos un bit en el m apa de bits de inodos, luego el tamaño del mapa de bits será: 2^14 bits / 2^3 bits/porbyte = 2^11 = 2^11 bytes/ 2^10 bytes por bloque = 2 blo ques El espacio libre del disco se puede gestionar mediante una lista de bloques libres o mediante un mapa de bits. Suponiendo que las direcciones del disco requieren d bits, y que el disco tiene b bloques, de los cuales l están libres, indicar en qué condiciones la lista de bloques libres utiliza menos espacio que el mapa de bits . El mapa de bits corresponde a un a lista de bits en el que cada un indica si un bloque está ocupado o libre. Por lo tanto, su tamaño s erá igual a tantos bits como nume ro de bloques exista e independiente del numero de bloques libres, es decir b bits.. La lista de bloques libres es una li sta enlazada de bloques en el cada uno contiene tantas direcciones de bloques libres como pueda. Si no consideramos los punteros de enlace entre bloques de la lista, el tamaño que ocupa la lista de bloques libres será lo que ocupa cada dirección por el num ero de bloques libres, es decir, d x l bits.. la condición para que la lista de bloques libres ocupe menos espacio que el mapa de bits es: d x l < b En un sistema de ficheros con tamaño de bloque de N bytes (N > 2^10) y direcciones de bloque de 4 bytes se crean dos ficheros. El fichero A necesita N/2 bytes, y el fichero B 3N/2 bytes. Indicar el numero de bloque de datos y de índice ocupados por cada fichero y la fragmentación interna (en bytes) que se produce para los siguientes métodos de asignación, ind icando por separado la fragmentación en bloque de datos y en bloques índice: Asignaciones: enlazada, indexada, con índices multinivel (2 niveles), con índices combinados (k=1), utilizada en el sistema de ficheros de UNIX (índices combinados con k=10) Método Bloque de Datos Bloques Índice Frag. Int. Datos Frag. Int. Indices Fichero A B A B A B A B Enlazada 1 2 0 0 N/2 N/2 - 4 0 0 Indexada 1 2 1 1 N/2 N/2 N - 4 N 2 x 4 Multinivel 1 2 2 2 N/2 N/2 2 x (N 4) (N 4) + (N 2 x Ind. Combina 1 2 0 1 N/2 N/2 0 N - 4 UNIX 1 2 0 0 N/2 N/2 0 0 Calcular el tamaño máximo que puede tener un fichero en Unix considerando un tamaño de bloque de 512 bytes. Nota: las direcciones de bloque son de 4 bytes.  Para resolver esta cuestión es necesario: conocer la estructura de inodo en Unix Calcular el número de bloques que pueden direc cionarse desde un bloque índice. Como e l tamaño de bloque es 512 bytes y las direcciones son de 4 bytes, obtenemos 512/4 = 128 d ireccion es por bloque El número total de bloques será: 10 + 128 + 128^2 + 128^3 (= bloques máximos que puede tener un fichero). El tamaño máximo se obtiene multipli cando el numero de bloques por e l tamaño de cada bloque (512 bytes), lo cual nos da un tamaño ligeramente superior a 1 GB. Lo anterior del punto dos lo que de x 512 bytes = más o menos 1 GB

ejerciciosTEMA6ssoo

Embed Size (px)

Citation preview

Page 1: ejerciciosTEMA6ssoo

5/6/2018 ejerciciosTEMA6ssoo - slidepdf.com

http://slidepdf.com/reader/full/ejerciciostema6ssoo 1/4

 

En un sistema de ficheros UNIX con un tamaño de inodo de 128 bytes, un tamaño de bloque de 1024

bytes, y donde la zona de inodos ocupa 2048 bloques ¿Cuántos bloques ocupa el mapa de bits de

inodos libres?

1º En primer lugar calculamos cuantos inodos caben en un bloque 1024 (bytes por bloque) / 128 (bytes

por inodo) = 8 inodos por bloque 2º El número total de inodos será por tanto: 2048 x 8 = 2^11 * 2^3 =

2^14 inodos 3º Por cada inodo tenemos un bit en el m apa de bits de inodos, luego el tamaño del mapa

de bits será: 2^14 bits / 2^3 bits/porbyte = 2^11 = 2^11 bytes/ 2^10 bytes por bloque = 2 bloques

El espacio libre del disco se puede gestionar mediante una lista de bloques libres o mediante un mapa

de bits. Suponiendo que las direcciones del disco requieren d bits, y que el disco tiene b bloques, de

los cuales l están libres, indicar en qué condiciones la lista de bloques libres utiliza menos espacio que

el mapa de bits .

El mapa de bits corresponde a un a lista de bits en el que cada un indica si un bloque está ocupado o

libre. Por lo tanto, su tamaño será igual a tantos bits como numero de bloques exista e independiente

del numero de bloques libres, es decir b bits.. La lista de bloques libres es una li sta enlazada de

bloques en el cada uno contiene tantas direcciones de bloques libres como pueda. Si no consideramos

los punteros de enlace entre bloques de la lista, el tamaño que ocupa la lista de bloques libres será loque ocupa cada dirección por el num ero de bloques libres, es decir, d x l bits.. la condición para que la

lista de bloques libres ocupe menos espacio que el mapa de bits es: d x l < b

En un sistema de ficheros con tamaño de bloque de N bytes (N > 2^10) y direcciones de bloque de 4

bytes se crean dos ficheros. El fichero A necesita N/2 bytes, y el fichero B 3N/2 bytes. Indicar el

numero de bloque de datos y de índice ocupados por cada fichero y la fragmentación interna (en

bytes) que se produce para los siguientes métodos de asignación, ind icando por separado la

fragmentación en bloque de datos y en bloques índice: Asignaciones: enlazada, indexada, con índices

multinivel (2 niveles), con índices combinados (k=1), utilizada en el sistema de ficheros de UNIX

(índices combinados con k=10)

Método Bloque deDatos

BloquesÍndice

Frag. Int. Datos Frag. Int. Indices

Fichero A B A B A B A B

Enlazada 1 2 0 0 N/2 N/2 - 4 0 0

Indexada 1 2 1 1 N/2 N/2 N - 4 N 2 x 4

Multinivel 1 2 2 2 N/2 N/2 2 x (N 4) (N 4) + (N 2 x

Ind. Combina 1 2 0 1 N/2 N/2 0 N - 4

UNIX 1 2 0 0 N/2 N/2 0 0

Calcular el tamaño máximo que puede tener un fichero en Unix considerando un tamaño de bloque

de 512 bytes. Nota: las direcciones de bloque son de 4 bytes.

1º Para resolver esta cuestión es necesario: conocer la estructura de inodo en Unix Calcular el

número de bloques que pueden direccionarse desde un bloque índice. Como el tamaño de bloque es

512 bytes y las direcciones son de 4 bytes, obtenemos 512/4 = 128 d irecciones por bloque 2º El

número total de bloques será: 10 + 128 + 128^2 + 128^3 (= bloques máximos que puede tener un

fichero). 3º El tamaño máximo se obtiene multiplicando el numero de bloques por el tamaño de

cada bloque (512 bytes), lo cual nos da un tamaño ligeramente superior a 1 GB. Lo anterior del punto

dos lo que de x 512 bytes = más o menos 1 GB

Page 2: ejerciciosTEMA6ssoo

5/6/2018 ejerciciosTEMA6ssoo - slidepdf.com

http://slidepdf.com/reader/full/ejerciciostema6ssoo 2/4

 

Consideremos un disco con un tamaño de N Gbytes. Responder razonadamente a las siguientes

cuestiones:

a) Si sobre un disco tenemos un sistema de fic heros de MS-DOS (FAT) indicar cuál es el tamaño de

bloque mínimo necesario para poder direccionar todos los bloques del disco 1 GB = 2^30 bytes. El

sistema de ficheros de MS-DOS (FAT) utiliza direcciones por bloque de 16 bits. Esto permite

direccionar 2^16 bloques. El tamaño de bloque mínimo es: Tamaño de disco / num. De bloques =

N x 2^30 / 2^16 = N x 2^14 bytes.

b) Si tenemos un sistema de ficheros FAT32 y el tamaño de bloque es 1 Kbyte, indicar cuál es elmáximo valor que puede tomar N.

FAT32 permite direccionar 2^32 bloques. El tamaño máximo de disco que podemos direccionar con

bloques de 1Kbyte (2^10) es: 2^32 x 2^10 = 2^42 bytes = 2^12 x 2^30 bytes = 2^12 Gbytes. Por tanto

el valor de N es 2^12.

c) Si montamos un sistema de ficheros UNIX, el ta maño de bloque es b, y la longitud de una

dirección de bloque es de 4 bytes, indicar cuál es el tamaño máximo que podemos darle a un solo

fichero Dado un tamaño de bloque b bytes y direcciones de bloques de 4 bytes, en cada bloque se pueden

direccionar p = b/4 bloques.. Atendiendo a la estructura del inodo de Unix, el tamaño máximo de un fichero

será: (10 + p + p^2 + p^3) x b bytes, es decir, numero de bloques de datos multiplicado por el tamaño de unbloque.

d) Suponiendo la situación de la cuestión anter ior c, indicar cuantos bloques del disco estarían ocupados

por este fichero si se consideran también los bloques de índice utilizados .

Debemos considerar los bloques ocupados por datos (los del apartado anterior) más los bloques ocupados por

los índices. --) el primer nivel de indexación utiliza 1 bloque índice. --) el segundo nivel utiliza 1 + p índices

--) el tercer nivel utiliza 1 + p + p^2 índices. La solución es (10 + p + p^2 + p^3) + (1) + (1 + p) + (1 + p + p^2)

bloques.

En el SO UNIX se conoce el nombre simbólico de un fichero de un fichero. A partir de esta información,

contestad a las siguientes cuestiones. a) ¿Cómo se obtiene el numero de inodo asociarlo al nombre defichero? Un fichero de tipo directorio consiste en una tabla que asoc ia a cada nombre simbólico de fichero su

número de inodo. Dado un nombre de fichero es necesario recorrer dicha tabla -, en caso de que exista una

entrada con ese nombre de fichero obtendremos el número de inodo l eyendo el campo asociado

correspondiente. Hay que tener en cuenta que el numero de inodo puede ser cero, lo que indica que el

nombre de fichero ha sido previamente borrado b) ¿Cómo conoce el SO que permisos tiene concedidos un

usuario en particular sobre este fichero? Una vez conocido el número de inodo es necesario consultar en

estos dos tipos de informaciones. En primer lugar debemos clasificar al usuario que intenta acceder al fichero

en uno de los tres grupos siguientes: propietario, grupo o resto de u suarios. Esto se hace comparando el

usuario que accede con los campos relativos a UID y GUID propietarios del fichero, información que aparece

en el inodo. En segundo lugar deberemos consultar el tipo de permisos concedidos a esa clase de usuario

(lectura, escritura y o ejecución). Información que también aparece en el inodo. c) ¿en qué condiciones

podemos eliminar definitivamente el contenido de este fichero (liberar los bloques que ocupa) cuando

solicitemos borrado desde el Shell? La orden Shell para borrar un fichero (un nombre de fichero realmente)

utiliza la llamada al sistema unlink. Esta llamada consiste en marcar como borrado dicho nombre de fichero en

la entrada del directorio correspondiente (es decir, poner su número de inodo asociado a 0) y decr ementar el

contador de enlaces (no simbólicos) que aparece en el inodo. Cuando este contador llega 0 podemos liberar

todos los bloques de datos asociados al fichero. d) ¿Cómo varia la información del inodo si creamos un

nuevo enlace simbólico al fichero? No varía. Un enlace simbólico supone la creación de un nuevo fichero, que

por tanto tiene asignado un nuevo inodo, cuyo contenido es el nombre del fichero al cual lo hemos enlazado.

Page 3: ejerciciosTEMA6ssoo

5/6/2018 ejerciciosTEMA6ssoo - slidepdf.com

http://slidepdf.com/reader/full/ejerciciostema6ssoo 3/4

 

8 a) Supongamos un sistema de ficheros que implementa una FAT con direccion es de bloque de 24

bits y un tamaño de bloque de 1 Kbyte, ¿Cual es el tamaño máximo en Gbytes que podría tener

dicho sistema de ficheros? El tamaño máximo del sistema de ficheros será: Tam_max = 2^24

(numero bloques) x 2^10 (tamaño bloque) = 2^34 bytes = 2^4 Gbytes = 16 Gbytes b) dada una

partición de 2 Gbytes y un sistema de ficheros FAT con direcciones de bloque de d bits y tamaño de

bloque de 4 KBytes, ¿cuál debería ser el valor mínimo de d para que el sistema de ficheros pueda

abarcar toda la partición? Debemos hallar el menor valor de d que cumple la expresión, 2^d (num

bloques) x 4 x 2^10 (tam bloque) >= 2 x 2 ^30 (tam partición). 2^d x 2^2 x 2^10 >= 2 x 2^30.2^d+2+10 >= 2^31. Operando con los exponentes tenemos d + 2 + 10 >= 31 d >= 19.. la

solución es d = 19. c) en un sistema de ficheros Unix con tamaño de bloque b bytes y direcciones

de bloque 4 bytes, indicar cuál es el tamaño máximo de un solo fichero. el numero de punteros que

cabe en un bloque es p = b/4. El numero de bloques que podemos asociar a un fichero es: 10 + p +

p^2 + p^3 y el tamaño total del fichero será (10 + p + p^2 + p^3) x b d) relacionado con el

apartado anterior, si duplicamos el tamaño de bloque (ahora es de 2 x b bytes) y si TAMviejo es el

tamaño máximo de un fichero en el apartado anterior y TAMnuevo es el tamaño máximo de un

fichero en este apartado, indicar cuál es el valor N que cumple TAMnuevo = N + TAMviejo Al

duplicar el tamaño de bloque, el número de punteros que caben en un bloque también se duplica ypasara a ser 2p. Por lo tanto: TAMviejo = (10 + p + p^2 + p^3) x b, TAMnuevo = (10 + 2p + (2p)^2 +

(2p)^3) x 2b . Restando ambas expresiones obtenemos: N = (20 10)b + p(4 1)b

+ p^2(8 1) + p^3(16 1)b. = 10b + 3pb + 7p^2b + 15p^3b = (10 + 3p + 7p^2 + 15p^3) x b

Se dispone de un disco de 2 MBytes de capacidad sin formatear (lo que suman todos los bloques).

Se pretende realizar sobre el un formateo para que adopte el sistema de ficheros descrito a

continuación: Sector de arranque | Superbloque | Mapa de bits | Bloques de i -nodos | Bloques de

datos . Tamaño de bloque: 512 bytes Tamaño de puntero a bloque: 2 bytes Datos de control

del sistema de ficheros: Sector de arranque: 1 bloque Superbloque: 1 bloque Map a de bits: Un

mapa de bits de bloques libres y otro de bloques ocupados.. Hay 500 i -nodos y los campos de

cada uno de ellos son: UID y permisos: 10 bytes Tamaño del fichero: 4 bytes Fecha ultima

actualización: 4 bytes. 4 entradas de referencia directa a bloques del fichero.. 2 entradas de

referencia indirecta simple 1 entrada de referencia indirecta doble a) calcular el tamaño

máximo efectivo del disco, una vez formateado que puede ser usado para datos de usuario..

Tamaño de un disco (2 megabytes = 2 x 1024 x 1024) divido entre el tamaño del bloque 512 butes nos

dice el numero de bloques que tenemos y que en este caso es de 4 K bloques. --) los bloques usados

por el sistema de ficheros son: . Sector de arranque: 1 bloque. Superbloque: 1 bloque. Mapa de

bits: 4 Kbits (tantos como bloques) divido entre 8 bits/byte son 512 bytes. Como el tamaño del bloquees también de 512 bytes, cada mapa de bits necesita un bloque. Hay dos mapas de bits, entonces

necesitamos 2 bloques Bloques de i-nodos: tamaño de bloque (512 bytes) dividido entre el tamaño

del i-nodo (32 bytes), da como resultado que en cada bloque podemos almacenar 16 i -nodos. Si

tenemos que almacenar un total de 500 i -nodos necesitaremos 500/16 bloques, esto es bloques

mas.. Luego el sistema emplea 36 bloques quedando libres para el usuario 4 x 1024 36 = 4060

bloques b) número máximo de directorios que pueden ser almacenados en este disco si todo el

disco son ficheros de tipo directorio, tantos como i -nodos: 500

Page 4: ejerciciosTEMA6ssoo

5/6/2018 ejerciciosTEMA6ssoo - slidepdf.com

http://slidepdf.com/reader/full/ejerciciostema6ssoo 4/4

 

Sea un dispositivo de almacenamiento de capacidad indeterminada, dividido en bloques de 2

Kbytes, siendo la dirección de cada bloque de 64 bits. Cada fichero almacenado en el dispositivo

tiene asociado un descriptor con la información siguiente: Tipo de fi chero (fichero o directorio) 1

byte. Propietario 3 bytes tamaño en bytes 4 bytes 1 puntero directo que apunta a bloques de

datos 1 puntero indirecto simple que apunta a un bloque de punteros directos 1 puntero

indirecto doble que apunta a un bloque de punteros indirectos simples El dispositivo de

almacenamiento presenta la siguiente estructura física: 1 bloque de arranque . N bloques con el

mapa de bits de todos los bloques del dispositivo 1 bloque con el mapa de bits de los descriptoresde los ficheros P bloques de descriptores. Q bloques ocupados por los ficheros

el tamaño del fichero va a venir determinado por los siguientes parámetros.

1º el campo del tamaño de fichero que aparece en el descriptor del fichero. Su tamaño es de 4 bytes,

por lo que el máximo tamaño de un fichero será de 2^32/2^11 = 2^21 bloques ya que el tamaño de

bloque es de 2 Kbytes (= 2^11 bytes)

2º El número de bloques a los que se puede tener acceso a través del descriptor de fichero. Se utilizan

direcciones de 64 bits (8 Bytes) para cada bloque y además el tamaño de bloque es de 2 Kbytes (2^11

bytes). Cada bloque índice permite almacenar 2^11 / 2^3 = 2^8 = 256 direcciones. El número máximo

de bloques direccionables será: 1 (puntero directo) + 256 (índice indirecto simple) + 256^2 (índiceindirecto doble) = 65793 bloques

3º el tamaño de puntero. Como máximo se podrán direccionar 2^64 bloques.

4º el número de bloques reservado para los ficheros. El número máximo de bloques que puede tener

este disco coincide con el tamaño máximo (en bits) del mapa de bits de todos los bloques del

dispositivo que es: T = N (bloques del mapa de bits) x 2^11 (tamaño de bloque en bytes) x 8

(bits/byte) bloques.. Si T es el máximo del disco (en bloques), los reservados para almacenar

ficheros son: Q = T 1 N 1 P La restricción sobre el tamaño máximo de un fichero vendrá

dada por el menor tamaño obtenido de entre los cuatro casos anteriores.