La multiprogramación se hizo necesaria en esta generación porque

Anuncio
Sistemas Operativos – Bloque 1
Titulación: □ ITIS □ ITIG
Apellidos:………………………………………………………….
Primera Convocatoria Curso 06-07
Tiempo: 20 minutos
Nombre:…………………………
1. ¿Qué fue lo que hizo necesaria la multiprogramación en la tercera generación de ordenadores? (3 puntos)
La multiprogramación se hizo necesaria en esta generación porque la velocidad de funcionamiento de la CPU
superaba ya en varios órdenes de magnitud a la velocidad de los dispositivos de entrada/salida, y resultaba
inadmisible mantener la CPU desocupada durante la realización de este tipo de operaciones.
2. Un programador algo novato utiliza un semáforo contador para controlar el acceso a un recurso compartido,
y escribe el siguiente protocolo de entrada a la región crítica de dicho recurso:
/* Inicialización: */
semáforo s=0;
boolean ocupado=false;
. . .
Sin necesidad de ver el protocolo de salida de la región
crítica, ¿encuentra algún posible problema en el código
que aparece a la izquierda? En caso afirmativo, escriba
el protocolo de entrada y de salida correcto, modificando si es necesario el código de inicialización (3
puntos).
/* protocolo de entrada: */
if (ocupado)
down(s);
ocupado= true;
<Región crítica>
...
Nótese que el programador está usando un semáforo inicialmente cerrado (con valor 0 en su contador) para,
comprobando el valor de una variable externa, decidir si se detiene en el semáforo o prosigue la ejecución.
Dicho de otra forma, está usando el semáforo para simular el comportamiento de la primitiva sleep(). El
problema que esto tiene es que al no ser atómica la comprobación de la variable ocupado con la acción de o
bien (a) detener el proceso en el semáforo o bien (b) cerrar la sección crítica, una conmutación que se produjese
justo tras la comprobación de la variable ocupado podría tener como consecuencia que o bien dos procesos se
detuviesen en el semáforo o bien que dos procesos entrasen en la sección crítica.
3. En un sistema se ejecutan cuatro procesos que comparten cuatro tipos de recursos. En un momento dado, la
matriz S representa las peticiones pendientes de satisfacer, la matriz A representa los recursos asignados, y el
vector D los recursos actualmente disponibles. En esta situación, el proceso P1 solicita una instancia del
recurso recurso R4. ¿Lleva esta petición al sistema a un estado de interbloqueo? (4 puntos)
P1
S= P2
P3
P4
R1 R2 R3 R4
0
0
2
1
0
0
0
1
0
1
0
0
1
0
0
0
P1
A= P2
P3
P4
R1 R2 R3 R4
1
1
0
0
0
0
2
2
1
0
0
1
0
2
2
0
D=
R1 R2
2
0
R3 R4
0
0
Dado que no hay ninguna instancia de R4 para satisfacer la petición de P1, dicha petición queda pendiente
con lo que actualizamos la matriz S de la siguiente forma:
0

0
S= 
0

1

0
0
1
0
2
0
0
0
2

1
0

0 
A continuación comprobamos que con el actual vector de disponibles,
D= 2 0 0 0
El proceso P4 puede ver satisfecha su petición, liberando sus recursos asignados con lo que obtenemos un
nuevo vector de disponibles
D’= 2 0 0 0 + 0 2 2 0 = 2 2 2 0
Con este vector, el proceso P3 también puede satisfacer sus peticiones, obteniéndose el nuevo vector de
disponibles
D’’= 2 2 2 0 + 1 0 0 1 = 3 2 2 1
Con el que se puede satisfacer ya las peticiones pendientes de P2, obteniendo el vector
D’’’= 3 2 2 1 + 0 0 2 2 = 3 2 4 3
Con el que se puede satisfacer por fin las peticiones pendientes de P1, con lo que todos los procesos pueden
proseguir la ejecución, por lo que no se ha llegado a una situación de interbloqueo.
Sistemas Operativos – Bloque 2
Titulación: □ ITIS □ ITIG
Apellidos:………………………………………………………….
Primera Convocatoria Curso 06-07
Tiempo: 20 minutos
Nombre:…………………………
1. En un sistema en el que las direcciones de memoria son de m bits, de los cuales n son el número de página
y m-n el desplazamiento dentro de la página, ¿Puede comenzar una página en cualquier dirección de
memoria? Justifique brevemente su respuesta. (3 puntos)
No. Una página no puede comenzar en cualquier dirección de memoria, sólo puede hacerlo en una dirección
múltiplo del tamaño de la página, pues en una dirección paginada el número de página viene determinado
por los n bits de más peso de la dirección, con lo que la dirección base de una página (dirección de comienzo)
n
n

 m

será siempre de la forma x x ... x x0 0 ... 0 0 .
2. En un sistema con memoria virtual en el que se utiliza sustitución por envejecimiento como criterio de
reemplazo de página, asociando a cada página un entero de 16 bits que se actualiza según el algoritmo de
envejecimiento cada 1 ms, hay páginas cuyo entero asociado vale 0. ¿Quiere decir esto que dichas páginas
nunca se han utilizado? En caso de que sí se hubiesen utilizado, ¿cuánto tiempo hace como mínimo que no se
refieren? (3 puntos)
Indudablemente, si las páginas están cargadas en memoria es porque se han utilizado en algún momento.
Dado que la sustitución por envejecimiento, cada vez que actualiza el entero asociado a cada página lo
desplaza hacia la derecha e introduce el bit R de la página en la posición más significativa, para que el
contador haya quedado a 0 es necesario que en más de 16 milisegundos la página no haya sido referenciada.
3. En un sistema de archivos basado en FAT, tenemos la siguiente información al principio de la FAT, y en
las entradas de directorio de los archivos F1, F2, F3 y F4. ¿Qué bloques componen estos archivos? ¿Encuentra
alguna incoherencia en el sistema de archivos? (4 puntos).
Archivo
F1
F2
F3
F4
Nº 1er Bloque
5
2
6
8
F1: bloques 5, 7 y 9
F2: bloques 2 y 3
F3: bloques 6, 11, 12 y 13, pero aquí hay un
error, y es que se ha asignado a este archivo el
bloque 13 que está defectuoso.
F4: bloque 8.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
…
-
3
EOF
FREE
7
11
9
EOF
EOF
FREE
12
13
BAD
BAD
FREE
FREE
…
Descargar