Divne chovani mallocu

Martin Macok macok na kocour.ms.mff.cuni.cz
Pátek Říjen 29 16:28:14 CEST 1999


On 29 Oct 1999, Cejka Rudolf wrote:

> Jeste maly dodatek: Nejspis jsme si trochu nerozumeli v pojmu
> "namapovani". Ja jsem mel na mysli zarazeni pametove stranky
> do adresoveho prostoru procesu a pripravu pro jeji pripadne
> odswapovani (i v pripade modelu cela pamet = RAM + Swap ... on se
> uz stejne jiny nepouziva)). Fyzicke pripojeni konkretni stranky
> uz jsem povazoval za neco jineho.

Pravda, trochu jsme psali kazdy o necem jinem. Parkrat jsem pouzil
nespravne termin "namapovani" ... 

Pri alokaci tabulka stranek adresoveho prostoru procesu vyplni s
prislusnymi flagy (stranky byla alokovany, ale zatim nebyly pouzity,
obsahuji nedefinovane hodnoty - proste se jenom vyplni tabulka, nic vic)
...  (koumnul jsem do src (2.2.13) a vykoukal jsem to tak - nejsem kernel
guru a je mozne, ze se v necem pletu) - Asi by bylo vhodne, aby do teto
debaty vnesl svetlo nekdo kompetentnejsi ...

Co myslite konkretne pripravou na odswapovani? 

Jestli tomu dobre rozumim (nerad bych vam neco podsouval), tak vam vadi
tyto 3 veci:

1) ze se ty stranky rovnou nejsou asociovane s realnou fyzickou adresou?
Ze takto malloc-ovane stranky na zacatku proste nikde ve fyzicke pameti
neexistuji?

2) pri alokaci se nekontroluje velikost volne pameti proti velikosti RAM +
SWAPu, ale pouze oproti free_mem_end_ptr (0x90000 na i386)?

3) jakym zpusobem pracuje s takto alokovanou neinicializovanou pameti?
(viz priklady nize)

> Pro zajimavost si zkuste treba toto:
> 
> a = malloc(XXX);
> b = malloc(XXX);
> kopie dat z a do b
> 
> proti
> 
> a = malloc(XXX);
> inicializace bloku a
> b = malloc(XXX);
> kopie dat z a do b
> 
> V prvnim pripade byla (2.0.35) kopie bloku dat na mem starem pocitaci
> v Linuxu 4x rychlejsi nez druhy pripad. Fyzicke moznosti rychlosti
> kopie pameti pritom presne odpovidaly pouze druhemu pripadu.

Domnivam se, ze v tom prvnim pripade Linux vi
(?vm_area_struct.vm_flags?), ze zachazi s takto alokovanou pameti (s
nedefinovanym obsahem) a "nejak to proste osuli" - fyzicky neprovadi zadny
presun dat ...

Pokud se mylim a mystifikuju, tak se hluboce omlouvam a prosim, aby me
nekdo opravil.

-- 
< Martin Mačok    (e) martin.macok na underground.cz  <ISO-8859-2-compatible> 
 \ (h) http://kocour.ms.mff.cuni.cz/~macok/  (w) http://underground.cz/ /
   \\\\\            any OS that doesn't make me look              /////
     \\\  like a random mouse-clicking idiot is a Good Thing (c)  ///



Další informace o konferenci Linux