Академический Документы
Профессиональный Документы
Культура Документы
Curso 08/09
PRCTICA 2
Planificacin de procesos
Octubre 2008
Sistemas Operativos II
Curso 08/09
NDICE
1 OBJETIVOS...........................................................................................................................................................3
2 ENUNCIADO........................................................................................................................................................3
3 JUGANDO CON LA POLTICA DE PLANIFICACIN....................................................................................3
4 PRIMERA APROXIMCIN..............................................................................................................................6
5 UNA SOLUCIN MS ADECUADA.................................................................................................................8
6 PUNTUACIN......................................................................................................................................................9
7 ANEXOS................................................................................................................................................................9
7.1 Fichero de pruebas: prueba1.c.........................................................................................................................9
7.2 Fichero de pruebas: prueba2.c........................................................................................................................9
7.3 Fichero de pruebas: prueba3.c.......................................................................................................................10
Pgina - 2
Sistemas Operativos II
Curso 08/09
OBJETIVOS
ENUNCIADO
Se trata de realizar unos ejercicios bsicos que nos permitan entender mejor algunos aspectos
relacionados con la planificacin de procesos en MINIX 3.
En esta prctica se utilizan tres programas de prueba (prueba1.c, prueba2.c y prueba3.c)
que figuran en los anexos. No hace falta crearlos con el editor de textos de MINIX ya que
pueden cogerse de la pgina web de la asignatura. Para poder meter estos ficheros en el
sistema MINIX puede utilizarse el disquete fsico o la imagen de disquete.
Para realizar esta parte de la prctica, hacer lo siguiente:
Encender el puesto de trabajo, seleccionar la opcin Arranca Linux y entrar al
sistema con el correspondiente login y password.
Preparar el disquete (fsico o imagen) con los ficheros de prueba.
Arrancar MinixQEmu y entrar al sistema.
Crear un directorio para el desarrollo de la prctica tecleando: mkdir practica2.
Cambiarse al directorio practica2 recin creado tecleando: cd practica2.
Pgina - 3
Sistemas Operativos II
Curso 08/09
Pgina - 4
Sistemas Operativos II
Curso 08/09
Aunque nos salga el prompt *, si tecleamos un comando como ls, nos volver a
salir el prompt correcto #.
Ahora vamos a realizar algunos cambios en el fichero /usr/src/kernel/proc.c que
tienen que ver con modificaciones en la poltica de planificacin para ver qu efecto
producen, concretamente lo que haremos ser incrementar la prioridad de los procesos.
Situarse en /usr/src/kernel y copiar el fichero proc.c como procOrg.c para no perder
la versin original ya que vamos a hacer modificaciones.
Editar proc.c y localizar la funcin sched PRIVATE void sched(rp, queue, front).
Sustituir la sentencia:
if (rp->p_priority < (IDLE_Q-1)) {
rp->p_priority += 1;
}
por:
if (rp->p_priority > 0)
rp->p_priority -= 1;
Grabar la modificacin y cambiarse al directorio /usr/src/tools.
Recompilar el sistema tecleando: make install
Reiniciar MINIX con la nueva imagen. Qu ocurre?
Pgina - 5
Sistemas Operativos II
Curso 08/09
PRIMERA APROXIMCIN
Sistemas Operativos II
Curso 08/09
Pgina - 7
Sistemas Operativos II
Curso 08/09
Una alternativa algo mejor a la anteriormente expuesta (aunque con algn defecto menor)
puede ser registrar explcitamente la antigedad de cada proceso en el momento de ser creado.
Para ello debe crearse un campo, para cada posible proceso, en el cual registrar el nmero de
orden con el que fue creado. La funcin enqueue debe entonces ordenar los procesos,
dentro de cada cola de prioridad, atendiendo a dicho orden de creacin.
Esta solucin requiere modificar, adems de proc.c, otros tres ficheros:
proc.h para hacer la declaracin compartida del campo de antigedad de cada proceso
creado. La modificacin natural sera aadir este campo en la estructura proc que
contiene todos los campos de un descriptor de proceso. Sin embargo, tal y como puede
consultarse en el propio cdigo, el acceso a los campos de un descriptor se hace con
desplazamientos y, si cambiamos esta estructura, hay que tocar, posiblemente, dichos
desplazamientos. Una forma de evitar este problema es declararse un array del mismo
tamao que la tabla de procesos y guardar ah el campo de antigedad.
Pgina - 8
Sistemas Operativos II
6
Curso 08/09
PUNTUACIN
ANEXOS
7.1
pid = fork();
if (pid != 0)
{ /* proceso padre */
for(x = 1; x < 10000; x++)
{ for(y = 1; y < 100000; y++)
z = y;
printf("1");
}
}
else
{ /* proceso hijo */
for(x = 1; x < 10000; x++)
{ for(y = 1; y < 100000; y++);
z = y;
printf("2");
}
}
7.2
Pgina - 9
Sistemas Operativos II
printf("1");
} }
else
{ sleep(1);
for(x = 1; x < 20000; x++)
{ for(y = 1; y < 10000; y++)
z = y;
printf("2");
} } }
7.3
Pgina - 10
Curso 08/09