Sdileni textu procesu (Re: Apache problem)

Marian Jančár mjanx123 na milada.troja.mff.cuni.cz
Sobota Únor 19 23:17:59 CET 2000


David Rohleder wrote:
> 
> Tady tato cast mi pripadla vzdycky divna. Je jasne, ze procesy sdileji
> svuj text, pokud vznikly forkovanim jednoho procesu.
> 
> Ale kdyz spoustim samostatne procesy (jako v pripade perl pro Apache),
> tak se snad zadny text nesdili, nebo ano? Samozrejme se sdili knihovny,
> ale samotny proces tam ma svou vlastni kopii programu.
> 
> Nebo je snad v jadre ve volani exec neco jako:
> 
> if (program uz je spusteny v pameti) {
>         if (program nebyl od posledniho spusteni modifikovan) {
>                 vytvor_pouze_zaznam_pro_novy_proces_text_nekopiruj;
>         }
> } else {
>         natahni_program_do_pameti;
> }

Program se natahne z disku do cache, pri spusteni (at uz prvnim nebo
jakemkoliv dalsim) se nekopiruje ale odkazuje (copyonwrituje) se tam, kde
uz je. Proc taky mit v pameti nekolik kopii toho sameho. Pokud je ale 
program dynamicky linkovan s knihovnou kompilovanou bez -fPIC (btw,
nevite nekdo, jestli -fomit-frame-pointer ma vyraznejsi negativni vliv na
realokovatelnost sdilene knihovny?) tak bude potreba do kodu zapisovat
(nevim jestli jenom do knihovny nebo i do programu) a protoze se to
provede nezavisle pri kazdem spusteni, stranky, do nichz bylo zapsano se
sdilet nebudou (pri forku ano, zde se copyonwrituje uz slinkovany kod).
Aspon myslim, ze je to takhle.

-- 
Marian Jančár <mjanx123 na milada.troja.mff.cuni.cz>


Další informace o konferenci Linux