示例#1
0
 public Proceso(Proceso OBJ)
 {
     this.TiempoRestante = OBJ.TiempoRestante;
     this.IDproces = OBJ.IDproces;
     this.prioridad = OBJ.prioridad;
     this.TiempoServico = OBJ.TiempoServico;
     this.TipoMoneda = OBJ.TipoMoneda;
     this.Tiempo_de_esp = OBJ.Tiempo_de_esp;
     this.Timepo_esp_MAX = OBJ.Timepo_esp_MAX;
 }
示例#2
0
        //procesador
        private void procesamiento()
        {
            int PosShortestTime;

            int PosPriority;

            NumOfProces += (List_Proceso.Count * 1);

            //textBox1.Text = LabelCount.ToString();

            count20++; //counter every 20 steps
            if (count20 == 20)
            {
                ResetFlag = true;
            }

            if (List_Proceso.Count == 0)
            {
                ResetFlag = true;
            }

            if(ResetFlag){ // se resetea a los 20
                ResetFlag = false;

                Random _rand = new Random();

                DeadPrograms += _rand.Next(0, 50);

                //List_Proceso = new List<Proceso>();
                NumOfProces = 10;
                llenarLista();

                count20 = 0;
            }

            ///// First Procesor Srtproces  ////////

            if (SRTbussy == false)//nuevo proceso "SRT proceser"
            {
                PosShortestTime = FindShortestTime();

                Srtproces = new Proceso( List_Proceso.ElementAt(PosShortestTime) );

                List_Proceso.RemoveAt(PosShortestTime);

                textBoxSRT_execution.Text = Srtproces.TiempoRestante.ToString();
                SRTbussy = true;

            }
            else//the porcess continues
            {
                textBoxSRT_execution.Text = "Tiempo restante " + Srtproces.TiempoRestante.ToString() + Environment.NewLine +
                                            "Tipo_Moneda " + Srtproces.TipoMoneda + Environment.NewLine +
                                            "idMoneda" + Srtproces.IDproces.ToString();

                Srtproces.TiempoRestante--;

                if (Srtproces.TiempoRestante == 0)
                {
                    SRTbussy = false;

                    dataGridView1.Rows.Add(
                        Srtproces.IDproces,
                        Srtproces.TiempoServico,
                        Srtproces.TipoMoneda,
                        count20.ToString(),
                        "SRT"
                        );
                }

            }

            /// End First Procesor Srtproces /////
            ///
            //------------------------------------------------------------------------------------------------
            /// Second Procesor Priority ///
            ///

            if (PRIbussy == false)//nuevo proceso "priority proceser"
            {
                PosPriority = FindPriority();

                PrirityProces = new Proceso(List_Proceso.ElementAt(PosPriority));

                List_Proceso.RemoveAt(PosPriority);

                textBoxPriority_Execution.Text = Srtproces.TiempoRestante.ToString();
                PRIbussy = true;

            }
            else//the porcess continues
            {
                textBoxPriority_Execution.Text = "Tiempo restante " + PrirityProces.TiempoRestante.ToString() + Environment.NewLine +
                                            "Tipo_Moneda " + PrirityProces.TipoMoneda + Environment.NewLine +
                                            "idMoneda" + PrirityProces.IDproces.ToString();

                PrirityProces.TiempoRestante--;

                if (PrirityProces.TiempoRestante == 0)
                {
                    PRIbussy = false;

                    dataGridView1.Rows.Add(
                        PrirityProces.IDproces,
                        PrirityProces.TiempoServico,
                        PrirityProces.TipoMoneda,
                        count20.ToString(),
                        "Priority"
                        );
                }
            }

            ////// end second procesor

            /// wait procesor, checks starving process
            ///

            for (int i = 0; i < List_Proceso.Count; i++)
            {
                List_Proceso.ElementAt(i).Tiempo_de_esp++;

                if (List_Proceso.ElementAt(i).Tiempo_de_esp == List_Proceso.ElementAt(i).Timepo_esp_MAX)
                {
                    dataGridView1.Rows.Add(
                        List_Proceso.ElementAt(i).IDproces,
                        List_Proceso.ElementAt(i).TiempoServico,
                        List_Proceso.ElementAt(i).TipoMoneda,
                        count20.ToString(),
                        "Eliminado: "+List_Proceso.ElementAt(i).Tiempo_de_esp
                        );
                    List_Proceso.RemoveAt(i);
                }

            }

                //end wait procesor

                ///// Drawing   /////

                if (List_Proceso.Count >= 1)
                    textBox1.Text = List_Proceso.ElementAt(0).TipoMoneda;
                else textBox1.Text = "Vacia";

            if (List_Proceso.Count >= 2)
                textBox2.Text = List_Proceso.ElementAt(1).TipoMoneda;
            else textBox2.Text = "Vacia";

            if (List_Proceso.Count >= 3)
                textBox3.Text = List_Proceso.ElementAt(2).TipoMoneda;
            else textBox3.Text = "Vacia";

            if (List_Proceso.Count >= 4)
                textBox4.Text = List_Proceso.ElementAt(3).TipoMoneda;
            else textBox4.Text = "Vacia";

            if (List_Proceso.Count >= 5)
                textBox5.Text = List_Proceso.ElementAt(4).TipoMoneda;
            else textBox5.Text = "Vacia";

            if (List_Proceso.Count >= 6)
                textBox6.Text = List_Proceso.ElementAt(5).TipoMoneda;
            else textBox6.Text = "Vacia";

            if (List_Proceso.Count >= 7)
                textBox7.Text = List_Proceso.ElementAt(6).TipoMoneda;
            else textBox7.Text = "Vacia";

            if (List_Proceso.Count >= 8)
                textBox8.Text = List_Proceso.ElementAt(7).TipoMoneda;
            else textBox8.Text = "Vacia";

            if (List_Proceso.Count >= 9)
                textBox9.Text = List_Proceso.ElementAt(8).TipoMoneda;
            else textBox9.Text = "Vacia";

            if (List_Proceso.Count >= 10)
                textBox10.Text = List_Proceso.ElementAt(9).TipoMoneda;
            else textBox10.Text = "Vacia";

            labelDeadPrograms.Text = "Procesos Muertos "+ DeadPrograms.ToString();

            //// end Drawing   /////
        }
