Em Tue, Jul 24, 2001 at 10:57:38PM -0300, Wagner Klein escreveu:
> On Fri, 20 Jul 2001, Edgard Lemos wrote:
> 
> > Algu�m tamb�m � capaz de explicar o que o Linus est� dizendo?
> > 
> > http://linuxtoday.com/news_story.php3?ltsn=2001-07-20-006-20-NW-KN
> > 
> > "Estou me aprontando para trabalhar no 2.4.7, mas uma das corre��es no
> > 2.4.7 � que foi encontrado um "SMP race" e ficou claro que usar usar o
> > velho truque de ter um sem�foro na pilha e fazer "down()" nele para
> > esperar por algum evento (o que produziria um "up()") foi uma p�ssima
> > id�ia."
> 
> 
> N�o sei se � essa a d�vida, mas...
 
> "Race" � a situa��o onde mais de um subsistema disputa um mesmo recurso
> no sistema, no caso o problema est� relacionado ao multiprocessamento.

Se voc� est� associando "multiprocessamento" a v�rias CPUs, SMP, n�o
necessariamente, races ocorrem em m�quinas com somente um processador
tamb�m, pois apesar do kernel Linux n�o ser preemptivo (um processo em
kernel space n�o interrompe outro processo em kernel space) existem outras
formas de um processo em kernel space ser interrompido, a ver: exce��es e
interrup��es.

Atualiza��o: depois de escrever o texto percebi que o "no caso" se refere
ao race especifico citado na mensagem do Linus, eu desenvolvi minha
resposta pensando em races em geral :)

Exemplo de exce��o: um processo toca uma p�gina em seu espa�o de
endere�amento virtual que n�o est� em mem�ria, o que faz o processador (na
verdade a MMU) gerar uma page fault, que interrompre o fluxo de execu��o do
processo (que est� em kernel space) e transfere o controle para o tratador
de exce��es do kernel para que este procure uma p�gina livre para colocar
na tabela de p�ginas do processo causador da exce��o e em seguida buscar do
disco (quer seja de uma �rea de swap, ou de um sistema de arquivos: mmap,
etc).

Exemplo de interrup��o: sua Realtek 8139 cutuca o processador para dizer
que tem mais um pacote ou que o �ltimo pacote que voc� pediu para
transmitir (bem indiretamente, por exemplo, quando clica no �cone no
netscape para ver as explica��es sobre "Brasil 0 x 2 Honduras", enviando um
pacote para o site que hospeda a p�gina web com esta "explica��o" ;) ) 

No driver da Realtek 8139 temos pelo menos duas linhas de execu��o, mesmo
em UP (uma m�quina com somente um processador), que podem tocar uma
estrutura de dados comum, por exemplo, uma lista de pacotes a enviar, de
forma n�o at�mica, o que configura uma... Race Condition (Condi��o de
Corrida).

> Os recursos disputados podem ser qualquer coisa, mem�ria (como tabelas de
> dados do sistema), interrup��o, acesso ao hardware, CPU, acesso �
> drivers, filesystem, tasks, ...

normalmente estruturas de dados, presentes, como voc� disse, em drivers,
filesystems, tasks, hardware, etc
 
> "Race condition" acontece normalmente quando um recurso precisa ser usado
> com exclusidade para se garantir a integridade do sistema.

... e quando v�rias linhas (code paths) de execu��o podem acessar este
recurso simultaneamente.
 
> Por conseq��ncia, tamb�m refere-se a bug quando um mesmo recurso �
> disponibilizado para dois subsistemas (onde fatalmente haver� corrup��o
> de dados), ou quando dois subsistemas n�o conseguem dedicir quem vai de
> fato ficar com o recurso, gerando atrasos ou travamento.

Note que a possibilidade de dois subsistemas serem os "atletas" na corrida
� real, mas normalmente races ocorrem dentro de um mesmo subsistema ou
driver, pilha de rede, etc.

- Arnaldo

Assinantes em 25/07/2001: 2248
Mensagens recebidas desde 07/01/1999: 124781
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a