Example #1
0
void opcao(node *PRONTOS,node *EXECUTANDO, node *BLOQUEADO,node *FINALIZADOS,int op){
	node *tmp;
	switch(op){
		case 0:
			libera(PRONTOS);
			break;
		case 1:
			libera(PRONTOS);
			inicia(PRONTOS);
			break;
		case 2:
			listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
			break;
		case 3:
			insere(PRONTOS);
			break;
		case 9: Escalonador_Simples(PRONTOS,EXECUTANDO, BLOQUEADO,FINALIZADOS);
			break;
		case 4:
			tmp= retira(PRONTOS);
			if(tmp != NULL){
				printf("Retirado: %3d\n\n", tmp->num);
				libera(tmp);
			}
			break;
		default:
			printf("Comando invalido\n\n");
	}
}
void comparaAmostras(User u,Proc** amostras,int texto,char*** lista){
	int i,j,k,warn=0,lim=u->iterado;
	int tam=0;
	Proc p[u->nAmostras*u->nproc];
	int value[u->nAmostras*u->nproc];

	if(u->iterado>u->nAmostras)lim=u->nAmostras;
	tam=listaProcessos(lim,u->nproc,amostras,p,tam);
	avisos(tam,value,p,amostras,lim,u->nproc);
	avisar(tam,value,u->aviso,texto,lim,u->nproc,amostras,p,*lista);	

	}
Example #3
0
int Escalonador_Simples(node *PRONTOS, node *EXECUTANDO, node *BLOQUEADO, node *FINALIZADOS) {
	int i, j,k, finalizou;
	node *tmp;
	node *tmp2;
	node *novo ;
	while(qtprontos!=tam) {
		listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
		tmp = PRONTOS->prox;
		while( tmp != NULL){ 
			sleep(1);
			finalizou=0;	 
			tmp->cpu_feitos++;
			tmp->situacao=1;
			novo = transfereEntre(tmp, EXECUTANDO,PRONTOS);
			listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
			sleep(2);
	 	   	if(novo->io_feitos==novo->io && novo->cpu_feitos==novo->cpu){ 
				novo->situacao=3;
				novo = transfereEntre(novo, FINALIZADOS,EXECUTANDO);
				listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
				sleep(2);
				qtprontos++;
				finalizou=1;
			}
			if(novo->io_feitos<novo->io && finalizou==0) {
				if(!vazia(BLOQUEADO)){	tmp2 = BLOQUEADO->prox;
					tmp2->situacao=0;
					transfereEntre(tmp2, PRONTOS,BLOQUEADO);
					listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
					sleep(1);
				}
				novo->io_feitos++;
				novo->situacao=2;
				novo = transfereEntre(novo, BLOQUEADO,EXECUTANDO);
				listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
				sleep(2);
			}
			else {			
				novo->situacao=0;
				transfereEntre(novo, PRONTOS,EXECUTANDO);
				listaProcessos(PRONTOS,EXECUTANDO, BLOQUEADO, FINALIZADOS);
				sleep(2);
			}			
			tmp = tmp->prox;		  
		}	
	}

return 0;
}