我正在研究操作系统内存管理,我想验证我得到了基本的分配\虚拟内存\分页机制。操作系统内存管理 - malloc()调用
假设一个进程调用malloc(),幕后发生了什么? 我的回答:运行时库在其虚拟内存地址空间中找到适当大小的内存块。 (这是分配算法,如首次适应,配合最好与碎片处理发挥作用)
现在让我们假设进程访问内存,怎么做呢? 我的回答:从进程看来,内存地址实际上是虚拟的。操作系统检查该地址是否当前映射到物理内存地址,如果是,则执行访问。如果未映射 - 则会引发页面错误。
我是否正确?即编译器\运行时库负责分配虚拟内存块,并且OS负责进程的虚拟地址和物理地址(以及需要的分页算法)之间的映射?
谢谢!