• 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一定要成立。


  • 相关阅读:
    mysql安装部署
    SSH升级
    符号、特殊字符的英文读法
    用python开发视频压缩器
    VSCode配置项
    工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
    单例模式
    Jquery 绑定事件
    中文分词 新建索引 更新索引
    微信自动回复机器人
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144367.html
Copyright © 2020-2023  润新知