Sie sind auf Seite 1von 36

Tema 1

¿En qué generación de ordenadores apareció la multiprogramación? ¿A qué problema dio solución?

Apareció en la tercera generación, pues se dio por primera vez la circunstancia de que
la velocidad de los procesadores superaba en varios órdenes de magnitud a los tiempos
de repuesta de los dispositivos. Esto tenía como consecuencia que el procesador
quedaba ocioso durante las operaciones bloqueantes, y esto no era admisible.
Mediante la multiprogramación, se consigue aprovechar los tiempos de bloqueo de los
procesos para ejecutar código de otros procesos, consiguiendo así un mayor
aprovechamiento del procesador.

En un congreso de fabricantes de hardware, aventuran que para mediados de este siglo aparecerá la
sexta generación de ordenadores, en la que tanto los dispositivos como los procesadores se construirán
exclusivamente mediante tecnología óptica, y los dispositivos de entrada/salida serán tan rápidos como
los procesadores. Ante esta afirmación, un diseñador de sistemas operativos presente en la reunión,
vaticina que entonces en esta generación los sistemas no interactivos volverán a ser monoprogramados.
¿Tiene sentido esta afirmación? ¿Por qué?

Sí, tiene sentido puesto que de hecho la multiprogramación tiene su origen en el


aprovechamiento de los tiempos de espera a los dispositivos, cuya duración era
prohibitivamente largas por ser estos mucho más lentos que los dispositivos. Si los
dispositivos fuesen tan rápidos como los procesadores, y tratándose de sistemas no
interactivos en los que no fuese importante garantizar un tiempo de respuesta, hacer
monoprogramados los sistemas tendría como ventaja un incremento en el
rendimiento global del sistema al eliminarse la sobrecarga debida a la
multiprogramación (tiempo de conmutación, planificador, etc.)
Tema 2
¿Qué es una llamada al sistema? ¿Qué es la interfaz de programación de aplicaciones (API) de un
sistema operativo?

Una llamada al sistema es una petición que hace un proceso al sistema operativo
para recibir algún servicio.

La interfaz de programación de aplicaciones es el conjunto de todas las llamadas al


sistema que implementa un sistema operativo.
Tema 3
Se desea implementar un sistema operativo que permita ejecutar pequeñas aplicaciones en el chip de
una tarjeta inteligente. El hardware incrustado en la tarjeta dispone de tan sólo unos cuantos cientos de
kilobytes de memoria y el procesador no dispone de mecanismos de protección. De los modelos
micronúcleo y monolítico, ¿cuál escogería para desarrollar dicho sistema operativo?

Hay dos razones por la que el diseño debe ser forzosamente monolítico:

- En primer lugar, al no disponer el procesador de mecanismos de protección, el


modelo micronúcleo no tiene sentido ya que no podríamos garantizar el
aislamiento entre componentes del sistema operativo, que es la principal ventaja
de dicho modelo.
- Además de ello y en segundo lugar, los sistemas operativos diseñados bajo el
modelo monolítico son más eficientes tanto en tiempo de ejecución como en
memoria requerida, siendo este último un recurso escaso en el sistema para el
cual se diseña.

Un procesador marca ACME distingue los modos de ejecución supervisor y usuario. Cuando en modo
usuario se intenta ejecutar una instrucción privilegiada, esta instrucción simplemente se ignora. ¿Se
podría construir un hipervisor tipo 1 para este procesador? ¿Por qué?

No, sobre este procesador no se puede implementar un hipservisor tipo 1, ya que estos
hipervisores simulan la ejecución de las instrucciones privilegiadas en las máquinas
virtuales capturando la excepción que se produce al intentar ejecutarlas. Si esta
excepción no se produce, no es posible su simulación (se dice por tanto que el
procesador ACME no es virtualizable).

Microsoft intentó defender inicialmente que Windows NT, 2000 y posteriores son sistemas basados en
organización micronúcleo. No obstante, ¿qué característica de este sistema operativo es propia de los
sistemas monolíticos? (3 puntos)

El hecho de que los gestores de dispositivos compartan espacio de memoria con el


Kernel y el Executive (el núcleo, en definitiva) es una característica propia de los
sistemas monolíticos. Esto se hace así por cuestiones de eficiencia, pero es
absolutamente incompatible con la afirmación de que se tratase de un sistema
operativo con organización micronúcleo.

¿Es posible que un error en el gestor (driver) de un dispositivo no crítico, como puede ser por ejemplo
una impresora o una tarjeta de sonido, pueda hacer fallar al sistema operativo Windows? ¿Por qué?

Sí, lo es. En Windows, los gestores de dispositivos se integran junto con el Executive y el
Kernel en el núcleo del sistema. Esto significa que un error de programación en un
gestor de dispositivo (driver) puede afectar al Executive o al Kernel, provocando el
fallo del sistema operativo.
Temas 4 y 5
Dibuje el diagrama de estados mínimo de los procesos que debe considerar cualquier planificador no
apropiativo. ¿Qué diferencia habría con el de un planificador apropiativo?

activación
preparado activo

Fin bloqueo
bloqueo

bloqueado

La diferencia con un apropiativo sería que aparecería una transición desde el estado
activo a el estado preparado, llamada “apropiación”.

En un sistema multiprogramado, se lanzan en paralelo dos procesos que durante el 50% de su tiempo
realizan operaciones de cálculo, y durante el 50% restante del tiempo realizan operaciones
bloqueantes. Siendo t la duración de ambos procesos, ¿cuánto tiempo podrían tardar en terminar
ambos la ejecución, en el mejor de los casos? ¿Y en el peor de los casos? Justifique brevemente la
respuesta.

En el mejor de los casos, si los tiempos de cálculo de un proceso pudiesen coincidir con
los tiempos de bloqueo del otro proceso, ambos podrían terminar en t unidades de
tiempo. En el peor caso, si los tiempos de cálculo de ambos procesos coincidiesen y a su
vez, las operaciones bloqueantes no se pudieran realizar en paralelo, sería necesario
2t para ejecutar ambos procesos.

¿Qué ventajas tiene el uso de hilos frente al uso de procesos en la construcción de aplicaciones que
constan de diversas actividades que colaboran entre sí?

Si dos actividades colaboran entre si es muy probable que necesiten compartir datos o
cualquier otro tipo de recurso. Solucionar un problema de este tipo mediante hilos en
lugar de mediante procesos separados tiene como ventaja que los hilos de un mismo
proceso comparten espacio de memoria (el del proceso que lo contienen) con lo que no
necesitan hacer uso de mecanismos de comunicación ni de compartición de datos
entre procesos, resultando así más eficiente la implementación.

Además de ello, los tiempos necesarios para crear y destruir hilos son menores que los
necesarios para crear y destruir procesos.
En un sistema se en el que la planificación se realiza mediante turnos rotatorios, se compensa a los
procesos que se bloquean antes de consumir la mitad de su cuanto de tiempo insertándolos en la
primera posición de la lista de procesos preparados una vez terminada la operación bloqueante.
¿Podría este método dar lugar a monopolización del procesador por parte de procesos que pasan por
fases de frecuentes bloqueos?

No, es imposible. Si los procesos se bloquean frecuentemente, por definición de


operación bloqueante, quiere decir que realizan operaciones que no requieren uso del
procesador y cuya duración es varios ordenes de magnitud mayor que el tiempo que
tarda el proesador en ejecutar una instrucción. Esto quiere decir que durante cada
operación de bloqueo el pueden haber muchos otros procesos que puedan recibir y
agotar sus cuantos de tiempos.

En un sistema la planificación se realiza mediante turno rotatorio con un cuanto de tiempo de 1ms.
¿Cuántos procesos pueden estar en ejecución simultáneamente como máximo para poder garantizar
que el tiempo de respuesta sea menor que 0,05 segundos?

Dado que el tiempo de respuesta en un sistema planificado por turnos rotatoris es:

TR <= q*(n-1), dado que q=1x10-3 y deseamos que TR<=0,05, hemos de despejar n de la
inecuación

0,05 <=1x10-3(n-1), con lo que


0,05/1x10-3 <= n-1, de donde
0,05/1x10-3+1 <= n
51<= n

Por tanto, en el momento que n sea mayor que 51, ya no se podrá garantizar que el
tiempo de respuesta sea menor 0,05 segundos.

En un sistema se utiliza planificación mediante colas multinivel con realimentación. El planificador


