[FUG-BR] FreeBSD desaparecendo com um núcleo na CPU
Rodrigo Mosconi
freebsd em mosconi.mat.br
Sexta Novembro 9 13:15:20 BRST 2012
Em 9 de novembro de 2012 13:12, Otacílio <otacilio.neto em bsd.com.br> escreveu:
> On 09/11/2012 12:04, Rodrigo Mosconi wrote:
>>>
>>> if(limite_superior >= 1){
>>> fprintf(stdout,"%d eh primo\n", 1);
>>> fflush(stdout);
>>> }
>>
>> Há um erro conceitual: 1 não é primo, nem composto
>>
>>> if(limite_superior >= 2){
>>> fprintf(stdout,"%d eh primo\n", 2);
>>> fflush(stdout);
>>> }
>>>
>>> //Vamos criar os processos reponsáveis por encontrar os números
>>> for(i=0; i<processos; i++){
>>> //Vamos fazer o fork do processo
>>> if(!fork()){
>>> //Processo filho entra aqui
>>> for(j=3+2*i; j<=limite_superior; j+=passo){
>>> if(eh_primo(j)){
>>> fprintf(stdout,"%d eh primo\n", j);
>>> }
>>> }
>>> exit(0);
>>
>> como vc poderia usar o crivo de erastótenes para ignorar os múltiplos
>> de primos já obtidos.
>
>
> É, mas a idéia é mostrar que para um problema grande eu posso usar
> múltiplos processos na solução, que será bem mais rápida em uma máquina
> com múltiplas CPUs. Se eu sair usando muitos atalhos não vai ficar tão
> óbvia a vantagem de múltiplos processos.
>
> O erro conceitual será corrigido na versão 2.0.
>
O uso do crivo seria um exemplo de como usar uma área de memória
compartilhada entre processos ou threads
É um problema de exclusão mútua num bitmap
Mais detalhes sobre a lista de discussão freebsd