linux线程大小,Linux中进程/线程的大小

Linux中进程/线程的大小是多少?创建进程/线程时,还有task_struct和其中的其他数据结构,还有什么吗?

进程/线程初始化(固定大小)时是否分配了进程/线程的堆栈?或者在必要时分配(如虚拟内存)?

在内存中创建标准进程/线程时,如何知道它的大小?

解决方法:

当在Linux上首次分配大块内存(> pagesize = 4096字节)时,它在页面表中使用了特殊的“空”内存页面,这些内存页面没有任何后盾,因此当一个线程启动时,它将分配~1 MB这些零页面的线程堆栈.随着堆栈的增长,页面将转换为实际内存支持的页面.由于这个“空”页面支持,通常可以拥有大量的堆栈.

线程和进程都是使用名为clone(2)的相同底层系统调用创建的.它有很多选择,并做很多东西.请参阅man clone获取详细说明.

大块内存分配有匿名mmap(2)调用.

您可能也有兴趣在网上搜索“linux overcommit bit”

(如果你想改进你的问题,我可以更具体.)

标签:c-3,linux,multithreading,kernel

来源: https://codeday.me/bug/20190626/1289570.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值