Sdileni textu procesu (Re: Apache problem)

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pátek Únor 18 21:28:39 CET 2000


On Thu, 17 Feb 2000, Korinek, Jan wrote:

> Koneckoncu, neni o tomhle sticky bit?
> Podle definice, ma-li program nastaveny sticky bit, zustava dale v pameti i
> po skonceni volajiciho procesu.

Vitejte v poslednim roce 20. stoleti! :)
Dneska se spoustene binarky do pameti strkaji mmap()-em (viz nize) a
systemy maji unifikovanou cache na soubory a na stranky, takze text jednou
spusteneho programu v pameti zustava i po jeho ukonceni jak dlouho to jde
uplne prirozene.

> Ale abychom si rozumeli. Kazdy proces ma dve casti, text a data. Text
> obsahuje, zjednodusene receno, kopii binarky a data jsou userspace. Dojde-li
> k daslimu volani toho samho programu, tak (pokud se nepletu), text se sdili
> a vytvari se pouze novy userspace.

Myslim, ze termin "userspace" se normalne pouziva v trochu jinem smyslu,
ale to je jedno. Dneska je to tak, ze program ma nejaky "panensky stav",
ktery je popsan obsahem binarky (text + inicializovana data + bss), od
ktereho po svem spusteni pomoci copy-on-write diverguje. U skriptovych
jazyku -- specialne tech se "skrytou kompilaci" (jako je Perl) -- je to
ale komplikovane tim, ze kazda instance si nacita a kompiluje zdrojak
sama, coz je pricinou velke casoprostorove rezie.

> Aby se vyvorila nova kopie textu, je nutne to explicitne rict (zabte me,
> momentalne fakt nevim jak :-)

Nejlepe tak, ze do kazde stranky textu neco zapisu, tedy pote, co do nich
povolim zapis. :)   (Po pravde receno nemyslim, ze existuje i jina
metoda.)


On 17 Feb 2000, Petr Novotny wrote:

> Dovedu si predstavit, ze ano (mnohem transparentneji, treba 
> mmap() muze mit nejaky reference counting a copy-on-write). 
> Nevim, zda tomu tak je - ke studiu zdrojaku jadra se ne a ne 
> donutit :-)

Ano, takto to funguje (pomineme-li detaily jako predpotopni a.out-ove
formaty OMAGIC a NMAGIC, ktere se do pameti normalne ctou read()-em).


--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux