Ejemplo n.º 1
0
def genera_lista_procesos():
    lista = []
    p1 = Proceso(0, 3, "A")
    p2 = Proceso(1, 5, "B")
    p3 = Proceso(3, 2, "C")
    p4 = Proceso(9, 5, "D")
    p5 = Proceso(12, 5, "E")
    lista.append(p1)
    lista.append(p2)
    lista.append(p3)
    lista.append(p4)
    lista.append(p5)
    return lista
Ejemplo n.º 2
0
    def asignarProceso(self, proceso):
        self.ocupado = True
        self.memoriaAsignada = proceso.obtMemoria()
        self.procesosEmpilados.append(proceso)
        proceso.enlazarProcesador(self)

        # Agregar subprocesos (si los hay)
        if proceso.obtSubprocesos() != 0:

            # Impresion de empilacion
            print(self.STR_SUBP_EMPILAR % (
                self.simulador.obtTiempo(),  # Tiempo
                proceso.obtSubprocesos(),  # No. de subprocesos
                proceso.obtNombre(),  # Nombre del proceso
                self.id))  # Numero de procesador

            for i in range(proceso.obtSubprocesos()):
                self.procesosEmpilados.append(
                    # Hereda los atributos del proceso padre
                    Proceso(
                        proceso.obtNombre() + '-' + str(i),
                        proceso.obtPrioridad(),  # Prioridad
                        0,  # No usa memoria
                        proceso.obtDuracion(),  # Duracion
                        0,  # No tiene subprocesos
                        self))  # Procesador asociado
Ejemplo n.º 3
0
    def leerEntrada(self, nombreEntrada):
        try:
            for line in open(nombreEntrada):
                args = line.split()

                if args[0] != 'proceso':
                    raise ValueError('Error de sintaxis en archivo de entrada')
                if len(args) != 6:
                    raise ValueError('Numero incorrecto de parametros')

                self.colaProcesos.agregar(
                    Proceso(
                        args[1],  # Nombre
                        args[2],  # Prioridad
                        args[3],  # Memoria
                        args[4],  # Duracion
                        args[5],  # Subprocesos
                        None))  # Procesador
        except IOError:
            raise IOError('No se encuentra el archivo %s' % nombreEntrada)
Ejemplo n.º 4
0
from Proceso import Proceso

if __name__ == '__main__':
    # Leido de las imagenes
    imagen_1 = Convertido.leido_de_iamgen("images/iron.jpg")
    imagen_2 = Convertido2.leido_de_iamgen("images/albert.jpg")

    # Conversion de las imagenes
    imagen_1_convertida = Convertido.imagen_a_escala_de_grises(imagen_1)
    imagen_2_convertida = Convertido2.imagen_laplaciana(imagen_2)

    # Guardado de las imagenes
    Convertido.guardar_imagen(imagen_1_convertida, "ironconvertida")
    Convertido2.guardar_imagen(imagen_2_convertida, "albertconvertido")

    # MENSAJES PARA PODER VER LAS VENTANAS
    print("EL PROYECTO CORRIO MUY BIEN CHAMO")
    print("Cierrra la ventana para ver la imagen procesada")
    print("el primero es a blanco y negro ")
    print("el segundo a laplaciano degradado")

    # Mostrar en ventana las imagenes
    Proceso.mostrar_imagen_en_ventana(nombre_de_la_ventana="original iron",
                                      imagen_a_mostrar=imagen_1)
    Convertido.mostrar_imagen_en_ventana(nombre_de_la_ventana="blanco y negro",
                                         imagen_a_mostrar=imagen_1_convertida)
    Proceso.mostrar_imagen_en_ventana(nombre_de_la_ventana="original albert",
                                      imagen_a_mostrar=imagen_2)
    Convertido.mostrar_imagen_en_ventana(nombre_de_la_ventana="laplaciano",
                                         imagen_a_mostrar=imagen_2_convertida)
Ejemplo n.º 5
0
if __name__ == '__main__':

    if (len(sys.argv) > 1):
        trabajo = sys.argv[1]
    else:
        trabajo = './ejemplos/prueba.txt'

    f = open(trabajo,'r')
    lista = f.readlines()
    Nrorecursos = int( lista[0])
    Nroprocesos = int( lista[1])


    #creo una lista con todos los procesos a ejeceutar
    Procesos = []
    for i in range(2, Nroprocesos + 2):

        k = lista[i].split(" ")
        Procesos.append(Proceso(Nrorecursos, k))

    '''for p in Procesos:
        print(p.EstadoProceso())'''

    #obtenemos todos los recursos Disponibles
    RecursosDisponibles = []
    for e in lista[len(lista) - 1].split(" "):

        RecursosDisponibles.append(int(e))

    banquero = Banquero(Nroprocesos, Nrorecursos, Procesos,RecursosDisponibles)