示例#3
0
        private void llenarLista()
        {
            int Tipo;
            Proceso temp;

            Random rand = new Random();

            for (int x=0 ; x < NumOfProces; x++)
            {//aqui relleno monedas

                id++;
                Tipo = rand.Next(1, 10);

                temp = new Proceso();

                temp.IDproces = id;
                temp.TiempoServico = rand.Next(5, 30); // This change the Service time
                temp.prioridad = rand.Next(0, 3);
                temp.TiempoRestante = temp.TiempoServico;

                temp.Timepo_esp_MAX = rand.Next(10, 20);
                temp.Tiempo_de_esp = 0;

                switch (Tipo)
                {
                    case 1:
                        //cola.push_back("peso");
                        //falta ver lo del objeto
                        temp.TipoMoneda = "peso";
                        break;
                    case 2:
                        //cola.push_back("U.S. Dollar");
                        temp.TipoMoneda = "U.S. Dollar";
                        break;
                    case 3:
                        //cola.push_back("Euro");
                        temp.TipoMoneda = "Euro";
                        break;
                    case 4:
                        //cola.push_back("Yen");
                        temp.TipoMoneda = "Yen";
                        break;
                    case 5:
                        //cola.push_back("British Pound");
                        temp.TipoMoneda = "British Pound";
                        break;
                    case 6:
                        //cola.push_back("Swiss Franc");
                        temp.TipoMoneda = "Swiss Franc";
                        break;
                    case 7:
                        //cola.push_back("Canadian Dollar");
                        temp.TipoMoneda = "Canadian Dollar";
                        break;
                    case 8:
                        //cola.push_back("New Zealand Dollar");
                        temp.TipoMoneda = "New Zealand Dollar";
                        break;
                    case 9:
                        //cola.push_back("African Rand ");
                        temp.TipoMoneda = "African Rand";
                        break;
                    case 10:
                        //cola.push_back("Indian rupee");
                        temp.TipoMoneda = "Indian rupee";
                        break;
                }//end switch

                //add to the list
                List_Proceso.Add(temp);

            }//end for
        }