存储管理 分为页式存储和段式存储
页式存储 将程序与内存划分为同等大小的页,以页为单位将程序调入内存
逻辑地址=页号+页内地址
物理地址=页帧号(块号)+页内地址
例如,页式存储系统中,每个页大小4KB
4KB用12位二进制数表示,剩下的是页号/页帧号
逻辑地址:
10 1100 1101 1110
对应物理地址:
110 1100 1101 1110
**优点:**利用率高,碎片小,分配及管理简单
**缺点:**增加系统开销,可能会抖动
因为有可能分页时把连续的数据分开
完整的页表还会有状态记录等等,便于内存清理
段式存储 按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可以不一样
因为段长不同,所以需要在表中记录
图中,合法段地址(0,25K),非法段地址(0,35K)
**优点:**多道程序共享内存(只享有自己段),各程序段修改互不影响
**缺点:**内存利用率低,内存碎片浪费大
段页式存储 段式与页式的综合,先分段在分页
一个程序有若干个段,每个段中可以有若干
每个页大小相同,但每个段大小不同
优点:空间浪费少、存储共享容易、存储保护容易、能动态连接
**缺点:**管理复杂、开销大,需要硬件与占用内容增加,执行速度大大下降
页面置换算法 内存容量有限,存在置换问题,有以下几种算法:
**最优算法(OPT):**是一个理想算法,让系统判断哪一个页/段以后不用,难度大
**随机算法:**随机置换
**先进先出算法(FIFO):**先进来的先置换,有可能产生抖动
最近最少使用算法(LRU):最近最少用的先置换,不会产生抖动,它的理论依据是局部性原理
缺页 缺页是引入了虚拟内存后的一个概念。操作系统启动后,在内存中维护着一个虚拟地址表,进程需要的虚拟地址在虚拟地址表中记录。**一个程序被加载运行时,只是加载了很少的一部分到内存,另外一部分在需要时再从磁盘载入。被加载到内存的部分标识为“驻留”,而未被加载到内存的部分标为“未驻留”。操作系统根据需要读取虚拟地址表,如果读到虚拟地址表中记录的地址被标为“未驻留”,表示这部分地址记录的程序代码未被加载到内存,需要从磁盘读入,则这种情况就表示"缺页"。**这个时候,操作系统触发一个“缺页”的硬件陷阱,系统从磁盘换入这部分未“驻留”的代码。 引入了分页机制(也就有了缺页机制),则系统只需要加载程序的部分代码到内存,就可以创建进程运行, 需要程序的另一部分时再从磁盘载入并运行,从而允许比内存大很多的程序同时在内存运行。
缺页次数指的是操作系统将页从外存调入内存的次数
缺页中断 而缺页中断次数指的是由于内存块数量的限制
将内存中暂时用不到的页面与外存中需要调入内存的页面交换的次数
$$ 中断次数=进程所物理块数+页面置换次数 $$
磁盘管理 磁盘是匀速转的,每一磁道存储内容一样多,越靠内,信息密度越大
存取时间=寻道时间+等待时间
寻道时间是指磁头移动到磁道所需时间
等待时间是等待读写的山区转到磁头下方所用时间
磁盘调度算法 分为四种
**先来先服务(FCFS):**根据进程请求访问磁盘的先后次序进行调度
**最短寻道时间优先(SSTF):**找离磁头最近的磁道上的内容
**扫描算法(SCAN):**又称电梯调度算法,先单向扫描(里向外/外向里),直到没有更外/更里的磁道,再换向
**循环扫描(CSCAN):**循环扫描算法是对扫描算法的改进,只会沿着一个方向循环扫描
读取磁盘数据时间计算 读取磁盘数据时间包含以下三个部分:
找磁道时间 找扇区时间(旋转延迟时间) 传输时间 例题:
...