为什么说“进程是资源分配的单位、线程是调度的单位”?

书上和别人也总是说“进程是资源分配的单位、线程是系统调度的单位”,重复一遍一遍又一遍,听的耳朵都起茧了。但有没有想过为什么?
去年有个小伙伴分享了下进程栈和线程栈,我从中似乎找到了答案。

他讲到linux内核会检查该内存地址是否属于该进程,也就是进程地址空间相隔离,各有各的区域,而同进程内的线程之间可没有这个检查,所以线程之间有可能彼此踩到彼此的地址——突然灵光闪动,这也许就是说“进程是资源分配的单位”——因为地址空间的隔离单位是进程,进程间有地址隔离机制。
说线程是调度单位,这个好理解,linux内核不区分进程线程的反正它们都是struct task结构体。只不过进程是一组task,这个task链表的leader是主线程,其他是普通线程,该进程的所有线程共享地址空间,只是在主线程的task的时候分配这些资源,所以说线程是轻量级进程的原因也是在这。而linux内核调度器只认task,所以说线程是调度单位也好理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值