sorry, when i said `private' i meant `for that process's exclusive use as a stack', not that it was in a per-process address space. it's per-process only in that by agreement the process to which it is given is the only one that uses it as a stack (the others can still access its contents if they like, but often they don't). they are all still in the same address space. they could be allocated (essentially) by malloc, except that you need to ensure they are all aligned appropriately (eg, at an address that is 0 mod KSTACK in that previous example).