当前位置: 技术问答>linux和unix
关于页表的疑问,这不科学。。。。!
来源: 互联网 发布时间:2017-04-17
本文导语: 操作系统表述: 对于一个具有32位逻辑地址空间的分页系统,规定页面大小为4 KB即212 B,则在每个进程页表中的页表项可达1兆个之多。又因为每个页表项占用一个字节, 故每个进程仅仅其页表就要占用1M的内存空...
操作系统表述:
对于一个具有32位逻辑地址空间的分页系统,规定页面大小为4 KB即212 B,则在每个进程页表中的页表项可达1兆个之多。又因为每个页表项占用一个字节, 故每个进程仅仅其页表就要占用1M的内存空间,而且还要求是连续的。
我怎么觉得它说的不对,怎么可能每个进程都需要1m页表,如果是个很小的进程,这样的页表本身也是一个浪费,页表大小应该根据进程大小而定啊
对于一个具有32位逻辑地址空间的分页系统,规定页面大小为4 KB即212 B,则在每个进程页表中的页表项可达1兆个之多。又因为每个页表项占用一个字节, 故每个进程仅仅其页表就要占用1M的内存空间,而且还要求是连续的。
我怎么觉得它说的不对,怎么可能每个进程都需要1m页表,如果是个很小的进程,这样的页表本身也是一个浪费,页表大小应该根据进程大小而定啊
|
不是这么说的。由于mmu,每个进程有独立的4g的虚拟地址。其中0-3g由进程使用。注意这仅仅是虚拟地址。
而后进程描述符task_struct的有一个内存描述符字段mm_struct mm。而内存描述符的字段里保存了一个vm_area_struct结构体的链表。这个vm_area_struct结构体叫做线性区描述符,这个描述符链表描述了进程使用了哪些虚拟地址。而进程的页表仅仅描述了线性区描述的地址而已,所以进程使用地址越少,其实页表也越少得。
而后进程描述符task_struct的有一个内存描述符字段mm_struct mm。而内存描述符的字段里保存了一个vm_area_struct结构体的链表。这个vm_area_struct结构体叫做线性区描述符,这个描述符链表描述了进程使用了哪些虚拟地址。而进程的页表仅仅描述了线性区描述的地址而已,所以进程使用地址越少,其实页表也越少得。
|
关键点:1.多级页表
2.未分配的线性地址在第一级,第二级,第三级...中可以标记为未使用。那么后面的级别的页表就不用存在了。访问一个未分配的线性地址会出现段错误。
2.未分配的线性地址在第一级,第二级,第三级...中可以标记为未使用。那么后面的级别的页表就不用存在了。访问一个未分配的线性地址会出现段错误。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。