I know about only sbrk system call and would like to share information about sbrk.
When a process needs more space or memory, it asks to OS to grant more memory. However, it is up to kernal whether it gives or not. There is a maximum limit of space/memory that a process can have.
Function prototype:
void * sbrk(intptr_t increment);
Program running in user space call sbrk with request size as parameter. if it successful then return valid pointer else null.
Note: If sbrk calls with parameter 0 then it returns current address of end of data segment.