usa tres colas: una cola C1 que utiliza un cuanto de tiempo de duración q, y sobre la que se realizan
cuatro rotaciones; una segunda cola C2 que utiliza un cuanto duración 2q, y sobre la que se realizan
dos rotaciones, y una tercera cola C3 que usa un cuanto de duración 4q y sobre la que se realiza una
única rotación. Tras ejecutar un proceso, comprobamos usando una herramienta de monitorización que
ha pasado la mayor parte de su tiempo en la cola C3. ¿Qué ha hecho mayoritariamente dicho proceso,
operaciones de cálculo u operaciones bloqueantes? (2 puntos)

Si el proceso se ha planificado la mayor parte del tiempo en la cola que usa el cuanto
de tiempo de mayor duración, es porque normalmente el tiempo entre bloqueos ha sido
superior a dicho cuanto. Esto hace suponer que se trate de un proceso que ha realizado
mayoritariamente operaciones de cálculo.

En un sistema en tiempo real se producen una serie de eventos en los instantes He que se muestran a
continuación. Cada evento, debe ser atendido por una actividad con un tiempo de ejecución t, la cual
debe estar terminada P unidades de tiempo después de la ocurrencia del evento (P= plazo). Realice el
cronograma de activación aplicando planificación por plazos.

He t P
A1 0 9 20
A2 3 5 12
A3 5 1 2
A4 7 3 5
A5 9 2 2

Dado que nos indican que la actividad debe estar terminada antes de terminar el
plazo, hemos de usar por tanto planificación por plazos finales. Por tanto, en cada
momento tendrá mayor prioridad la actividad más próxima a terminar su plazo, y se
deberá usar apropiación. El cronograma queda:

A5
A4
A3
A2
A1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

En un sistema en tiempo real en el que la planificación se realiza por plazos, se producen los eventos
que han de ser atendidos por las actividades cuyos tiempos de ejecución y plazos se especifican, siendo
He= instante en que se produce el evento, t= tiempo de ejecución de la actividad (proceso) que lo
atiende, y P=instante de tiempo en que debe haber comenzado dicho proceso (plazo). Realice el
cronograma de activación

He t P P5
P1 0 4 14 P4
P2 1 3 16 P3
P3 3 3 12 P2
P4 6 3 9 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
P5 12 4 17

Nótese que dado que se nos indica que P es el instante de tiempo en que debe haber
comenzado cada actividad, utilizamos planificación por plazos iniciales, por lo que
no utilizamos apropiación.

En un sistema multiprocesador, un diseñador del sistema operativo propone que para mantener
equilibrada la carga de trabajo entre los procesadores, se realice asignación estática de procesos a
procesadores, y que tras el arranque, el núcleo asigne el primer proceso al procesador 0, el siguiente
proceso al procesador 1, el siguiente al 2, y así sucesivamente hasta llegar al procesador N, volviendo
entonces a asignar el siguiente proceso al procesador 0. Los procesadores están multiprogramados y
los procesos alternan periodos de bloqueo con periodos de cálculo. ¿Se consigue con este método
impedir que un procesador pueda estar ocioso, mientras que otro procesador tenga procesos esperando
en su lista de procesos preparados?

No. Desde el momento en que la asignación es estática, aunque el numero de procesos


asignados a cada procesador se calcule equitativamente, nada impide que todos los
procesos asignados a un procesador puedan estar bloqueados, y por tanto el
procesador ocioso, mientras que todos los hilos de otro procesador están preparados y
por tanto el procesador está cargado de trabajo.

En un sistema Windows, se ejecuta una aplicación implementada mediante dos hilos a los que
llamaremos A y B. El hilo Se sabe que uno de ellos sólo efectúa operaciones de cálculo, mientras que
el otro, dado que atiende la interfaz de usuario, se bloquea muy frecuentemente y sólo realiza
ocasionalmente operaciones de cálculo. Mediante una herramienta de monitorización del sistema,
comprobamos que durante la ejecución de la aplicación, el hilo A permanece casi todo el tiempo en
una misma prioridad, mientras que el hilo B cambia frecuentemente de prioridad, variando entre su
prioridad inicial – 2 como mínimo y la prioridad 15 como máximo. ¿Cuál hilo es el que se bloquea con
frecuencia y cuál es el que sólo hace cálculo? Justifique brevemente su respuesta.

El hilo B, si ha cambiado con frecuencia de prioridad, es porque ha pasado por


periodos en los que frecuentemente se ha bloqueado antes de expirar su cuanto de
tiempo, y el kernel le ha efectuado “Priority Boosts”. Por tanto, es este hilo (B) el que se
bloquea con frecuencia, y el otro (A) quien sólo efectúa operaciones de cálculo.

En las versiones de escritorio de Windows (Home, Professional) la duración del cuanto de tiempo es
hasta 6 veces menor que en las versiones orientadas a servidores (Server, Advanced Server).
¿Encuentra alguna justificación para ello?

Las versiones de escritorio están pensadas fundamentalmente para uso interactivo. Al


hacer uso de un cuanto de tiempo menor, la rotación entre procesos es más frecuente y
el tiempo de respuesta interactiva es mejor.

El último supercomputador de Cray, el CRAY XE6, es capaz de escalar hasta más de un millón de
núcleos (procesadores). Para un sistema de este tipo, ¿qué relación entre procesadores consideraría
más adecuada, la relación amo/esclavo o multiprocesamiento simétrico?

Sería mucho más adecuada la relación “multiprocesamiento simétrico”, pues si un


procesador tuviese que operar como amo del millón de núcleos hasta el cual puede
llegar a escalar la máquina, es muy probable que la carga de trabajo que supondría
la planificación pudiese llegar a saturar al amo, convirtiéndose éste en un cuello de
botella. Además de ello, se convertiría en un recurso crítico del sistema, pues el fallo
del amo conllevaría el fallo del sistema completo.
Una empresa del sector electrónico adquiere un equipo con 256 procesadores para su departamento de
I+D dedicado a la simulación de circuitos analógicos de gran complejidad. La simulación de un
circuito electrónico es un proceso no interactivo que durante sus primeras fases entremezcla
operaciones de entrada/salida con operaciones de cálculo, y posteriormente, realiza una gran cantidad
de cálculo no paralelizable. Dado que en el departamento de I+D trabaja un gran número de técnicos,
es de prever que se ejecuten simultáneamente muchos procesos de este tipo. De los modelos de
planificación de hilos en multiprocesadores descritos en clase, ¿cuál se adaptaría mejor a este sistema?
Justifique brevemente la respuesta

Lo importante de la forma en que se pretende de explotar este sistema, es que (1) no


hay necesidad de paralelismo, lo cual descarta la planificación por grupos, y (2) hay
fases importantes de operaciones bloqueantes, lo cual no hace del todo aconsejable la
asignación de procesadores en exclusividad. Dado que se espera además que la carga
de trabajo sea alta, el modelo de compartición de carga se perfila como el modelo más
adecuado, pues tendería a distribuir la carga de trabajo entre todos los procesadores
sin afectar por ello al rendimiento de las aplicaciones.
Tema 6
¿Qué es una condición de carrera?

Es la corrupción del estado de un recurso, debido a su uso concurrente por parte de dos
o más procesos.

¿En qué consiste el control pesimista de la concurrencia en el control de la concurrencia sobre un


recurso?

Consiste en garantizar la exclusión mutua entre los procesos que se coordinan en el


uso del recurso.

En una estación de seguimiento de sondas espaciales se pretende desarrollar los procesos por los que
se controlan los sistemas de navegación de las sondas. Estos procesos comparten un dispositivo (la
emisora de radio) mediante el cual se envían los comandos a las sondas en el espacio. Dado que la
transmisión de un comando tiene una duración muy corta y ocurre con poca frecuencia, es poco
probable que se produzcan condiciones de carrera sobre la emisora al enviarlos. Ahora bien, debido al
tiempo de propagación de las ondas de radio en el espacio, en caso de ocurrir una condición de carrera
puede tardar varios minutos en detectarse, periodo durante el cual la sonda puede haber quedado sin
control y perderse en el espacio. Con estos datos, ¿Emplearía un método optimista o un método
pesimista para el control de la concurrencia en el uso de la emisora?

Utilizaría un método pesimista pues si bien es poco probable que se produzcan


condiciones de carrera, el coste de una condición de carrera puede ser altísimo
(pérdida de la sonda espacial) con lo que el método optimista no es viable.

Un programador de una aplicación a bajo nivel decide utilizar un cerrojo para garantizar la exclusión
mutua entre varios procesos que comparten un dispositivo. Como recuerda que los cerrojos no
garantizan la exclusión mutua a menos que se asegure la atomicidad entre la comprobación del cerrojo
y su cierre, utiliza el siguiente protocolo de entrada a la sección crítica:

