FINAL de Sistemas Operativos y Computación II 20 / 07 / 02

Anuncio
FINAL de Sistemas Operativos y Computación II
20 / 07 / 02
A) Verdadesro o Falso. Justifique.
1.- El proposito principal del buffering es compensar la falta de memoria real.
Rta: FALSO: El proposito ppal es amortiguar la diferencia de velocidades en la
comunicación de procesos.
2.- Un proceso creado a traves de fork() comparte espacio de codigo (code space) con su
padre pero no el espacio de datos (sin considerar el uso de memoria compartida).
Rta: VERDADERO: Ya que un proceso hijo es una copia identica del padre, una
duplicación, pero si se modifican variables en el hijo, estas no tendran efecto en el padre.
3.- Los ataques por diccionarios solo son efectivos si los passwords son almacenados en
archivos de texto claro (sin encriptar).
Rta: VERDADERO: Ya que existen ciertos algoritmos que no permiten desencripar las
claves (ej hotmail) por lo tanto la unica manera de atacar es teniendo el texto desencript.
4.- No es necesario que el filesystem sea parte de la implementacion del kernel para
asegurar la integridad del mismo.
Rta: VERDADERO: Por ejemplo esto se da en los sistemas microkernel, los cuales no
implementan el filesystem dentro del kernel, sin embargo, este, es tan eficiente e integro
como uno implementado dentro del kernel.
5.- La pre-paginacion permite cargar las paginas de un proceso a medida que las mismas
son referenciadas.
Rta: FALSO: La pre-paginacion carga en memoria la pagina demandada de un proceso y
algunas de sus paginas mas proximas para aprovechar el ppio de vecindad.
B) Resolver el siguiente ejercicio
Suponga que los siguientes 2 procesos, foo y bar, son ejecutados concurrentemente en un
SO preemptive y comparten los contadores generales de los semáforos A y B (ambos
inicializados en 1) y la variable entera count (inicializada en 0)
Procedure Foo
repeat
wait(A)
wrtiteln(“algo”)
if(count > 0) then
writeln(“otra cosa”)
wait(B)
count := count +1
signal (A)
signal (B)
forever
Procedure Bar
repeat
while(random(0;1)<0.5 && count!=0){
wait(B)
writeln(“mas cosas”)
wait(A)
count:=count – 1
writeln(count)
signal(A)
signal(B)
}
forever
1. ¿puede ocurrir deadlock en la ejecución concurrente de los dos procesos? En caso
afirmativo indicar la secuencia de ejecución que lleve a deadlock, en caso
negativo, explique porque no.
2. ¿ puede ocurrir starvation de alguno de los dos procesos ? En caso afirmativo
indicar la secuencia de ejecución que lleve a deadlock, en caso negativo, explique
porque no.
3. ¿considera que el acceso a los recursos criticos se encuentra correctamente
sincronizado?
C) Resolver el ejercicio
Considere una maquina con direcciones de 18 bits. Los primeros 2 bits se usan para
identificar el segmento y los ultimos 16, el offset dentro del segmento. Asumir que las
bases y los limites de la tabla de segmentos estan configuradas de la siguiente forma:
Segmento
Base
Limites
Proteccion
0
0
0xabcd
Read-only
1
0x1b000
7ff
No-access
2
0x1b800
Fff
Read-write
3
0x30000
1234
Read-write
El prefisjo 0x indica que los valores se encuentran expresados en hexadecimal
Responder justificando la rta.
1. Que sucede cuando el procesador intenta escribir en la direccion virtual 0x20000,
en la 0x10000, en la 0xbeef y en la 0xace ?
Descargar