Jak je to se sdilenymi knihovnami?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Úterý Květen 18 20:47:47 CEST 1999


On Tue, 18 May 1999, Petr Tesarik wrote:

> Tak jsem se tak díval na mapy paměti různých procesů a všimnul jsem
> si, že kód ze sdílených knihoven se mapuje (via mmap()) jako
> MAP_PRIVATE, tj. copy-on-write. Proč vlastně dynamický linker nemapuje
> ty stránky (které se stejně mapují jako PROT_READ | PROT_EXEC,
> tj. zapisovat se do nich nedá) jako MAP_SHARED? A jaký je v tom rozdíl?

Dokud se do nich nezapisuje, tak zadny. Jenze ono se do nich nekdy
zapisovat muze: napriklad se tak cini, kdyz je provadena relokace
dynamickych knihoven (mam dojem, ze ld.so pak udela mprotect()).

> Jestli se nepletu, tak pod Linuxem jsou ve fyzické paměti
> stejně jenom jednou (důsledek copy-on-write). Nebo se mýlím?

Pokud do nich nektery z procesu nezapsal, tak jsou skutecne jen jednou.

> A jak je to třeba ve FreeBSD?

Podle toho, co se pise v /proc/$$/map soudim, ze stejne (same COW).
Na Solarisu je to taky tak.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"NSA GCHQ KGB CIA nuclear conspiration war weapon spy agent... Hi Echelon!"



Další informace o konferenci Linux