title: Will mmap use continuous memory? (on solaris)
body: <p>I used mmap(just try to understand how mmap works) to allocate 96k anonymous memory, but looks like it split the 96k into 64k and 32k. But when allocate 960k, it allocate only one chunk whose size is 960k. When solaris will split the allocate mem into several part?
  Code:</p>
  
  <pre><code>#define PROT PROT_READ | PROT_WRITE
  #define MAP  MAP_ANON  | MAP_PRIVATE
  if ((src = mmap(0, 88304, PROT, MAP, -1, 0)) == MAP_FAILED)
      printf("mmap error for input");
  
  if ((src = mmap(0, 983040, PROT, MAP, -1, 0)) == MAP_FAILED)
      printf("mmap error for input");
  
  if ((src = mmap(0, 98304, PROT, MAP, -1, 0)) == MAP_FAILED)
      printf("mmap error for input");
  </code></pre>
  
  <p>Truss: </p>
  
  <pre><code>mmap(0x00000000, 88304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0)
      = 0xFFFFFFFF7E900000
  mmap(0x00000000, 983040, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0)
      = 0xFFFFFFFF7E800000
  mmap(0x00000000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0)
      = 0xFFFFFFFF7E700000
  </code></pre>
  
  <p>Pmap:</p>
  
  <pre><code>FFFFFFFF7E700000         64     -          -          - rw---    [anon]
      ==&gt; strange is that for 96k, it was broken into 2 part.
  FFFFFFFF7E710000         32     -          -          - rw---    [anon]
  FFFFFFFF7E800000        960     -          -          - rw---    [anon]
  FFFFFFFF7E900000         64     -          -          - rw---    [anon]
  FFFFFFFF7E910000         24     -          -          - rw---    [anon]
  FFFFFFFF7EA00000         64     -          -          - rw---    [anon]
  FFFFFFFF7EA10000         32     -          -          - rw---    [anon]
  </code></pre>