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 ?