Junior Polegato - Linux escreveu: > Edson Marquezani Filho escreveu: >> Pessoal, tenho uma dúvida conceitual com relação a processamento >> paralelo com múltiplos processadores, ou os atuais dual core. >> Bom, depois que a gente estuda um pouquinho percebe que nem tudo em >> computação é mágica. Portanto, pra que possa ser aproveitar o poder de >> mais de um processador, é necessário que tenhamos mecanismos que >> possibilitem dividir as tarefas entre eles. >> Tudo bem, é pra isso que temos kernel SMP, certo ? Imagino que a >> função mais básica desse tipo de kernel seja escalonar os processos >> para mais de um processador. >> Então, se você tem uma máquina dual core ou com mais de um >> processador real, mas não tem um kernel que faça processamento >> paralelo, de nada adianta. Mas, se você o tem, todos os processos >> usarão essa capacidade total, creio eu, devido ao escalonamento. >> Agora, a dúvida vem quando ouço falar, e inclusive passo adiante, a >> informação de que o Squid, por exemplo, não faz uso desses recursos, o >> que torna seus vários processadores carésimos indeferentes, nesse >> caso. Mas, se quem distribui o processamento é o próprio kernel, não >> deveria ser assim. Ou deveria ? >> Como fica essa história ? Afinal, o que o kernel faz, e o que o >> programa faz, com relação a multiprocessadores ? Ter um kernel SMP já >> garante que o processamento de todos seja aproveitado ? >> Bom, eu já vi arquitetura, microprocessadores e sistemas >> operacionais na faculdade, mas não sei o quão bem absorvi todos esse >> conceitos. Mas pelo que me lembro, no caso de SOs, o processamento >> distribuído deveria depender do kernel e deveria ser transparente aos >> processos, a não ser em casos em que eles usassem instruções >> específicas desse tipo de arquitetura. >> Tô meio confuso. =@ >> Abraço a todos. >> > > Olá, > > Quem distribui os processos entre os processadores e dita quanto > tempo esse processo pode usar o processador sem ser interrompido é o > kernel. Até aí tudo bem? Ok. > Um processo em uma máquina com um processador vai ser interrompido > para que outros processos tenham a chance de serem executados ou pelo > motivo deste esperar uma resposta de algum dispositivo lento (hd, > teclado, mouse, rede, modem, etc). Entende isso, né? > Agora um processo A em uma máquina com vários processadores vai > ser interrompido quando se tem um processo B com prioridade maior que a > deste A e nos outros processadores as prioridades são maiores que a de > B. Repare que o sistema de prioridades do Linux usa um algoritmo > complexo para definir o valor dessa prioridade, que é completamente > dinâmico, onde a prioridade do processo atribuída "manualmente" não é > fixa e sim uma forma de dar pesos para as prioridades dinâmicas. Acho > que ficou meio complexo mas deu para entender? > Então, entendido isso, se o processo pode ser divido em vários > (thread e fork), este executa muito melhor do que com um só processador, > mas se não poder ser, ou este ficar mais "dormindo" do que "acordado", > esperando resposta do HD por exemplo, não adianta quase nada ter vários > processadores se o gargalo está no HD... Entendeu? > >
O kernel vai distribuir os processos nos processadores (bruta retundância) segundo o algorítmo que ele tem para isso. Um kernel SMP será capaz de distribuir processos entre os núcleos/processadores. Até aqui estamos de acordo. Entretanto, o que o kernel não faz (não é o trabalho dele fazer isso) é que os processos sejam capazes de usar mais de um processador/núcleo para que sejam processados. Isso é trabalho do processo em sí, aliás, o programador tem que ser capaz de criar um programa que possa fazer essa "paralelização". Alguns processos que venham a ser criados por outro processo poderiam ser processados em outro núcleo/processador com menor carga. Entretanto, o processo como um todo "se mantem" no mesmo núcleo/processador. Já faz um tempinho que estou trabalhando com PC's de mais de 1 núcleo (em casa, no trabalho ou na universidade) e pude conversar sobre esse assunto com companheiros de trabalho, de sala de aula, professores, etc e tal. A conslusão é mais ou menos a mesma... é muito difícil fazer software para processamento paralelo real. Até!!! -- Miguel Da Silva Administrador de Red Centro de Matemática - http://www.cmat.edu.uy Facultad de Ciencias - http://www.fcien.edu.uy Universidad de la República - http://www.rau.edu.uy -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

