一. 存储分配的方式
1.直接分配:程序员在编写程序时,或编译程序对源程序进行编译时,直接使用实际的存储地址。
前提:事先确定一个作业在主存中的位置
缺点:存储空间的利用率不高,且不方便
2.静态分配:程序装入内存时才确定在内存中的位置,且在其整个运行期间不能在内存中移动,也不能再申请内存空间。
前提:程序装入内存时必须分配所要求的全部存储量,且退出前不释放
缺点:在多道程序系统中不能有效地共享存储器资源
3.动态分配:程序装入内存时才确定它们在内存中的位置,但在其整个运行期间可以再申请内存空间,也可在内存中移动。一个程序已占有的存储区不再需要时,可以归还给系统。
二 界限保护
上界/下界寄存器
• 所有访问地址必须在上下界之间
– 基址/限长寄存器
• 所有访问地址必须在界限范围内
三 虚拟存储技术的分类
根据地址空间结构的不同分为三类:
• 页式管理
• 段式管理
• 段页式管理
四 动态分区分配算法的关键
1.最先匹配法(first-fit):按分区起始地址的递增次序,从头查找,找到符合要求的第一个分区。
2.最佳匹配法(best-fit):按分区大小的递增次序,查找,找到符合要求的第一个分区。
3.最坏匹配法(worst-fit):按分区大小的递减次序,从头查找,找到符合要求的第一个分区。
五 三种分配算法的比较
• 最先(首次)适应算法
– 尽可能地利用了低地址空间,从而保证高地址有较大的空闲区来放置要求内存较多的进程或作业。
– 该算法的分配和释放的时间性能较好
• 最佳适应算法
– 利用最接近于所要求的内存大小。若存储空间中有正好等于所要求大小的空白区,则必然被选中。
– 由于空白区一般不可能正好和要求的的相等,这往往使剩下的空白区都比较小,形成“碎片”。
– 寻找一个较大空白区时,要花费较多的时间;回收一个分区时,为了把它插入到空白区链中合适的位置上开销较大。
• 最坏适应算法
– 避免了空闲区越分越小、留下碎片的问题,即每次分配时,总是将最大的空闲区切去一部分分配给请求者(使分配后的剩余部分可能仍是一个较大的空闲区,仍能进行再分配)。
六 页式地址映射举例
虚地址以十进制数给出:
• 页号=INT[虚地址/页大小]
• 位移量=虚地址 mod 页大小
• 根据题意产生页表
• 以页号查页表,得到对应的内存块号
• 内存地址=块号×页大小+位移量
七 请求页式管理中的置换算法
• 常见的置换算法有4种:
(1) 随机淘汰算法
(2) 轮转法(RR)和先进先出(FIFO)
(3) 最近最久未使用页面置换算法LRU(Least Recent Used)
(4) 理想型淘汰算法OPT(Optimal Replacement Algorithm)
点赞 关注 下期不迷路