Relación de problemas - Sistemas Operativos I Temas 1 y 2

Anuncio
Sistemas Operativos I
Relación de problemas
Relación de problemas - Sistemas Operativos I
Temas 1 y 2: Introducción a los sistemas operativos, y
Procesos y hebras
1.
Diga cuales de las siguientes operaciones pueden realizarse únicamente en modo supervisor,
o modo kernel:
a) Consultar la hora del sistema.
b) Cambiar la fecha del sistema.
c) Leer una pista/sector de un disco magnético.
d) Generar una interrupción software.
e) Generar una interrupción.
f) Modificar la dirección de un vector de la tabla de vectores de interrupción.
g) Deshabilitar las interrupciones.
2.
En el caso de un ordenador que se vaya a usar únicamente para un único usuario, ¿qué interés
puede tener la existencia de los modos de funcionamiento supervisor/usuario?
3.
¿Cuál de las siguientes combinaciones no es factible? Justifíquelo detalladamente.
a) Spooling en un sistema monousuario.
b) Procesamiento por lotes (batch) con multiprogramación.
c) Tiempo compartido sin multiprogramación.
d) Multiprogramación en un sistema monousuario.
4.
Cuestiones sobre procesos, y asignación de CPU:
a) ¿Es necesario que lo último que haga todo proceso antes de finalizar sea una llamada al
sistema para finalizar? ¿Sigue siendo esto cierto en sistemas monoprogramados?
b) Cuando el controlador de un dispositivo produce una interrupción ¿se produce
necesariamente un cambio de contexto?, ¿y cuando se produce una llamada al sistema?
c) Cuando un proceso se bloquea, ¿deberá encargarse él directamente de cambiar el valor de
su estado en el descriptor de proceso o PCB?
d) Sea un proceso que cambia de Ejecutándose a Bloqueado, ¿puede este cambio provocar un
cambio de estado en otros procesos? Si es así, ¿en qué casos?
e) Idem para el cambio de estado Bloqueado a Ejecutable.
5.
¿Qué debería hacer el planificador a corto plazo cuando es invocado pero no hay ningún
proceso en la cola de ejecutables?
6.
¿Qué algoritmos de planificación quedan descartados para ser utilizados en sistemas de
tiempo compartido?
7.
La representación gráfica del cociente [(tiempo_en_cola_ejecutables + tiempo_de_CPU) /
tiempo_de_CPU ] frente a tiempo_de_CPU suele mostrar valores muy altos para ráfagas muy
cortas en casi todos los algoritmos de asignación de CPU. ¿Por qué?
8.
En los primeros ordenadores, cada byte de datos leído o escrito, era manejado directamente
por la CPU (es decir, no existía DMA - Acceso Directo a Memoria). ¿Qué implicaciones tenía
esta organización para la multiprogramación?
9.
¿Por qué no es el intérprete de órdenes (shell) parte del propio sistema operativo?
10. El modelo cliente-servidor es muy utilizado en sistemas distribuidos, ¿puede utilizarse este
modelo en sistemas de un único computador?
Pág. 1
Sistemas Operativos I
Relación de problemas
11. Para cada una de las llamadas al sistema siguientes, especificar y explicar si su procesamiento
por el sistema operativo requiere la invocación del planificador a corto plazo:
a) Crear un proceso.
b) Abortar un proceso, es decir, terminarlo forzosamente.
c) Suspender o bloquear un proceso.
d) Reanudar un proceso (inversa al caso anterior).
e) Modificar la prioridad de un proceso.
12. Sea un sistema multiprogramado que utiliza el algoritmo Por Turnos (Round-Robin). Sea S el
tiempo que tarda el despachador en cada cambio de contexto. ¿Cuál debe ser el valor de
quantum Q para que el porcentaje de uso de la CPU por los procesos de usuario sea del 80%?
13. Sea un sistema multiprogramado que utiliza el algoritmo Por Turnos (Round-Robin). Sea S el
tiempo que tarda el despachador en cada cambio de contexto, y N el número de procesos
existente. ¿Cuál debe ser el valor de quantum Q para que se asegure que cada proceso “ve” la
CPU al menos cada T segundos?
14. ¿Tiene sentido mantener ordenada por prioridades la cola de procesos bloqueados? Si lo
tuviera, ¿en qué casos sería útil hacerlo?
15. ¿Puede el procesador manejar una interrupción mientras esta ejecutando un proceso si la
política de planificación que utilizamos es no apropiativa (sin desplazamiento)?
16. Suponga que es responsable de diseñar e implementar un sistema operativo que va a utilizar
una política de planificación apropiativa (con desplazamiento). Suponiendo que tenemos
desarrollado el algoritmo de planificación a tal efecto, ¿qué otras partes del sistema operativo
habría que modificar para implementar tal sistema? y ¿cuales serían tales modificaciones?
17. En el algoritmo de planificación FCFS, la penalización ( (t + tº de espera) / t ), ¿es creciente,
decreciente o constante respecto a t (tiempo de servicio de CPU requerido por un proceso)?
Justifique su respuesta.
18. Suponga que es el propietario de un kiosco de helados denominado Bola de Nieve. El kiosco
es atendido por un solo dependiente. La persona que desea un helado se dirige al kiosco,
solicita un único helado que cuesta 3 Ptas., espera que lo despache, paga y se marcha.
Cuando hay más de un cliente, se forma una cola, que la experiencia nos dice que nunca esta
compuesta por más de tres personas (cuando alguien se acerca y ve más de tres personas en
la cola se marcha a un competidor próximo). Un estudio de mercado indica que en media se
acercan al mostrador una persona por minuto. Supón que realizas una prueba para contratar
un dependiente y se presentan dos candidatos, Pepe y Juan. Tras la prueba, descubres que
Pepe atiende a un cliente en 20 segundos de media, mientras que Juan lo hace en 30
segundos, pero mientras que Pepe te pide un sueldo de 12 Ptas./hora Juan lo hará por 6
Ptas./hora. Teniendo todos estos factores en cuenta, ¿qué persona te trae más cuenta
contratar si te interesa obtener los mejores beneficios?
19. En la tabla siguiente se describen cinco procesos:
Proceso
Tiempo de creación
Tiempo de CPU
A
B
C
D
E
4
0
1
8
12
1
5
4
3
2
Pág. 2
Sistemas Operativos I
Relación de problemas
Si suponemos que tenemos un algoritmo de planificación que utiliza una política FIFO
(primero en llegar, primero en ser servido), calcula:
a) Tiempo medio de respuesta
b) Tiempo medio de espera
c) La penalización, es decir, el cociente entre el tiempo de respuesta y el tiempo de CPU.
20. Utilizando los valores de la tabla del problema anterior, calcula los tiempos medios de espera y
respuesta para los siguientes algoritmos:
a) Por Turnos con quantum q=1
b) Por Turnos con quantum q=4
c) El más corto primero (SJF). Suponga que se estima una ráfaga igual a la real.
21. Calcula el tiempo de espera medio para los procesos de la tabla utilizando el algoritmo: el
primero más corto apropiativo (o primero el de tiempo restante menor, SRTF).
Proceso
Tiempo de creación
Tiempo de CPU
A
B
C
D
E
0
1
3
9
12
3
1
12
5
5
22. Utilizando la tabla del ejercicio anterior, dibuja el diagrama de ocupación de CPU para el caso
de un sistema que utiliza un algoritmo de colas múltiples con realimentación con las siguientes
colas:
Cola
Prioridad
Quantum
1
2
3
1
2
3
1
2
4
y suponiendo que:
(a) los procesos entran en la cola de mayor prioridad (menor valor numérico). Cada cola se
gestiona mediante la política Por Turnos.
(b) la política de planificación entre colas es por prioridades no apropiativo.
(c) un proceso en la cola i pasa a la cola i+1 si consume un quantum completo sin bloquearse.
(d) cuando un proceso llega a la cola de menor prioridad, permanece en ella hasta que finalice.
23. Consideremos los procesos cuyo comportamiento se recoge en la tabla siguiente
Proceso
A
B
C
D
Tiempo
creación
0
1
2
4
CPU
1
1
2
4
Comportamiento
Bloqueo CPU Bloqueo CPU Bloqueo
1
2
1
2
1
2
1
1
1
1
1
2
1
-
CPU
1
-
Dibuja el diagrama de ocupación de la CPU para los siguientes algoritmos:
a) FIFO
b) Por Turnos (Round-Robin), con q=1
c) Prioridades, suponiendo que las prioridades son 3 para A y B, 2 para C, y 1 para D (mayor
número = menor prioridad).
Pág. 3
Sistemas Operativos I
Relación de problemas
d) Primero el más corto, suponiendo que la estimación de cada ráfaga coincide con la
duración de la ráfaga anterior. La estimación para la primera ráfaga es su valor real.
24. Suponga que debe maximizar la eficiencia de un sistema multiusuario y que está recibiendo
quejas de muchos usuarios sobre los pobres tiempos de respuesta (o tiempos de vuelta) de sus
procesos. Los resultados obtenidos con una herramienta de monitorización del sistema nos
muestran que la CPU se utiliza al 99'9% de su tiempo y que los procesadores de E/S están
activos solo un 10% de su tiempo. ¿Cuales pueden ser las razones de estos tiempos de
respuesta pobres y por qué?
a) El quantum en la planificación Round-Robin es muy pequeño.
b) La memoria principal es insuficiente.
c) El sistema operativo tiene que manejar mucha memoria principal por lo que las rutinas de
gestión de memoria están consumiendo todos los ciclos de CPU.
d) La CPU es muy lenta.
e) El quantum en la planificación Round-Robin es muy grande.
25. Compare el rendimiento ofrecido al planificar el conjunto de tareas multi-hebras descrito en la
tabla y bajo las siguientes configuraciones:
a) Sistema operativo multiprogramado con hebras de usuario. En este sistema se dispone de
una biblioteca para la programación con hebras en el espacio de usuario. El algoritmo de
planificación de CPU utilizado por el SO es Round-Robin con un quantum de 50 u.t.
(unidades de tiempo). El planificador de la biblioteca de hebras reparte el quantum del
proceso (tarea) entre las hebras utilizando Round-Robin con un quantum para cada hebra de
10 u.t. Suponga que no existe coste en el cambio de contexto entre hebras ni entre
procesos.
b) Sistema operativo multiprogramado con hebras kernel. El SO planifica las hebras usando
Round-Robin con un quantum de 10 u.t. Como en el apartado anterior, suponga que no
existe coste en la operación de cambio de contexto. Considere además que las operaciones
de E/S de un proceso únicamente bloquean a la hebra que las solicita.
Suponga en ambos casos que los dos procesos están disponibles y que el planificador entrega
la CPU al proceso P1. Para realizar la comparación represente en cada caso el diagrama de
ocupación de CPU y calcule el grado de ocupación de la CPU (tiempo CPU ocupada \ tiempo
total).
Proceso Hebras Ráfaga de CPU
Hebra 1
20
Hebra 2
30
P1
Hebra 3
10
P2
Hebra 1
Hebra 2
30
40
Comportamiento
Tiempo de E/S Ráfaga de CPU
30
10
30
-
10
-
Pág. 4
Sistemas Operativos I
Relación de problemas
Tema 3: Sincronización y comunicación entre procesos
1.
Cuando ocurre el evento por el cual un proceso está bloqueado, se invoca a un procedimiento,
que denominaremos Desbloquear, para colocar el proceso en la cola de planificación correcta.
Antes de realizar ninguna otra acción este procedimiento deshabilita (desactiva) las
interrupciones. Explique por qué.
2.
Para calcular el número combinatorio (n k) = n(n-1)(n-2)...(n-k+1)/k!, creamos un programa con
dos procesos. El proceso P1 calcula el numerador y deposita el resultado en una variable
compartida, denominada x, mientras que P2 calcula el factorial y deposita el valor en la variable
y. Sincroniza los procesos P1 y P2, utilizando semáforos, para que el proceso P2 realice
correctamente la división x/y.
Declaración-inicialización de variables globales y semáforos
n, k, x=1, i=1: enteros
: semáforos
P1
P2
for i = n-k+1 to n do
begin
y:=1
for j=2 to k do
begin
y:=y * j;
x:=x * i;
end
end
escribir (x/y);
Nota:
3.
En los primeros problemas propuestos, vamos a dibujar una caja en la que aparece:
(a) el recuadro superior contiene la declaración-inicialización de variables globales y
semáforos necesarias para el ejercicio, (b) dos o más recuadros verticales que
contienen fragmentos del código de los procesos. Se deja al lector la tarea de
completar tanto las declaraciones-inicializaciones necesarias como el código necesario
para resolver el ejercicio.
Sean los procesos P1, P2 y P3, cuyas secuencias de instrucciones son las que se muestran en
el cuadro. Resuelva los siguientes problemas de sincronización (son independientes unos de
otros):
a) P2 podrá pasar a ejecutar e solo si P1 ha ejecutado a o P3 ha ejecutado g.
b) P2 podrá pasar a ejecutar e solo si P1 ha ejecutado a y P3 ha ejecutado g.
c) Solo cuando P1 haya ejecutado b, podrá pasar P2 a ejecutar e y P3 a ejecutar h.
d) Sincroniza los procesos de forma que las secuencias b en P1, f en P2, y h en P3, sean
ejecutadas como mucho por dos procesos simultáneamente.
Pág. 5
Sistemas Operativos I
Relación de problemas
Declaración-inicialización de variables y semáforos
P1
while true do
begin
P3
while true do
begin
a
d
g
b
e
h
c
f
i
end
end
end
4.
P2
while true do
begin
Dos procesos P1 y P2 se pasan información a través de una estructura de datos, ED. Sea un
entero, n, que indica en todo momento el número de elementos útiles en ED y cuyo valor inicial
es 0. El proceso P2 retira de ED en cada ejecución el último elemento depositado por P1, y
espera si no hay elementos a que P2 ponga más. Supón que ED tiene un tamaño ilimitado, es
decir, es lo suficientemente grande para que nunca se llene.
Declaración-inicialización de variables y semáforos
P1
while true do
P2
while true do
dato:=ED[n];
dato_calculado:= calcular_dato();
n:=n-1
n:=n+1;
operar_dato(dato);
ED[n]:=dato_calculado;
end
5.
end
El cuadro que sigue nos muestra dos procesos concurrentes, P1 y P2, que comparten una
variable global x (las restantes variables son locales a los procesos).
a) Sincronizar los procesos para que P1 use todos los valores x suministrados por P2.
b) Sincronizar los procesos para que P1 utilice un valor sí y otro no de la variable x, es decir,
utilice los valores primero, tercero, quinto, etc.
Pág. 6
Sistemas Operativos I
Relación de problemas
Declaración-inicialización de variables y semáforos
var x: entero
P1
while true do
begin
P2
while true do
begin
m:=2*x-n;
leer_teclado (d);
imprimir (m);
x:=d-c*5
end
end
6.
En la fábrica de bicicletas MountanenBike, tenemos tres operarios que denominaremos OP1,
OP2 y OP3. OP1 construye ruedas, OP2 construye cuadros de bicicletas, y OP3, manillares. Un
cuarto operario, el Montador, se encarga de tomar dos ruedas, un cuadro y un manillar, y de
montar la bicicleta. Sincroniza las acciones de los tres operarios y el Montador en los siguientes
casos:
a) Los operarios no tienen ningún espacio para almacenar los componentes producidos, y el
Montador no podrá coger ninguna pieza si ésta no ha sido fabricada previamente por el
correspondiente operario.
b) Los operarios OP2 y OP3 tienen espacio para almacenar 10 piezas de las que producen,
por tanto, deben esperar si habiendo producido 10 piezas no es retirada ninguna por el
Montador. El operador OP1 tiene espacio para 20 piezas.
Declaración-inicialización de variables y semáforos
OP1
while true do
begin
OP2
While true do
begin
OP3
while true do
begin
Montador
While true do
Begin
Coge_rueda();
Coge_rueda();
Hacer_rueda();
Hacer_cuadro();
Hacer_manillar(); Coge_cuadro();
Coge_manillar();
Montar_bici();
end
end
end
end
Pág. 7
Sistemas Operativos I
7.
Relación de problemas
Sentados en una mesa del Restaurante Atreveteacomer, están dos personas, cada una de las
cuales esta tomando un plato de sopa, y entre las dos comparten una fuente de ensalada.
Estas dos personas no tienen mucha confianza y no pueden comer las dos simultáneamente
del plato de ensalada. Se pide:
a) Diseñar un programa que resuelva el problema.
b) Ahora, supón que existe un camarero encargado de retirar los platos de sopa cuando
éstos están vacíos, es decir, cuando cada una de las personas ha tomado diez
cucharadas. Soluciona esta variante teniendo en cuenta que el camarero debe
cambiar los platos a las dos personas a la vez.
Declaración-inicialización de variables y semáforos
Comensal-1
while true {
}
Comensal-2
while true {
Camarero (Apartado b)
while true {
tomar_una_cucharada;
tomar_una_cucharada;
quitar_sopa();
comer_ensalada();
comer_ensalada();
poner_sopa();
}
}
8.
Resuelva el problema del Productor-Consumidor con y sin buffer limitado utilizando semáforos
binarios.
9.
Esboce una solución de cómo un sistema operativo puede implementar las operaciones de
semáforos con el mecanismo de habilitar/deshabilitar (activar/desactivar) interrupciones.
10. No es infrecuente encontrar un computador que utiliza tanto la instrucción TestAndSet como
otra primitiva de sincronización, como los semáforos. Los dos tipos juegan dos papeles
diferentes que no compiten entre sí. Explica por qué.
11. Problema de los filósofos-comensales. Sentados a una mesa están cinco filósofos. La actividad
de cada filósofo es un ciclo sin fin de las operaciones de pensar y comer. Entre cada dos
filósofos hay un tenedor. Para comer, un filósofo necesita obligatoriamente dos tenedores: el de
su derecha y el de su izquierda. Necesitamos cinco procesos concurrentes, cada uno de ellos
describe la actividad de un filósofo. Incluye las operaciones sobre semáforos necesarias para
implementar el hecho de que antes de comer hay que disponer del tenedor de la derecha y el de
la izquierda, y que cuando se termine la actividad de comer, hay que liberar ambos tenedores. El
filósofo i alude al tenedor de su derecha como el número i, y al de su izquierda como el número
(i+1) mod 5. Diseña una solución a este problema.
Pág. 8
Sistemas Operativos I
Declaración-inicialización de variables y semáforos
tenedori : semaforo (para acceder al tenedor i) := 1
Relación de problemas
i=(1..5)
Filosofoi
While (true) {
comer ();
pensar ();
}
12. Resuelva el problema de los Lectores-Escritores que se detalla a continuación utilizando
semáforos. Suponemos un sistema de base de datos que es compartido por varios procesos.
Estos procesos se dividen en dos clases distintas según el tipo de acceso a la base de datos:
Procesos Lectores que leen información y Procesos Escritores que leen y modifican información
de la base de datos común. Los objetivos propuestos son:
1) Asegurar la consistencia de la base de datos y
2) Procurar la máxima concurrencia en el acceso a la base de datos.
Y tenemos las siguientes situaciones:
a) Varios Lectores pueden acceder simultáneamente a la base de datos.
b) Cuando un Escritor está accediendo a la base de datos, ningún otro proceso puede
acceder a la base de datos, ni Lector ni Escritor. En teoría se ha resuelto dando más
prioridad a los lectores, resolverlo dando más prioridad a los escritores.
13. La vida real esta llena de problemas de sincronización. Uno de estos casos se da en las
barberías. Suponga una barbería con un barbero, una silla para cortar el pelo y N sillas para
que los clientes esperen sentados a que les toque su turno. Si no hay clientes, el barbero, que
es bastante vago, duerme en su silla. Cuando llega un cliente debe despertar al barbero. Si
llegan más clientes mientras que el barbero esta pelando y hay sillas libres, se sientan y
esperan su turno. Si no hay sillas libres se van. Programa una solución para el Barbero y los
Clientes.
14. A partir de un mecanismo de semáforos deseamos construir las rutinas enviar(buzon, mensaje)
y recibir(buzon, mensaje) para implementar un mecanismo de paso de mensajes con buzones.
Para ello, disponemos de una matriz BUZON de 10 elementos, cada elemento es una cadena
de m caracteres, donde se almacenan los mensajes. Tenemos una variable compartida, n, que
indica el número de mensajes que hay en cada momento en el buzón.
Implementa:
a) Un mecanismo de designación indirecta asíncrono.
b) Un mecanismo de designación indirecta síncrono.
Pág. 9
Sistemas Operativos I
Relación de problemas
Declaraciones-inicializaciones
Funcion enviar(buzon, mensaje) {
funcion recibir(buzon, mensaje) {
n:=n+1;
mensaje:= buzon(n);
buzon(n):= mensaje;
n:=n-1;
}
}
15. Discute la viabilidad de utilizar la instrucción TestAndSet suministrada por el repertorio de
instrucciones de un procesador para obtener exclusión mutua en los siguientes casos:
a) Como mecanismo para ser utilizado en programas de usuario.
b) En las rutinas de tratamiento de interrupción como método
deshabilitar/habilitar las interrupciones total o parcialmente.
c) Para implementar las operaciones wait() y signal() de los semáforos.
alternativo
a
16. Considere un ordenador que no posee la instrucción Test-and-Set, pero sí tiene una
instrucción Swap(a,b) que intercambia el contenido de dos palabras de memoria (a y b) en una
sola acción individual. Muestre cómo se puede utilizar esta instrucción para resolver el
problema de la exclusión mutua, es decir, diseñar el protocolo de entrada y el protocolo de
salida a la sección crítica.
procedure
var temp:
begin
temp
a :=
b :=
end
Swap (var a,b: boolean)
boolean
:= a;
b;
temp
17. Utilizando la instrucción Test_and_Set, hemos desarrollado el siguiente fragmento de código
para resolver el problema de la exclusión mutua: (inicialmente la variable cerrojo = false)
repeat
while TestAndSet(cerrojo) do no-op;
SecciónCrítica;
cerrojo:= false;
RestoSección;
until false;
¿Cuál(es) de la(s) propiedad(es) que debe satisfacer una solución del problema de exclusión
mutua no se satisface(n) con el código anterior? Justifique la respuesta.
18. La exclusión mutua utilizando semáforos se logra inicializando un semáforo a 1 (llamémoslo
mutex), comenzando todas las secciones críticas con una operación wait(mutex) y finalizando
todas las secciones críticas con una operación signal(mutex) ¿Qué ocurre si un proceso que está
dentro de una sección crítica realiza una operación wait(mutex)?
Pág. 10
Sistemas Operativos I
Relación de problemas
19. Supongamos uno de los puntos de la vía ferroviaria donde dos vías (vía_1, vía_2) se unen en
una sola (vía_3). El problema que se plantea es controlar dicho punto para que cuando lleguen
los trenes no se produzcan problemas. Para modelar dicho problema suponemos que tenemos
los siguientes procesos: Tren_vía_1(i), Tren_vía_2(j) y Controlador
Considera la siguiente situación :
Tren_vía_1(i), Tren_vía_2(j): representan a los trenes que llega por la vía_1, y a los que
llegan por la vía_2 respectivamente. Si llegan dos trenes a la vez (uno por la vía_1 y otro por la
vía_2) pasará a la vía_3 el primero que llegue, pero antes de pasar debe recibir el permiso del
controlador.
Controlador: está en un ciclo infinito esperando que llegue un tren, cuando llega un tren
realiza las acciones adecuadas y le da paso.
Declaración e inicialización de variables globales y semáforos
Tren_via_1(i)
Tren_via_2(j)
pasar
pasar
Controlador
While(true)
{
acciones_adecuadas();
sigue su viaje
sigue su viaje
}
A continuación se presentan tres soluciones no validas, descubra el por qué
Solución 1
Inicialización de variables globales y semáforos
Semáforos: paso=0, S=1,
Tren_via_1(i)
Tren_via_2(j)
wait(paso)
pasar
signal(S)
wait(paso)
pasar
signal(S)
sigue su viaje
sigue su viaje
Controlador
While(true)
{
wait(S)
acciones adecuadas
signal (paso)
}
En las siguientes soluciones, al lado de cada sentencia se tiene un número entre paréntesis que se
puede utilizar para encontrar una o más secuencias de ejecución que no respondan a la solución
pedida.
Pág. 11
Sistemas Operativos I
Relación de problemas
Solución 2
Inicialización de variables globales y semáforos
Semáforos: tren=0, paso=0
Tren_via_1(i)
Tren_via_2(j)
(11) signal(tren)
(12) wait(paso)
(13) pasar
(21)signal(tren)
(22) wait(paso)
(23) pasar
Controlador
While(true)
{
(31) wait(tren)
(32) acciones adecuadas
(33) signal (paso)
sigue su viaje
sigue su viaje
}
Solución 3
Inicialización de variables globales y semáforos
Semáforos: contolador=1, pasado2=0, pasado1=0
Tren_via_1(i)
Tren_via_2(j)
(11)wait(controlador)
(12) pasar
(13) signal(pasado1)
(21) wait(controlador)
(22) pasar
(23) signal(pasado2)
sigue su viaje
sigue su viaje
Controlador
While(true)
{
(31)signal(controlador)
(32) acciones adecuadas
(33) wait (pasado1)
(34) wait(pasado2)
}
20. Dos procesos A y B se pasan información a través de una estructura de datos formada por un
entero N y una matriz MA (de 10 elementos). El valor de N debe ser en cada momento el número
de datos útiles en la matriz; su valor inicial es 0. El proceso A coloca un dato en el elemento
siguiente al N. El proceso B retira cada vez el último elemento colocado por A. Para conseguir
que B no retire elementos si el número de elementos existentes es 0, se ha programado lo
siguiente:
Inicialización y declaración:
eltos: semaforo = 0;
N : entero = 0
Proceso A
Proceso B
while (TRUE) {
(a1) calcular dato
(a2) N := N + 1
(a3) MA [N] := dato
(a4) SIGNAL (eltos)
}
while (TRUE) {
(b0) if N=0 then WAIT (eltos);
(b1) VALOR := MA [N];
(b2) N := N-1;
(b3) hacer calculos sobre VALOR;
}
¿Se consigue que B espere antes de (b1) si el número de elementos existentes es 0?
Si la respuesta es afirmativa, justifícalo y en caso contrario indica un posible intercalado de
instrucciones que justifique tu respuesta
21. En un sistema electrónico de transferencia de fondos, existen miles de procesos idénticos que
funcionan como sigue. Cada proceso lee en una línea la cantidad de dinero a transferir, el
número de cuenta destinataria y el número de cuenta de origen de la transferencia. Entonces,
bloquea las dos cuentas, transfiere el dinero, y libera las cuentas. Con muchos procesos así,
existe un peligro real de interbloqueo (un proceso puede bloquear la cuenta x pero no puede
bloquear la cuenta y porque otro proceso la tiene bloqueada y ese proceso esta directa o
indirectamente esperando la cuenta x). Describa un esquema que evite el peligro de
interbloqueo. No esta permitido desbloquear una cuenta una vez que se ha bloqueado hasta
que la transacción se complete.
Pág. 12
Sistemas Operativos I
Relación de problemas
22. En 1910, tres fumadores empedernidos entraron en un estanco para comprar los materiales
que necesitaban para hacerse un cigarro. Para fabricar y fumar un cigarro cada fumador
necesitaba tres elementos: tabaco, papel y cerillas. El estanquero tenía existencias ilimitadas.
El primer fumador, F1, tenía su propio tabaco, el segundo, F2, su propio papel, y el tercero, F3,
sus propias cerillas. La acción comienza cuando el estanquero colocó dos de los elementos
necesarios en el mostrador con el fin de permitir que sólo uno de los fumadores liara el cigarro
y fumara. Cuando el fumador terminaba, se lo notificaba al estanquero, quien colocaba otros
dos elementos de forma aleatoria. Se propone la siguiente solución ¿es correcta? Razónelo.
Declaración-inicialización de semáforos:
Estanquero
While true {
wait(trabajo);
n := random(3);
case n of
0: {poner en la mesa tabaco y papel}
signal(t); signal(p);
1: {poner en la mesa tabaco y cerillas}
signal(t); signal(c);
2: {poner en la mesa papel y cerillas}
signal(p); signal(c);
}
trabajo ← 1, t ← 0, p ← 0, c ← 0
F1
F2
F3
while true {
While true {
While true {
wait(p);
wait(t);
wait(t);
wait(c);
wait(c);
wait(p);
fumar;
fumar;
fumar;
signal(trabajo);
signal(trabajo); signal(trabajo);
}
}
}
23. Se pretende modelar parte del funcionamiento de una secretaría de un centro de estudiantes.
En este sistema tenemos dos ventanillas para atender las peticiones de los estudiantes. Un
estudiante solicita un certificado de notas y recibe un carta de pago. Una vez pagado el importe
correspondiente, vuelve con la carta de pago sellada (resguardo), lo presenta en ventanilla y
obtiene su certificado de notas. El encargado de la ventanilla debe saber si la petición del
estudiante es:
a) la solicitud del certificado: en este caso le dará al estudiante la carta de pago.
b) la carta de pago sellada: en este caso le dará al estudiante el certificado de notas.
Aunque existen dos ventanillas (y dos encargados), sólo hay una cola de estudiantes que
esperan ser atendidos.
Implemente los procesos Estudiante y Encargado utilizando semáforos y las variables que crea
oportunas.
24. El código de la figura es una propuesta de solución al problema de lectores-escritores. Se
asume que inicialmente todos los semáforos valen 1 y la variable nlec vale 0. Indicar, y
justificar, si son verdaderas o falsas las siguientes afirmaciones relativas a la solución:
a) Garantiza
la
exclusión Procesos escritores
Procesos lectores
mutua en el acceso a la …
…
variable nlec.
wait(sem1);
wait(sem1);
b) Existe prioridad para los wait(sem2);
wait(sem3));
escritores.
nlec:=nlec+1;
escribir;
c) El objetivo de sem3 es signal(sem2);
if (nlec=1) then wait(sem2);
conseguir que no haya más signal(sem1);
signal(sem3);
de un lector leyendo …
signal(sem1)
simultáneamente.
leer;
d) En esta solución se da
wait(sem3);
inanición para los lectores.
nlec:=nlec-1;
if (nlec=0) signal(sem2);
e) Permite la inanición de los
signal(sem3);
escritores.
…
f) La solución no es correcta
porque sem2 debería valer 0 inicialmente.
Pág. 13
Sistemas Operativos I
Relación de problemas
25. Suponga que tiene que implementar el siguiente sistema:
- Tenemos N procesos de tipo Cliente y tres procesos de tipo Servidor.
- Hay dos variables globales, X e Y, que sirven de comunicación entre los procesos Cliente y los
procesos Servidor.
- Cada proceso Cliente lee desde teclado una variable que deposita en la variable compartida X.
- El valor almacenado en la variable X se utiliza por uno de los tres procesos Servidores, el
primero que esté libre, para calcular su logaritmo.
- El Servidor calcula el logaritmo de X y lo deposita en la variable compartida Y para que
finalmente el Cliente visualice el resultado del cálculo.
- Se debe calcular el logaritmo (una única vez) de cada valor almacenado en X por cada uno de
los procesos Cliente.
- Nótese que los procesos Servidor son ciclos infinitos y los procesos Cliente no.
Cliente i i = 1, … N
X=Leer-delteclado();
Mostrar-enpantalla(Y);
Servidor1
Servidor2
Servidor3
While (1){
While (1) {
While (1) {
Y = logaritmo(X);
Y = logaritmo(X);
Y = logaritmo(X);
}
}
}
b) Modifique el problema anterior suponiendo que cuando un Cliente almacena el valor 0 en la
variable X, además de que un Servidor ha de proporcionar el correspondiente cálculo, todos los
servidores han de terminar y ningún otro Cliente más pedirá realizar el cálculo. Es decir, los
procesos servidores son ciclos infinitos hasta que un cliente lee el valor 0.
Pág. 14
Sistemas Operativos I
Relación de problemas
Tema 4: Organización y gestión de memoria
1.
Supongamos un gestor de memoria que utiliza una estrategia de particiones de tamaño
variable y que tenemos los siguientes bloques de espacio libre (huecos): 600 bytes, 400 bytes,
1600 bytes, 2200 bytes, 1000 bytes, y 1050 bytes.
a) ¿Qué bloque se seleccionará para satisfacer una solicitud de 1003 bytes utilizando una
política de el mejor ajuste?
b) Idem utilizando el peor ajuste.
c) Suponiendo que la lista esta ordenada como aparece en el enunciado del problema, ¿qué
bloque se seleccionará para satisfacer una solicitud de 1003 bytes utilizando la política de
el primer ajuste?
2.
Considere que se tiene una gestión de la memoria de un S.O. basada en particiones variables
(en un entorno de multiprogramación). En un determinado instante de la ejecución, la lista de
bloques libres (huecos) disponible contiene tres bloques (no contiguos) con un tamaño de 200,
400 y 2000 KB respectivamente y han de atenderse las siguientes peticiones de memoria para
los siguientes procesos: P1 necesita 200KB, P2 necesita 300KB, P3 necesita 200KB, P4
necesita 1300KB, P5 necesita 400KB y P6 necesita 150KB. Complete la siguiente figura,
indicando en cada casilla el contenido de la lista de bloques libres disponibles después de
atender la petición de cada proceso y para cada algoritmo de asignación de memoria (si alguna
petición no se puede atender, indíquelo en la casilla correspondiente) ¿A que conclusión llega?
Algoritmo del peor ajuste
Petición Bloques-libres Petición
Bloq-libres
Algoritmo del mejor ajuste
Petición
Bloques-libres
Petición
P1-200
P4-1300
P1-200
P4-1300
P2-300
P5-400
P2-300
P5-400
P3-200
P6-150
P3-200
P6-150
Bloq-libres
3.
Si un computador no posee hardware de reubicación, e implementa intercambio (swapping),
entonces el gestor de memoria necesita utilizar un cargador para recalcular las direcciones
físicas de un proceso. ¿Sería posible para el sistema de intercambio reubicar los segmentos de
datos y pila? Explica cómo funcionaría este sistema, o si es imposible que funcione.
4.
¿Por qué se utilizan potencias de dos para los tamaños de página, número de páginas en el
espacio virtual de un proceso, y números de marcos de página?
5.
Considere un sistema con un espacio lógico de memoria de 128K páginas con 8 KB cada una,
una memoria física de 64 MB y direccionamiento al nivel de byte. ¿Cuántos bits hay en la
dirección lógica? ¿Y en la física?
6.
Considérese un sistema con memoria virtual en el que el procesador tiene una tasa de
utilización del 15% y el dispositivo de paginación está ocupado el 97% del tiempo, ¿qué indican
estas medidas? ¿Y si con el mismo porcentaje de uso del procesador el porcentaje de uso del
dispositivo de paginación fuera del 15%?
Pág. 15
Sistemas Operativos I
7.
Relación de problemas
Sitúese en un sistema paginado con memoria virtual, en donde:
- la memoria real tiene un tamaño de 16 Mbytes
- una dirección virtual ocupa 32 bits, de los cuales los 22 de la izquierda constituyen el número
de página, y los 10 de la derecha el desplazamiento dentro de la página.
Según lo anterior,
a) ¿Qué tamaño tiene cada página?
b) ¿Cuál es el tamaño del espacio de direccionamiento virtual?
c) ¿En cuántos marcos de página se divide la memoria física?
d) ¿Qué tamaño deberá tener el campo Número de Marco de la Tabla de Páginas?
e) Además de dicho campo, suponga que la Tabla de Páginas tiene los siguientes campos con
los siguientes valores:
* Presencia: 1 bit
(1= Presente en memoria fisica, 0= ausente)
* Modificación: 1 bit (1= Ha sufrido modificación desde que se cargó en memoria)
* Protección: 1 bit (1= Sólo se permite leer; 0= Cualquier tipo de acceso).
f) ¿Cuál es el tamaño de la Tabla de Páginas para un proceso cuyo espacio de memoria virtual
es de 103K bytes?
8.
Sea un sistema de memoria virtual paginada con direcciones lógicas de 32 bits que
proporciona un espacio virtual de 220 páginas y con una memoria física de 32 Mbytes ¿cuánta
memoria requiere en total un proceso que tenga 453Kbytes, incluida su tabla de páginas cuyas
entradas son de 32 bits?
9.
Un ordenador tiene 4 marcos de página. En la siguiente tabla se muestran: el tiempo de carga,
el tiempo del último acceso y los bits R y M para cada página (los tiempos están en tics de
reloj). Responda a las siguientes cuestiones justificando su respuesta.
Página
0
1
2
3
Tiempo Tiempo ultima
de carga
Referencia
126
279
230
235
120
272
160
200
Bit de
Referencia
1
1
1
1
Bit de
Modificación
0
0
1
1
a) ¿ Qué página se sustituye si se usa el algoritmo FIFO?
b) ¿ Qué página se sustituye si se usa el algoritmo LRU?
10. ¿Depende el tamaño del conjunto de trabajo de un proceso directamente del tamaño del
programa ejecutable asociado a él? Justifique su respuesta.
11. ¿Por qué una cache (o la TLB) que se accede con direcciones virtuales puede producir
incoherencias y requiere que el sistema operativo la invalide en cada cambio de contexto y, en
cambio, una que se accede con direcciones físicas no lo requiere?
12. Un ordenador proporciona un espacio de direccionamiento lógico (virtual) a cada proceso de
65.536 bytes de espacio dividido en páginas de 4096 bytes. Cierto programa tiene un tamaño
de región de texto de 32768 bytes, un tamaño de región de datos de 16386 bytes y tamaño de
región de pila de 15878. ¿Cabría este programa en el espacio de direcciones? (Una página no
puede ser utilizada por regiones distintas). Si no es así, ¿cómo podríamos conseguirlo, dentro
del esquema de paginación?
13. Analice qué puede ocurrir en un sistema que usa paginación por demanda si se recompila un
programa mientras se está ejecutando. Proponga soluciones a los problemas que pueden
surgir en esta situación.
Pág. 16
Sistemas Operativos I
Relación de problemas
14. Para cada uno de los siguientes campos de la tabla de páginas, se debe explicar si es la MMU
o el sistema quién los lee y escribe (en éste último caso si se activa o desactiva), y en qué
momentos:
a)
b)
c)
d)
e)
Número de marco.
Bit de presencia
Bit de protección
Bit de modificación
Bit de referencia
15. Suponga que la tabla de páginas para el proceso actual se parece a la de la figura. Todos los
números son decimales, la numeración comienza en todos los casos desde cero, y todas las
direcciones de memoria son direcciones en bytes. El tamaño de página es de 1024 bytes.
Número de
Bit de validez
página virtual o presencia
0
0
1
1
1
2
1
3
0
4
1
5
Bit de
referencia
1
1
0
0
0
0
Bit de
modificación
0
1
0
0
0
1
Número de
marco de página
4
7
1
2
0
¿Qué direcciones físicas, si existen, corresponderán con cada una de las siguientes
direcciones virtuales? (no intente manejar ninguna falta de página, si las hubiese)
a) 999
b) 2121
c) 5400
16. Sea la siguiente secuencia de números de página referenciados: 1,2,3,4,1,2,5,1,2,3,4,5
Calcula el número de faltas de página que se producen utilizando el algoritmo FIFO y
considerando que el número de marcos de página de que disfruta nuestro proceso es de
a) 3 marcos
b) 4 marcos
¿Se corresponde esto con el comportamiento intuitivo de que disminuirá el número de faltas de
página al aumentar el tamaño de memoria de que disfruta el proceso?
17. ¿Qué tipo de fragmentación se produce en un sistema de gestión de memoria virtual paginado?
¿Qué decisiones de diseño se pueden tomar para minimizar dicho problema, y cómo afectan
estas decisiones al comportamiento del sistema?
18. Suponga que un proceso emite una dirección lógica igual a 2453 y que se utiliza la técnica de
paginación, con páginas de 1024 palabras
a) Indique el par de valores (número de página, desplazamiento) que corresponde a dicha
dirección.
b) ¿Es posible que dicha dirección lógica se traduzca en la dirección física 9322? Razónelo.
19. El tiempo medio de ejecución de una instrucción en un procesador es de 30 nsg. Tras diversas
medidas se ha comprobado que:
a) El 0.001% de las instrucciones producen falta de página.
b) El 30% de las ocasiones en que se produce la falta de página, la página que hay que
sustituir está “sucia”.
c) La velocidad de transferencia al dispositivo de disco es de 2MB/sg. El tamaño de cada
página es de 4 KB.
Calcule el tiempo efectivo de una instrucción (el tº que tarda en ejecutarse).
Pág. 17
Sistemas Operativos I
Relación de problemas
20. En general, cuando se utiliza un algoritmo de sustitución de páginas LRU se producen menos
faltas de página que cuando usamos un FIFO, para la misma cadena de referencia. Sin
embargo, existen cadenas para las que FIFO produce menos faltas de página. Da un ejemplo
de una de estas cadenas. Consejo: la cadena de referencia no debe ser larga; una solución a
este problema puede ser una cadena de longitud seis.
21. ¿Por qué la localidad no es un factor que se tiene en cuenta en los sistemas con segmentación?
22. Suponga que tenemos 3 procesos ejecutándose concurrentemente en un determinado instante y
que todas sus páginas deben estar en memoria principal. El sistema operativo utiliza un sistema
de memoria con paginación. Se dispone de una memoria física de 131072 bytes (128K).
Sabemos que nuestros procesos al ser ejecutados tienen los siguientes parámetros:
Los datos indican el tamaño en bytes
de cada uno de los segmentos que
Proceso
código
pila
datos
forman parte de la imagen del proceso.
A
20480
14288
10240
Sabiendo que una página no puede
B
16384
8200
8192
contener partes de dos segmentos
C
18432
13288
9216
diferentes (pila, código o datos), hemos
de determinar el tamaño de página que debería utilizar nuestro sistema y se barajan dos
opciones: páginas de 4096 bytes (4K) o páginas de 512 bytes (1/2K). Se pide:
a) ¿Cuál sería la opción más apropiada, 4096 bytes o 512 bytes?. Justifica totalmente la
respuesta mostrando todos los cálculos que has necesitado para llegar a dicha
conclusión.
b) ¿Cuál es el formato de cada entrada de la Tabla de Páginas con el tamaño de página
elegido? Justifica el tamaño de los campos con direcciones. Puedes añadir los bits que
consideres necesarios para el buen funcionamiento del sistema indicando para que van a
ser utilizados.
c) ¿Cuántas Tablas de Páginas habrá en este sistema?¿Cuántas entradas hay en cada
tabla de páginas (filas)?
23. En la gestión de memoria en un sistema paginado, ¿qué estructura/s de datos necesitará
mantener el Sistema Operativo para administrar el espacio libre?
24. Situándonos en un sistema paginado, donde cada proceso tiene asignado un número fijo de
marcos de páginas. Supongamos la siguiente situación: existe un proceso con 7 páginas y tiene
asignados 5 marcos de página. Indica el contenido de la memoria después de cada referencia a
una página si como algoritmo de sustitución de página utilizamos el LRU (la página no
referenciada hace más tiempo). La secuencia de referencias es la indicada en la figura.
Referencias
2
1
3
4
1
5
6
4
5
7
4
2
Marcos de
página
¿Cuantas faltas de página se producen? _______
25. ¿Cuál es la ventaja del algoritmo de faltas de página sobre el algoritmo basado en el modelo del
conjunto de trabajo utilizando el tamaño de ventana w? ¿Cuál es la desventaja?
Pág. 18
Sistemas Operativos I
Relación de problemas
26. ¿Cuánto puede avanzar como máximo la aguja del algoritmo de reemplazo de páginas del reloj
durante la selección de una página?
27. Supongamos que tenemos un proceso ejecutándose en un sistema paginado, con gestión de
memoria basada en el algoritmo de sustitución frecuencia de faltas de página. El proceso
tiene 5 páginas ( 0, 1, 2, 3, 4 ). Represente el contenido de la memoria real para ese proceso
(es decir, indique que páginas tiene cargadas en cada momento) y cuándo se produce una falta
de página. Suponga que, inicialmente, está cargada la página 2, el resto de páginas están en
memoria secundaria y que no hay restricciones en cuanto al número de marcos de página
disponibles. La cadena de referencias a página es: 0 3 1 1 1 3 4 4 2 2 4 0 0 0 0 3 y el
parámetro es τ=3.
28. Describa el funcionamiento del algoritmo de sustitución basado en la frecuencia de faltas de
página, con los siguientes datos: 4 marcos de página, en t = 0 la memoria contiene a la página
2. El tamaño de la ventana es τ= 3 y se produce la secuencia de referencias de páginas, 1 4
2 2 2 4 5 5 3 3 5 1 1 1 1 4
2
29. Describa el funcionamiento del algoritmo de sustitución global basado en el algoritmo basado
en el modelo del conjunto de trabajo, con los siguientes datos: 4 marcos de página, en t= 0
la memoria contiene a la página 2 que se referenció en dicho instante de tiempo. El tamaño de
la ventana es τ= 3 y se produce la secuencia de referencias de páginas, 1 4 4 4 2 4 1 1 3
3 5 5 5 5 1 4
2
30. Una computadora con memoria virtual paginada tiene un bit U por página virtual, que se pone
automáticamente a 1 cuando se realiza un acceso a la página. Existe una instrucción limpiar_U
(dir_base_tabla) que permite poner a 0 el conjunto de los bits U de todas las páginas de la tabla
de páginas cuya dirección de comienzo pasamos como argumento. Explica cómo puede
utilizarse este mecanismo para la implementación de un algoritmo de sustitución basado en el
modelo del conjunto de trabajo.
31. Un Sistema Operativo con memoria virtual paginada tiene el mecanismo fijar_página(np) cuyo
efecto es proteger contra la sustitución al marco de página en que se ubica la página virtual np.
El mecanismo des_fijar (np) suprime esta protección.
a) ¿Qué estructura/s de datos son necesarias para la realización de estos mecanismos?
b) ¿En qué caso puede ser de utilidad estas primitivas?
c) ¿Qué riesgos presentan y qué restricciones deben aportarse a su empleo?
Pág. 19
Sistemas Operativos I
Relación de problemas
32. Implemente la política de sustitución global basada en la medida de la tasa de faltas de página de
un proceso; es decir, dé respuestas a las siguientes cuestiones:
a) ¿Qué parte del Sistema Operativo deberá tomar parte?
b) ¿Cuándo entra en ejecución dicho módulo del S.O.?
c) ¿Qué estructuras de datos será necesario mantener?
d) ¿Qué decisiones podría adoptar?
33. Disponemos de un ordenador que cuenta con las siguientes características: tiene una memoria
RAM de 4KBytes, permite usar memoria virtual paginada, las páginas son de 1KBytes de
tamaño y las direcciones virtuales son de 16 bits. El primer marco de página (marco 0) se usa
únicamente por el Kernel y los demás marcos están disponibles para su uso por los procesos
que se ejecutan en el sistema. Supongamos que tenemos sólo dos procesos, P1 y P2, y que
utilizan las siguientes direcciones de memoria virtual y en el siguiente orden:
Proceso
P1
P2
P1
P2
P1
P2
P1
Direcciones virtuales
0-99
0-500
100-500
501-1500
3500-3700
1501-2100
501-600
a) ¿Cuántos marcos de página tiene la memoria RAM de este ordenador?
b) ¿Cuántos bits necesitamos para identificar los marcos de página?
c) Describe los fallos de página que tendrán lugar para cada intervalo de ejecución de los
procesos, si la política de sustitución de páginas utilizada es LRU. Suponga que se dicho
algoritmo es de asignación variable y sustitución global.
34. Estamos trabajando con un sistema operativo que emplea una gestión de memoria paginada
sin memoria virtual. Cada página tiene un tamaño de 2.048 bytes. La memoria física disponible
para los procesos es de 8 MBytes. Suponga que primero llega un proceso que necesita 31.566
posiciones de memoria (o bytes) y, después, llega otro proceso que consume 18.432
posiciones cuando se carga en memoria. Se pide:
a) ¿Qué fragmentación interna provoca cada proceso?
b) ¿Qué fragmentación externa provoca cada proceso?
35. Se tiene un sistema de memoria virtual con paginación a dos niveles que permite agrupar las
páginas en “directorios de páginas”. Cada directorio de páginas puede contener hasta 256
páginas. Los espacios de direcciones lógicas de este sistema son de 4Gbytes y el tamaño de
página es de 4Kbytes. El espacio de direcciones físicas puede tener hasta 1Gb. Describa la
estructura de las direcciones lógicas y de las direcciones físicas de este sistema de memoria
virtual.
36. Considere un sistema con paginación por demanda con los siguientes tiempos de utilización:
utilización de CPU
utilización disco de paginación
utilización otros dispositivos de E/S
20%
97'7%
5%
¿Cuáles de los siguientes aspectos mejorarán (probablemente) el aprovechamiento de la
CPU? Explique para cada uno de ellos si lo mejorarían o no y el por qué.
a) Instalar una CPU más rápida
b) Aumentar el grado de multiprogramación
c) Reducir el grado de multiprogramación
d) Instalar un disco duro más rápido
Pág. 20
Sistemas Operativos I
Relación de problemas
37. Suponga un sistema que utiliza paginación a dos niveles. Las direcciones son de 8 bits con la
siguiente estructura: 2 bits en la tabla de páginas de primer nivel, 2 bits en la tabla de páginas
de segundo nivel y 4 bits para el desplazamiento). El espacio de direccionamiento virtual de un
proceso tiene la estructura del dibujo. Represente gráficamente las tablas de páginas y sus
contenidos, suponiendo que cada entrada de la tabla de páginas ocupa 8 bits y que todas las
páginas están cargadas en memoria principal (elige tú mismo la ubicación en memoria principal
de dichas páginas, suponiendo que la memoria principal es de 160 Bytes). Dada esa
asignación traduce la dirección virtual 47.
0
Texto
16B
Datos
48B
sin usar
224B
Pila
256B
38. Considere la siguiente tabla de segmentos:
Segmento
Presencia o validez
Dirección base
Longitud
0
1
2
3
4
0
1
1
0
1
219
2300
90
1327
1952
600
14
100
580
96
¿Qué direcciones físicas corresponden a las direcciones lógicas (nº_segmento, desplazamiento)
siguientes? Si no puede traducir alguna dirección lógica a física, explique el por qué.
a)
b)
c)
d)
0, 430
1, 10
3, 400
4, 112
39. Sea un sistema de memoria virtual segmentado-paginado. Los espacios de direcciones lógicas
son de 8Gbytes y el tamaño de página es de 2Kbytes. Un espacio de direcciones puede tener
hasta 256 segmentos y las entradas de la tabla de página tienen 4 bytes. Diga cuál será el
tamaño de la tabla de páginas de un segmento.
Pág. 21
Descargar