class Process: def __init__(self,pnum,pstate,ptime,pio,ppri): self.num = pnum # an integer self.state = pstate # this is a string self.time = ptime # an integer self.slice = ptime # an integer self.iotime = pio # an integer self.timetoio = ptime+1 # an integer self.pri = ppri # an integer self.twait = 0 # an integer self.trun = 0 # an integer self.history = [] # a sequence def __str__(self): s = "(%d: %s, time:%d io:%d slice:%d wait:%d run:%d)" % \ (self.num,self.state,self.time,self.iotime,self.slice,\ self.twait,self.trun) s = s + "\n " + str(self.history) return s def statechange(self,t,s): self.state = s self.history.append((t,s)) def tick(self): if self.state == 'running': self.time = self.time - 1 self.slice = self.slice - 1 self.timetoio = self.timetoio - 1 self.trun = self.trun + 1 elif self.state == 'ready': self.twait = self.twait + 1 class ProcessTable: def __init__(self): self.pt = {} def __str__(self): keylist = self.pt.keys() s = "" for i in keylist: s = s + str(self.pt[i]) + "\n" return s PT = ProcessTable() def ProcessCreate(pnum,ptime,pio,ppri): global ProcessTable newProc = Process(pnum,'created',ptime,pio,ppri) PT.pt[pnum] = newProc return newProc def tick(): global ProcessTable keylist = PT.pt.keys() for i in keylist: PT.pt[i].tick() return def ProcessTablePrint(): global ProcessTable keylist = PT.pt.keys() for i in keylist: print "process",i,PT.pt[i] return