[ LUGOS ] vec instanc programa
Ales Casar
casar na uni-mb.si
Tor Jan 25 10:35:55 CET 2000
On Tue, 25 Jan 2000, Matija Grabnar wrote:
> Ce hoces, da se bo knjiznjica nalozila za vsakogar posebej, se moras posebej
> potruditi in eksplicitno zadevo linkati STATICNO.
Ja in ne. Ce imas razlicne programe, kjer bo doloceno knjiznico vsak imel
zlinkano staticno, se bo seveda za vsak aktiven program tista knjiznica
res posebej nalozila v pomnilnik. Ampak, ce imas samo en program s
staticno zlinkano knjiznico in potem tisti program pozenes 10x, bo celotna
koda za program v pomnilniku samo 1x ter seveda s tem tudi knjiznica samo
enkrat.
S tem nikakor nocem namigovati, da se ni treba ubadati z dinamicnimi
knjiznicami, ampak zelim povedati le to, da se tudi koda nekega programa
(vsaj njegov staticni del) v pomnilnik nalozi le enkrat, ce hkrati tece
vec kopij tistega programa. Gre torej se za dodatno izboljsanje izkoristka
pomnilnika pri Linuxu.
Oglejmo si na primer porabo pomnilnika programa getty na mojem
racunalniku:
$ ldd /sbin/getty
libc.so.6 => /lib/libc.so.6 (0x4000f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
$ memstat | egrep "/sbin/getty|libc.so.6|ld-linux.so.2"
76k: PID 228 (/sbin/getty)
76k: PID 229 (/sbin/getty)
76k: PID 230 (/sbin/getty)
76k: PID 233 (/sbin/getty)
76k: PID 234 (/sbin/getty)
76k: PID 235 (/sbin/getty)
76k: PID 236 (/sbin/getty)
76k: PID 237 (/sbin/getty)
76k: PID 238 (/sbin/getty)
76k: PID 239 (/sbin/getty)
76k: PID 240 (/sbin/getty)
76k: PID 241 (/sbin/getty)
76k: PID 242 (/sbin/getty)
44k: /lib/ld-linux.so.2 1 16 70 81 144 146 153 161 163 173 191 194 197 ...
608k: /lib/libc.so.6 1 16 70 81 144 146 153 161 163 173 191 194 197 199 ...
12k: /sbin/getty 228 229 230 233 234 235 236 237 238 239 240 241 242
Na racunalniku tece 13 kopij programa getty. Od tega sicer vsaka kuri 76
kB pomnilnika za svoje podatke, ampak tistih 12 kB kode je pa v pomnilniku
samo enkrat (zadnja vrstica). Poleg tega sta v pomnilniku samo enkrat se
dinamicni knjiznici libc in ld-linux, ki ju uporablja vseh 13 kopij
getty-ja, kakor tudi se cel kup ostalih procesov.
Ales
--
Ales Casar | InterNet: Casar na uni-mb.si, A.Casar na ieee.org,
Faculty of EE & CS | A.Casar na s-gms.ms.edus.si
University of Maribor | DECnet: RCUM::ALES
SLOVENIA | WWW: http://www.el.feri.uni-mb.si/~ales/
Dodatne informacije o seznamu Starilist