linux多线程默认栈大小和最大线程数
2012-12-20 23:21
253 查看
linux的线程栈大小可以使用ulimit -s查看,对于ubunt 2.6的内核线程栈的默认大小为8M,如下:
shine@shine-bupt:~/Program/C$ ulimit -s
8192
32位的系统,虚拟内存空间是4G,其中1G是内核空间用户不可见,真正可以使用的内存空间大小是3G,具体参加下表:
Linux的内存模型,一般为:
也就是说用户可使用的内存空间就是0x00000000~0xc0000000的大小,这个空间的大小刚好是3G。
那么进程中能创建的最大线程数就会受默认线程栈的大小限制,假设线程数N,则N*8M < 3*1024M一定要成立。
shine@shine-bupt:~/Program/C$ ulimit -s
8192
32位的系统,虚拟内存空间是4G,其中1G是内核空间用户不可见,真正可以使用的内存空间大小是3G,具体参加下表:
Linux的内存模型,一般为:
地址 | 作用 | 说明 |
>=0xc000 0000 | 内核虚拟存储器 | 用户代码不可见区域 |
<0xc000 0000 | Stack(用户栈) | ESP指向栈顶 |
↓ ↑ | 空闲内存 | |
>=0x4000 0000 | 文件映射区 | |
<0x4000 0000 | ↑ | 空闲内存 |
Heap(运行时堆) | 通过brk/sbrk系统调用扩大堆,向上增长。 | |
.data、.bss(读写段) | 从可执行文件中加载 | |
>=0x0804 8000 | .init、.text、.rodata(只读段) | 从可执行文件中加载 |
<0x0804 8000 | 保留区域 |
那么进程中能创建的最大线程数就会受默认线程栈的大小限制,假设线程数N,则N*8M < 3*1024M一定要成立。
相关文章推荐
- linux多线程默认栈大小和最大线程数
- linux多线程默认栈大小和最大线程数
- linux多线程默认栈大小和最大线程数
- 【Linux】tcp缓冲区大小的默认值、最大值
- linux查看修改线程默认栈空间大小(ulimit -s)
- 获取linux下,tcp、udp的系统默认缓存大小和最大值
- linux多线程默认栈大小和最大线程数
- linux查看修改线程默认栈空间大小(ulimit -s)
- 【Linux】tcp缓冲区大小的默认值、最大值
- socket tcp缓冲区大小的默认值、最大值
- linux如何查看系统占用磁盘空间最大的文件及让文件按大小排序
- 嵌入式Linux应用程序开发——多线程3(线程的同步——条件变量)
- java&& Linux 线程大小
- Linux--多线程之线程的取消pthread_cancel
- VMware vm linux 虚拟机 硬盘空间不足 磁盘最大大小调整 方案
- Linux多线程实践(二)线程基本API(POSIX)
- Linux多线程(二)(线程等待,退出)
- linux 修改用户账户可以创建的最大线程数
- linux最大线程和进程
- linux下如何查看文件大小 快速找到最大文件的方法