Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
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 = "";
        }
Esempio n. 4
0
        ///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);
        }