suspender_conmutacion(); donde suspender_conmutacion() es una llamada al sistema


while(cerrojo==true); que impide que se produzcan conmutaciones hasta que se
cerrojo= true; reanudan nuevamente con reanudar_conmutacion().
reanudar_conmutacion();
… ¿Funcionará este protocolo de entrada como el programador
<sección crítica> espera? (3 puntos)

No, no funcionará, pues al suspender la conmutación, la espera ocupada que se hace a


continuación no terminaría nunca, ya que no habrá ningún otro proceso que pueda
activarse y cambiar el valor del cerrojo. Esto colgaría no solo al proceso, sino al
sistema completo.
En un sistema tenemos un proceso productor que genera información para un proceso consumidor. El
proceso productor le hace llegar la información al consumidor mediante mensajes, tal como se muestra
a continuación. Los buzones tienen limitada su capacidad, de forma que si se supera un número
determinado de mensajes pendientes de lectura, el buzón se considera lleno y los mensajes que se
intenten enviar a partir de entonces se ignoran. ¿Aprecia algún problema en la forma en que se
coordinan ambos procesos?

Productor: Consumidor:

while(true) while(true)
{ {
msg= producir_elemento(); receive(datos, &msg);
send (datos, msg); consumir_elemento(msg);
} }

En efecto existe un problema, y es que no existe ningún protocolo de control de flujo


entre productor y consumidor. Es decir, si el productor genera más elementos de los que
el consumidor es capaz de procesar, el buzón se llenará y a partir de ahí los elementos
enviados se perderían. Nótese que para ello no es siquiera necesario que la producción
de elementos sea menos costosa que su consumo. Bastaría por ejemplo con que en una
única ranura de tiempo el productor pudiese generar más elementos de los que puede
almacenar el buzón.

Un programador quiere garantizar la exclusión mutua entre varios procesos que comparten un
dispositivo, utiliza una variable compartida ocupado que vale true cuando el recurso está ocupado
y false en caso contrario, y un semáforo exmut cuyo valor inicial es 0. Dicho programador escribe
los siguientes protocolos de entrada y salida:

/* Protocolo de entrada */ ¿Encuentra algún problema a dicho protocolo? ¿Cuál?


if (ocupado)
down(excmut); Reescriba los protocolos de entrada y de salida de la
ocupado= true; sección crítica sin necesidad de usar la variable
ocupado.
/* Sección crítica */
inicilizar_dispositivo();
usar_dispositivo(); Problema que se detecta:
liberar_dispositivo();
La comprobación de la variable ocupada es
/* Protocolo de salida */
ocupado=false; innecesaria, y aparte de ello, no se garantiza
up(excmut); que funcione como el programador espera.

Es innecesaria pues la propia primitiva down() realiza la suspensión condicional del


proceso en función del valor del contador del semáforo. Pero aparte de ello, no se
garantiza la atomicidad entre la comprobación y la acción de cerrar el semáforo. Es
decir, puede ocurrir una apropiación entre la comprobació del valor de la variable
“ocupado” y el down(exmut) o la asignación del valor “true” a ocupado. Por ejemplo,
un proceso encuentra ocupado a false, y justo cuando va a cambiar su valor a true, es
apropiado. Un segundo proceso comprueba el valor de la variable, que sigue siendo
flase. Cambia su valor a true, y entra en la sección crítica. En esto, que el primer
proceso se vuelve a activar, con lo que asigna (otra vez) el valor true a ocupado, y
entraría también en la sección crítica, violándose así la exclusión mutua.

Código correcto:

/* valor inicial del semáforo exmut= 1 */

/* protocolo de entrada */
down(exmut)

/* Sección crítica */
inicilizar_dispositivo();
usar_dispositivo();
liberar_dispositivo();

/* Protocolo de salida */
up(excmut);

Cuando en un método de un monitor un proceso reanuda a otro proceso detenido en un wait sobre una
variable de condición, haciendo uso de la primitiva signal sobre dicha variable, una de las políticas
para evitar que al reanudarse el proceso se viole la exclusión mutua en el uso del monitor consiste en
mantener temporalmente bloqueado al proceso reanudado hasta que el proceso que hace signal salga
del monitor (Lampson y Redell). ¿Qué ventaja tiene esta política sobre la contraria, consistente en
bloquear al proceso que hace signal hasta que el proceso reanudado salga del monitor (Hoare)?

La ventaja es que genera un menor número de conmutaciones, ya que con la solución


de Hoare cada llamada a signal fuerza una conmutación si hay algún proceso
bloqueado en la variable de condición, cosa que no ocurre con la solución de
Lampson.
Tema 7
En un sistema un operador lanza 6 procesos (llamados P1…P6) que cooperan entre ellos, y que
comparten un número determinado de recursos. En un momento dado, se da cuenta que los procesos
P1, P2, P3, P4 y P5 se han colgado. Utiliza entonces una herramienta que muestra el grafo de relación
entre recursos y procesos, y la situación que muestra resulta ser la siguiente:

P3 R3 P6

P1 R1 P2 R2 P4

P5 R4 R5 R6 R7

¿Qué procesos están interbloqueados?

P3, P4 y P5, pues son los que forman parte de un ciclo.

El operador decide resolver la situación abortando el proceso P2. ¿Resolverá con esto el interbloqueo?
¿por qué?

No. Puesto que, aunque P2 está también “colgado” pues espera a un proceso que forma
parte del ciclo, él no participa en el mismo.

¿Se podría haber llegado a esta situación si todos los procesos que requieren dos o más recursos los
hubiesen solicitado siguiendo un orden determinado, por ejemplo, el de los subíndices del nombre de
recurso?

No. Se demuestra que solicitar los recursos siguiendo un orden determinado


imposibilita la formación de interbloqueos (tercera estrategia de Havender).

En el ordenador central de una entidad bancaria se lanza por parte de cada sucursal un proceso que
realiza las transferencias programadas entre cuentas bancarias. Cada cuenta tiene una fila en una tabla
de una base de datos, y el procedimiento para realizar la transferencia es:

1. Bloquear la cuenta con el número de cuenta más pequeño.


2. Bloquear la cuenta con el número de cuenta mayor.
3. Decrementar el importe de la cuenta emisora e incrementarlo en la cuenta receptora.
4. Desbloquear la cuenta con el número más pequeño.
5. Desbloquear la cuenta con el número mayor.

Si el proceso de una sucursal intenta bloquear una cuenta que ya está bloqueada, se hará esperar al
proceso hasta que la cuenta se desbloquee. ¿Pueden darse interbloqueos en este sistema? ¿Por qué?
No, no se pueden dar interbloqueos en el sistema, pues todos los procesos bloquean las
cuentas siempre siguiendo un orden preestablecido y común para todos los procesos. Se
demuestra que el bloqueo en orden de los recursos impide la formación de ciclos de
espera (tercera estrategia de Havender), con lo que no se pueden formar interbloqueos.

En un sistema se ejecutan cuatro procesos que comparten cuatro tipos de recursos. En un momento
dado, el estado de asignación de recursos a procesos es el que viene dado por la matriz A (recursos
asignados) y el vector D (recursos disponibles) que se muestran a continuación, estando pendientes de
satisfacer las peticiones que se muestran en la matriz S. En esta situación el proceso P1 solicita una
instancia del recurso R2. ¿Provoca esta petición un interbloqueo?

R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4
D=
P1 0 1 0 0 P1 0 0 0 0 2 0 0 0
A= P2 2 2 0 0 S= P2 0 0 1 0
P3 0 0 2 0 P3 0 0 0 1
P4 0 0 0 2 P4 0 0 0 0

Al no haber instancias disponibles del recurso 2, esta queda pendiente, con lo que
actualizamos la matriz S:

R1 R2 R3 R4
P1 0 1 0 0
S= P2 0 0 1 0
P3 0 0 0 1
P4 0 0 0 0

En esta situación, el proceso P4 puede satisfacer sus peticiones pendientes en S


(ninguna, dicho sea de paso) con los recursos disponibles, liberando los recursos
asignados en A, que se suman al vector D, obteniendo

D’= (2,0,0,0) + (0, 0, 0, 2)= (2, 0, 0, 2)

Con esto el proceso P3 ya puede satisfacer sus peticiones pendientes en S con los recursos
disponibles, liberando los recursos asignados en A, que se suman al vector D,
obteniendo

D’’= (2,0,0,2) + (0, 0, 2, 0)= (2, 0, 2, 2)

Con esto el proceso P2 ya puede satisfacer sus peticiones pendientes en S con los recursos
disponibles, liberando los recursos asignados en A, que se suman al vector D,
obteniendo

