Trabajo Práctico Nº 2: Procesos
Trabajo Práctico Nº 2: Procesos
Trabajo Práctico Nº 2: Procesos
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.