熬之滴水成石:最想深入了解的内容--windows内核机制(12)

                                                                                            63-内存管理(1)

老实说,这块内容一直是我的硬伤。但出于自己总结自己的积累,所以写在这里也无妨!把自己的理解写出来,被小伙伴指出其实也是一件非常有收获的事情。在OS中操作系统往往会硬件会找到相关的管理程序。好的系统与坏的系统,最大的区别就是在内存的管理分配上。但内存管理在一定的程度上又是由处理器来决定的,这个理解起来还是简单的,我们组装PC机时会有明显的感受,有些硬件的特性在某时候确受处理器的影响。尤其当有多进程时,处理器寻址技术让内存管理更凸显重要。内存管理最初印象还是缘于大学课堂上,现在百度仍旧可以找到这些教科书式的描述。其实内存就是处理器可以直接访问的空间,在硬件构造上是通过地址线的布置,让出uliqide许多指令可用内存单元的地址作为操作数,从而控制这部分的内容。而这个地址又在OS中被形象额分为了三类:第一类:虚拟地址,我曾经被一个我很敬仰的大师问过这个问题,他问我,在32位系统中,虚拟的地址空间可以有多大,当时我竟然找不到解答的办法,后来我恍然大悟,其实就是2的32次幂。还一类就是逻辑地址,这类地址在考试中常常会遇到概念,逻辑地址分为两部分,一个是段,一个是偏移。段其实就是一个地址空间中的基地址以及段空间大小,便宜则是指定了一个逻辑地址相对于段地址的便宜量。最后一类便是物理地址,这个很好理解了,处理器在访问内存时,无论做了多少操作。归根结底都是要落地在物理地址上的,当然这里面肯定需要做一系列的转换才能最终的访问到。有效地管理内存对于一个操作系统非常重要,因为进程的运行时需要内存的,分配足够的内存给进程,保证资源的可用性。另外在OS实际的运行中,进程们所需的内存远远超过了实际内存的大小。这时候,内存管理就显得尤为重要了。我们知道,这个时候通常的做法就是把进程中的数据或代码先放到硬盘上,从而使它们占用的内存腾出来给其它进程用,当用完后在转进来。所以在我装系统时,通常给系统盘分配足够大的空间。

好了讲讲在大学课堂我就有些晕菜的段式和页式管理,当时听课时是想不明白为什么要搞这些东东。后来知道了,其实原理是简单的。其实就是我们的内存存储单元是8位二进制的存储单位,所以地址都是以加1来递增的。地址值都是以加1指向下一个地址的,这些地址也就是实际额物理地址。进程都是动态产生,如果让进程直接通过物理地址来访问,回收内存则成了一件很难的事情。所以OS的设计师们就像出来了一个办法,这个办法就是编出一个虚拟的地址,虚拟地址和物理地址通过一个映射机制巧妙地关联起来。在使用的时候,通过一个映射表来完转换。页式和段式还有段页式正是在这样的设计中出来的。

                                                                                                                                                             (未完待续.....)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值