D’’= (2,0,2,2) + (2, 2, 0, 0)= (4, 2, 2, 2)

Con lo que ya el proceso P1 también puede satisfacer sus peticiones pendientes, con lo
que NO hay interbloqueo.
En un sistema, el estado de asignación de recursos viene dado por las siguientes matrices A, D y S,
donde A es la matriz de recursos asignados a procesos, la matriz D es el vector de recursos disponibles
y S es la matriz de peticiones pendientes de satisfacer. En esta situación, el proceso P1 solicita una
instancia del recurso R1. Determine aplicando el método de detección matricial si esta petición
provoca un interbloqueo.

R1 R2 R3 R4 R1 R2 R3 R4
P1 0 1 0 0 P1 1 1 1 2
R1 R2 R3 R4
A= P2 0 0 0 2 S= P2 1 2 0 0 D=
2 0 0 0
P3 0 3 0 0 P3 0 0 2 0
P4 0 0 2 0 P4 2 0 0 0

En realidad, esta pregunta tiene “truco”, y se responde mucho más rápido de lo que a
simple vista puede parecer. Nótese que se está solicitando una instancia de un recurso
disponible. Por tanto, la petición no da lugar a espera. Si la petición no da lugar a
espera, es imposible que se produzca un interbloqueo, por lo que no hace falta aplicar
algoritmo alguno de detección para responder que no puede haber interbloqueo.

(No obstante, a efectos de evaluación, se puntuó con la mayor parte de la nota a


quienes a pesar de ello aplicaron correctamente el método de detección matricial)

3. En un sistema se ejecutan cuatro procesos que comparten cuatro tipos de recursos. En un instante
dado, la matriz A representa los recursos de cada tipo asignados a cada proceso, el vector D representa
los recursos de cada tipo disponibles y la matriz M representa las necesidades máximas de recursos por
parte de cada proceso. En esta situación, el proceso P1 solicita dos instancias del recurso R1.
Aplicando el algoritmo del banquero, ¿se debería satisfacer dicha petición?

R1 R2 R3 R4 R1 R2 R3 R4
P1 0 1 0 0 P1 3 1 0 0
A= R1 R2 R3 R4
P2 0 0 1 0 M= P2 0 2 2 1 D=
2 2 3 3
P3 0 0 0 1 P3 0 2 1 2
P4 2 1 0 0 P4 3 1 0 1

Supongamos que se realizase la asignación. Nos llevaría a un estado en que


D  0 2 3 3
2 1 0 0
 
0 0 1 0
yA
0 0 0 1
 
2 0 
 1 0

Si calculamos la matriz con las peticiones máximas pendientes,


1 0 0 0
 
0 2 1 1
Z M A
0 2 1 1
 
1 1 
 0 0

En esta situación, podemos comprobar que por ejemplo, el proceso P2 puede llegar a
conseguir su máximo de recursos pendientes, liberando los recursos que tiene
asignados en A obteniéndose el siguiente vector de disponibles:

D'  0 2 3 3  0 0 1 0 0 2 4 3

Con esto, podría también satisfacerse las necesidades futuras máximas de P3,
obteniéndose

D' '  0 2 4 3  0 0 0 1 0 2 4 4

Ahora bien, una vez llegados a este punto, vemos que ni P1 y ni P4 pueden llegar a
obtener sus recursos máximos pendientes. Por tanto, el estado al que se ha llegado no
es seguro, por lo que la petición no se debería satisfacer.

En un sistema se en el que se ejecutan 9 procesos se usan matrices binarias de relación para detectar
interbloqueos. En un momento dado, se calcula el cierre transitivo de la matriz T= WxA obteniendo
como resultado la siguiente matriz:

P1 P2 P3 P4 P5 P6 P7 P8 P9
P1 1 1 0 0 0 0 0 0 0
P2 1 1 0 0 0 0 0 0 0
P3 1 1 0 0 0 0 0 0 0
n


i 1
(WxA) i = P4
P5
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
P6 0 0 0 0 1 0 0 0 0
P7 0 0 0 0 1 1 0 0 0
P8 0 0 0 0 1 1 1 0 0
P9 0 0 0 0 0 0 0 0 0

Cada proceso sólo puede esperar directamente a un único recurso. Exprese mediante grafos de
relación proceso/recurso las posibles relaciones de espera entre los procesos del sistema. Represente
los recursos sin nombre.

P1 P2 P8 P7 P6

P4

P3

P5
Tema 8
¿En qué consiste el criterio de asignación de memoria asignación por peor ajuste? ¿Qué objetivo
pretende conseguir? ¿Qué inconveniente tiene frente a la asignación por mejor ajuste?

El criterio consiste en ante una petición asignar el mayor bloque de memoria libre.

Lo que se pretende con ello es disminuir la fragmentación del espacio libre, al


producir fragmentos lo más grandes posibles.

Inconveniente(s) respecto mejor ajuste: existen secuencias de asignaciones que por


mejor ajuste se pueden atender todas, mientras que por peor ajuste algunas se quedan
sin satisfacer.

Por ejemplo, si solo hay dos bloques de memoria, uno grande y uno pequeño, y se dan
dos peticiones, de forma que una sólo se pueda atender con el bloque grande completo,
si se atiende primero la petición por el bloque pequeño la petición para el bloque
grande se queda sin poderse atender

En un sistema en el que la memoria se asigna en unidades de asignación (ticks) de 16 bytes. La gestión


de la memoria se efectúa mediante un mapa de bits, encontrándose en un momento el mapa en el
estado que se muestra a continuación. La asignación de memoria se realiza por el método del mejor
ajuste. Dibuje qué bits cambiarían en el mapa con cada una de las siguientes operaciones En el caso de
las asignaciones, indique también qué dirección se asignaría, sabiendo que la memoria gestionada
comienza en la dirección 8000H.

NOTAS: Por simplicidad…


 … las direcciones están en hexadecimal, ya que 16D=10H, 32D=20H, 48D=30H, etcétera.
 … escriba en cada paso sólo los bits que cambien.

0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1…
00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100 110 120 130 140 150 160 170 180 190 1A0 1B0 1C0 1D0 1E0 1F0 200 210 220 230 240 250 260 270 ...

a) Un proceso solicita 70 bytes (5 ticks)


Dirección asignada: 8000
El mapa queda…
11111 …
00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100 110 120 130 140 150 160 170 180 190 1A0 1B0 1C0 1D0 1E0 1F0 200 210 220 230 240 250 260 270 ...

b) Un proceso libera 208 bytes a partir de la dirección 8060H (13 ticks)


El mapa queda…
0000000000000 …
00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100 110 120 130 140 150 160 170 180 190 1A0 1B0 1C0 1D0 1E0 1F0 200 210 220 230 240 250 260 270 ...

c) Un proceso solicita 40 bytes (3 ticks)


Dirección asignada: 81B0
El mapa queda…

111 …
00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100 110 120 130 140 150 160 170 180 190 1A0 1B0 1C0 1D0 1E0 1F0 200 210 220 230 240 250 260 270 ...

En un sistema la memoria se gestiona mediante una lista de control. Considere los nodos de la lista que se
muestran a continuación, sabiendo que los nodos que siguen representan bloques ocupados. Por simplicidad, la
memoria se asigna en ticks de 16 bytes, por lo que el tamaño de cada bloque está expresado en ticks de dicho
tamaño. En este sistema, un proceso solicita 50 bytes de memoria. ¿Qué dirección se asignaría por el criterio de
mejor ajuste? A continuación, el proceso que tiene asignado el bloque de memoria de la dirección 50H lo
libera. Dibuje cómo quedaría la lista tras ambas operaciones. (3 puntos).

NOTA: Por simplicidad, las direcciones están en hexadecimal, ya que 16D=10H, 32D=20H, 48D=30H,
etcétera…

Estado: ocup. Estado: ocup. Estado: libre Estado: ocup. Estado: libre Estado: ocup.
Tamaño: 5 Tamaño: 2 Tamaño: 8 Tamaño: 4 Tamaño: 5 Tamaño: 3
Dirección: 0H Dirección:50H Dirección: 70H Dirección: F0H Dirección: 130H Dirección: 180H

Estado: libre
Tamaño: 3
Dirección: 1B0H

Si se solicitan 50 bytes, hay que obtener 50/16=3,x ticks que se redondean al alza a 4
ticks. Por el método del mejor ajuste, dicho mejor ajuste se da con el bloque de 5 ticks
de la dirección 130H, que es la dirección que se asigna. Respecto a la liberación del
bloque en la dirección 50H, dado que dicho bloque tiene otro bloque libre a
continuación, debe efectuarse la fusión de ambos bloques. Por tanto, la lista queda:

