进程下多线程的内存模型

本文介绍了进程与线程的区别,强调进程是资源分配单位,线程是CPU调度单位。详细阐述了Linux下进程的虚拟内存结构,包括代码段、全局存储区、堆区和栈区。讨论了多线程内存模型,指出每个线程拥有独立栈区,共享堆区资源,线程数量受限于剩余堆大小。
摘要由CSDN通过智能技术生成

你是不是也是进程与线程傻傻分不清?内存管理是不是搞得你焦头烂额?一个进程到底能够有多少个线程?不搞清楚誓不罢休!

一.进程与线程

进程:资源(CPU、内存)分配的基本单位
线程:CPU调度和分配的基本单位
以上概念似乎耳熟能详,实际到底啥意思却还不知所以然。
首先时进程四要素:
1.有一段程序供其执行,不一定专用,可以与其他进程共用。
2.有专用的内核堆栈空间。
3.在Linux内核中有进程控制块task_struct,供内核调度器识别并参与调度。
4.有独立的用户堆栈空间。
以下为Linux下一个进程所分配的虚拟内存空间:
进程内存模型
Linux系统下为进程分配4G的虚拟内存大小,其中低字节3G内存为用户空间,高字节1G为内核空间。
内存空间主要有四大部分组成:.text(代码段)、.bss与.data的全局存储区、堆区和栈区
在32为Linux系统下,栈区大小为一般10M,可通过命令 ulimit -s或者ulimit -a 可以查看默认栈大小,也可通过命令ulimit -s+参数,临时修改线程栈大小。
而堆的大小为剩余的用户内存空间,既堆的大小 < 3G -(环境变量+命令行参数+栈+共享库+.bss+.data+.text等)。在单线程下堆的空间远大于栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值