每个任务(除了任务0任务1)有自己的64MB位址空间。当一个任务(行程)刚被建立时,它的用户态堆栈指标被设置在其位址空间的靠近末端(64MB顶端)部分。实际上末端部分还要包括执行程式的参数和环境变数,然后才是用戶堆栈空间,见图5-25所示 。应用程式在用戶态下执行时就一直使用这个堆栈。堆栈实际使用的实体记忆则由CPU分页机制确定。由於Linux实现了写时复制功能(Copy on Write),因此在行程被建立后,若该行程及其父行程都沒有使用堆栈,则两者共用同一堆栈对应的实体记忆体页面。只有当其中一个行程执行堆栈写操作(例如push操作)时內核记忆体管理程式才会为写操作行程分配新的记忆体页面。而行程 0和行程1的用戶堆栈比较特殊,见后面說明。