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