Tilläggsinformation för Solaris 10

x86: Minnestilldelningsbegränsningar för program på x86-system

Solaris-program tilldelar minne med hjälp av funktioner som exempelvis malloc(), brk() eller mmap(). Hur mycket minne som kan tilldelas av ett program begränsas av storleken på användarens virtuella adressutrymme. Programtext, -stack, -data och -bibliotek som finns i det virtuella adressutrymmet kan minska storleken för den maximala minnestilldelningen ytterligare.

32-bitars datamiljö

I en 32-bitars datamiljö delas det virtuella adressutrymmet mellan användaren och kärnan. Det innebär att storleken på användarens virtuella adressutrymme är 4 GB minus storleken på kärnans virtuella adressutrymme. Hur storleken för det virtuella adressutrymmet konfigureras beror på mängden fysiskt minne. I takt med att det fysiska minnet ökar, minskar storleken på användarens virtuella adressutrymme. För system med 8 GB minne innebär detta att användarens virtuella adressutrymme är ungefär 3 GB.

Det finns två alternativ om minnestilldelningen är otillräcklig för ett program:

64-bitars datamiljö

I en 64-bitars datamiljö är det virtuella adressutrymmet för 32-bitarsprogram helt och hållet till för användaren. Därför kan ett 32-bitarsprogram tilldela 4 GB minus det användaradressutrymme som krävs för text, stack och bibliotek.

På vissa tidiga 64-bitars AMD-processorer kan minnestilldelningen minskas ytterligare med 1 GB. Gå igenom följande steg för att avgöra om din processor påverkas:

  1. Kör kommandot pmap $$ från ett 32-bitarsskal.

  2. Kontrollera om adresser som är större eller lika med 0xC0000000 listas på processöversikten. Om det inte finns några sådana adresser begränsar operativsystemet Solaris 32-bitarsprogram till de 3 GB som är längst ned i det virtuella adressutrymmet på 4 GB.

Ett 64-bitarsprogram kan tilldela 250 TB minne beroende på hur mycket programmet redan använder.