def setUp(self): self.pcb1 = Mock() self.pcb2 = Mock() self.interruptor = Mock() self.logger = Mock() self.printLine1 = InstIO("Impresion 1", 0) self.printLine2 = InstIO("Impresion 2", 0) self.queue = Queue() self.device = Device("Printer", self.interruptor, self.queue) # 0 equals to the device cod printer self.device.setLogger(self.logger)
def setUp(self): self.memory = RAM(65535) self.mmu = MMU(1, self.memory) self.scheduler = Mock() self.hdd = Mock() self.queue = Mock() self.interruptor2 = Mock() self.interruptor = Mock() self.logger = Mock() self.semaphore = RLock() self.cpu = CPU(self.memory, self.interruptor, self.semaphore, self.mmu) self.cpu.setLogger(self.logger) self.clock = Clock(self.cpu) self.mov = InstCPU("Matar a Flanders") self.Instruction2 = InstCPU("Y Tambien A Selma") self.instructionIO = InstIO("Soy de IO", 0) self.memory.putDir(0, self.mov) self.memory.putDir(1, self.Instruction2) self.memory.putDir(2, self.instructionIO) page0 = Page(0) page1 = Page(1) page2 = Page(2) page0.changeMemoryFlag() page1.changeMemoryFlag() page2.changeMemoryFlag() self.aPcb = PCB(0, [page0, page1, page2], 3, 4, 1, [Page(123)])
def setUp(self): # miscellaneous self.semaphore = Condition() self.disk = HardDisk() self.comparator = lambda pcb1, pcb2: pcb1.getPriority() > pcb2.getPriority() # the greater, the better self.readyQueue = OwnHeap(self.semaphore, self.comparator) # hardware self.memory = RAM(1000) self.mmu = MMU(1,self.memory) self.ioDelivery = IODelivery() self.progLoader = ProgramLoader(self.memory, self.disk, self.readyQueue,self.mmu) self.imanager = InterruptorManager() self.cpu = CPU(self.memory, self.imanager, self.semaphore,self.mmu) self.scheduler = Scheduler(self.cpu, self.readyQueue , 5, self.semaphore) # devices self.spooler = Device('printer', self.imanager) self.screen = Device('screen', self.imanager) self.ioDelivery.newDevice(self.spooler) self.ioDelivery.newDevice(self.screen) # im self.imanager.setScheduler(self.scheduler) self.imanager.setDisk(self.disk) self.imanager.setMmu(self.mmu) self.imanager.setIODelivery(self.ioDelivery) # loading programs self.ioInstruction = InstIO('directory', 0) self.cpuInstruction = InstCPU('1+1') self.prog1 = Program('ls') self.prog2 = Program('pwd') self.prog1.addInstruction(self.cpuInstruction) self.prog2.addInstruction(self.ioInstruction) self.disk.setProgram(self.prog1) self.disk.setProgram(self.prog2)
def setUp(self): self.disco = Mock() self.mmu = Mock() self.coladeprocesos = Mock() self.ram = RAM(65534) self.mmuReal = MMU(1, self.ram) self.mmuReal2 = MMU(2, self.ram) self.progLoader = ProgramLoader(self.ram, self.disco, self.coladeprocesos, self.mmu) self.progLoader2 = ProgramLoader(self.ram, self.disco, self.coladeprocesos, self.mmuReal) self.progLoader3 = ProgramLoader(self.ram, self.disco, self.coladeprocesos, self.mmuReal2) # Preparando un programa de dos (2) instrucciones self.instruccion1 = InstCPU("2+2") self.instruccion2 = InstIO("Leer de teclado", 2) self.program = Program("prog") self.program.addInstruction(self.instruccion1) self.program.addInstruction(self.instruccion2)
def basicHDD(self): ''' @return: an HDD with 4 programs, 2 simple programs, and 2 "real programs", factorial n and summatory n ''' self.manSublime = Manual("sublimeText", "make something in I/O") self.sbl = Program("sublimeText") self.instr1 = InstIO("ioDePrinter", 1) self.instr10 = InstIO("io De screen", 0) self.instr01 = InstIO("io De screen", 0) self.instr111 = InstIO("ioDePrinter", 1) self.instr2 = InstCPU("sblm cpu") self.sbl.addInstruction(self.instr1) self.sbl.addInstruction(self.instr2) self.sbl.addInstruction(self.instr1) self.sbl.addInstruction(self.instr1) self.sbl.addInstruction(self.instr10) self.sbl.addInstruction(self.instr01) self.sbl.addInstruction(self.instr1) self.sbl.addInstruction(self.instr111) self.sbl.addManual(self.manSublime) self.manVim = Manual("vim", "have too many instructions") self.vim = Program("vim", self.manVim) self.instrVim1 = InstCPU("vim 1") self.instrVim2 = InstCPU("vim 2") self.instrVim3 = InstCPU("vim 3") self.instrVim4 = InstCPU("vim 4") self.instrVim5 = InstCPU("vim 5") self.instrVim6 = InstCPU("vim 6") self.vim.addInstruction(self.instrVim1) self.vim.addInstruction(self.instrVim2) self.vim.addInstruction(self.instrVim3) self.vim.addInstruction(self.instrVim4) self.vim.addInstruction(self.instrVim5) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instr111) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instr111) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.vim.addInstruction(self.instrVim6) self.manMultiplatory = Manual("factorial", "factorial(n)") self.multiplatory = Program("factorial", self.manMultiplatory) self.multiplatory.variableSize = 3 # the relative position 0 has the n self.multiplatory.addInstruction(MovLiteral(1, 1)) self.multiplatory.addInstruction(MovLiteral(2, 2)) self.multiplatory.addInstruction(CmpLiteral(0, 1)) self.multiplatory.addInstruction(Jle(4)) self.multiplatory.addInstruction(Mul(1, 2)) self.multiplatory.addInstruction(AddLiteral(2, 1)) self.multiplatory.addInstruction(AddLiteral(0, -1)) self.multiplatory.addInstruction(Jmp(3)) self.multiplatory.addInstruction(ScreenPrintValue(1)) self.sumatoryManual = Manual("summatory", "summatory(n)") self.sumatory = Program("summatory", self.sumatoryManual) self.sumatory.variableSize = 3 self.sumatory.addInstruction(MovLiteral(1, 0)) self.sumatory.addInstruction(MovLiteral(2, 1)) self.sumatory.addInstruction(CmpLiteral(0, 0)) self.sumatory.addInstruction(Jle(4)) self.sumatory.addInstruction(Add(1, 2)) self.sumatory.addInstruction(AddLiteral(2, 1)) self.sumatory.addInstruction(AddLiteral(0, -1)) self.sumatory.addInstruction(Jmp(3)) self.sumatory.addInstruction(ScreenPrintValue(1)) self.hdd = HardDisk() self.hdd.setProgram(self.vim) self.hdd.setProgram(self.sbl) self.hdd.setProgram(self.multiplatory) self.hdd.setProgram(self.sumatory) return self.hdd
def __init__(self, relativePositionWhereTheValueIs): InstIO.__init__(self, "---Value---",1) self.relativePositionWhereTheValueIs = relativePositionWhereTheValueIs
def __init__(self, relativePositionWhereTheValueIs): InstIO.__init__(self, "---Value---", 1) self.relativePositionWhereTheValueIs = relativePositionWhereTheValueIs
def setUp(self): self.ioInst = InstIO("Instruccion de impresora", 0)