zoukankan      html  css  js  c++  java
  • linux多线程默认栈大小和最大线程数

    linux的线程栈大小可以使用ulimit -s查看,对于ubunt 2.6的内核线程栈的默认大小为8M,如下:

    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

    保留区域

     

    也就是说用户可使用的内存空间就是0x00000000~0xc0000000的大小,这个空间的大小刚好是3G。


    那么进程中能创建的最大线程数就会受默认线程栈的大小限制,假设线程数N,则N*8M < 3*1024M一定要成立。


  • 相关阅读:
    0603 学术诚信与道德
    0601 新的冲刺
    0525 Scrum 项目7.0
    0523 Scrum 项目6.0
    0518 Scrum项目5.0
    0512 Scrum 4.0
    0512 操作系统之进程调度
    0511 backlog
    0506 Scrum 项目1.0
    复利计算再升级
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144368.html
Copyright © 2011-2022 走看看