从操作系统内存管理来说 , malloc申请一块内存的背后原理是什么?
【peterYong,内存管理】内存的一部分空间被用来保存页表 , 哪个页被使用了 , 哪个页空着 , 哪个页分给了哪个进程 , 内存管理单元mmu都会在页表里做记录 。以4k为一页 , 意味着页地址数只是物理地址的4096分之一 , 各种查询法速度都够用了 。程序内的地址是一个虚拟的连续地址 , 程序对虚拟地址的读写由mmu转换为对物理地址的读写 。操作系统在帮助程序初始化 , 分配了默认数量的页以后 , 就任凭程序折腾了 。
你用标准malloc函数管理也好 , 自己写个替代品也好 , 只要虚拟地址对应的物理地址已经分配给程序 , 都不需要操作系统插手 。一旦程序读写的虚拟地址没有对应的物理地址 , mmu会抛出异常信号 , 暂停程序的运行 , 然后操作系统会填写页表 , 分配一个新的页面给程序 , 对于用户程序来说是感受不到这个过程的 。操作系统就好比一个坐拥半城的渣男 , 对每个女友(程序)都承诺全部的房产 , 然而实际只给一个小房子供程序使用管理(malloc) 。
推荐阅读
- 内存卡修复软件哪个好,看看谁才是恢复软件中的MVP
- 怎么管理软件费流量问题
- 手机内存太满了怎么办 手机内存满了
- 如何清理手机内存,手机运行内存占用过大怎么办
- 南亚易胜,南亚易胜是属于笔记本的内存条吗
- 如何做好幼儿园班级管理工作
- 戴尔笔记本显卡驱动,戴尔040ddp主板怎么样?可以提升显卡内存什么的嘛?
- 成年罗威狗怎么驱虫,罗威纳的养护管理
- 265上网导航,256
- 荣耀10配置,荣耀10运行内存6G和8G有啥区别啊手机性能咋样啊 充满电能用多久
