示例#1
0
    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)])
示例#2
0
    def test_load_a_program_pcb_creation_with_1_page(self):
        when(self.disco).getProgram("programa").thenReturn(self.program)
        when(self.mmu).getFrameSize().thenReturn(2)
        self.scope = Scope([Page(23)], [Page(45)])
        when(self.mmu).getMemoryScope(self.program).thenReturn(self.scope)
        when(self.mmu).fromPageToAbsolutePosition(23).thenReturn(46)
        when(self.disco).getProgram("programa").thenReturn(self.program)

        self.progLoader.loadProcess("programa")

        self.assertEquals(self.progLoader.getNextId(), 2)
        verify(self.mmu, 1).getMemoryScope(self.program)
        self.assertEquals(self.ram.getDir(46), self.instruccion1)
        self.assertEquals(self.ram.getDir(47), self.instruccion2)
示例#3
0
    def test_when_fetching_last_instruction_then_pcbEnd_interruption(self):
        page0 = Page(0)
        page1 = Page(1)
        page0.changeMemoryFlag()
        page1.changeMemoryFlag()
        self.anotherPcb = PCB(
            0, [page0, page1], 2, 4, 1,
            [123])  #The difference with aPcb, are their sizes... Arrange
        self.anotherPcb.runing()
        self.cpu.setPCB(self.anotherPcb)

        self.cpu.tick()  # Act
        self.cpu.tick()
        self.cpu.tick()

        verify(self.interruptor, 1).kill(self.anotherPcb.getPid())  # Assert