Soluciones del ex. de junio, curso 1996/97 (2ª parte)


Soluciones del examen de junio, curso 1996/97
Segunda parte

Pregunta 1. Cuestiones breves

Semántica de consistencia del UNIX

* Las escrituras que efectúa un proceso en un archivo son visibles de inmediato a los procesos que tengan abierto el archivo al mismo tiempo.

* El apuntador a fichero, que todo descriptor de fichero activo tiene asociado, no es compartido entre los descriptores asociados al mismo fichero.

Compactación de espacio en disco en MS-DOS

De esta manera se reducen los tiempo de acceso a los datos almacenados en el disco: como resultado de la compactación, los datos pertenecientes a un mismo fichero se encuentran próximos, y por tanto se reducen los desplazamientos de las cabezas de lectura/escritura.

Pregunta 2. Algoritmo de traducción de direcciones en un sistema de ficheros

Condiciones:

* Asignación contigua

* Disco de 2 caras con 80 pistas y 32 sectores por pista. El tamaño de sector es de 512 bytes.

* El sistema de archivos gestiona el espacio para ficheros mediante bloques de 1024 bytes.

Solución:

Sean

Offset_Fichero = Apuntador del fichero (dato de entrada)

Bloque_Inicio = Bloque de comienzo del fichero

"/" Operador división entera

"%" Operador resto de división

Se quiere obtener:

Superficie, que tomará un valor entre 0 y 1

Cilindro, que tomará un valor entre 0 y 79

Sector, que tomara un valor ente 0 y 31

/* Obtenemos bloque relativo de sistema de ficheros */

Bloque_relativo = Ofsset_fichero / 1024; /* Parte entera */

Offset_Bloque = Offset_fichero % 1024;

/* Obtenemos bloque absoluto de sistema de archivos */

Bloque_Absoluto = Bloque_Inicio + Bloque_Relativo;

/* Obtenemos sector lógico */

Sector_Logico = Bloque_Absoluto + Offset_Bloque / 512;

/* Finalmente obtenemos dirección física */

Sectores_Cilindro = 64

Cilidro = Sector_Logico / Sectores_Cilindro;

Superficie = (Sector_Logico % Sectores_Cilindro) / 32;

Sector = (Sector_Logico % Sectores_Cilindro) % 32;

Nota: Los cálculos del último paso dependen de la regla seguida para asignar sectores lógicos a sectores físicos. En este algoritmo se utiliza la siguiente: se empieza por el primer cilindro y primera superficie, cuando ésta se completa se pasa a la segunda superficie. Cuando se completan las dos superficies de un cilindro se repite el esquema de asignación con el siguiente cilindro y así sucesivamente. Recuerde que este aspecto es importante pues influye en los tiempos de acceso a los datos de los archivos almacenados en el disco.

Ejercicio: plantear una regla más eficiente que la descrita.

Pregunta 3. Seguridad informática

Se pide describir un escenario de seguridad que no encaje en el modelo jerárquico de anillos de protección. Caben aquí tantas respuestas como dé la imaginación de cada cual, aunque todas serán semajantes a casos como estos:

* Varias personas con el mismo nivel de privilegio para acceder a unos recursos, pero con privilegios mutuamente excluyentes sobre otra clase de recursos. Ej. unos ejecutivos que tienen el privilegio de utilizar cierta impresora, pero cada uno de ellos puede trabajar en un directorio personal que nadie más puede mirar.

* Una persona con un nivel de privilegio superior que no esté autorizada a realizar operaciones de niveles inferiores. Por ejemplo, un jefe que no esté autorizado a intervenir los mensajes de correo electrónico de un subordinado.

Pregunta 4. Cuestiones breves

¿Cuándo un proceso UNIX se ejecuta en modo núcleo?

En general, un proceso UNIX pasa a modo núcleo o modo sistema cuando efectúa una llamada al sistema; así hasta que retorne la llamada. También puede ejecutarse en modo sistema cuando llega algún evento que el proceso acepte (p.ej. una señal) y se tenga que ejecutar código del núcleo.

¿Qué se entiende en UNIX por proceso zombi?

Un proceso zombi es aquél que ha terminado, pero que mantiene su bloque de control de proceso, debido a que su padre no ha terminado y no ha ejecutado aún una llamada wait para recibir el código de terminación de tal proceso.

