public void SetAdminEspacio(Libres value) { switch (value) { case Libres.MapadeBits: { // Reservo un bloque al final para el mapa de bits, y lo marco lleno de uA de Burocracia disp.CambiarEstadoReserva(disp.GetCantBloques() - 1, true); disp.CambiarEstadoBurocracia(disp.GetCantBloques() - 1, disp.GetTamBloques()); break; } case Libres.ListadeLibres: { for (int i = 0; i < disp.GetCantBloques() - 1; i++) { disp.CambiarEstadoBurocracia(i, 1); //le asignamos 1 uA que es el indice } break; } case Libres.ListadeLibresdePrincipioyCuenta: { // Reservo 2 bloques al final para la lista y lo marco lleno de uA de Burocracia disp.CambiarEstadoReserva(disp.GetCantBloques() - 2, true); disp.CambiarEstadoBurocracia(disp.GetCantBloques() - 2, disp.GetTamBloques()); disp.CambiarEstadoReserva(disp.GetCantBloques() - 1, true); disp.CambiarEstadoBurocracia(disp.GetCantBloques() - 1, disp.GetTamBloques()); break; } } adminEspacio = value; }
public FileSim(int tProc, Org orgFisica, Libres admEspacio, Acceso metAcceso, int tLectura, int tEscritura, int tSeek, int tAcceso, int tamBloques, int tamDispositivo, string ruta) { //Crea las listas de operaciones, tabla de archivos y la cola de espera (vacias!) this.TablaOperaciones = new List <Operacion>(); this.TablaArchivos = new List <Archivo>(); this.ColaEspera = new List <int>(); this.SetContadorOp(0); this.contColaEspera = 0; this.opActual = 0; // Por cada operacion se agrega un objeto Indicadores a la lista this.indicadoresOP = new List <Indicadores>(); //Se crea el dispositivo --> se le pasan los parametros configurables relacionados con disp this.disp = new Dispositivo(tLectura, tEscritura, tSeek, tAcceso, tamBloques, tamDispositivo, tProc); //setters parametros fileSim SetOrganizacionFisica(orgFisica); SetAdminEspacio(admEspacio); SetMetodoAcceso(metAcceso); //Carga las operaciones desde el archivo ingresado x usuario --> las almacena en la tabla operaciones CargarOperaciones(ruta); this.tSimulacion = 0; }
public static void Inicializar() //valores x defecto { orgFisica = Org.Vacio; admLibre = Libres.Vacio; modoAcceso = Acceso.Vacio; tAcceso = 2; tSeek = 2; tLectura = 2; tEscritura = 2; tProcesamiento = 2; tamBloque = 50; //uA tamDispositivo = 100; //uA rutaArchivo = ""; }
///devuelve el t q llevaria buscar bloques libres segun el metodo de Adminitracion elegido x usuario /////el segundo parametro solo se usa en el segundo metodo --> en los otros pasar cero public int TprocesamientoBloquesLibres(Libres AdminLibres, int uAdeseada) { int tiempo = 0; switch (AdminLibres) { case Libres.MapadeBits: tiempo = GetTseek() + GetTlectura() + GetTprocesamient(); break; case Libres.ListadeLibres: int bloquesDeseados = (int)Math.Ceiling((decimal)uAdeseada / (decimal)tamBloque); tiempo = (GetTseek() + GetTlectura()) * bloquesDeseados + GetTprocesamient(); break; case Libres.ListadeLibresdePrincipioyCuenta: tiempo = GetTseek() + 2 * (GetTlectura() + GetTprocesamient()); break; } return(tiempo); }