def setUp(self): self.disk = Disk() self.irqQueueMock = Queue() self.killHandleMock = Mock() self.timeOutHandleMock = Mock() self.ioHandleMock = Mock() self.lockProcessingMock = Condition() self.lockIrqQueueMock = Condition() self.lockReadyQueueMock = Condition() self.lockInstructions = Condition() self.lockIrq = Condition() self.memory = Memory(self.lockInstructions) self.interruptionManager = InterruptionManager(self.lockReadyQueueMock, self.lockProcessingMock, self.irqQueueMock, self.lockIrqQueueMock) self.interruptionManager.registerHandler(IRQ.kill, self.killHandleMock) self.interruptionManager.registerHandler(IRQ.timeOut, self.timeOutHandleMock) self.interruptionManager.registerHandler(IRQ.IO, self.ioHandleMock) self.programLoader = ProgramLoader(self.disk, self.memory, self.interruptionManager, PcbTable(), self.lockIrq) self.memoryManager = MemoryManager(self.memory, self.disk, Mock(), Mock())
def configurationOne(self): # create some configuration for kernel lockReadyQueue = Condition() lockInstructions = Condition() lockPcb = Condition() pcbTable = PcbTable() irqQueue = Queue() lockIrqQueue = Condition() lockProcessing = Condition() swapDisk = SwapDisk() InterruptionManagerBuilder = interruptionManagerBuilder() readyQueue = Queue() disk = diskFactory().configurationOfTheDiskWithThreePrograms() memory = MemoryFactory().createElement(lockInstructions) frames = FramesFactory().createElement(len(memory.cells)) memoryManager = MemoryManager(memory, disk, swapDisk, frames) interruptionManager = InterruptionManagerBuilder.createElement( lockReadyQueue, lockProcessing, irqQueue, lockIrqQueue) cpu = CpuBuilder().createElement(memoryManager, interruptionManager, lockPcb, irqQueue, lockIrqQueue, lockInstructions, "1") scheduler = SchedulerBuilder().createElement(readyQueue, 2, lockReadyQueue) scheduler.registryCpu(cpu) ##todo remove memory monitorDevice = Monitor(interruptionManager, lockInstructions) printerDevice = Printer(interruptionManager, lockInstructions) monitorDevice.start() printerDevice.start() deviceManager = DeviceManagerBuilder().createElement( ResourceType.Monitor, monitorDevice) deviceManager.registerDevice(ResourceType.Printer, printerDevice) InterruptionManagerBuilder.registryInterruptionManager( interruptionManager, deviceManager, scheduler, memoryManager, readyQueue, lockReadyQueue, pcbTable) interruptionManager.start() clock = ClockBuilder().createElement(lockProcessing) clock.registrycpu(cpu) programLoader = ProgramLoaderBuilder().createElement( disk, memoryManager, interruptionManager, pcbTable, lockIrqQueue) clock.setDaemon(True) clock.start() deviceManager.start() kernel = Kernel() kernel.initializeKernel(clock, programLoader, scheduler) kernel.start() return kernel
def setUp(self): self.LockInstructionMock = Mock() self.memory = Memory(self.LockInstructionMock) self.interruptionManagerMock = Mock() self.quantum = 1 self.lockPcbMock = Mock() self.irqQueueMock = Mock() self.lockIrqQueueMock = Mock() self.disk = Disk() self.frames = FramesFactory().createElement(16) self.swapDisk = SwapDisk() self.memoryManager = MemoryManager(self.memory, self.disk, self.swapDisk, self.frames) self.cpu = Cpu(self.memoryManager, self.interruptionManagerMock, self.lockPcbMock, self.irqQueueMock, self.lockIrqQueueMock, Mock(), '1')