赛迪网 > IT技术 热点推荐 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux系统的内存管理的虚拟存储管理

发布时间:2006.09.25 16:14     来源:赛迪网技术社区    作者:bobo

内存管理是一个操作系统必不可少。并且。非常重要的一环。linux的成功。和它优秀的内存管理联系非常密切。因为一个系统的高效性欲稳定性往往决定于它的内存管理机制。我项很多人吃过dos下640k 的苦吧。

前面我们介绍了386保护模式。从今天起我们将在此基础上,分析linux的虚拟存储管理,对每个程序员来说。他们都希望有无穷大的快速的内存,然而,现阶段是不可能的,况且,无穷大与快速本身就可能矛盾

为了解决无穷大。linux 引入了虚拟存储系统,为了解决快速,linux 引入了cache ,交换机制等等,以使的存储系统,在容量上接近硬盘,速度上接近cache。(当然,我认为这是存储系统的实际目的)。

linux 的内存管理采取的是分页机制。它的设计目的是分时多任务。linux 可同时处理256个任务(这应该与某个变量来定义,一时想不起来)。同时它采用了两级饱和机制来分别内核进程与用户进程。

在386 保护模式的0-4g 的线性虚拟地址中,3-4g 是留给内核进程的。而0-3g分给用户进程。内核在内核空间的寻址不同于用户进程在用户空间的寻址。因为内核是在启动时装入内存的。说以它可以直接吧地址映射到3g 以上。用户若想访问内核就不许通过swapper_pg_div 中的指针来得到页表。

相反,用户进程,在用户空间的寻址是通过所用户页目录中的指针得到用户的页表。并通过页表的指针直接指向相应的物理内存。

linux虚拟内存的实现,需要几种不同的机制来实现:

地址映射机制;

内存的分配与回收;

请页机制;

交换机制;

内存共享机制。

在具体的读源码之前。我们先根据我们以前学过的操作系统知识。和c语言等知识。来考虑一下,这几个机制如何实现。现自己设计一下。在看别人是怎样实现的。找到自己想不到。或者对效率空间有损的地方。这样才有进步。我不止一次的说。操作系统的某一部分,就起实现来说,非常简单。它的难点是如何将大量的功能集成出一个kernerl。

地址映射机制,说白了,就是在虚拟内存与物理内存上的一个桥梁。它要做的事情可能就是通过几个不同的表。把虚拟地址转换成物理地址,把物理地址转化虚拟地址。

我们以前说过。因为有系统与用户之分,它必须也要有不同的数据结构。为了解决速度等问题。它会有一个硬件的缓冲区

对于它的数据结构。我们可以先想一下。如虚拟地址的信息,虚拟地址在那个区域等等

至于请页机制,更好理解。因为linux是页式存储的。因此必然会存在空白页和使用页。既然是页。就必然会存在页溢出。页无效(是不是在win98 下经常出现类似错误,当然linux的内存管理不可能和windows一样,可基本道理相同)。因此。在每一个页出错。或者该页存不下多余的数据时。就要要求内核分配新的页面

同时。当时用fork() 产生一个新的进程时。也需要分配新的叶面。这一部分大概讲的就是进程如何向内和描述自己需要怎么样的和多少页

在我们学习<<数据结构>>是我们学了,很多内存分配方式,如首次拟和。最佳拟和,最差拟和等等。但是我们可以想象。linux 大概不会用他们。那就一定是伙伴系统了。因此我们可以对于伙伴系统的分配,回收的基本算法。回想一下。这样在读者一部分源码时,回有意象不到的收获。

至于交换机制。我们也可以现想一想。内存中总与很多使用者的页。如果这些也已经把所有的页都用完了。再分配时必须把其中的某些页释放。释放那些页,需要考虑。如最近不用页。近期少用页,等等都可以在考虑之中。

这个算法,大概就是计算内存中使用的页,什么时候可以换处。说白了就是为所有的使用页计算一个”权”,而这个”权”就决定了他什么时候被释放以换如它的内容。需要想的是对于经常使用的页。可以把它放入cahe。(尽管这一部分对程序员是透明的,但我们应该理解他的原理)。

最后的一部分共享内存,我想和我门初学linux编程时,进程通讯里面的共享内存没有区别。大概也就是在它的数据结构中加入可以允许不同进程访问的tag 就行了。

以上,只是我们对linux的内存管理机制的猜测,需要我们做的工作就是具体的读源码。更正不正确的猜想。同时学习别人的实际思路。

(T114)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· IBM看上红旗Linux 未来市场是否三国鼎立? (09-25) · 红旗Linux可能获得IBM支持 企业应用前景广阔 (09-25)
· 消息总线和活动系统渗透到 Linux桌面 (09-22) · 恰当选择嵌入式Linux环境下的GUI系统 (09-22)
· VNC远程控制Linux系统主机图形界面 (09-22) · Linux 内核模块和驱动程序的详细编写 (09-22)
· 关于Linux系统图形界面的基本知识 (09-22) · Linux操作系统下X终端的详细使用方法 (09-22)
· 挖掘Linux操作系统堆内存释放的奥秘 (09-22) · Linux内存耗尽后彰显VFS内存空间不足 (09-22)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管