}//FIN de Fallo de Cache static void Main() { Console.WriteLine("Hello World!"); //Escribir en consola //**Bloque de creacion**// memDatos = new int[96]; // 384/4 memInstruc = new int[640]; // 40 bloques * 4 *4 cola = new Contextos(); finalizados = new Contextos(); RL1 = new int[1]; RL2 = new int[1]; RL3 = new int[1]; busD = new int[1]; busI = new int[1]; cacheDatos1 = new int[6, 4]; //Preguntar si es recomendable recorrerlas por filas cacheDatos2 = new int[6, 4]; cacheDatos3 = new int[6, 4]; //*******************Fin de Bloque***********************// //*************Bloque de inicializacion******************// reloj = 0; for (int i = 0; i < 96; ++i) // memoria principal inicilizada en uno { memDatos[i] = 1; memInstruc[i] = 1; } for (int i = 96; i < 640; ++i) // memoria principal inicilizada en uno { memInstruc[i] = 1; } for (int i = 0; i < 4; ++i) //las caches se inicializadas en cero { for (int j = 0; j < 4; ++j) { cacheDatos3[i, j] = 0; cacheDatos2[i, j] = 0; cacheDatos1[i, j] = 0; } } for (int i = 4; i < 6; ++i) //las caches se inicializadas en invalidas { for (int j = 0; j < 4; ++j) { cacheDatos3[i, j] = -1; cacheDatos2[i, j] = -1; cacheDatos1[i, j] = -1; } } //*****************Fin de Bloque*************************// Console.Write("Ingrese el quantum"); quantumTotal = int.Parse(Console.ReadLine()); Console.Write("\nIngrese el numero de hilillos Totales"); total = int.Parse(Console.ReadLine()); /*int indice = 0; int counter = 0; string linea; for (int j = 0; j < total; ++j) { //obtener archivo cola.Encolar(indice); //Solo agrega el PC para iniciar las intrucciones // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.txt"); while ((line = file.ReadLine()) != null) { linea counter++; } file.Close(); System.Console.WriteLine("There were {0} lines.", counter); // Suspend the screen. System.Console.ReadLine(); }*/ for(int i = 0; i < 8; ++i) { memInstruc[i] = int.Parse(Console.ReadLine()); } cola.Encolar(0); Console.Write("Segundo hilo"); for (int i = 0; i < 9; ++i) { memInstruc[i] = int.Parse(Console.ReadLine()); } cola.Encolar(8); //*****************Leer archivo termina aqui*********************//// //Creacion de los 3 hilos que emulan los nucleos Thread thread1 = new Thread(() => Nucleos(quantumTotal)); Thread thread2 = new Thread(() => Nucleos(quantumTotal)); Thread thread3 = new Thread(() => Nucleos(quantumTotal)); //Se les asigna un "id" a los hilos thread1.Name = "1"; thread2.Name = "2"; thread3.Name = "3"; //Se inician los hilos thread1.Start(); thread2.Start(); thread3.Start(); //Verificar que todos los hilillos finalizaron int cardinalidad; cardinalidad = 0; while (cardinalidad < total) { if (!Monitor.TryEnter(finalizados)) { TicReloj(); } else { TicReloj(); cardinalidad = finalizados.Cantidad(); Monitor.Exit(finalizados); } } //Finaliza los 3 hilos que emulan los nucleos //Preguntar, depues de matar los hilos, debo segui dando tic de reloj?? thread1.Abort(); thread2.Abort(); thread3.Abort(); finalizados.Imprimir(); }//FIN de Main