Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz bambano #44 üzenetére

    Aha olvasgass :D
    malloc az c library hívás nem OS syscall. Meg fogsz lepődni, a malloc mmap-ot hív, és természetesn modern linuxon is van mmap (sőt, leginkább csak az van). Memóriát úgy foglalsz hogy mmap-ot hívsz MAP_ANON flag segítségével (ilyenkor nincs fájl mögötte, illetve a swap van).
    Pl. egy malloc(1024*1024) eredménye strace szerint mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f246d0af000

    Amit a PAE-ről olvastál az rendben van, éppen ezért kell az alkalmazásnak támogatni ha több memóriát szeretne használni mint amennyi a címtartományába fér (lásd példa fentebb). Az OS transzparensen ki fogja osztani a PAE memóriát de csak a processz címtartományának erejéig.

    Jester

Új hozzászólás Aktív témák