gcc, linux - limit cca 700 MiB na pole v kuse?

Miloslav Trmac mitr na volny.cz
Středa Leden 7 13:24:28 CET 2004


Dobry den,
On Wed, Jan 07, 2004 at 01:03:57PM +0100, Martin Proks wrote:
> Proste jsem si myslel, ze mohu pozadat system o RAM a budto je a
> dostanu ji, nebo neni a malloc vrati NULL. Jenze i kdyz RAM mam
> (+ mooore swap), tak experimenty jsem zjistil, ze cca vic nez 700 MiB
> v jednom kuse nedostanu a kdyz prelezu cca 2 GiB na program, tak mam
> taky stop. Nevim kde je to omezeni. Jestli gcc, limit kernelu, ...?
> Zas tak moc tomu nerozumim a nevim kde hledat odpoved.
Do tech 3 GB, ktere proces na x86 od jadra dostane, se musi dostat ruzne vec:
samotny program, zasobnik, dynamicky linkovane knihovny. Zasobnik
je "na konci" a roste k nizsim adresam, program je (priblizne) "na zacatku"
a roste (pomoci sbrk ()) k vyssim adresam. Takze na dynamicky linkovane
knihovny zbyva misto nekde "uprostred", coz omezuje maximalni velikost
souvisleho useku pameti, ktery muzete alokovat.

Jeden z "vedlejsich" efektu exec-shield (v jadrech Fedora Core) je, ze
spustitelny kod (vc. dynamicky linkovanych knihoven) je na co nejnizsich
adresach, takze maximalni velikost souvisle alokovatelneho useku pameti
je vetsi.
	Mirek


Další informace o konferenci Linux