存储器管理 4.9 请求分段存储管理方式
Posted 05-ReFrain-19
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储器管理 4.9 请求分段存储管理方式相关的知识,希望对你有一定的参考价值。
工作原理:请求分段系统中,程序运行之前,只需先调入若干个分段(不必调入所有的分段),便可启动运行。当所访问的段不在内存中时,可请求OS将所缺的段调入内存。
一、硬件支持
1.请求分段的段表机制
①状态位(存在位)P:用于说明该段是否已调入内存,供程序访问时参考
②访问位A:用于记录本段在一段时间内被访问的次数,提供给置换算法选择换出段时参考
③修改位M:用于表示该段在调入内存后是否被修改过,也是提供给置换算法在换出段时是否将该段写回外存作参考
④增补位:说明该分段是否允许扩展,此外如该段已被增补,则在写回辅存时,需另选择辅存空间
⑤外存地址:用于指出该段在外存上的地址,供调入该页时使用
2.缺段中断机构
3.地址变换机构
二、分段的共享与保护
1.共享段表
为了实现分段共享,可在系统中配置一张共享段表,所有共享段都在共享段表中占有一个表项。
①共享进程计数:记录有多少进程共享该段
②存取控制字段:对同一共享段,不同进程有不同的操作权限
③段号:共享段在不同进程中有不同的段号
2.共享段的分配
对第一个请求使用该共享段的进程:由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写有关数据,把count置为1;
当又有其它进程需要调用该共享段时,无须再为该段分配内存,而只需在调用进程的段表中,增加一表项,填写该共享段的物理地址;在共享段表中,填上调用进程的进程名、存取控制等,再执行count:=count+1操作。
3.共享段的回收
当共享此段的某进程不再需要该段时,应将该段释放, 包括撤消该进程段表中共享段所对应的表项,以及执行count:=count-1操作;
若count结果为0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否则(减1结果不为0), 则只是取消调用者进程在共享段表中的有关记录。
4.分段保护
①越界检查:段号等于或大于段表长度,将发出地址越界中断信号,确保每个进程只能在自己的地址空间内运行
②存取控制检查:只读,只执行,读/写
③环保护机构
低编号具有高优先权。
一个程序可以访问驻留在相同环或较低特权环中的数据;
一个程序可以调用驻留在相同环或较高特权环中的服务。
操作系统王道考研 p41 基于分段存储管理方式
知识总览
分段
按照程序自身的逻辑划分段,每段从0开始编址。
分配:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间不能相邻。
段号位数决定了每个进程最多可以分为几个段,段内地址位数决定了每个段的最大长度是多少。
举个例子,最大的段号是1023,说明最后一个段是1023——那么在它前面还有0-1022这1023个,所以一共有1024个段,也就是说,最大段号为1023说明共有1024个段,也就是进程最多被分为1024个段。
段内地址同理。
段表
通过段表可以找到某个逻辑段的存放位置。
每个段表项包括:段长,基址。各个段表项长度相同。
段号可以隐含,因为段表项长度相同,而且是按顺序存放的。
地址变换
一张没啥用的图:
逻辑地址转换为物理地址的流程:
分段、分页管理的对比
或许可以理解为(我猜的):
页是信息的物理单位——因为实际上计算机内部就是这样存放信息的。
段是信息的逻辑单位——因为这样用户能更好理解信息并分配、运用信息,所以把它整成段。
分页——地址空间一维。
分段——地址空间二维。
分段更容易实现信息的共享和保护。
不能被修改的代码可以被共享。只需让各进程的段表项指向同一个段就相当于实现了共享。
关于分页不容易共享:页面不是按逻辑模块划分的,就很难共享。
更完整的对比:
总结
以上是关于存储器管理 4.9 请求分段存储管理方式的主要内容,如果未能解决你的问题,请参考以下文章