Estado: ocup. Estado: libre. Estado: ocup Estado: ocup. Estado: libre Estado: ocup.
Tamaño: 5 Tamaño: 10 Tamaño: 4 Tamaño: 4 Tamaño: 1 Tamaño: 3
Dirección: 0H Dirección:50H Dirección: F0H Dirección: 130H Dirección: 170H Dirección: 180H

Estado: libre
Tamaño: 3
Dirección: 1B0H

Un sistema admite la inserción de memoria “en caliente”, es decir, permite añadir memoria principal
durante el funcionamiento del mismo, sin necesidad de apagarlo o de ni tan siquiera reiniciarlo. La
memoria añadida es utilizable desde el momento en que se inserta. El sistema operativo es informado
por el hardware de la inserción de la memoria mediante una interrupción, pudiendo determinar
mediante la lectura de unos registros la dirección y el tamaño del bloque añadido. En dicho sistema,
¿cómo realizaría la gestión de la memoria? ¿Mediante mapas de bits o mediante listas de control?
Justifique brevemente su respuesta.
Sería mucho más eficiente usar listas de control, ya que para añadir el nuevo bloque
libre de memoria bastaría con crear un nuevo nodo con la dirección de comienzo y
tamaño del bloque libre informada por el hardware, e insertarlo en la posición
correspondiente de la lista de control. El uso de mapas de bits sería más complejo
puesto que habría que aumentar el tamaño del mapa e insertar el nuevo trozo de
mapa en la posición correspondiente, seguramente desplazando la porción de mapa
que hubiese detrás.

Durante el desarrollo de un sistema basado en un procesador que soporta paginación, el diseñador del
hardware consulta al diseñador del sistema operativo si sería conveniente dotar al hardware de un
controlador de DMA con capacidad de copia de memoria a memoria para acelerar la compactación de
memoria por hardware, y solucionar así la fragmentación del espacio libre de memoria. ¿Qué le
respondería, como diseñador del sistema operativo?

Le respondería que no es buena idea, puesto que gracias a la paginación la


fragmentación no es un problema, pues aunque el espacio físico de memoria puesta
estar disperso, los procesos siguen viendo su espacio de memoria como direcciones
lógicas consecutivas.

Supongamos un sistema con memoria paginada en el que las direcciones de memoria son de 16 bits,
siendo los 4 bits de mayor peso el número lógico de página (NLP). La traducción a la dirección física
se hace mediante una tabla de páginas en la unidad de gestión de memoria. En dicha tabla se tiene para
cada página, además del número de marco, un bit P que indica si la página está presente (P=1) o
ausente (P=0). Cuando la página está ausente, el número de marco no tiene sentido. Si se intenta
acceder a una página ausente, se produce un fallo de página.

A la vista de la tabla de página, ¿qué direcciones físicas producirían las siguientes direcciones lógicas?
Indique cuáles producirían fallo de página. Por simplicidad, todas las direcciones están en
hexadecimal.

a) 0000 → 7000
b) 6FFF → Fallo de página
c) 3A10 → Fallo de página
d) 47F1 → 07F1

NLP Marco P NLP Marco P NLP Marco P NLP Marco P


0 7 1 4 0 1 8 3 1 C 0 0
1 0 0 5 6 1 9 1 1 D 0 0
2 0 0 6 5 0 A 0 0 E A 1
3 0 0 7 4 1 B 0 0 F B 1

Sea un microprocesador que soporta segmentación y que en cada entrada de la tabla de descriptores de
segmentos dispone de tres bits, RWX, que cuando son 1 significan, en el caso del bit R que el
segmento puede ser leído, en el del bit W que el segmento puede ser modificado, y en el del bit X que
el segmento contiene código que se puede ejecutar. La unidad de gestión de memoria controla por
supuesto que todos los accesos sean válidos, produciendo la excepción correspondiente en caso
contrario.

Dada las posiciones de la tabla de descriptores de segmento que se adjuntan, ¿a qué direcciones físicas
accederían las siguientes instrucciones? Si alguna de ellas produce excepción, indique la causa. Por
simplicidad, las direcciones están expresadas en base decimal

a) CALL 0:0 ; Llamar a una rutina que está en la dirección 0:0


b) CALL 0:6000 ; Llamar a una rutina que está en la dirección 0:6000
c) MOV BX, 1:1000 ; Mover lo que hay en la dirección 1:1000 al registro BX
d) MOV 1:3000, AX ; Mover lo que hay en el registro AX a la dirección 1:3000

Nº Descriptor base tamaño RWX


0 15000 1000 101
1 9000 6000 100

a) 15000 (1500 + 0) c) 10000 (9000+1000)

b) Excepción: desplazamiento no válido d) Excepción: segmento no permite


escritura

En un sistema operativo que se ejecuta sobre un sistema que hace uso de segmentación se implementa
la llamada al sistema fork(), que crea un proceso hijo cuyo espacio de memoria es copia de su
creador. ¿Cómo implementaría esta llamada para evitar que en el momento de su ejecución haya que
copiar todos los segmentos del proceso padre al proceso hijo?

Se podría hacer uso de la técnica de copia en caso de escritura de cada uno de los
segmentos. Todos los segmentos del padre se establecerían como de sólo lectura, y los
segmentos del hijo, copiarían la base y desplazamiento de todos los segmentos del
padre, estando marcados también como de sólo lectura. Cuando uno de los procesos
intentase modificar uno de sus segmentos, se detectaría el intento de escritura en un
segmento de solo lectura, y entonces se realizaría la copia efectiva del segmento,
reestableciéndose en ambos segmentos el permiso de escritura, una vez realizada la
copia.
Tema 9
Un proceso que durante su ejecución realiza en total A accesos a memoria, hace referencia a P páginas
distintas. Si se ejecuta con M marcos de memoria, ¿cuántos fallos de página provocará como mínimo?
¿Y como máximo?

Como mínimo, provocará tantos fallos como páginas distintas referencia, es decir, P.
En el peor de los casos, podría llegar a producir un fallo de página por acceso, es decir,
A.

Un equipo de desarrolladores diseña un nuevo criterio de sustitución. Dicho criterio se simula


mediante una herramienta que genera varias cadenas de referencias típicas y calcula la curva paracorde
para dichas cadenas, tanto para el nuevo criterio como para los criterios MIN y MAX. A la vista de los
resultados, ¿cree que el nuevo criterio da buenos resultados? ¿Por qué?

Fallos de página No, no da buenos resultados,


MAX porque aunque la curva es próxima
a la del algoritmo óptimo, vemos
que tiene una región creciente, de
donde se deduce que produce la
anomalía de Belady. Esto no es
admisible en un algoritmo de
sustitución.

MIN

Nº de marcos

Un equipo de desarrolladores diseña un nuevo criterio de sustitución. Dicho criterio se simula


mediante una herramienta que genera varias cadenas de referencias típicas y calcula la curva paracorde
para dichas cadenas. A la vista de dicha curva paracorde, ¿cree que el nuevo criterio da buenos
resultados? ¿Por qué?

Fallos de página No porque número de fallos de


página obtenidos es inversamente
proporcional al número de marcos.
Esto es el resultado que cabría
esperar si se realizase una
sustitución aleatoria de páginas.
Si el algoritmo produce un resulta
equivalente a la sustitución
aleatoria, es evidente que es un
mal criterio de sustitución.

Nº de marcos
NOTA: Otra forma de plantearlo es que este sería también el resultado obtenido si no se
cumpliese el principio de localidad. Dado que empíricamente se sabe que dicho
principio se cumple, significa que el criterio de sustitución no lo tiene en cuenta. Es por
consiguiente un mal criterio de sustitución.

En un sistema de memoria virtual en el que se usa LRU como criterio de sustitución, un proceso
realiza la siguiente cadena de referencias:

0,1,2,3,4,5,6,7,8,5,6,7,1,2,3,4,5,9,8,7,6,10,11,12,13,14,5,4,3,2,1,9,7,6,5,4,3,2,12,13,0,1,2,1,2,3,4,2,3,5

¿Qué páginas estarían cargadas en memoria al final del proceso, si se ejecutase con 7 marcos?

Dado que el algoritmo LRU sustituye siempre la página que lleva más tiempo sin
usarse, matiene siempre en memoria las que hace menos tiempo que se han usado. Por
tanto, al final de la cadena, estarían cargadas en memoria las páginas
5,3,2,4,1,0,13.

