public void alocaMemoria(Processo processo) {
		if (memoria.nsoMemoria.down() == true){
			int blocosParaAlocar = processo.blocosMemoria;
			if (processo.pid == 0) {
//				System.out.printf("\nBlocos: ");
				for (int i = 0; i < MEMCPU; i++){
					if ((blocosParaAlocar > 0) && (memoriaCPU[i]==0)){

						memoriaCPU[i] = processo.pid;
						blocosParaAlocar--;
						processo.offsetMemoria = (i - processo.blocosMemoria);
					}
//					System.out.printf("da memoria da CPU alocados\n");
				}

			} else {
//				System.out.printf("\nBlocos: ");
				for (int i = 0; i < MEMUSER; i++){
					if ((blocosParaAlocar > 0) && (memoriaUsuario[i]==0)){
						memoriaUsuario[i] = processo.pid;
						blocosParaAlocar--;
						processo.offsetMemoria = (i - processo.blocosMemoria + 1);
//						System.out.printf("%s, ", i);
					}
				}
//				System.out.printf("da Memoria de Usu�rio alocados\n");

			}			
			memoria.nsoMemoria.up();
		} else {
			escalonador.nsoEscalonador.bloquearProcesso(processo);
		}

	}