Memory allocations in linux for processes
Mulyadi Santosa
mulyadi.santosa at gmail.com
Tue Mar 19 10:57:53 EDT 2013
Hi Niroj....
Please see inlined answer below...
On Mon, Mar 18, 2013 at 5:28 PM, Niroj Pokhrel <nirojpokhrel at gmail.com> wrote:
> Hi all,
> As I have read, whenever we execute a program, the memory is allocated in
> different sections viz stack, text and data segment.
Yup, that is correct
> But, since we have used
> loader and linker the three allocations will happen for them too.
Correct again. Linker and loader will be the part of process address space.
> But when I ran a program and did pmap pid, I saw several other fields which
> I have no idea of. What is the [anon] and what is it doing here ?
Anon is short of anonymous. It is a region of memory created by
function e.g malloc() or mmap()
>Why the
> memory is being implemented for it and there are so many of them ?
Drawing from above explanation, we can easily conclude somewhere in
the program, it does malloc() or mmap().
> And also the stack ( 3rd last element), is it the process stack??
Yes, it's process' stack
>Can
> somebody please explain.
> Thanking you all in advance.
>
> 5448: ./a.out
> 0000000000400000 4K r-x-- /home/n.pokhrel/Personal/mywork/a.out
> 0000000000600000 4K r---- /home/n.pokhrel/Personal/mywork/a.out
> 0000000000601000 4K rw--- /home/n.pokhrel/Personal/mywork/a.out
> 00007f57f5e18000 1512K r-x-- /lib/libc-2.11.1.so
> 00007f57f5f92000 2044K ----- /lib/libc-2.11.1.so
> 00007f57f6191000 16K r---- /lib/libc-2.11.1.so
> 00007f57f6195000 4K rw--- /lib/libc-2.11.1.so
> 00007f57f6196000 20K rw--- [ anon ]
> 00007f57f619b000 128K r-x-- /lib/ld-2.11.1.so
> 00007f57f6396000 12K rw--- [ anon ]
> 00007f57f63b8000 8K rw--- [ anon ]
> 00007f57f63ba000 4K r---- /lib/ld-2.11.1.so
> 00007f57f63bb000 4K rw--- /lib/ld-2.11.1.so
> 00007f57f63bc000 4K rw--- [ anon ]
> 00007fffa2f37000 84K rw--- [ stack ]
> 00007fffa2fa0000 4K r-x-- [ anon ]
> ffffffffff600000 4K r-x-- [ anon ]
ok, one of the region above, I think it's VDSO (virtual dynamic shared
object). It's a region that handle system call. When a process does
system call, it jumps to VDSO, and it is the VDSO that does the
actuall syscall
--
regards,
Mulyadi Santosa
Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
More information about the Kernelnewbies
mailing list