As per what I understand as a Java programmer:
Each thread is given its stack (for Java default stack size per thread is 1M). Each method called from a thread is given a stack-frame (just a contigous part of thread stack memory), thread stack has nothing more than stack-frames. My guess is that a process also given some stack (so that every thread of that process gets a part of its stack).
Does process has its own stack, or some stack that it further gives (parts of that stack) to threads ?
P.S. The question arose as I was thinking of escape analysis: I learned that if an object (reference) never escapes a method - it is on stack (not heap), if a reference does escape a single method, but is used only within one Thread (= never escapes its run()
method) - it is also on stack.
This implies that a process has no limit on its "stack" size, but there is a limit how many threads I can create (fork/clone) from one process (what is this number typically?) and minimum thread stack size exists. So I guess stack for process itself is not allocated and kind of "unlimited" (100% depends on thread stack allocation).
Related: "stack frame" = "call stack"