27.08.2013 Views

Trabajo Práctico Nº 2: Procesos

Trabajo Práctico Nº 2: Procesos

Trabajo Práctico Nº 2: Procesos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Trabajo</strong> <strong>Práctico</strong> <strong>Nº</strong> 2: <strong>Procesos</strong><br />

1. ¿Cuáles de las siguientes instrucciones deberían ser privilegiadas? Justifique.<br />

a) Modificar el valor del timer del sistema.<br />

b) Leer el reloj del sistema.<br />

c) Limpiar la memoria.<br />

d) Generar un trap.<br />

e) Deshabilitar interrupciones.<br />

f) Modificar datos de los bloques de control de procesos.<br />

g) Cambiar de modo usuario a modo kernel.<br />

h) Acceder directamente a los dispositivos de E/S.<br />

2. El algoritmo de planificación SJF es considerado optimal, pero es difícil llevarlo completamente a la<br />

práctica. ¿Por qué? Proporcione ejemplos de programas que evidencien este problema.<br />

3. ¿Cuál es el resultado del siguiente código? Justifique.<br />

a) 0<br />

b) 1<br />

main() {<br />

printf (“ %d”,proceso());<br />

exit(0);<br />

}<br />

int proceso () {<br />

if (!fork())<br />

return 1;<br />

else<br />

return 0;<br />

}<br />

c) 0 1<br />

d) No da un resultado determinista.<br />

NOTA: fork() retorna 0 en el hijo y el PID del hijo en el padre.<br />

4. Implemente un shell simple que ejecute los comandos ingresados por el usuario. Utilice las llamadas<br />

fork(), execve(filename, args[]), getpid() y waitpid(pid) vistas en teoría. Considere dos variantes:<br />

bloqueante (el shell no ejecuta un nuevo comando hasta tanto el comando actual no finalice) y no<br />

bloqueante. En la página de la cátedra se encuentran los vínculos a la documentación de estas llamadas.<br />

5. Considere el siguiente conjunto de procesos:<br />

Proceso Tiempo de CPU (en ms) Prioridad<br />

P1 10 3<br />

P2 1 1<br />

P3 2 3<br />

P4 1 4<br />

P5 5 2


Los procesos arriban en orden ascendente en el tiempo cero:<br />

a) Grafique 4 diagramas de Gantt ilustrando la ejecución utilizando FCFS, SJF, prioridad sin desalojo<br />

(un número de prioridad menor implica una prioridad más alta) y round robin con quantum<br />

de 1 ms.<br />

b) Calcule tT , tw y tr para cada proceso y cada algoritmo de scheduling de a).<br />

c) Compare y discuta los resultados.<br />

Recuerde que:<br />

tT : turnaround time: tiempo total de ejecución de un proceso.<br />

tw :waiting time: tiempo total de espera en la cola de listos.<br />

tr :response time: diferencia entre tiempo de entrada y tiempo de la primera asignación de CPU.<br />

6. Considere ahora el siguiente conjunto de procesos:<br />

Proceso Tiempo de CPU (en ms) Petición de E/S<br />

P1 4 Lectura de sector disco en t=3<br />

P2 1 No realiza E/S<br />

P3 3 Imprime datos en t=1,2<br />

P4 1 Imprime por pantalla en t=1<br />

P5 2 No realiza E/S<br />

Nuevamente, los procesos arriban en orden ascendente en el tiempo cero, y son gestionados con<br />

round robin de 2 ms. Algunos procesos realizan peticiones de E/S en cierto tiempo t (relativo al<br />

tiempo de inicio de ejecución del proceso). Asuma que una petición de E/S lleva 2 ms.<br />

a) Grafique un diagrama de Gantt mostrando el uso de CPU y dispositivos de E/S.<br />

b) ¿En qué estado se encuentran los procesos en t=3,5,7 (relativo al inicio de la ejecución de todos<br />

los procesos)?<br />

7. Considere dos procesos comunicados por un pipe:<br />

ls | more<br />

El sistema operativo realiza scheduling según un algoritmo round robin con quantum t. El pipe posee<br />

un búfer intermedio de 1024 bytes. ls es capaz de producir 512 bytes cada 10 ms, mientras more<br />

lee 2048 bytes en el mismo tiempo.<br />

a) Determine cuáles serían las condiciones por las cuáles un proceso iría al estado de bloqueado.<br />

b) Grafique un diagrama de Gantt mostrando el uso de CPU y dispositivos de E/S con t = 5ms,<br />

10ms, 40ms.<br />

8. En Windows la funcionalidad de las llamadas fork y exec de Unix está implementada en una única llamada<br />

system. Dicha llamada crea un proceso a partir del archivo ejecutable dado como parámetro (recuerde<br />

que fork clona el proceso actual, incluyendo código, datos, variables de ambiente y archivos<br />

abiertos). ¿Cómo simularía el funcionamiento de fork mediante system para clonar procesos en Windows?.<br />

Discuta posibles problemas.<br />

9. ¿Cómo simularía pipes en un sistema operativo que no los provee? Discuta en detalle la solución<br />

propuesta y los posibles problemas y/o limitaciones.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!