Upload
zenitram-mrtz
View
214
Download
0
Embed Size (px)
Citation preview
7/28/2019 Planificacion Por Prioridad Reporte
1/6
INSTITUTO TECNOLOGICO DE
TEHUACAN
ING. EN SISTEMAS COMPUTACIONALES
SISTEMAS OPERATIVOS
ALGORITMOS DE ADMINISTRACION DE PROCESOS
CATEDRATICO: MTI. FELIPE RODRIGUEZ VARGAS
INTEGRANTES DEL EQUIPO:
FERNANDO HERNANDEZ 10360538
JULIETA OSRIO MEDRANO 09360607
FABIOLA AGUILAR MARTINEZ 09360099
ALEJANDRO GAMALIEL ANZURES OLAYA 10360543
11 DE MARZO DE 2013
7/28/2019 Planificacion Por Prioridad Reporte
2/6
PLANIFICACION POR PRIORIDAD
En este algoritmo a cada proceso se le asocia un nmero entero de prioridad.
Mientras menor sea este entero pues mayor prioridad tiene el proceso, por lo que
la esencia del algoritmo es planificar la entrada de procesos a la CPU de acuerdo a
la prioridad asociada de cada uno de ellos.
El funcionamiento del algoritmo se muestra en la siguiente figura:
En el siguiente ejemplo se tienen 4 procesos (P1, P2,P3 y P4). La tabla muestra los
tiempos de ejecucin de cada uno y su prioridad.
Uno de los problemas que puede presentar esta planificacin es la de un bloqueo
indefinido. Es decir, pudiera darse el caso que existan procesos de prioridad altaque haran que los procesos de prioridad baja queden bloqueados esperando por
ellos, solo se desbloquearan cuando estos procesos de prioridad baja logren
colocarse en la CPU y por ello puede darse una espera indefinida.
El programa que se muestra a continuacin fue realizado en el lenguaje c# en
visual studio 2010.
7/28/2019 Planificacion Por Prioridad Reporte
3/6
FUNCIONAMIENTO
Se implement una cola simple, y se fue insertando en ella de acuerdo a la
prioridad, el programa funciona de la siguiente manera:
Al ejecutar la aplicacin aparece la siguiente pantalla:
Al dar clic en el botn Agregar un nuevo proceso automticamente se generara
uno, con los atributos: nombre, prioridad, estado en el que se encuentra y tiempo
que tardara en ejecutarse. Se pueden crear tantos procesos como guste:
7/28/2019 Planificacion Por Prioridad Reporte
4/6
Al dar clic en el botn Iniciar simulacin se irn ejecutando los procesos y
cambiaran de estado.
Por ultimo al dar clic en el botn Eliminar todos los procesos se borraran todos
los elementos que estn en la cola y se podr volver a iniciar la simulacin.
7/28/2019 Planificacion Por Prioridad Reporte
5/6
CODIGO FUENTE
Codigo del formulario:
publicpartialclassForm1 : Form{
Cola cola_proc;Random numeros;DataTable Tabla = newDataTable();
DataRow Renglon;int contador = 0;public Form1()
{InitializeComponent();
// agregar.Visible = false;eliminar.Visible = false;cola_proc = newCola();numeros = newRandom();
}
privatevoid Form1_Load(object sender, EventArgs e)
{Tabla.Columns.Add(newDataColumn("Prioridad"));Tabla.Columns.Add(newDataColumn("Nombre del proceso"));Tabla.Columns.Add(newDataColumn("estado"));
Tabla.Columns.Add(newDataColumn("Tiempo de ejecucion"));}
privatevoid agregar_Click(object sender, EventArgs e){/*int prior, string nom, string edo, string t_eje*/
cola_proc.insercionOrdenada(numeros.Next(5), "Proceso " + contador,
"Inactivo", numeros.Next(100, 1000));
contador++;llenarTabla();
}
publicvoid llenarTabla()
{// dataGridView1 = new DataGridView();
Tabla.Clear();Nodo aux = cola_proc.primero;
while (aux != null){
Renglon = Tabla.NewRow();
Renglon[0] = aux.getPrior();
Renglon[1] = aux.getNom();Renglon[2] = aux.getEstado();Renglon[3] = aux.getTiempo_ejec();
Tabla.Rows.Add(Renglon);dataGridView1.DataSource = Tabla;aux = aux.getSig();
}dataGridView1.Refresh();
}
7/28/2019 Planificacion Por Prioridad Reporte
6/6
privatevoid eliminar_Click(object sender, EventArgs e)
{contador = 0;cola_proc = newCola();llenarTabla();
}
privatevoid iniciar_Click(object sender, EventArgs e){
Tabla.Clear();Nodo aux = cola_proc.primero;for (int i = 0; i < contador; i++)
{if (aux.getEstado() == "Inactivo"){
aux.setEstado("activo");llenarTabla();int tiempo = aux.getTiempo_ejec();Thread.Sleep(tiempo);
aux.setEstado("Terminado");aux = aux.getSig();
}elseif (aux.getEstado() == "Terminado")
aux = aux.getSig();}
dataGridView1.Refresh();eliminar.Visible = true;
}
}