ADMINISTRACION
Enviado por mogsp • 11 de Junio de 2014 • 3.488 Palabras (14 Páginas) • 286 Visitas
UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE TONALA
PROYECTO FINAL
INDICE
PSEUDOCÓDIGO DE ASIGNACION DE MEMORIA
PRIMERAJUSTE MEJOR AJUSTE PEORAJUSTE
PSEUDOCODIGO ALGORIMOS DE PLANIFICACION DE PROCESOS
FCFS
SJF SRT RR
PSEUDOCODIGO PAR IMPEDIR LOS INTERBLOQUEOS BARBERIA
BARBERIA EQUITATIVA
BARBERIA NO EQUITATIVA
INVESTIGACIONN SOBRE CONCURRENCIA
INTERBLOQUEO………………………………………………..i
Condiciones para interbloqueos…………………………………….ii Prevenciones de los interbloqueos………………………….iii Estados seguros e inseguros………………………………..iv Exclusión mutua…………………………………………………v Contención y Espera…………………………………………..vii Condición no apropiativa……………………………………..viii Espera Circular…………………………………………………ix Detección de interbloqueos………………………………..x Recuperación de interbloqueos…………………………….xii Terminación de procesos……………………………………..xiii Bibliografía…………………………………………………….xiv
Pseudocódigo de mejor ajuste Pseudocódigo de primer ajuste Pseudocódigo de peor ajuste
Pseudocódigo de fcfs
#include <stdlib.h>
#include <stdio.h>
int main ()
{
char PLANNER_RESULT,PLANNER_INPUT;
/**
* srt_algorithm
*
* Obtiene un PLANNER_RESULT resultado de aplicar
* el algoritmo SRT a un PLANNER_INPUT
*
* El algoritmo está dividido en 2 fases:
*
* 1f) iteramos sin tener en cuenta todos los procesos
* que puede haber en la estructura, solamente aquellos
* que ya han entrado en el algoritmo, pero están en cola
*
* 2f) iteramos sobre todos los procesos que quedan
* seleccionando en cada iteración aquel con menos tiempo
* de proceso
*/
PLANNER_RESULT srt_algorith (PLANNER_INPUT data)
{
int i=0, j=0;
// proceso inicial
int current_process=0;
// nos indica si estamos en la primera fase int token_second=1;
// nos indica en qué fase estamos int second_phase=0;
// límite de iteraciones para procesos en cola int limit_iteration=0;
// hacemos una copia del PLANNER_INPUT inicial
// para operar sobre él en el algoritmo
PLANNER_INPUT datacopy = data;
// reseteamos la información del PLANNER_RESULT final PLANNER_RESULT rtemp = reset_planner_data(rtemp, data.num); rtemp.num = data.num;
float av_return = 0;
float av_wait = 0;
// obtenemos la suma total de los servicios
// puesto que iteraremos sobre este número
int sum_servicio = sum_planner_data_stime(data);
for(i; i<=sum_servicio; i++)
{
token_second = 1;
// primero comprobamos si este proceso no ha terminado ya if(data.times[current_process].t_servicio != 0)
{
// ejecutamos una iteración de este proceso, y le restamos
// tiempo de servicio data.times[current_process].t_servicio--;
finalización
// si el proceso ha terminado, determinamos su tiempo de
if(data.times[current_process].t_servicio == 0)
{
i+datacopy.idle+1;
}
}
rtemp.processes[current_process].TF =
restante
procesos
// buscamos el siguiente proceso con menos tiempo de servicio
// si estamos en primera fase, sólo tenemos que buscar sobre aquellos
// procesos que hayan entrado en el planificador
//
// en la segunda fase tenemos que buscar entre todos aquellos
// restantes, el de menos tiempo de servicio restante if(second_phase == 0)
limit_iteration = i+2;
else
limit_iteration = datacopy.num;
// iteramos el resto de procesos for(j=0; j<limit_iteration; j++)
{
if(second_phase == 1)
{
// segunda fase if(data.times[j].t_servicio > 0)
{
if(token_second)
{
current_process = j;
token_second = 0;
}
expropiación: proceso sea menor comprobando no
data.times[current_process].t_servicio data.times[current_process].t_servicio)
// comprobamos las condiciones para la
// que el tiempo de servicio restante de este
// que el actual, y que el proceso que estamos
// sea el actual if(data.times[j].t_servicio <
&& data.times[j].t_servicio !=
}
}
else
{
{
// expropiamos current_process = j;
}
expropiación
> 0, si su tiempo comprobar si el tiempo de menor, y además que comprobando
// comprobamos las condiciones para la
// el proceso tiene que tener tiempo de servicio
// de servicio es diferente de 0, tiene que
// servicio restante del proceso a comprobar es
// el proceso actual no sea
...