【kernel】进程与线程

进程栈与线程栈

同一进程间的线程共享的资源有
1.堆
2.全局变量,静态变量
3.文件设备资源等
4.进程的代码段,打开的文件描述符,进程的当前目录。

独享的有
1.栈
2.寄存器,程序计数器pc
3.线程id,线程优先级
4.错误返回码

ulimit指令的使用:可以修改和查看栈的大小

 

线程栈默认大小是8M,而且线程栈实际上是在进程的 映射段(mmap段) 上进行分配的,所以线程栈的大小是固定的,用完就没了,不像进程栈那样有动态增长的空间。线程栈的最后会有一个4k的保护页,当访问到这个保护页的时候,说明出现了OOB(out of boundary)

进程栈的初始化大小是由编译器和链接器计算出来的,但是栈的实时大小并不是固定的,Linux 内核会根据入栈情况对栈区进行动态增长(其实也就是添加新的页表)。但是并不是说栈区可以无限增长,它也有最大限制 RLIMIT_STACK (一般为 8M),我们可以通过 ulimit 来查看或更改 RLIMIT_STACK 的值

posted on 2022-10-24 14:49  甲鱼写代码  阅读(72)  评论(0编辑  收藏  举报

导航