Example #1
0
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();
Example #2
0
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))