存储器管理

存储器管理的主要对象是内存,这里指的就是物理内存了

  我们希望内存容量足够大、足够快、足够便宜。(我们的梦足够称为梦)

  没法满足上面三个条件,因此提出了 多级缓存的 概念。(人果然是善于思考、善于解决问题的动物啊!)

( java的内存模型  也是由于占个问题而出现的对不??? )

 

   对于主存的访问可以通过load和store 指令,对于辐存的访问需要借助于I/O设备。(因此它们的访问速度相差3个数量级左右!!!!)

  内存用来保存进程运行时的程序和数据,处理机从主存储器取得指令和数据,将其所取得的指令放入指令寄存器,读取的数据放入数据寄存器;也可将寄存器中的数据存入到主存。

  由于主存的访问速度远低于cpu执行指令的速度,所以引入了寄存器和高速缓存。

  寄存器:寄存器具有和处理机相同的速度。

     高速缓存:容量在 几十KB 到 几 MB, 告诉缓存也分为三级, L1  L2  L3. 比如我的电脑:

 

   程序: 编译  链接  装入 

  装入:就是就链接后的程序装入到内存当中!  装入方式有以下几种:

    1)绝对装入方式: 直接将程序装入到某个内存的物理地址 (一看就是远古时代的做法)

    2)可重定位装入方式:修改指里和数据的逻辑地址为实际的物理地址,这里的地址变换是在进程装入时一次完成的,静态重定位。

    3) 动态运行时的装入方式:可重定位装入方式要求程序装入到内存中后就不能再次进行移动了,因为移动后,就意味着实际的物理地址改变了,而逻辑地址到物理地址的转换只进行了一次,通常是在程序装入时进行的。因此,这里需要对它改进。因此出现了动态运行时的装入方式,程序装入内存时的地址仍然是逻辑地址,不转换为物理地址,当程序真要进行时在进行转换为物理地址。

  连续分配存储管理方式:

    1) 单一连续分配: 远古时代,仅装入一道用户程序。

    2)固定分区分配:为了装入多道程序,并且使程序之间不相互干扰。

    3)

  分页存储管理方式:为了提高内存的利用率

    将进程的逻辑地址空间分为若干个页,将内存的物理空间分为若干个块。进程的最后一页经常装不满一块,造成业内碎片,页面大小通常分为1KB-8KB.

    分页地址中的地址结构:

 

     页表:程序分为了很多页,物理内存也分为了很多块,那么就需要保存页到块的映射。

    

 

 

  分段存储管理方式:

    分页系统中的 页 只是存放信息的物理单位,并无完整的逻辑意义。这样,一个可被共享的过程可能需要占有多个页面,为实现共享增加了困难。段可以式信息的逻辑单位,可以为共享过程建立一个独立的段,简化了共享的实现。

    分段的地址结构:

    

 

 

 

    段表: (可见,段 和 页其实有很多的相似之处,不过分段存储更符合程序的逻辑)

 

 

分页和分段的区别?

  1)页是信息的物理单位。采用分页存储是为了提高内存的利用率。段是信息的逻辑单位,分段能更好的满足用户的需求。

  2)页的大小是由系统决定,并且页的大小是固定的。段的长度不确定,由用户编写的程序决定。 

 

  段页式存储管理方式:

     将用户程序分为若干个段,再把每个段分为若干个页。

    

 

 

 

  

 

posted @ 2020-07-19 11:24  你眼里的星辰  阅读(297)  评论(0)    收藏  举报