Ejemplo n.º 6
0
class Main:

    tBloqueo = 15
    cambioContexto = 15
    quantum = 3000

    #Aqui se pone el numero de micros que se van a utlizar
    print("Cuantos micros vas a usar perro loco?")
    micros = input()
    despachador = Despachador()

    #Crear micros que el usuario da
    for i in range(0, int(micros)):
        i = Micro(0, True, str(i))
        despachador.micros.append(i)

    #Procesos que el usuario da

    oscar = Proceso("A", 300, 1500, 2)
    manuel = Proceso("B", 100, 1500, 2)
    gio = Proceso("C", 500, 1500, 3)
    diego = Proceso("D", 700, 1500, 4)

    despachador.procesos_a_ejecutar.append(oscar)
    despachador.procesos_a_ejecutar.append(manuel)
    despachador.procesos_a_ejecutar.append(gio)
    despachador.procesos_a_ejecutar.append(diego)

    def pasar_procesos_a_micros(despachador, quantum, tBloqueo,
                                cambioContexto):

        for procesos in despachador.procesos_a_ejecutar:
            print("Para proceso ", procesos.nombre)
            #Crear funcion 1 que regrese menor_desp
            menor = []
            for menor_despachador in despachador.micros:
                menor.append((len(menor_despachador.procesos_ejecucion),
                              menor_despachador.procesos_ejecucion,
                              menor_despachador.nombre))
            menor_desp = min(menor)

            #Crear funcion 2
            for entrada_proceso in despachador.micros:
                if (entrada_proceso.nombre == menor_desp[2]):
                    entrada_proceso.procesos_ejecucion.append(
                        despachador.procesos_a_ejecutar[0])
                    #despachador.procesos_a_ejecutar.pop(0)

                    #metodos que calculan valores de los procesos dentro de los micros
                    despachador.determinar_tiempo_vencimiento_quantum(
                        entrada_proceso.procesos_ejecucion[0], quantum,
                        cambioContexto)
                    despachador.determinar_tiempo_cambio_contexto(
                        entrada_proceso.procesos_ejecucion[0], cambioContexto)
                    despachador.determinar_tiempo_bloqueo(
                        entrada_proceso.procesos_ejecucion[0], tBloqueo)
                    despachador.determinar_tiempo_inicial(
                        entrada_proceso.procesos_ejecucion[0],
                        despachador.micros)
                    despachador.determinar_tiempo_total(
                        entrada_proceso.procesos_ejecucion[0])
                    despachador.determinar_tiempo_final(
                        entrada_proceso.procesos_ejecucion[0],
                        despachador.micros)
                    despachador.determinar_tiempo_ejecucion_micro(
                        entrada_proceso, entrada_proceso.procesos_ejecucion[0])

                else:
                    pass

    pasar_procesos_a_micros(despachador, quantum, tBloqueo, cambioContexto)

    for el in despachador.micros:
        print("El micro", el.nombre)
        for al in el.procesos_ejecucion:
            print(al.nombre)
Ejemplo n.º 7
0
    def detect_failures(da: Proceso, mec: Proceso, start: int,
                        end: int) -> (int, int):
        """ To detect anomaly states on each process using a Random Forest
        model.
            Arguments:
                da  : ProcessDA object
                mec : ProcessMEC object
                start : initial position to detect errors
                end  : final position to detect errors

        """
        assert isinstance(da, Proceso), 'DA must be a Proceso object'
        assert isinstance(mec, Proceso), 'MEC must be a Proceso object'
        assert isinstance(start, int), 'start must be an integer'
        assert isinstance(end, int), 'end must be an integer'

        n_correct_da = n_correct_mec = n_total_da = n_total_mec = 0
        da_acc = mec_acc = 0
        da_tn = da_fp = da_fn = da_tp = 0
        mec_tn = mec_fp = mec_fn = mec_tp = 0

        # Get the chunk of data in the range [start, end]
        da_inputs, da_targets = da.get_batch_data(start, end)
        mec_inputs, mec_targets = mec.get_batch_data(start, end)
        # Call Random Forest model
        predict = clasificar_estado(da_inputs, mec_inputs)

        # Update limits for onto vars
        if not predict[0].any():
            da.update_limits(da_inputs)
        if not predict[1].any():
            mec.update_limits(mec_inputs)

        # Calculate accuracy
        n_correct_da += (da_targets == predict[0]).sum()
        n_correct_mec += (mec_targets == predict[1]).sum()
        n_total_da += da_targets.shape[0]
        n_total_mec += mec_targets.shape[0]
        da_acc = n_correct_da / n_total_da
        mec_acc = n_correct_mec / n_total_mec

        da_tn, da_fp, da_fn, da_tp = confusion_matrix(predict[0],
                                                      da_targets,
                                                      labels=[0, 1]).ravel()
        mec_tn, mec_fp, mec_fn, mec_tp = confusion_matrix(predict[1],
                                                          mec_targets,
                                                          labels=[0,
                                                                  1]).ravel()

        print('-' * 20)
        print(f'Accuracy         | da: {da_acc:.3f},\
        mec: {mec_acc:.3f}')
        print(f'Normal state| da: {da_tn}({(da_tn/n_total_da)*100:.3f}%), \
        mec: {mec_tn}({(mec_tn/n_total_mec)*100:.3f}%) ')
        print(f'Failures detected| da: {da_tp}({(da_tp/n_total_da)*100:.3f}%),\
        mec: {mec_tp}({(mec_tp/n_total_mec)*100:.3f}%) ')
        print(f'Failures missed: | da: {da_fn}({(da_fn/n_total_da)*100:.3f}%),\
        mec: {mec_fn}({(mec_fn/n_total_mec)*100:.3f}%) ')
        print(f'False positives: | da: {da_fp}({(da_fp/n_total_da)*100:.3f}%),\
        mec: {mec_fp}({(mec_fp/n_total_mec)*100:.3f}%) ')
        print('-' * 20)
        print()
        return da_acc, mec_acc
Ejemplo n.º 8
0
   def crearProceso(self, tamano):
     procesoNuevo = Proceso(self.pidContador, tamano, time.time())
     self.cpu.anadirProceso(procesoNuevo)
     if self.cpu.colaListos[0].pid == procesoNuevo.pid:
	self.cargarPagina()
     self.pidContador = self.pidContador + 1