Exemplo n.º 1
0
void traer_bloque(unsigned int etiqueta, unsigned int indice)
{
    linea* l = cache[indice];
    int i, j;

    /* comprobamos si hay alguna línea vacía */
    i = 0;
    while((i < (asociatividad - 1)) && l[i].valido)
        i++;

    /* Si hay alguna línea vacía, "copiar" el bloque a esa línea, y establecer el "bit de validez"
    a cero. */
    if(!l[i].valido)
    {
        l[i].etiqueta = etiqueta;
        l[i].valido = 1;
    }
    else
    {
        /* Si no hay ninguna línea vacía pasamos al algoritmo de reemplazo ... */

        /* Seleccionamos él bloque a reemplazar, es decir, que bloque eliminamos */
        if(es_lru)
        {
            /* Seleccionamos la línea cuyo contador es mínimo */
            j = 0;
            for(i = 1; i != asociatividad; ++i)
                if(l[i].contador_lru < l[j].contador_lru)
                    j = i;
        }
        else
        {
            /* seleccionamos una línea de forma aleatoria */
            j = numero_aleatorio(0, asociatividad);
        }

        /* La línea con el bloque eliminado está vacía, y "copiamos" el nuevo bloque a esta línea */
        l[j].etiqueta = etiqueta;
    }
}
Exemplo n.º 2
0
void MainWindow::enviarDado(void)
{
    QString dado;

    if(conexao->isAtiva())
    {

        /* Gera o dado aleatório, obtém a hora atual e faz o envio para o servidor. */
        dado = QDateTime::currentDateTime().toString(Qt::ISODate)
                + " " + QString::number(numero_aleatorio(faixaInicio, faixaFim));

        conexao->enviar(dado);

        /* Atualiza a lista de dados enviados inserindo o registro. */
        model->insertRows(0, 1);
        model->setData(model->index(0), dado);
    }
    else
    {
        falhaConexao();
    }

}
Exemplo n.º 3
0
int main ( void ){
const int PIPE_NUMBER = 2;
int saldo = 20;
int i,numero_aposta, instrucao_filho;
int fd[PIPE_NUMBER][2];
pid_t pid;


for(i=0; i<PIPE_NUMBER; i++){
	if(pipe(fd[i]) == -1){
		perror("Pipe failed");
		return 1;
	}
}

pid = fork();

if(pid > 0){
	
	for(i=0; i<PIPE_NUMBER; i++){
			if(i==0){
				close(fd[i][0]);
				continue;
			}
			if(i==1){
				close(fd[i][1]);
				continue;
			}
			close(fd[i][1]);
			close(fd[i][0]);
}	
		
	do{
		
		int number;
		printf("Introduza Número (entre 1 a 5):\n");
		scanf("%d", &numero_aposta);
		if(numero_aposta == -1){
			instrucao_filho = 0;

		}else{
			instrucao_filho = 1;
		}
		/* validacao de numero introduzido pelo utilizador */ 
		while(numero_aposta >5 || (numero_aposta <1 && numero_aposta !=-1) ){
			system("clear");
			printf("Introduza Número Válido (entre 1 a 5):\n");
			scanf("%d", &numero_aposta);
		}
		
		/* escreve instrucao ao filho: 1 ou 0*/
		close(fd[0][0]);
		write(fd[0][1], &instrucao_filho, sizeof(int));
		
		if(numero_aposta == -1) break;
		
		/* le  numero de aposta */
		close(fd[1][1]);
		read(fd[1][0], &number, sizeof(int));
		
		if(number == numero_aposta){
			saldo +=10;
			printf("Acertou!\n");
		}else{
			saldo -= 5;
			printf("Falhou!\n");
			if(saldo <= 0){
				instrucao_filho = 0;
				close(fd[0][0]);
				write(fd[0][1], &instrucao_filho, sizeof(int));
				printf("Perdeu!!! Número Aleatório %d\n", number);
				return 0;
			}
		}
		close(fd[0][0]);
		write(fd[0][1], &saldo, sizeof(int));
		
		printf("Número de Aleatório %d\n", number);	
		printf("Saldo: %d\n\n\n", saldo);
	}while(numero_aposta != -1 || saldo >0);
		close(fd[1][0]);
		close(fd[0][1]);
	
}else if(pid == 0){
	
	int saldo = 20;
	int instrucao_do_pai;
	int numAleatorio;
	
	for(i=0; i<PIPE_NUMBER; i++){
			if(i==0){
				close(fd[i][1]);
				continue;
			}
			if(i==1){
				close(fd[i][0]);
				continue;
			}
			
			close(fd[i][1]);
			close(fd[i][0]);		
		}
	
	do{
		
		/* recebe instrucao do pai */
		close(fd[0][1]);
		read(fd[0][0], &instrucao_do_pai, sizeof(int));
		
		/*close(fd[0][0]);*/
		if(instrucao_do_pai == 1){
			
			numAleatorio = numero_aleatorio();
			/* passa numero aleatorio */
			close(fd[1][0]);
			write(fd[1][1], &numAleatorio, sizeof(int));
			
			/*close(fd[1][1]);*/
			/* recebe numero do pai: 1 se acertou ou -1 se errou */
			close(fd[0][1]);
			read(fd[0][0], &saldo, sizeof(int) );
			
		}
			
	}while(instrucao_do_pai != 0);
	close(fd[0][0]);
	close(fd[1][1]);
	
	exit(1);
}


return 0;
}