Im new to linux kernel. I have a simple question regarding heap manager used in linux.

I learned that heap memory of any application is managed by heap manager(which implements malloc, calloc e.t.c) and this heap manager runs in the user space. Heap manager requests for more pages from kernel , when required, using system calls and allocates memory to application when malloc() or calloc() is called using some algorithm(first fit, best fit, buddy system, fixed size allocation e,t,c).

my question here is, does every process run its own instance of heap manager?? is so, does this mean that there is no centralized heap management in linux?? how is the memory configured then? is there a way for me to configure kernel (at compile time or run time) to speacify limits on the amount of memory can be used for process heaps?

I currently work on a system which runs on OSE( operating system embedded). in this OS, heap is managed centrally. At the boot, we creating a heap of fixed size and requests of all process for memeory (malloc(), calloc() ) are satisfied from this memory chunk. This is possible because in OSE because all process use the same address space.

Also could anybody point me to a good source (weblink or book) to study various heap managers avialable (which can be used over linux kernel) and select suitable heap manager for my system.