예제 #1
0
def main():

    thread = threading.Thread(target=recv_package)
    thread.start()
    ### Leer cuantos sensores hay conectados para poder realizar el handshake(malloc mágico)
    ### Crear barrera con contador = cuantos sensores hay
    ### Crear cola para cada thread
    ### Crear semaforo para cada cola de rocolectores
    ### Crear threads recolectores (se envía de parámetro su cola y su identificador respectivo)
    #abre el archivo csv en modo lectura
    interface_queue = queue.Queue(queue_size)
    collectors = Collectors()
    collectors_info = collectors.initializer(interface_queue)

    memoryManager = MemoryManager()

    plotter = Plotter()

    #Por cuestiones de comodidad se inicializa acá pero no se usa posteriormente.
    interface = Interface()
    #plotter.initializer(interface)
    interface.initializer(interface_queue, collectors_info, memoryManager,
                          plotter)

    while True:
        with open('identificadores.csv', 'r') as csv_file:
            csv_reader = csv.reader(csv_file, delimiter=',')
            next(csv_reader)
            next(csv_reader)
            semaphore.acquire()
            #cierra el mutex, saca el paquete respectivo de la cola, y lo vuelve a abrir
            lock.acquire
            package = packet_queue.get()
            lock.release
            #Si hubo un timeout, el servidor termina su ejecución; si no, imprime el paquete.
            timeout = package[5]
            if (timeout == 0):
                #Multiplexor: Envia el paquete a su cola correspondiente
                #print(package)
                for line in collectors_info:
                    plot_data = [package[0], package[4]]
                    #print(plot_data)
                    """print(line[0], package[1])
					print(line[1], package[2])
					print(line[2], package[3])"""
                    if (line[0] == package[1] and line[2] == package[2]
                            and line[1] == package[3]):
                        #print("entre")
                        line[4].acquire()
                        line[3].put(plot_data)
                        line[4].notify()
                        line[4].release()
            else:
                print("cliente caido")
                break
예제 #2
0
 def setUp(self):
     self.hdd = HDD(10)
     self.fs = self.hdd.generate_file_system()
     self.instruction1 = InstructionIO()
     self.instruction2 = InstructionCPU()
     self.instruction3 = InstructionIO()
     self.instructionList1 = [self.instruction1, self.instruction2]
     self.instructionList2 = [
         self.instruction1, self.instruction2, self.instruction3
     ]
     self.program1 = Program(self.instructionList1, "AProgram")
     self.program2 = Program(self.instructionList2, "BProgram")
     self.fs.add_file("AProgram", self.program1)
     self.fs.add_file("BProgram", self.program2)
     self.file1 = self.fs.get_program("AProgram")
     self.file2 = self.fs.get_program("BProgram")
     self.pcb1 = PCB(0, 2, BlockHolder(self.file1))
     self.pcb2 = PCB(0, 3, BlockHolder(self.file2))
     self.memoryManager = MemoryManager()
     self.memoryManager.set_as_ca(FirstFit())
예제 #3
0
 def requestMemory(self, functionName):
     neccesaryMemory = self.memoryMap[functionName]
     self.tempMemory = MemoryManager(
     int(neccesaryMemory[3]),
     int(neccesaryMemory[4]),
     int(neccesaryMemory[5]),
     int(neccesaryMemory[0]),
     int(neccesaryMemory[1]),
     int(neccesaryMemory[2]),
     self.counter.tempInt,
     self.counter.tempDouble,
     self.counter.tempBoolean,
     self.counter.localInt,
     self.counter.localDouble,
     self.counter.localBoolean)
     #memory added to counter
     self.counter.tempInt += int(neccesaryMemory[3])
     self.counter.tempDouble += int(neccesaryMemory[4])
     self.counter.tempBoolean += int(neccesaryMemory[5])
     self.counter.localInt += int(neccesaryMemory[0])
     self.counter.localDouble += int(neccesaryMemory[1])
     self.counter.localBoolean += int(neccesaryMemory[2])
예제 #4
0
 def __init__(self):
     self.variables = {}
     self.shadowed = {}
     self.Memory = MemoryManager()
     self.error = False
예제 #5
0
import ply.yacc as yacc

from config import CONST_PREFIX, DYNAMIC_PREFIX, ITERATOR_PREFIX, STATIC_PREFIX
from generator.assign import assign
from generator.condition import (con_eq, con_ge, con_geq, con_le, con_leq,
                                 con_neq)
from generator.conditional import if_then, if_then_else
from generator.expression import div, minus, mod, plus, times, value
from generator.io import read, write
from generator.loop import do_while, for_downto, for_to, while_do
from lexer import tokens  # noqa: F401
from memory import MemoryManager

memory_manager = MemoryManager()


def p_program_declarations_commands(p):
    '''program : DECLARE declarations BEGIN commands END'''
    p[0] = p[4] + ['HALT']


def p_program_commands(p):
    '''program : BEGIN commands END'''
    p[0] = p[2] + ['HALT']


def p_declarations_declarations_id(p):
    '''declarations : declarations COMMA ID'''
    memory_manager.add_variable(p[3], p.lexer.lineno)