Un proceso zombi no mantiene recursos como memoria virtual, ficheros abiertos, etc.

Principio de mínimo privilegio

Significa que a todo usuario o proceso se le deben conceder los mínimos privilegios de acceso a los recursos que sean suficientes para su normal desempeño en el sistema. De esta forma, se evitan los riesgos de ejecutar operaciones inadecuadas que atenten contra la seguridad (p.ej. borrar archivos del sistema).

Similitudes y diferencias entre la implementación de los sistemas de archivos de DOS y UNIX

Pueden mencionarse múltiples parecidos y diferencias. Algunas similitudes destacables son:

* Gestión de espacio no contigua

* La información de los ficheros se guarda en bloques lógicos de tamaño fijo

* La información de los ficheros no se estructura, sino que se maneja como una ristra de bytes

* Los directorios se consideran archivos, aunque de tipo especial

* Permiten proporcionar una interfaz de acceso tanto directo como secuencial de forma eficiente

Algunas diferencias notables:

* La estrategia de ubicación del UNIX es indexada, mientras que en MS-DOS es enlazada por medio de una FAT en una zona separada del disco.

* El UNIX mantiene la información de control de los archivos en unas estructuras (nodos-i) ubicadas en zonas aparte del disco, mientras que en MS-DOS esta información se guarda en el directorio.

* UNIX permite referenciar al mismo archivo a través de varios nombres (concepto de enlace).

* La implementación de MS-DOS facilita la recuperación de archivos borrados.

* En UNIX existe la operación de montaje, que no aparece en MS-DOS.

* Antes de ejecutar una operación sobre archivos, en UNIX se verifica que el proceso tiene privilegios suficientes

Pregunta 5. Arquitectura paginada

Datos:

dirección virtual = 32 bits

dirección física = 24 bits

tamaño de página = 4096 bytes

tamaño máximo de una tabla secundaria = 4096 bytes

Estructura de la dirección virtual

Como cada página ocupa 4096 bytes, se necesitan 12 bits dentro de la dirección virtual para el desplazamiento dentro de la página. Quedan 20 bits para seleccionar la tabla de páginas.

Cada entrada en la tabla de páginas (secundaria) ocupará en torno a 2 bytes, ya que: a) con 24 bits para dirección física, nos salen 24-12=12 bits para marcos de página, más 3 bits de gestión (validez, referencia y modificación). Por tanto, 15 bits por entrada, que podemos redondear a 16 bits=2 bytes.

Con ello, una tabla de páginas secundaria puede ocupar hasta 4096/2 = 2048 entradas diferentes. Para direccionar 2048 entradas hacen falta 11 bits.

Así, nos quedan 9 bits para seleccionar la tabla de páginas, con lo cual la dirección virtual podría tener estos componentes:

9 bits

11 bits
12 bits
selector de tabla
selector de página dentro de la tabla secundaria
desplazamiento dentro de la página

El orden de los bits no tiene por qué ser el que se muestra. También pueden seguirse otros razonamientos que lleven a tamaños algo diferentes, pero al menos tienen que tenerse 12 bits para desplazamiento dentro de la página.

Marcos de página en una memoria física de 10 megabytes

10 megabytes = 10 x 220 bytes

1 marco = espacio para 1 página = 4006 bytes = 212 bytes

Marcos disponibles = (10 x 220 bytes) / 212 bytes = 2.560

Espacio consumido por un proceso de 4 megabytes

páginas necesarias para 4 megabytes = (4 x 220 bytes) / 212 bytes = 1.024

El proceso necesita 1.024 entradas en tablas de páginas. Habrá que multiplicar esta cantidad por los bytes que consume cada entrada, para saber cuánto se lleva en tablas secundarias. Según los cálculos del primer apartado, se necesitan 1.024x2 = 2.048 bytes, lo cual cabe holgadamente en una sola tabla secundaria.

Por otra parte, habrá que construirle al proceso una tabla primaria con una sola entrada.

Pregunta 6. Test

Pregunta

Opción correcta
1
d
2
c
3
d
4
a
5
d
6
a
7
b
8
b
9
c
10
a
11
a
12
d
13
c
14
b
15
c