做美食网站的目的,网站建设与推广实训总结,外贸网站建设.cover,百度电话Linux知识点 – 进程概念#xff08;补充#xff09; 文章目录 Linux知识点 -- 进程概念#xff08;补充#xff09;一、进程地址空间的堆区二、虚拟地址到物理地址之间的转化三、虚拟地址到物理地址之间的映射 一、进程地址空间的堆区
在用户每次使用malloc等函数在进程的…Linux知识点 – 进程概念补充 文章目录 Linux知识点 -- 进程概念补充一、进程地址空间的堆区二、虚拟地址到物理地址之间的转化三、虚拟地址到物理地址之间的映射 一、进程地址空间的堆区
在用户每次使用malloc等函数在进程的堆区申请地址时用户只需要指定空间的大小并且会得到一个起始地址而不会得到结束地址 因为堆区的结构都是由vm_area_struct管理的每次malloc都会申请一个该结构体 malloc在堆上申请空间时只需要知道起始地址不需要知道结束地址就是因为vm_area_struct中保存了start和end 堆区申请的空间都是连续的
二、虚拟地址到物理地址之间的转化
磁盘上的空间都是以4KB为单位的我们的可执行程序存储在磁盘上其实它本来就是按照地址空间的方式进行编译的可执行程序也被划分成了以4KB为单位的区域存储在磁盘上物理内存也是按照4KB划分的OS是通过struct page结构体对物理内存的各个单元进行管理的磁盘上的一个4KB单位叫做页帧物理内存上的一个4KB单位叫做页框IO的时候基本单位就是4KB就是将页帧装进页框当OS通过页表进行寻址时发现对应地址的文件不在内存中就需要引发缺页中断 1申请对应的内存 2在磁盘中查找对应的文件 3加载到内存中指定的位置 4重新填充页表 5返回到用户
三、虚拟地址到物理地址之间的映射
页表中一个地址的映射叫做一个条目假设一个条目大小为9byte虚拟地址 物理地址 属性32位地址下一共2^32个条目就是4GB个条目一共就是36GB的页表空间内存中无法保存这么大的页表
实际上OS在虚拟地址到物理地址的映射上是将虚拟地址划分的 虚拟地址的前十个bit位在一级页表进行索引一级页表的映射关系一共2^10就是1024个 一级页表映射到二级页表再在对应的二级页表中检索中间的10bit地址 二级页表映射到物理内存的某个页的起始地址 后12位地址代表这个地址的页内偏移因为2^12 4KB 这样就能够减小页表的空间消耗