Soluciones del examen de septiembre, curso 1996/97


Soluciones del examen de septiembre, curso 1996/97

Pregunta 1. Responder cuestiones

Razones que justifiquen el soporte de ejecución concurrente

Entre otras, podemos encontrar estas razones:

* Compartición de recursos, puesto que varios usuarios podrán hacer uso simultáneo, mediante distintos procesos, de los recursos del sistema

* Velocidad, puesto que es posible repartir el trabajo en varias tareas que se ejecutan en paralelo (en caso de que existan varios procesadores)

* Modularidad, puesto que el programador puede descomponer su código en unidades de ejecución (los procesos), de igual forma que lo hace en procedimientos u objetos

* Comodidad o amigabilidad, puesto que un usuario puede manejar a la vez varias tareas (ej. un entorno de ventanas)

En UNIX, ¿cuándo se planifican procesos con Round-Robin?

Se planifican de este modo los procesos que se están ejecutando en modo usuario.

¿Qué se entiende por sistema fuertemente acoplado?

Un sistema multiprocesador en el que existe memoria global y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores.

Pregunta 2. Tiempos de espera de una simulación de procesos

SJF expulsivo:

Diagrama de tiempos:

0

1
2
3
4
5
6
7
8
9
10
11
12

P1
P1
P3
P3
P3
P4
P4
P2
P2
P2
P2
P2
P2

Tiempos de espera:

Proceso

Tiempo de espera
P1
0
P2
6
P3
0
P4
2

Round-Robin:

Diagrama de tiempos:

0

1
2
3
4
5
6
7
8
9
10
11
12
P1
P1
P2
P2
P3
P3
P4
P4
P2
P2
P3
P2
P2

Tiempos de espera:

Proceso

Tiempo de espera
P1
0
P2
5
P3
6
P3
4

Pregunta 3. Sobre sistemas de archivos

¿Por qué en MS-DOS es posible en ocasiones recuperar un archivo borrado?

Porque cuando un archivo es borrado, sus bloques de datos (grupos o clusters) no son actualizados, manteniéndose sus contenidos hasta que dichos bloques sean asignados a otro archivo y se escriba sobre ellos.

El problema del borrado de ficheros en las organizaciones en grafo acíclico

Si eliminamos sin más un archivo, pueden quedar otros apuntadores (enlaces) al archivo inexistente o a sus bloques de datos, lo cual es incorrecto. Posibles soluciones son: a) recorrer la estructura de directorio para detectar y eliminar los enlaces del archivo recién borrado (opción costosa); b) utilizar un contador de referencias para cada archivo que nos informa del número de enlaces que posee cada archivo (el archivo sólo se elimina del disco cuando el contador llega a cero).

Pregunta 4. Operaciones de bloqueo de archivos

Ejemplo de la conveniencia de los servicios descritos

Sirve cualquier ejemplo donde sea necesario el acceso exclusivo a algún dato. Por ejemplo, las manidas transferencias bancarias.

Utilidad en un sistema no multiprogramado

Realmente, estas operaciones carecen de utilidad en un sistema no multiprogramado, ya que no hay otros procesos concurrentes a los que bloquear.

Posibilidad de implementar el bloqueo con funciones de biblioteca

Desde el punto de vista algorítmico, no parece haber problema para implementar estas funciones fuera del espacio del núcleo. Sin embargo, no se cumplirían las propiedades descritas, ya que el bloqueo de un fichero puede ser ignorado por cualquier proceso que haga directamente una llamada al sistema (no se puede alterar la implementación de las llamadas al sistema).

Pregunta 5. Algoritmo de traducción de direcciones en un sistema de archivos

Sean:

* Offset_Fichero = Apuntador del fichero (dato de entrada)

* Bloque_Inicio = Bloque de comienzo del fichero

* Long_punt = Lomgitud del enlace en los bloques de datos

* "/" = Operador de división entera

* "%" = Operador de resto


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 */
Bytes_Efectivos = 1024 - Long_punt
Bloque_relativo = Offset_fichero / Bytes_Efectivos;
Offset_Bloque = Offset_fichero % Bytes_Efectivos;

/* Obtenemos bloque absoluto de sistema de archivos */
Bloq_Absoluto = Bloque indicado en la entrada de directorio
Acceder a Bloq_Absoluto
Para Bloq=1 hasta Bloque_relativo Hacer
	Bloque_Siguiente = enlace existente en Bloq_Absoluto
	Bloq_Absoluto = Bloque_Siguiente 
	Acceder a Bloq_Absoluto
Fin Para


/* 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 asunto es importante, pues influye en los tiempos de acceso a los datos de los archivos almacenados en el disco. Se propone como ejercicio plantear una regla más eficiente que la descrita.

Pregunta 6. Traducción de direcciones de memoria

Datos del sistema:

* Tiempo de acceso a la memoria principal = 80 nseg.

* Tiempo de acceso a la TLB = 10 nseg.

* Tiempo de acceso al disco = 10 mseg.

Tasa de aciertos mínima de la TLB

Se quiere mantener un tiempo medio de acceso a un dato inferior a 100 nseg.

Si p es la tasa de aciertos de la TLB, se ha de cumplir:

(10 nseg.+80 nseg.)p + (10 nseg.+80 nseg.+80 nseg.)(1-p) < 100 nseg.

Resolviendo la inecuación, se obtiene que p>7/8 = 87'5%

(si se supone que el acceso a la TLB se hace concurrentemente con una operación de lectura con el bus, la tasa mínima obtenida es del 85'7%)

Tasa de fallos de página

En las condiciones del problema, se tiene que:

* Tasa de aciertos de la TLB = 90%

* Tiempo medio de acceso a un dato = 200 nseg.

La tasa de fallos de página se puede estimar a partir de la expresión:

Tm*(1-p) + Tf*p = Tmedio

donde

* Tm = tiempo de acceso a un dato en memoria principal = 0'9*90+0'1*170 = 98 nseg.

* Tf = tiempo de acceso a un dato cuando hay un fallo de página = 10 mseg. (aprox.) = 107 nseg.

* p = probabilidad de un fallo de página = incógnita

* Tmedio = tiempo medio de acceso a un dato = 200 nseg.

Sustituyendo, se obtiene que p = (Tmedio-Tm)/(Tf-Tm) = 102/107 = 1'02x10-5

Es decir, una tasa de fallos de página de uno por cada cien mil accesos.

Pregunta . TEST

Pregunta

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