En un sistema multiprogramado con memoria virtual, ¿qué ventaja tiene que el criterio de sustitución
se efectúe de forma local frente a efectuarlo de forma global? ¿Y qué inconveniente?

Ventaja: El criterio de sustitución trabaja sólo sobre las páginas del proceso, lo cual es
más eficiente que elegir la página víctima de entre todas las páginas del sistema
(trabaja sobre un conjunto menor).

Inconveniente: El número de marcos asignado al proceso permanece constante e igual


a la asignación inicial. Dicha asignación es crítica pues si se asignan menos marcos
que páginas hay en el mayor conjunto de trabajo puede haber hiperpaginación, y eso
es algo que no se puede conocer de antemano.

Durante su ejecución un proceso hace referencia a 3800 páginas distintas. La ejecución del proceso
consta de cinco fases de ejecución, habiendo 2300, 1200, 50, 900 y 850 páginas en el conjunto de
trabajo de cada fase. Si el criterio de sustitución se aplica de forma local, ¿cuántos marcos se deberían
asignar al proceso como mínimo en el momento de su creación, para garantizar que no producirá
hiperpaginación?

Habría que asignar marcos suficientes para contener el mayor de sus conjuntos de
trabajo. Es decir, 2300 marcos.

En un sistema con memoria virtual se utiliza sustitución por envejecimiento como criterio de
sustitución de páginas, asociando a cada página una variable de 16 bits y actualizando dichas variables
cada 2 milisegundos. Si la variable asociada a una página vale 0 en un momento dado, ¿quiere esto
decir que dicha página no se ha utilizado? En caso contrario, indíquese cuánto tiempo hace como
mínimo que no se accedió por última vez a dicha página.
Si la página está cargada en memoria, es porque se ha usado. Ahora bien, si su
variable asociada vale 0, es porque ha sido desplazada al menos 16 veces. Dado que se
desplaza cada 2 milisegundos, significa que hace al menos 32 milisegundos que no se
usa.

En un sistema con memoria virtual en el que se utiliza el algoritmo LRU (página usada menos
recientemente) como criterio de sustitución, se ejecuta un proceso que ejecuta la siguiente cadena de
referencias: 0,1,2,1,3,2,1,4,5,1,2,4,0,5,6. ¿Cuántos fallos de página se producirían si el proceso se
ejecuta con 5 marcos? Indique cuáles de ellos se deben al arranque en frío. Indique cada vez que
efectúe una sustitución qué página sustituye a qué página.

0 1 2 1 3 2 1 4 5 1 2 4 0 5 6
0 1 2 1 3 2 1 4 5 1 2 4 0 5 6
0 1 2 1 3 2 1 4 5 1 2 4 0 5
0 0 2 1 3 2 1 4 5 1 2 4 0
0 0 0 3 2 2 4 5 1 2 4
0 3 3 3 3 5 1 2

A.F. A.F. A.F. A.F. A.F. 5R0 0R3 6R1

Notas:
- xRy = Página x Sustituye a página y
- A.F.= Arranque en Frío

En un supuesto sistema con memoria virtual en el que se utilizase el criterio LRU (página accedida menos
recientemente) para la sustitución de páginas, se ejecuta un proceso que efectúa la siguiente cadena de
referencias: 1,2,1,3,4,5,1,4,5,6,1,5,6,5,2. Realice la traza del algoritmo si se ejecutase esta cadena de referencias
con cuatro marcos, indicando para cada acceso si produce o no fallo de página, y en caso de producirlo, indique
si el fallo se debe al arranque en frío o en caso contrario qué página sustituye cual.

¿Cuántos fallos pueden ocurrir como máximo si se utilizasen 5 marcos?

1 2 1 3 4 5 1 4 5 6 1 5 6 5 2
1 2 1 3 4 5 1 4 5 6 1 5 6 5 2
1 2 1 3 4 5 1 4 5 6 1 5 6 5
2 1 3 4 5 1 4 5 6 1 1 6
2 1 3 3 3 1 4 4 4 4 1
AF AF AF AF 5R2 6R3 2R4

Ocurren un total de 7 fallos de página, 4 debidos al arranque en frío y 3 en


caliente. Si se utilizasen 5 marcos, como el criterio LRU verifica la propiedad
de pila, el número de fallos de página no puede aumentar. Por tanto, como
mucho, ocurrirían siete fallos de página.

Enuncie la propiedad de pila que pueden cumplir los criterios de sustitución. ¿Qué interés tiene poder
demostrar que un criterio de sustitución verifique esta propiedad?

Sea M(m,t) el conjunto de páginas de una cadena de referencia cargadas en memoria


en un instante t haciendo uso de m marcos. Se dice que un algoritmo verifica la
propiedad de pila si se cumple  t : M(m,t)  M(m+1,t)

El interés que tiene esta propiedad es que se demuestra que los algoritmos que la
verifican no pueden producir la anomalía de Belady.
Tema 10
Un reproductor multimedia tiene como interfaz de usuario el receptor de infrarrojos del mando a
distancia. Este es un dispositivo que al recibir un comando del mando, pone a 1 un bit de su registro de
estado, para permitir su gestión por sondeo, y puede también ser configurado para además de ello,
producir una interrupción. Una vez que el bit de estado se pone a 1, el código del comando recibido se
puede leer de un registro de datos. ¿Cómo debería gestionar este dispositivo el sistema operativo del
reproductor? ¿Por sondeo o por interrupción? ¿Por qué? (2 puntos).

Debería gestionarlo por interrupción, ya que se trata de un dispositivo de carácter


“asíncrono” en el sentido de que es imposible conocer de antemano cuándo va a
requerir atención. Si se gestionase por sondeo, el reproductor debería garantizar que
se sondea continuamente, y esto podría ser complicado simultanear con las demás
actividades que deba llevar a cabo.

Un procesador dedicado exclusivamente a la gestión de dispositivos controla mediante entrada/salida


guiada por programa tres dispositivos DSP1, DSP2 y DSP3., mediante el siguiente bucle de control en
el que el dispositivo DSP1 se atiende por prioridad uniforme respecto a DSP2 y DSP3, y estos dos se
atienden por prioridad escalonada entre ellos, siendo DSP2 más prioritario que DSP3:

while(true) A la vista del bucle de control, y sabiendo que


{ los tres dispositivos tienen el mismo tiempo de
if (dispositivo_preparado(DISP1)) servicio T, ¿qué tiempo de respuesta al
atender_dispositivo(DISP1)); dispositivo se puede garantizar para el
dispositivo DISP1? ¿Y para DISP2? ¿Y para
if (dispositivo_preparado(DISP2)) DISP3?
atender_dispostivo(DISP2));
else
if dispostivio_preparado(DISP3))
atender_dispositivo(DISP3));
}

Para DISP1: Para DISP1, podemos garantizar que el tiempo de respuesta al


dispositivo será menor o igual que T, pues de los dos dispositivos restantes
(DISP2 o DISP3) sólo se atenderá uno de ellos en cada iteración del bucle, con
lo que en el peor de los casos, tendría que esperar a que se termine de atender
un dispositivo antes de ser sondeado.

Para DISP2: Para este dispositivo se puede garantizar que el tiempo de respuesta
será menor que 2T, pues, tras quedar preparado para recibir servicio, en el peor
de los casos tendría que esperar a que DISP3 terminase de ser atendido, y que
posteriormente DISP1 fuese también atendido.

Para DISP3: Para este dispositivo no se puede garantizar nada, pues al


atenderse con prioridad escalonada respecto a DISP2, su servicio puede ser
indefinidamente aplazado por dicho dispositivo. Dicho en otras palabras, si
DISP2 siempre estuviese preparado, no se atendería nunca.
Tema 11
Se desea construir un sistema orientado a la reproducción de archivos multimedia. El uso que se hace
de los discos en este tipo de sistema se caracteriza porque se procesa secuencialmente archivos de muy
gran tamaño que ocupan normalmente bloques de discos físicamente contiguos, requiriendo mantener
constante una elevada tasa de transferencia durante todo el proceso. Para este sistema, podemos elegir
entre dos modelos de disco de igual capacidad y similar precio cuyas características se muestran en la
siguiente tabla. ¿Cuál de los discos sería el más adecuado para nuestro sistema? ¿Por qué?

Modelo Velocidad de rotación Tiempo medio de búsqueda


ST380020ACE 5.400 r.p.m. 8,9 ms
ST380021A 7.200 r.p.m. 9,5 ms

