💬 hello! 各位铁子们大家好哇。 今日更新了Linux进程空间地址和进程调度队列的内容 🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝
当g_val的值修改后,父子进程各自的g_val地址都是一样的,但是为什么值却不同呢? 由此我们可知,这个地址肯定不是物理地址,而是虚拟地址。
地址空间的本质就是内核中的一个结构体对象。 每一个进程都有自己独立的地址空间,都有自己独立的页表。 页面里面存的是虚拟地址和对应的物理地址。
如上图源码。 地址空间的本质就是内核中的一个结构体对象。内部很多的属性都是表示start、end的范围。
cpu中有一个简单的工作单元叫MMU(内存管理单元),还有一些寄存器会将当前进程的页表的地址保存到cpu内。MMU会快速把指定的虚拟地址结合页表转换成物理地址。
上图是Linux2.6内核中进程队列的数据结构。
如果有多个CPU就要考虑进程个数的负载均衡问题
在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增 加,我们称之为进程调度O(1)算法!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有