主存管理[未完成]

存储管理

主存共享方式

  • 大小不等的划分
    • 分区存储
    • 段式存储
  • 大小相等的划分
    • 页式存储

逻辑组织

一维结构

二维结构

  • 段编号

  • 段内偏移

  • 物理地址/绝对地址

  • 主存空间

  • 逻辑地址(相对,虚地址)

地址映射

程序中的逻辑地址转换为物理地址

  1. 编译时确定(×)
  2. 装载时映射:静态映射
  3. 动态映射: 随着连续访问连续映射(CR3重定位寄存器)
    程序要求的逻辑地址+[CR3]->物理地址
    构造分配的数据结构
    分配策略:选择请求者
    放置策略:选择一个空闲区
    调入策略:何时装载
    淘汰策略:何时移走哪些用不到的

主存扩充

局部性特征
从存放代码的辅存中调入必须信息

if chunk_lost
{
	call(chunk)
}

虚拟存储器

逻辑地址和物理地址分开
合适的地址变换
辅存:存放应用程序的虚地址空间
主存:存放主存的多进程信息

存储保护

保证用户的程序存储只能在区域内运行读写

扫描二维码关注公众号,回复: 10821796 查看本文章
  • 上下界寄存器(越检查界报错)
    检查的物理地址
  • 基址,限长寄存器
    • 20,4->[20,24]
    • 不在区间返回越界中断

动态分区存储

建立分区,按请求大小建立分区

分配

0-20:OS
para1 alloc 20:20-40
para2 alloc 40:40-80
para1 ends recycle:20-40

分配数据结构

主存资源信息块

空闲区队列
起始地址->长度,下一个起始地址->长度

分区的分配

找到大小=请求的:直接摘链
找到大小>请求的:拆分为分区+剩余

分区回收

优化:首次适应算法

调度:将输入程序的程序放入大小最接近的空闲区
最后是从小到大

最佳适应算法

See https://blog.csdn.net/u011070169/article/details/53177987
See ppt

最坏适应算法

调度:将输入程序的程序放入最大的空闲区
最大化利用最大空闲区

队列链表结构

页式存储

程序地址分为大小相等的页面,称为虚页
主存块:主存的大小相等的片,称实页
虚页可以映射到不连续的物理空间(实页)内

页表

每个程序建立的实/虚页的映射关系
超速缓冲储存器/主存中存放
对于每个程序:
页号/块号
0/page1
1/page2
2/…

虚地址结构

低位0~…:Offset
高位~:页号Page

虚实地址转换

  1. 转换二进制
  2. 分离低位/高位
  3. 产生页表:
  4. offset直接进入寄存器低位
  5. 页号查表确定物理地址起始
  6. 填入地址寄存器高位

取址译码的自动化硬件机构

联想存储器/快表:缓冲存储器的当前运行的进程的页表
仅在联想存储器不匹配时进入主存寻找.

页面调取的机制

  1. 简单页式系统:运行时全部装入
  2. 请求页式系统:装入部分页面运行

请求式系统的页表改装

  • 页号,主存块号
  • 中断位:表示是否在主存内(是否装入),没有则产生缺页中断
  • 辅存地址:辅存位置

缺页处理

e.g.

MOV R1 [2120]

虚地址2120,分页
得p=2w=72
中断位=1
缺页中断
if有空白,或者块数<m,调入
else 淘汰主存中的块

淘汰策略

淘汰哪些页?

页表改装

  • 引用位:是否被引用
  • 改变位:是否被修改
    如果两个位表明最近未被访问/修改,则考虑移除.

抖动

频繁调入调出导致性能下降的页

最佳替换算法

淘汰最长时间之后采用的页
页号表
替换指针指向最老的一页
次序表
在分块表中建立次序表

最久未使用

先进先出,最久未被使用的.
TODO…

近似淘汰算法

发布了80 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/POTASSIUM711/article/details/103844942