Sería preferible el modelo ST380021A, que si bien tiene un menor tiempo medio de
búsqueda, tiene una mayor velocidad de rotación. El tiempo de búsqueda no va a
tener un impacto relevante con la aplicación que se le va a dar al disco, dado que al
transferir mayoritariamente sectores contiguos, el tiempo de búsqueda va a ser o bien
cero, o el tiempo de salto entre pistas consecutivas cuando se termine de procesar un
todos los sectores de un cilindro. Sin embargo, la velocidad de rotación sí que tiene un
impacto sobre el tiempo de transferencia, que será el que determinará la tasa de
transferencia de datos en la aplicación multimedia.

Se desea construir un sistema orientado a su uso como servidor de bases de datos. El uso que se hace
de los discos en este tipo de sistema se caracteriza porque se realiza gran cantidad de accesos directos a
posiciones aleatorias del disco, transfiriéndose en cada acceso unos pocos sectores, frecuentemente, un
solo sector. Para este sistema, podemos elegir entre dos modelos de disco de igual capacidad y similar
precio cuyas características se muestran en la siguiente tabla. ¿Cuál de los discos sería el más
adecuado para nuestro sistema? ¿Por qué?

Modelo Velocidad de rotación Tiempo medio de búsqueda


ST380020ACE 5.400 r.p.m. 8,9 ms
ST380021A 7.200 r.p.m. 9,5 ms

Sería preferible el modelo ST380020ACE, ya que su tiempo medio de búsqueda es menor,


y, si bien el otro disco tiene una mayor velocidad de rotación, en la aplicación a la
que va dirigido el impacto del tiempo de búsqueda va a ser mayor, ya que el disco
hará frecuentes accesos a posiciones aleatorias, transfiriéndose pocos sectores en cada
acceso, con lo que nos beneficiaremos poco de una menor demora de rotación y un
menor tiempo de transferencia.

En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 17,
24, 20, 32, 12, 37, 8, 30. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el
cilindro 22, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por SSTF,
SCAN, SCAN circular (C-SCAN), o N-SCAN con N=4. Considere como preferente el sentido
ascendente.
1º 2º 3º 4º 5º 6º 7º 8º
SSTF 24 20 17 12 8 30 32 37
SCAN 24 30 32 37 20 17 12 8
C-SCAN 24 30 32 37 8 12 17 20
4-SCAN 24 32 20 17 30 37 12 8

En un sistema en el que la mayor parte del procesamiento que se realiza implica el recorrido secuencial
de archivos que ocupan mayoritariamente bloques de disco físicamente contiguos, se comprueba que
desde que se termina de transferir un sector hasta que se recibe la petición para el siguiente transcurre
por término medio unos 0,15ms, con una varianza muy reducida. Sabiendo que el disco gira a 12.000
rpm y que tiene 50 sectores por pista, ¿cuántos sectores intercalaría para optimizar el rendimiento del
disco?

Si el disco gira a 12.000 rpm , el tiempo que tarda en realizar una única revolución es
60/12.000= 5x10-3s. Como el disco tiene 50 sectores, el tiempo que tarda en pasar un
sector por debajo de las cabezas lectoras es 5x10 -3/50= 0,1ms. Como entre petición y
petición suelen transcurrir unos 0,15ms, es necesario por tanto intercalar dos sectores
para que en caso de recibir peticiones de transferencias de sectores consecutivos no
haya que esperar una rotación completa.

Un reproductor multimedia usa un disco magnético con organización de pistas ZBR para la grabación
y reproducción de video. El administrador de archivos de su sistema operativo, para optimizar la tasa
de transferencia, intenta siempre que puede asignar bloques consecutivos a los archivos de video y
además de ello, a ser posible, asigna preferentemente los bloques de los cilindros más externos, pues al
ser el disco ZBR, se transfieren más rápido. En la nueva versión del reproductor el disco magnético se
sustituye por un SSD. Si no tenemos la garantía de que la unidad SSD lleve a cabo Wear Leveling de
ningún tipo, ¿Recomendaría hacer algún cambio a la administración de archivos?

Si el administrador de archivos mantuviese la misma política con la unidad SSD, y


esta no hiciera Wear Leveling, esta forma de gestión conllevaría un desgaste
prematuro de los sectores que asigna preferentemente, pues el número de borrado de
cada celda es limitado en este tipo de unidades. Además no obtendría beneficio
alguno con ello pues todos los sectores de una unidad SSD tienen el mismo tiempo de
acceso.

En un sistema, a fin de mejorar las prestaciones del acceso a disco, se sustituye el disco magnético por
una unidad SSD. El administrador de archivos de dicho sistema, cuando ha de asignar un nuevo bloque
a un archivo, asigna siempre que puede bloques que se usaron previamente en archivos que ya se han
borrado. ¿Le parece esta política de asignación adecuada para su uso con una unidad SSD? ¿Por qué?

No, porque a menos que la unidad implemente Wear Leveling, este método tendería a reutilizar
una y otra vez los mismos bloques de la unidad. Las celdas flash sobre as que se almacenan los
bloques de una unidad SSD soportan un número limitado de borrados, con lo que tenderá a
alcanzar dicho número máximo de borrados de los primeros bloques que se asignen en la
unidad, dejando sin utilizar los demás. Es preferible un criterio de asignación que tienda a
usar por igual todos los bloques de la unidad.
Y ya puestos… ¿se le ocurre algún criterio de asignación más adecuado que el anterior, para su uso
con discos magnéticos? ¿Cuál?

En un disco magnético siempre que se pueda se debería asignar a un archivo el siguiente bloque
físicamente adyacente al último bloque asignado.

¿Por qué no funciona un ratón óptico sobre la superficie de un espejo?

Porque la cámara del ratón detectaría siempre la misma imagen: el propio reflejo del
ratón. Por tanto, al calcular la diferencia entre dos imágenes consecutivas, el vector
de desplazamiento resulta ser siempre cero.

Un fabricante de hardware de bajo coste diseña un teclado extremadamente simple que por cada
pulsación del usuario envía el código de la tecla a través de una interfaz USB. ¿Serviría este teclado
para usarlo con un PC con Windows, por ejemplo?

No, no serviría, ya que al no informar de los instantes de pulsación y liberación de


cada tecla, no podríamos detectar combinaciones de teclas, como CTRL-ALT-SUPR, o
ALT-1,2,6, etc. Estas combinaciones son necesarias en Windows.

Un fabricante de hardware de bajo coste diseña un ratón extremadamente simple que además de
informar del movimiento del ratón, informa de las pulsaciones de cada tecla enviado a través de la
interfaz USB tras cada pulsación un único dato, consistente en el código de la tecla que se ha pulsado.
¿Serviría este ratón para usarlo con un PC con Windows?

No, no serviría, puesto que para su uso con Windows (y cualquier otra interfaz
gráfica de usuario) es necesario conocer el estado de los botones del ratón, por
ejemplo, para poder arrastrar y soltar iconos (es necesario conocer que el
botón izquierdo permanece pulsado mientras se mueve el ratón).
Tema 12
En un sistema de archivos de tipo UNIX, el tamaño del bloque es de 4K y se utilizan 32 bits para
representar los números de bloque. En dicho sistema, ¿cuántos bloques habría que transferir en el peor
de los casos para realizar un acceso directo a la posición 8192000 de un archivo? Suponga que el
nodo-i ya ha sido transferido

La posición que se desea transferir está en el bloque lógico nº 8192000/4096= 2000.


Las referencias a los 10 primeros bloques están en el nodo-i. En el bloque indirecto
simple, caben 4096 / 4 = 1024 referencias más. Por tanto, el bloque que hemos de
transferir no está referido en el indirecto simple, sino que está referido a través de un
indirecto doble que refiere a otro indirecto simple. Por tanto, hay que transferir (véase
ilustración) tres bloques: (1) Indirecto doble, (2) Indirecto simple, y (3) el bloque de
datos en cuestión.

En un sistema de archivos FAT, se tienen las entradas de directorio que se muestra en la tabla de la
izquierda (por simplicidad, sólo se muestra el nombre de archivo y el número del primer bloque).
Teniendo en cuenta el fragmento de la FAT que se muestra a continuación, indique qué incoherencias
encuentra en el sistema de archivos. Escriba en la tabla de la derecha qué correcciones haría en la FAT
para resolver dichas incoherencias.
0 - -
Archivo Nº Primer bloque 1 - -
F1 2 2 3 3
F2 6 3 4 4
F3 12 4 5 EOF
F4 16 5 BAD BAD
6 7 7
Incoherencias detectadas: 7 8 8
8 9 9
1. El archivo F1 tiene asignado un 9 FREE EOF
bloque defectuoso. 10 FREE FREE
NOTA: no es una buena solución 11 FREE FREE
sustituir la marca BAD de dicho 12 13 13
bloque por EOF, dado que existe la 13 14 14
posibilidad de que dicho bloque 14 15 15
realmente sea no usable. Dicha EOF
15 EOF
solución sólo es admisible si
16 13 EOF
previamente se comprueba que el
… … …
bloque es utilizable y está
erróneamente marcado como BAD.
La mejor solución es marcar el
bloque 4 como EOF

