内核创建一个进程
一个进程的通过进程控制块创建属于自己的堆栈
堆栈包括 用户栈和内核栈
用户栈:指向用户内存空间,用于保存用户空间和子线程调用的参数、返回值和局部变量
内核栈: 指向内核地址空间,保留中断现场,特别是嵌套中断,被中断信息一次性压入栈中,恢复时,按照先进后出逆序弹出中断,保存操作系统相互调用的参数、返回值和局部变量
为什么不同共有:
1、如果用内核栈:大小有限,用户调用次数很多,中断16个优先级,系统栈是15个,用户程序调用次数很多,15次子程序调用后的参数返回值和局部变量就不能保存,用户程序也就不能正常运行了
2、如果用用户栈:系统程序需要在某种保护机制下,才能运行,因为用户栈在用户空间是无保护运行