Beruflich Dokumente
Kultur Dokumente
A
C
2. Conteste brevemente
-Bajo que condiciones el algoritmo de planifiacin de procesos FIFO (FCFS) resultara en el
tiempo de respuesta promedio ms pequeo?
-Bajo que condiciones la planificacin Round Robin se comporta igual que FIFO?
-Bajo que condiciones la planficacin de procesos Round Robin se comporta peor que FIFO (en
tiempo de respuesta promedio)?
-En la situacin anterior, si se reduce el quantum, ayudara o perjudicara las prestaciones del RR
con respecto a FIFO?
-Un proceso CPU-bound (limitado por CPU) es un proceso que usa mucha CPU en relacin a su
uso de E/S. La definicin de proceso E/S-bound (limitado por E/S) es anloga. Es la siguiente
afirmacin verdadera o falsa?: Para un proceso CPU-bound es razonable darle ms prioridad en las
operaciones E/S que a un proceso E/S-bound.
3. Considere los estados de los procesos: en ejecucin (running), preparado o listo (ready),
bloqueado (blocked, waiting), bloqueado suspendido (blocked swapped out), suspendido
listo, exit (terminado). Para las siguientes situaciones diga que transicin se produce en el
diagrama de estados.
-Se produce un evento por el que espera un proceso en memoria: E/S completa, despierta en un
semforo, etc.:
-Un proceso comunica con otro proceso y tiene que esperar por el mensaje del otro proceso:
-Mediante una llamada al sistema un proceso requiere un recurso (por ejemplo un fichero o una
seccin de memoria compartida) que no puede ser satisfecho inmediatamente por el sistema
operativo:
-Un proceso aborta:
-Un proceso termina normalmente:
-Se produce el evento que un proceso bloqueado en memoria secundaria estaba esperando:
-El proceso en ejecucin necesita ms memoria y el sistema operativo decide mover un proceso
bloqueado a disco
-Normalmente el sistema operativo preferira suspender (intercambiar) un proceso bloqueado que
suspender un proceso listo ya que ambos estn en memoria pero el bloqueado no est listo para
ejecucin. De alguna razn para una transicin Listo Suspendido listo
-Algunos textos de SO muestran la transicin Bloqueado suspendido bloqueado, mientras otros
la ignoran. Por qu?
4. El programa a.out tiene que ejecutar b.out y c.out que estn en el directorio actual y tienen
que dar un mensaje de haber finalizado ambas ejecuciones. Es correcta esta
implementacin? En caso contrario proponer una alternativa.
#include
#include
#include
#include
#include
#include
<unistd.h>
<sys/types.h>
<errno.h>
<stdio.h>
<sys/wait.h>
<stdlib.h>
/*
/*
/*
/*
/*
/*
Symbolic Constants */
Primitive System Data Types */
Errors */
Input/Output */
Wait for Process Termination */
General Utilities */
int main()
{
pid_t pid;
if ((pid=fork()) == -1)
perror("fallo en
exit(0);
}
if (pid==0){
execl("./b.out",
}
else
execl("./c.out",
{
fork");
"b.out", NULL);
"c.out", NULL);
5. a) Cuntas lneas de salida genera este programa? b) Cual es el orden posible de esas
lineas?
#include
#include
#include
#include
#include
#include
#include
<unistd.h>
/* Symbolic Constants */
<sys/types.h> /* Primitive System Data Types */
<errno.h>
/* Errors */
<stdio.h>
/* Input/Output */
<sys/wait.h>
/* Wait for Process Termination */
<stdlib.h>
/* General Utilities */
<string.h> /* String utilities*/
{
fprintf (stderr, "%s: %s\n", msg, strerror(errno));
exit(0);
}
pid_t Fork(void)
{
pid_t pid;
if ((pid = fork()) < 0)
unix_error("Fork error");
return pid;
}
int main()
{
int status;
pid_t pid;
printf("Hello\n");
pid = Fork();
printf("%d\n", !pid);
if (pid != 0) {
if (waitpid(-1, &status, 0) > 0) {
if (WIFEXITED(status) != 0)
printf("%d\n", WEXITSTATUS(status));
}
}
printf("Bye\n");
exit(2);
}
Rfaga de CPU
Prioridad
Tiempo llegada
50 ms
0 ms
20 ms
20 ms
100 ms
40 ms
40 ms
60 ms.
Muestra como se planifican estos procesos con los algoritmos Shortest Remaing Time First (SRTF),
Prioridades no Apropiativo (un valor ms pequeo en la tabla indica ms prioridad) y Round Robin
con quantum de 30 ms. SRTF es una versin apropiativa de SJF (Shortest Job First) donde si un
proceso que llega a la cola de procesos listos para ejecucin tiene un tiempo esperado de ejecucin
menor que el proceso en ejecucin, el proceso que llega toma la CPU. Cul es el tiempo de espera
promedio para los distintos algoritmos y esta carga de trabajo? Cada celda representa 10ms.
Shortest Remaning Time First
1 1 2 2 1 1 1 4
P1 comienza pero es apropiado al llegar P2 (a los 20 ms) porque P2 tiene una rfaga de 20,
menor que los 30 ms que quedan a P1. P2 se ejecuta hasta completarse. A los 40 ms llega P3
pero tiene una rfaga (40 ms) mayor que lo que queda a P1 por completar, de forma que P1
toma de nuevo la CPU, despus P4 toma la CPU y completa y finalmente lo mismo con P3.
Tiempo medio de espera: (20 + 0 + 70 + 10)/4 = 25 ms.
Prioridades no apropiativas
1 1 1 1 1 2 2
P1 comienza porque es el nico que est en la cola de proceso listos para ejecucin, a los 20 ms
llega P2, que es el proceso de ms prioridad, pero el algoritmo no es apropiativo con lo que no
puede tomar la CPU hasta que P1 se completa. Cuando acaba P2, en la cola estn P4 y P3 y se
ejecuta primero P4 porque tiene ms prioridad.
Tiempo medio de espera: (0 + 30 + 70 + 10)/4 = 27.5 ms.
Round Robin de quantum 30 ms.
1 1 1 2 2 1 1 3
preparados pero se habr puesto en esta cola despus de P3, por lo que P3 toma la CPU y P3 y
P4 se alternan en CPU hasta que acaban.
Tiempo medio de espera: (20 + 10 + 70 + 70)/4 = 42.5 ms.
2. a) Qu salida genera el proceso hijo? b) Qu salida genera el proceso padre?
int main()
{
int x=1;
if (Fork()==0)
printf("printf1: x=%d\n", ++x);
printf("printf2: x=%d\n", --x);
}
El padre imprime b y luego c. El hijo imprime a y luego c (en el caso de que el fork no falle, si
el fork fallase slo el padre puede imprimir bc). Pero no se puede suponer nada acerca de
como se entrelaza la ejecucin del padre y el hijo, por lo que en principio todas estas salidas
son posibles: acbc, bacc, abcc.