1、存储器:
速度:寄存器---->主存---->辅存
容量:辅存---->主存---->寄存器
2、高速缓存和磁盘缓存:
高速缓存:解决cpu与主存之间速度不平衡
磁盘缓存:解决主存与磁盘之间速度不平衡,他是内存中开辟的一个区间,并不是实际存在的一个存储器
3、程序的运行过程:
编译、连接、装入
编译:将命名空间编程逻辑地址
链接:链接是指将这组目标模块以及所需的库函数装配成一个完整的装入模块
1、静态链接
2、装入时动态链接
3、运行时动态链接
装入:将模块装入内存
1、绝对装入方式
2、可重定位装入方式:可以将模块装入至内存的任何位置
3、动态运行时装入方式:装入时不立即将逻辑地址立刻装换成物理地址
4、存储管理的方式:
1、单一连续区管理
2、分区管理
3、分页管理
4、分段管理
5、段页式管理
其中连续分配存储管理方式有:单一连续分配方式和分区管理的方式
单一连续分配:早期的,老早老早就GG了。
分区管理:
1、固定分区管理:分区大小相同,分区大小相等两种形式,所以固定分区是大小确定不相等。会造成内碎片。
2、动态分区管理:动态分配内存,将涉及数据结构和分配算法和回收。
2.1 顺序搜索算法:FF首次适应,BF最佳适应(容易造成外碎片),最坏适应,循环首次适应
2.2 索引搜索算法:快速适应,伙伴系统、哈希算法
3、动态可重定位分区分配管理:
3.1 紧凑技术:将内存中的所有作业都进行移动来讲内存的区域聚集在一起,能获得更大的内存空间,但是内存位置都发生了变换,每次紧凑之后需进行重定位
算法和动态分区一致,但增加了紧凑这一步,就在分配时加一步,是否可以放的下,放不下就紧凑,重定位。
离散存储管理方式:分页管理、分段管理、段页式管理
1、分页管理:固定大小,会造成页内碎片但较小,系统为每个进程创建一张表,称为页表。但是页表存储需要的内存会占很大,所以可以只将当前需要的部分页表向调入内存。
2、分段管理:满足用户需要,方便编程,信息共享,信息保护,动态增长,动态链接。段表对每个分段分配一个连续的分区,进程的各个短可以离散的装入内存,由于段表是根据段来建立的,那要找到内存中的某个数据需要知道是哪个进程的?进程中哪个段的?所以地址是二维的!
3、段页式管理:两种结合。先把作业分段,然后进行分页
5、虚拟存储器
1、虚拟内存中使用请求分页技术
2、将部分程序放在外存,用时调用
3、虚拟的,而非物理上扩充了内存
6、请求分页管理方式
1、请求分页表
2、中断
3、算法
例题:
在分区存储管理方法下,导致碎片的原因是 ( )。
A. 重定位 B. 分区的个数固定
C. 分区的大小固定 D. 作业连续存储
解析:选D,固定分区会导致内碎片就是由于分区大小固定,作业是连续存储的。动态分区是会造成外碎片还是由于作业必须连续存储。
在下列有关请求分页管理的叙述中,正确的是( )。
A.程序和数据是在开始执行前一次性装入的
B.产生缺页中段一定要淘汰一个页面
C.一个被淘汰的页面一定要写回外存
D.在页表中要有“访问位”和“改变位”等信息
解析:选D,C肯定被pass,B中不一定要淘汰页面,如果内存还能容纳页面,直接把它调进来就好了,没必要淘汰,A的话请求分页就是把当前不适用的页面放在外存的,感觉A的话有点不太对
系统“抖动”现象的发生是由( )引起的。
A置换算法选择不当 B交换的信息量过大
C内存容量不足 D请求页式管理方法
解析:选A,抖动的根本原因还是:进程太多,而分配的物理块太少了。但仔细一想,为什么物理块太少,还是一位置换算法不当。