FreeBSD读书笔记—5存储器管理—5.2FreeBSD虚拟…

2009-05-13 01:53:01来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


突然降温了,窗外的风凛冽刺骨,窗内的我瑟瑟发抖,看来南京的冬天真的来了。好在今天的太阳还不错,透过晾在阳台上的衣服,把我坐的这个角落也照得亮晃晃的,不过就是中看不中用,一点热量都没有。键盘也是冰冷的,不知道灌在这里的到底是冰水呢还是热水呢?^_^
今天写下的这一节是对FreeBSD虚拟存储器系统的一个概述,寥寥数笔就为我们勾画出了基本框架。本节中对一些数据结构的描述如果结合源代码来看就十分清晰了。
《The Design and Implementation of the FreeBSD Operating System》第二部分“进程”——第五章“存储器管理”——第5.2节“FreeBSD虚拟存储器系统概述”。
希望有机会看到这些文字的朋友能留下您的宝贵意见,让我们共同为BSD的推广传播而努力。万分感谢!




《The Design and Implementation of the FreeBSD Operating System》
Part II: Processes
Chapter 5. Memory Management
5.1. Overview of the FreeBSD Virtual-Memory System
FreeBSD的虚拟存储器系统基于Mach 2.0的虚拟存储器系统[Tevanian, 1987],后来又合入了来自Mach 2.5和Mach 3.0的更新。之所以采用Mach的虚拟存储器系统,是因为它能有效地支持共享,对机器相关和机器无关特性的区分也很清晰,同时还支持多处理器。最初的Mach系统调用接口一个都没有保留下来。它们被替换成了在4.2BSD中首先提出而后又被UNIX业界广泛采用的接口;FreeBSD的接口将在5.5节中描述。
虚拟存储器系统实现了受保护的地址空间,位于其中的可以是像文件或是私有的、匿名的swap空间片段这样的经过映射的数据源(对象)。物理存储器被用来作为这些对象近期使用过的page的一个cache,由一个全局的page替换算法进行管理。
大多数架构上的虚拟地址空间都被分成了两个部分。对于运行在32位架构上的FreeBSD而言,顶端1G字节的地址空间保留给内核使用。对于那些有很多大量使用网络之类的内核工具的小进程的系统而言,则可以把顶端的2G字节配置给内核使用。其余的地址空间可供进程使用。传统的UNIX布局如图5.3所示。其中,内核以及与其关联的数据结构驻留在地址空间的顶端。用户进程最初的text和data区域开始或接近于存储器的起始位置。通常,最前面的4或8K字节的存储器对于进程而言是不可访问的。做出这个限制的原因是为了方便程序调试;当引用一个空指针的时候就会导致一个无效地址fault,而不会去读写程序text。由正在运行中的进程通过malloc()库函数(或sbrk系统调用)进行的存储器分配是在heap上完成的,heap的起始位置紧挨在data区域的后面,并且向更高的地址增长。参数向量(argument vector)和环境向量(environment vector)位于地址空间中用户部分的顶端。用户的stack紧挨在这些向量的下面,并且向更低的地址增长。除了系统管理方面的限制之外,stack和heap都可以一直增长直至相遇。这时,一个运行在32位机器上的进程将会使用大概3G字节的地址空间。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:samba

下一篇:nc使用技巧