def stampaColor(self): #print isAGirlOnlyN(self.nome) if isAGirlOnlyN(self.nome): inizioStr = "<green>" fineStr = "</green>" print cms.color( "[+] "+inizioStr+self.nome+" "+self.classe+" "+self.cognome+fineStr) else: self.stampa()
def stampa(self,istante,flussoCPu,durataCpu,flussoIO,durataIO,codaCPU,codaIO): print cms.color("<yellow>istante: </yellow>")+str(istante)+"s" print "Processo in eseguzione: "+self.flussoCpu+" con durata: "+str(self.durataCpu)+ 's' if codaCPU.getLunghezza()==0: print "La coda dei processi pronti e' vuota" else: print "La coda dei processi pronti e' popolata da: " codaCPU.stampainfo() print "Processo in IO: "+self.flussoIO+" con durata:"+str(self.durataIO)+'s' if codaIO.getLunghezza()==0: print "La coda di I/O e' vuota" else: print "Coda IO: " codaIO.stampainfo()
if len(sys.argv) <= 1: print help else: numProcessiSimulazione = int(sys.argv[1]) durataMinSeqCPU = int(sys.argv[2]) durataMaxSeqCPU = int(sys.argv[3]) durataMinSeqIO = int(sys.argv[4]) durataMaxSeqIO = int(sys.argv[5]) quanto = int(sys.argv[6]) try: # dichiaro le strutture necessarie allo scheduler codaProcessiPronti = Coda() codaIO = Coda() print cms.color("<green>#--- I processi creati sono ---#\n</green>") # creazione lista dei processi p = [ Processo(Pid, durataMinSeqCPU, durataMaxSeqCPU, durataMinSeqIO, durataMaxSeqIO) for Pid in range(numProcessiSimulazione) ] # aggiungi i processi alla coda codaProcessiPronti.aggiungiLista(p) # stampo la coda dei processi pronti codaProcessiPronti.stampainfo() print cms.color("<green>\nIl quanto di tempo e': </green>") + str(quanto) + "s" print cms.color("<green>#-------------------------------#</green>") # avvio lo scheduler print cms.color("<blue>\nINIZIO SIMULAZIONE\n</blue>") algoritmo = RR() algoritmo.scheduler(quanto, codaProcessiPronti, codaIO)
#fine procedura media = 0 totale = 0 inserito = 1 numero = 0 scritta() while ( inserito != 0 ): inserito = input("Inserisci un numero: ") if (inserito): numero = inserito media = media + numero totale = totale + 1 media = (float(media) / totale) if (media > 6): str_inizio = "<green>" str_fine = "</green>" elif (media == 6): str_inizio = "<yellow>" str_fine = "</yellow>" else: str_inizio = "<red>" str_fine = "</red>" print cms.color("\nLa tua media e': "+str_inizio+str(media)+str_fine)
for nome in nomi: inizioStr = "<white>" fineStr = "</white>" if nome.find("1R")>0: inizioStr = "<red>" fineStr = "</red>" elif isAGirl(nome): #print isAGirl(nome) inizioStr = "<green>" fineStr = "</green>" if nome.find("d.") > 0: inizioStr = "<blue>" fineStr = "</blue>" print cms.color(inizioStr+nome+fineStr) myfile.write(nome+"\n") data.write(nome[1:-1]+"\n") print "----------------------------------" myfile.write("----------------------------------\n") sock.close() time.sleep(120) #5 minuti, ogni quanto moodle aggiorna le persone online myfile.close() #print htmlSource
def scheduler(self,quanto,codaCPU,codaIO): flag=''#se il proc. ha finito la sua seq. di CPU vale 0 altrimenti il flag vale 1 se deve tornare in ready queue istante=0 finito=bool(0) #e' falso while (not finito): #finche' e' vero #------------------------------------gestione della Cpu--------------------------------------# #coda piena e cpu vuota if(codaCPU.getLunghezza()!=0)and(self.flussoCpu=="Inattiva"): elementoDispatchedCPU, pidDispatchedCPU, durataDispatchedCPU = self.dispatched(codaCPU) #primo caso la durata e' maggiore del quanto if durataDispatchedCPU > quanto: resto=durataDispatchedCPU-quanto elementoDispatchedCPU.ListaSequenze[0]=resto self.durataCpu=quanto self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=1 #secondo e terzo caso la durata e' minore o uguale al quanto elif durataDispatchedCPU <= quanto: self.durataCpu=durataDispatchedCPU self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=0 #coda piena ed cpu piena elif ((codaCPU.getLunghezza() != 0)and(self.flussoCpu!="Inattiva")): if(self.durataCpu==0): #ma il processo ha finito il quanto if flag==1: codaCPU.aggiungiProcesso(elementoDispatchedCPU) elif flag==0: self.cambioContesto(elementoDispatchedCPU, codaIO) #prendo il primo processo elementoDispatchedCPU, pidDispatchedCPU, durataDispatchedCPU = self.dispatched(codaCPU) #primo caso la durata e' maggiore del quanto if durataDispatchedCPU > quanto: resto=durataDispatchedCPU-quanto elementoDispatchedCPU.ListaSequenze[0]=resto self.durataCpu=quanto self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=1 #secondo e terzo caso la durata e' minore o uguale al quanto elif durataDispatchedCPU <= quanto: self.durataCpu=durataDispatchedCPU self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=0 #coda vuota e la cpu e' piena elif(codaCPU.getLunghezza()==0)and(self.flussoCpu!="Inattiva"): if(self.durataCpu==0): #ma il processo ha finito il quanto if flag==1: #viene mandato in coda codaCPU.aggiungiProcesso(elementoDispatchedCPU) #ma viene riscelto in quanto unico processo in coda elementoDispatchedCPU, pidDispatchedCPU, durataDispatchedCPU = self.dispatched(codaCPU) #primo caso la durata e' maggiore del quanto if durataDispatchedCPU > quanto: resto=durataDispatchedCPU-quanto elementoDispatchedCPU.ListaSequenze[0]=resto self.durataCpu=quanto self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=1 #secondo e terzo caso la durata e' minore o uguale al quanto elif durataDispatchedCPU <= quanto: self.durataCpu=durataDispatchedCPU self.flussoCpu=pidDispatchedCPU print cms.color("<red>PROCESSO SCELTO PER L'ESECUZIONE:</red>")+str(pidDispatchedCPU) flag=0 #se ha finito il quanto e non ha piu' istruzioni,setto la cpu inattiva elif flag==0: self.cambioContesto(elementoDispatchedCPU, codaIO) self.flussoCpu="Inattiva" #------------------------------------gestione dell' I/O-----------------------------------# #coda piena ed i/o piena ma processo morto if(codaIO.getLunghezza()!=0)and(self.flussoIO!="Inattiva"): if(self.durataIO==0): self.cambioContesto(elementoDispatchedIO, codaCPU) elementoDispatchedIO, pidDispatchedIO, durataDispatchedIO = self.dispatched(codaIO) self.durataIO=durataDispatchedIO self.flussoIO=pidDispatchedIO #coda piena e la i/o e' vuota elif (codaIO.getLunghezza()!=0)and(self.flussoIO=="Inattiva"): elementoDispatchedIO, pidDispatchedIO, durataDispatchedIO = self.dispatched(codaIO) self.durataIO=durataDispatchedIO self.flussoIO=pidDispatchedIO #coda vuota e la i/o e' piena ma il processo ha finito elif(codaIO.getLunghezza()==0)and(self.flussoIO!="Inattiva"): if(self.durataIO==0): self.cambioContesto(elementoDispatchedIO, codaCPU) self.flussoIO="Inattiva" #coda cpu/io vuota e cpu/io vuota if (codaCPU.getLunghezza() == 0)and(self.durataCpu==0): if (codaIO.getLunghezza() == 0)and(self.durataIO==0): finito=not finito #-----------------------------------stampa dei processi-----------------------------------# self.stampa(istante,self.flussoCpu,self.flussoIO,self.durataCpu,self.durataIO,codaCPU,codaIO) #----------------------------------gestione della timeline--------------------------------# if(self.durataCpu!=0): self.durataCpu=self.durataCpu-1 if(self.durataIO!=0): self.durataIO=self.durataIO-1 istante=istante+1
nomi.append(line[inizio:fine]) for nome in nomi: inizioStr = "<white>" fineStr = "</white>" if nome.find("1R") > 0: inizioStr = "<red>" fineStr = "</red>" elif isAGirl(nome): #print isAGirl(nome) inizioStr = "<green>" fineStr = "</green>" if nome.find("d.") > 0: inizioStr = "<blue>" fineStr = "</blue>" print cms.color(inizioStr + nome + fineStr) myfile.write(nome + "\n") data.write(nome[1:-1] + "\n") print "----------------------------------" myfile.write("----------------------------------\n") sock.close() time.sleep(120) #5 minuti, ogni quanto moodle aggiorna le persone online myfile.close() #print htmlSource