软考之路--你存在我深深的脑海里

        小时候,总是期待着过春节,过春节能够吃到好多好吃的,暴露了小编的本质,哈哈,最让我期待的,就是压岁钱了,七大姑八大姨这个给一个红包,那个给一个红包。爸爸又会以相同的方式给她们的孩子,我们孩子从中得到的是纯利润,然后,恨不得连睡觉都紧紧握住自己的存钱筒,想着,要去买什么好吃的呢,在小编的理解中,把压岁钱存在一起。堆积起来的过程,就是存储,在我们的计算机中,官方定义例如以下存储就是依据不同的应用环境通过採取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的訪问。总的来讲能够包括两个方面的含义:一方面它是数据暂时或长期驻留的物理媒介;还有一方面,它是保证数据完整安全存放的方式或行为。

存储就是把这两个方面结合起来,向客户提供一套数据存放解决方式。

今天小编主要就这篇总结一下,操作系统中的存储方面的知识,首先。看以下一张图。小编会顺着这张图的脉络,一一介绍存储的相关知识点。有不允许见的小伙伴欢迎讨论交流。

                            

       首先,我们来看一下实存管理的单一连续分配。固定分区分配和可变分区分配。我们来看一张图。把这三个放在一起对照着来看:

                 

        把上面的内容进行对照,我们非常easy能够看出来。仅仅有可变分区分配的空间是可变的。然后单一连续分配和固定分区分配都是静态的。依据三个分配的名字。我们也能够非常好的对这三个概念进行理解,接着,我们来深入了解这三个分配,首先:

         单一连续分配

         

        我们能够看得出来。把整个内存区画为一个区。它同一时间在内存其中仅仅能装入一个程序,仅仅能用于单用户、单

任务的运行操作。

       固定分区分配

       

      这个跟单一连续分配有异曲同工之妙,就是内存分配的比較固定,除此之外,固定分区分配还有自己的特点。就是把内存分为几个块,比方是:10K、12K、32K。那么就会有可能执行三个程序。当三个程序占用内存在这三个区域内的时候。我们就能执行。

把这个分区给固定住了了,所以一旦有比这些区域要大的程序要执行。那么就玩完了,尽管总内存够用,可是也不能执行,由于分区分的太死了。

       可变分区分配

               

       打个例如:有三个过程,一開始和单一连续分配是一样的,然后当有程序要执行的时候,就给该程序分配匹配的空间,当用完之后,释放出来之后,又能拼凑成一个空白的区域,回到最初的状态,特别灵活。

我们继续对可变分区分配方式进行探讨:

       最佳适应法

       选择等于或最接近需求的内存自由区进行分配。这样的方法能够降低碎片。但同一时候也可能带来很多其它小得无法再用的碎片。

可是这个还算有弊端的,这个我们应该怎么理解呢?比方我们有一个6K的空间,然后分配一个5K的空间给一个程序执行。那么剩余的1K一般来说就没法利用了,由于一般非常少有1K的程序要执行,所以这个1K就成了碎片了,那么循环下来的话,就有非常多碎片产生了。可是相对来说。这个分配方法还算是挺好的。

       首次适应法

       首次就是寻找第一个可用的。可用就是寻找大于等于作业需求的内存的自由区分配给作业。

这个的优点就是缩短查找时间。

       最差适应法

       选择整个主存中最大的内存自由区。

比方我有一个5K的程序要执行,然后内存中最大的自由区是64K,那么一样把64K分配给5K的程序执行。然后剩下的59K自由区还能继续利用起来。

       循环首次适应算法

       不在每次都是从头開始分配。而是连续向下匹配。我们画个图来理解:

        

       比方我们的内存是这样进行分配。那么我们如今有个作业须要12K内存占用。我们就从5K、10K、15K连续查找合适的,当找到15K的时候,我们就分配给12K,那么当我们剩余的3K的时候,刚好有一个程序是3K的须要分配内容来执行,要是我们依照首次适应法来进行分配,由于首次适应法是每次都是从头開始的。所以我们就找到5K的区域。就把5K分配了。可是要是我们依照循环首次适应的话。我们是连续分配的,这样我们就能刚好把剩余的3K分配给这个程序。

        虚存管理

        接着。我们来解说一下虚存管理,虚存管理包含页式存储存储和段式存储管理,小编会从优缺点和地址转换图两个方面进行总结,最后通过一个例题结合理论知识来回想我们的知识点。

        页式存储管理 

         

        通过用户程序和内存的分块。用户程序分为n个页面,页表起记录的作用。

接下来我们看地址转换图:

        

       这个就是我们的地址转换器。我们想看这个是怎么个工作的,那么我们来看个样例,我们分析样例来进行理解:

       

       我们的解题过程应该是这种,我们的逻辑地址是8644(十进制的),那么转换成二进制的为:10 0001 1100 0100;我们得知页面为4K=2的12次方,所以页内地址就为12位,所以a的后半部分为10 0001 1100 0100的后12位。为0001 1100 0100,那么剩下的最高两位为页号:10。转换成十进制为2,然后找出物理块号为8,8转换成二进制位1000,所以物理快号页内偏移拼合得1000 0001 1100 0100。化为十进制得33220。事实上仅仅要我们懂得了这个过程,那么剩下的就是进制的转换了。

        段式存储组织

        从用户出发,将一个程序分成几个块:

       

       从用户出发。将一个程序分成几个块:我们有页式存储的基础。这个就不在胯下。仅仅是段的大小有点大。我们再看看地址转换:

        

       段式存储方式的算法和也是存储方式的算法一致。在这里就不赘述了。

       小编寄语:该博文,小编主要介绍了存储的相关知识点。分别从实存管理和虚存管理两个方面进行分析,实存管理的部分,从单一连续分配,固定分区分配和可变分区分配进行解说,虚存管理从页式存储管理和段式存储管理进行解说。对存储这方面的知识小编接触的不多。理解比較浅显,上述知识点的内容都是小编自己傻傻的理解,有不同理解的小伙伴欢迎讨论交流,软考之路,未完待续......

原文地址:https://www.cnblogs.com/mfrbuaa/p/5183013.html