2. El archivo F2 tiene asignado un bloque marcado como FREE.


NOTA: la solución pasa por marcar como EOF o bien el mismo bloque
actualmente marcado como FREE (el 9) o su antecesor, el 8. De estas dos
soluciones, sería preferible la primera, para que en caso de que se hubiese escrito
algo en bloque 9, dicha información no se pierda.

3. Los archivos F3 y F4 tienen un vínculo cruzado a partir del bloque 13. La


solución pasa o bien por truncar uno de los dos archivos, o bien ambos, o por
copiar la cadena compartida sobre otra cadena y asignar dicha cadena a uno
de los archivos. Aunque la mejor solución sería la última, la probabilidad de
éxito es pequeña por la posibilidad de que ambos archivos hayan quedado
corruptos al haber sido actualizada la parte compartida por los respectivos
procesos que usan ambos archivos. En este caso, ha truncado el archivo F4 .

3. En un sistema de archivos FAT existen tres archivos compuestos por los bloques que se muestran en
la tabla de la izquierda. Sabiendo que los bloques 5 y 6 tienen sectores defectuosos y que los bloques
que no están ni en uso ni defectuosos se supone que están libres, rellene la FAT que aparece a la
derecha. (3 puntos)
0 -
Archivo Bloques 1 -
f1.txt 2
2 EOF
prueba.dat 3,7,8,12
prueba.exe 9,10, 11,13,15,16 3 7
4 FREE
Nota: las entradas 0 y 1 5 BAD
están reservadas. 6 BAD
7 8
8 12
9 10
10 11
11 13
12 EOF
13 15
14 FREE
15 16
16 EOF
… …

En la reserva de disco, ¿qué ventaja tiene la reserva de escritura diferida (también llamada reserva de
lectura y escritura) sobre la reserva de escritura directa (también llamada reserva de lectura)? ¿Y qué
inconveniente(s)?

Como ventaja, gracias a la reserva de escritura diferida, la escritura también se


beneficia de la reserva de disco. De lo contrario, toda operación de escritura
implicaría inmediatamente una transferencia a disco. Como inconveniente, existe el
riesgo de que alguna escritura pueda no llegar al disco si tras realizarse (y
actualizarse la reserva) se produce una caída del sistema, o si el medio es extraido sin
esperar la actualización, etcétera.

En un sistema de archivos el espacio de disco se asigna a los archivos de forma contigua, siendo el
tamaño del bloque de disco de 4K. En dicho sistema de archivos, existe un archivo de 20Mb cuyo
primer bloque asignado es el 2000. ¿Qué bloque de disco habría que transferir para acceder de manera
directa a la posición 4096000 del archivo?

Habría que acceder al bloque lógico del archivo nº 4096000/4096= 1000

Dado que la asignación de espacio es contigua, el bloque físico con el que corresponde
este bloque lógico es 2000 + 1000 = 3000. Por tanto, habría que transferir el bloque
número 3000 del disco.
En un sistema de archivos FAT, se dispone de la siguiente información en un directorio y en la FAT. Sabiendo
que el bloque de disco es de 1K, ¿qué bloque se debería transferir si un proceso solicitase la lectura del byte en
la posición 5200 del archivo datos.dat?

Nombre Extensión Atributos Fecha Hora Tamaño 1er Bloque 0 -


prueba avi A 12/01/2009 01:00 12341244 1004 1 -
datos dat A 11/10/2008 12:34 124000 4 2 EOF
… … … … … … … 3 EOF
4 7
La posición lógica 5200 se encuentra en el bloque lógico 5 EOF
5200/1024= 5,07 del archivo, es decir, el sexto bloque, o el
6 EOF
7 8
bloque lógico número 5 (puesto que el primer bloque lógico es
8 9
el 0). Para obtener el número de bloque físico que
9 10
corrersponde a dicho bloque lógico recurrimos al directorio y
10 11
a la FAT. El bloque lógico 0 es el 4 (se obtiene del directorio) y
11 12
los restantes, obtenidos de la FAT siguiendo los enlaces, el 7, el 12 2100
8, el 9, el 10, y el que buscamos, el 11. 13 FREE
14 15
Habría que transferir pues el bloque nº 11. 15 16
16 EOF
… …
Tema 13
En un sistema, la protección del sistema de archivos se lleva a cabo mediante una matriz de control de acceso.
En el sistema, se definen cuatro dominios D1, D2, D3 y D4. Los procesos de usuario se adscriben al dominio
D1 cuando comienzan su ejecución.

A la vista del siguiente fragmento de la matriz de control de acceso, ¿puede en este sistema un proceso de
usuario…

a) … leer el archivo F1? c) … copiar el archivo F1 sobre F3?


b) … leer el archivo F2? d) … copiar el archivo F2 sobre F4?

F1 F2 F3 F4 D1 D2 D3 D4
Leer
D1 Escribir Entrar
Escribir
D2 Leer Escribir Entrar
D3 Leer Escribir Entrar
Leer Leer
D4 Escribir Leer
Escribir Escribir

a) Si, en el dominio D1 directamente se tiene el permiso Leer sobre el archivo F1


b) Sí, el archivo F2 se puede leer en el dominio D2, y se puede entrar en dicho
dominio desde D1
c) Sí, para copiar el archivo F1 sobre F3 es necesario disponer simultáneamente de
permiso de lectura sobre F1 y de escritura sobre F3. Esta situación se da en el
dominio D3, al cual se puede acceder desde D2 y al cual se puede acceder desde
D1
d) No, no hay ningún dominio de protección en el que se pueda simultáneamente
leer F2 y escribir F4.

Exprese la información relativa a la protección de acceso los archivos del anterior ejercicio mediante una lista
de control de acceso

F1: [D1, (Leer,Escribir)], [D3, (Leer)], [D4, (Leer, Escribir)]


F2: [D2, (Leer)], [D4, (Escribir)]
F3: [D2, (Escribir)], [D3, (Escribir)], [D4, (Leer)]
F4: [D1, (Escribir)], [D4, (Leer, Escribir)]

Un empleado de una empresa descarga un conocido compresor gratuito de una web. Al instalar dicho
programa, el ejecutable contenía código malintencionado que se ejecutó previa a la ejecución del
compresor y que modificó el sector de arranque de su máquina, insertado código que la siguiente vez
que arrancó su máquina, se cargó bajo el sistema operativo, de forma que a partir de ese momento, el
archivo ejecutable de toda aplicación que se ejecutaba resultaba modificado insertando una copia del
código que traía el compresor. De esta forma, este código malintencionado terminó propagándose a las
demás máquinas de la empresa. Finalmente, dicho código terminó inutilizando los discos de la
empresa. El responsable de informática de la empresa, acusó al empleado de que por su culpa habían
sido víctimas del ataque de un troyano. ¿Está de acuerdo con ello?

No, puesto que el software malintencionado (malware) que ha llegado en el archivo


descargado ha *infectado* código tanto del sistema operativo (sector de arranque)
como de aplicaciones, y además se ha reproducido, esta forma de actuar se
corresponde con la de un virus, concretamente, un virus parásito y de arranque.

Un usuario de informática doméstica se conecta a una web que le han recomendado, de la que descarga una
aplicación para crear enlaces de descarga Premium y poder descargar sus películas a toda velocidad. La
aplicación, una vez instalada, no cumple con las expectativas… pero sin que el usuario lo sepa, le ha instalado
un servidor en su máquina mediante la cual el desarrollador de dicho servidor consigue acceso total a su
máquina, robándole su certificado digital, algunas fotografías personales e instalándole una aplicación que usa
su máquina para el envío masivo de correo basura. El usuario percibe que su máquina funciona de forma
extraña, por lo que solicita colaboración de un amigo experto, que le indica que su máquina ha sido infectada
por un virus. ¿Está de acuerdo en dicha afirmación?

No porque no se aprecia dos de los comportamientos característicos de un virus,


que son (1) capacidad por reproducirse y (2) infección de código. Dado que el
software malintencionado venía camuflado en un programa de aspecto
inofensivo y simplemente ha robado información y tomado control de la
máquina poniéndola a disposición de otro usuario, este comportamiento se
corresponde claramente con el de un troyano.

Das könnte Ihnen auch gefallen