[FUG-BR] FreeBSD desaparecendo com um núcleo na CPU
Otacílio
otacilio.neto em bsd.com.br
Sexta Novembro 9 13:23:33 BRST 2012
On 09/11/2012 12:15, Rodrigo Mosconi wrote:
> 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
> -------------------------
É, mas se você misturar um monte de conceito de uma vez só os alunos tem
uma tendência de olharem para o problema como algo muito difícil. Melhor
ir aos poucos.
Mais detalhes sobre a lista de discussão freebsd