[ 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