操作系统——存储

存储管理: 存储管理的主要任务是完成存储空间的分配和回收。

存储空间的分配方式:

     1. 单一连续分配  不分区,适用于单用户,单任务的操作。

     2. 固定分区分配  系统将内存分成大小不等的区域,可以同时装入多个程序。但是,内存分完后,区域大小固定不变。这样,使系统缺乏灵活性。例如64k的内存分配了10k,22k,32k的区域,但是,当要执行35k的程序时,却无法完成了。

     3. 可变分区分配   程序装入内存时,由四种分配算法决定将它装入哪块儿内存。

                最佳适应算法:将程序放到和它大小接近的内存区。

                最差适应算法:将程序放到一个最大的内存区。

                首次适应法:将程序放到首次发现的合适的内存区。

                首次循环适应法:继上次的位置出开始寻找合适的内存区。

存储管理有两种方式:

1. 实存管理  :不能执行超过系统内存大小的程序。实存管理是对内存进行分块儿,将程序放入合适的内存中执行。

         2. 虚存管理  :可以执行超过系统内存大小的程序。虚存管理是对内存和程序都进行分块儿。

       

       实存管理比较简单,上面的概念已经基本将实存概述清楚,实存管理主要是将内存分配成不同的区域,然后通过不同的适应算法,将程序装入合适的内存。

       实存常见的考题:根据要执行的进程的大小和系统内存分配情况,求系统为进程分配内存采用的是哪种算法。

        操作系统——存储_第1张图片

             所以,系统采用的是最差适应算法。

 

        虚存管理相对于实存管理要复杂一些。虚存管理分为页式存储、段式存储、段页式存储

        1. 页式存储

            操作系统——存储_第2张图片

            将程序分页,将内存分块,内存分页大小应该和程序分配的区域大小一样。

            页表包含页号和页内地址,主要记录程序的每页对应内存的哪块儿区域。

           习题确定程序在内存中的物理地址。

                    ( 物理地址 = 页表中页号对应的块号  + 逻辑地址的页内地址.)

         

        (1)  确定页表中页号对应的块号地址。

              将逻辑地址8644转换为二进制数10 0001 1100 0100 ,14位。已知页面大小为4k,即12位,所以,页内地址有12位。14位—12位,那么,剩下的两位就是页号的地址了。页号的二进制地址为10,转换成十进制为2,已知页号2对应的页内地址为8,即1000。

第一步完成,求出页表中页号对应的块号地址。1000

       (2)  确定逻辑地址的页内地址

              已经求出页内地址为0001 1100 0100。

       (3)  物理地址=页表中页号对应的块号地址+逻辑地址中的页内地址。

               结果为1000 0001 1100 0100即十进制33220

2. 段式存储

操作系统——存储_第3张图片

从用户角度出发,将程序分成多个段。

和页式存储相比:页式存储中任何一个页的大小相等,其大小由系统决定。

                             段式存储中段的大小不等,其大小由其完成的功能决定。

                             段式存储的段长比页式存储的页号要大的多。

        物理地址=基址+位移量

 

           3. 段页式存储

            段页式存储,先将程序分段,再进行分页。一个程序有一个段表,每个段对应一个页表。

             操作系统——存储_第4张图片

      

 

 

        最后为三种存储的优缺点比较。

操作系统——存储_第5张图片

    后面还讲了页面置换算法、局部性原理,这两个概念不太清楚。段页式存储也只是了解了一点点。

你可能感兴趣的:(算法,存储,任务)