Leonardo Zacch� wrote
>E e linux? como funcina o vinculo dinamico? alguem poderia me explicar?
No Linux, o carregamento de um programa com v�nculos din�micos se inicia pelo
ld.so, que � justamente o carregador. Um programa n�o inicia dentro do
programa, mas sim no ld.so que se encarrega do resto.
Ele vai pesquisar o cabe�alho ELF do programa por informa��es de quais .so s�o
necess�rios e mape�-los todos para a mem�ria, atrav�s do mmap(). Depois ele
vai come�ar a resolver algumas reloca��es mais importantes e deixar o resto
para depois. E a� ele passa o controle para o programa. At� aqui tudo bem.
Quando o programa faz uma chamada a uma fun��o que nunca foi usada ainda, s�o
grandes as chances que ela nem mesmo foi relocada ainda. A chamada na verdade
� interceptada pelo ld.so de novo que vai procurar onde a fun��o est�
definida e, a� ent�o, cham�-la. Pr�ximas chamadas n�o passar�o mais pelo
ld.so.
O truque da mem�ria � o uso do mmap(). O ld.so s� avisa o kernel que alguma
hora aqueles dados do disco podem ser usados. Quando houver acesso �quela
mem�ria, o kernel vai ent�o carregar do disco o que for necess�rio, com ajuda
de read-ahead e read-around para acelerar, se for o caso. Al�m disso, algumas
se��es dos ELFs s�o marcadas como compartilh�veis (como .text ou .rodata).
Essas se��es s�o carregadas na mem�ria atrav�s de mmap() compartilhado, de
modo que o kernel n�o vai carreg�-las mais de uma vez.
Quando uma p�gina qualquer deixa de ser usada por completo, todo mundo sabe
que o kernel n�o joga fora a p�gina no instante. Ele vai guardar no cache por
um tempo, enquanto puder, esperando que ela seja usada de novo. Se n�o for e,
portanto, ficar muito velha, e se o sistema precisar de mem�ria, a� sim o
kernel vai descartar a p�gina e usar a mem�ria para outra coisa. E isso com
quase nenhuma perda de performance.
--
Thiago Macieira - UFOT Registry number: 1001
[EMAIL PROTECTED]
ICQ UIN: 1967141 PGP: 0x8F2978D5 and 0xEA9037A5 (PGP 2.x)
Registered Linux user #65028
Assinantes em 10/02/2002: 2231
Mensagens recebidas desde 07/01/1999: 154264
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]