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 fifo(self): ''' @return: a FIFO kernel ''' self.imanager = InterruptorManager() self.cpu = CPU(self.ram, self.imanager, self.condition, self.mmu) self.queue = OwnQueue(self.condition) self.scheduler = Scheduler(self.cpu, self.queue, -1, self.condition) return self.__build(self.queue, self.scheduler)
def withPriority(self): ''' @return: a Priority kernel ''' self.imanager = InterruptorManager() self.cpu = CPU(self.ram, self.imanager, self.condition, self.mmu) self.func = lambda pcb1, pcb2: pcb1.getPriority() >= pcb2.getPriority() self.queue = OwnHeap(self.condition, self.func) self.scheduler = Scheduler(self.cpu, self.queue, -1, self.condition) return self.__build(self.queue, self.scheduler)
def roundRobin(self, quantum): ''' @return: given a <quantum>, returns a Round Robbin configured kernel, with quantum <quantum> ''' self.imanager = InterruptorManager() self.cpu = CPU(self.ram, self.imanager, self.condition, self.mmu) self.queue = OwnQueue(self.condition) self.scheduler = Scheduler(self.cpu, self.queue, quantum, self.condition) return self.__build(self.queue, self.scheduler)
def roundRobin_withPriority(self, quantum): ''' @return: given a <quantum> it returns a Priority-RR kernel with quantum <quantum> ''' self.imanager = InterruptorManager() self.cpu = CPU(self.ram, self.imanager, self.condition, self.mmu) self.func = lambda pcb1, pcb2: pcb1.getPriority() >= pcb2.getPriority() self.queue = OwnHeap(self.condition, self.func) self.scheduler = Scheduler(self.cpu, self.queue, quantum, self.condition) return self.__build(self.queue, self.scheduler)
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)