存储器管理
存储器管理的主要对象是内存,这里指的就是物理内存了
我们希望内存容量足够大、足够快、足够便宜。(我们的梦足够称为梦)
没法满足上面三个条件,因此提出了 多级缓存的 概念。(人果然是善于思考、善于解决问题的动物啊!)
( java的内存模型 也是由于占个问题而出现的对不??? )

对于主存的访问可以通过load和store 指令,对于辐存的访问需要借助于I/O设备。(因此它们的访问速度相差3个数量级左右!!!!)
内存用来保存进程运行时的程序和数据,处理机从主存储器取得指令和数据,将其所取得的指令放入指令寄存器,读取的数据放入数据寄存器;也可将寄存器中的数据存入到主存。
由于主存的访问速度远低于cpu执行指令的速度,所以引入了寄存器和高速缓存。
寄存器:寄存器具有和处理机相同的速度。
高速缓存:容量在 几十KB 到 几 MB, 告诉缓存也分为三级, L1 L2 L3. 比如我的电脑:

程序: 编译 链接 装入
装入:就是就链接后的程序装入到内存当中! 装入方式有以下几种:
1)绝对装入方式: 直接将程序装入到某个内存的物理地址 (一看就是远古时代的做法)
2)可重定位装入方式:修改指里和数据的逻辑地址为实际的物理地址,这里的地址变换是在进程装入时一次完成的,静态重定位。
3) 动态运行时的装入方式:可重定位装入方式要求程序装入到内存中后就不能再次进行移动了,因为移动后,就意味着实际的物理地址改变了,而逻辑地址到物理地址的转换只进行了一次,通常是在程序装入时进行的。因此,这里需要对它改进。因此出现了动态运行时的装入方式,程序装入内存时的地址仍然是逻辑地址,不转换为物理地址,当程序真要进行时在进行转换为物理地址。
连续分配存储管理方式:
1) 单一连续分配: 远古时代,仅装入一道用户程序。
2)固定分区分配:为了装入多道程序,并且使程序之间不相互干扰。
3)
分页存储管理方式:为了提高内存的利用率
将进程的逻辑地址空间分为若干个页,将内存的物理空间分为若干个块。进程的最后一页经常装不满一块,造成业内碎片,页面大小通常分为1KB-8KB.
分页地址中的地址结构:

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

分段存储管理方式:
分页系统中的 页 只是存放信息的物理单位,并无完整的逻辑意义。这样,一个可被共享的过程可能需要占有多个页面,为实现共享增加了困难。段可以式信息的逻辑单位,可以为共享过程建立一个独立的段,简化了共享的实现。
分段的地址结构:
![]()
![]()
段表: (可见,段 和 页其实有很多的相似之处,不过分段存储更符合程序的逻辑)

分页和分段的区别?
1)页是信息的物理单位。采用分页存储是为了提高内存的利用率。段是信息的逻辑单位,分段能更好的满足用户的需求。
2)页的大小是由系统决定,并且页的大小是固定的。段的长度不确定,由用户编写的程序决定。
段页式存储管理方式:
将用户程序分为若干个段,再把每个段分为若干个页。
浙公网安备 33010602011771号