class ClockTest(unittest.TestCase): def setUp(self): self.clock = Clock() def test_startUp(self): assert (self.clock.isRunning == False) self.clock.startUp() assert (self.clock.isRunning == True) self.clock.shutDown() def test_shutdown(self): self.clock.startUp() assert (self.clock.isRunning == True) self.clock.shutDown() assert (self.clock.isRunning == False) def test_addSuscribed(self): aCpu = Mock() self.clock.addSuscribed(aCpu) assert (self.clock.suscribed == [aCpu]) def test_notify(self): aCpu = Mock() other = Mock() another = Mock() self.clock.suscribed = [aCpu,other,another] self.clock.notify() verify(aCpu,times(1)).run(); verify(other,times(1)).run(); verify(another,times(1)).run();
class Kernel: def __init__(self, aSize): self.disc = Disc() self.memory = MainMemory(aSize) self.memoryManager = ContinuousAssignment(LogicalMemory(self.memory),self) self.handler = InterruptionHandler(self) self.cpu = Cpu(self.memoryManager,self.handler) self.scheduler = Scheduler(self.cpu) self.clock = Clock() self.IO = io.IO(self) self.clock.addSuscribed(self.cpu) self.clock.addSuscribed(self.IO) self.clock.addSuscribed(self.handler) #tabla que contiene todos los pcb (k,v) => (pid,pcb) self.table = {} def getLogicalMemory(self): return self.logicalMemory def getMemoryManager(self): return self.memoryManager def getDisc(self): return self.disc def getCpu(self): return self.cpu def getMemory(self): return self.memory def getMemoryManager(self): return self.memoryManager def getHandler(self): return self.handler def getIO(self): return self.IO def getClock(self): return self.clock def getScheduler(self): return self.scheduler def getTable(self): return self.table #Comienza con la ejecucion del clock def startUp(self): self.getClock().startUp() #Corta la ejecucion del clock def shutDown(self): self.getClock().shutDown() def run(self, name): print "[Kernel] Ejecutar programa: " + str(name) self.handler.newIrq(name) #Obtiene todos los programas del disco def getProgramasDelDisco(self, name): return self.getDisc().getProgram(name) #Agrega el pcb en la table def addPcb(self,aPcb): self.table[aPcb.getPid()] = aPcb print "LALALALAAAAA " + str(len(self.table)) #Borra el pcb en la table def removePcb(self,aPcb): #guardo las keys para tener una lista #y ver si la tabla de pcb esta vacia o no keys = self.table.keys() if(len(keys) != 0): del self.table[aPcb.getPid()] print "RERERERERER " + str(len(self.table))