2.分段存储管理的实现
为了实现从逻辑地址到物理地址的变换,必须为每个进程建立一个段表,用来记录每段在内存的起始地址及相关信息。其中每个表项描述一个分段的信息,至少包含:
段号
段长
段在内存的起始地址
其他信息
段表一般存放在内存。
段表的作用
地址变换
为实现从逻辑地址到物理地址的转换,在系统中设置了段表寄存器,用于存放段表始址和段表长度。
为了提高内存的访问速度,也可以使用快表。
地址变换过程
进行地扯变换时,系统将逻辑地址中的段号S与段表长度进行比较,若段号超过了段表长度则产生越界中断;
否则根据段表始址和段号计算出该段对应段表项的位置,从中读出该段在内存的起始地址,
然后再检查段内地址是否超过该段的段长,若超过则同样发出越界中断信号;
若未越界,则将该段的起始地址与段内位移相加,从而得到了要访问的物理地址。
地址变换机构图
分段地址变换例
设作业分为3段,0、1、2段长度分别为1K、800、600,分别存放在内存6K、4K、8K开始的内存区域。
逻辑地址(2,100)的段号为2,段内位移为100。
查段表可知第2段在内存的起始地址8K。
将起始地址与段内位移相加,8K+100=8292,物理地址为8292。
分段与分页的主要区别
分页管理与分段管理有许多相似之处,但两者在概念上也有很多区别,主要表现在:
页是信息的物理单位,是为了减少内存碎片及提高内存利用率,是系统管理的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地满足用户的需要。
页的大小固定且由系统决定,由硬件把逻辑地址划分为页号和页内地址两部分。段的长度不固定且由用户所编写的程序决定,通常由编译系统在对源程序进行编译时根据信息的性质来划分。
分页系统中作业的地址空间是一维的,分段系统中作业的地址空间是二维的。
3.段的共享与保护
分段是信息的逻辑单位,因而实现共享比分页系统方便。
在分页存储管理系统中,信息的共享是通过使多个进程页表项指向同一个物理块来实现的。
分页系统中信息共享示意图
分段系统中的信息共享
在分段存储管理系统中,信息的共享是通过使多个进程的段表项指向同一内存区域实现的。
分段系统中共享信息示意图
可重入代码
可重入代码又称为纯代码,是允许多个进程同时访问的代码。可重入代码在执行中不能修改。
分段保护
分段保护方法有:
地址越界保护:段号与段表长度的比较,段内位移与段长的比较
存取控制保护:设置存取权限,访问段时判断访问类型与存取权限是否相符
7.6 段页式存储管理
分页系统能有效地提高内存利用率,而分段系统能很好地反映用户要求。如果将这两种存储管理方式结合起来,就形成了段页式存储管理系统。
段页式存储管理的基本思想
在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,然后再将每一段分成若干个大小固定的页面。
将主存空间分成若干个和页面大小相同的物理块,对主存的分配以物理块为单位。
作业的分段及分页示意图
设作业包含分为三段,页面大小为2K
作业的逻辑地址结构
作业的逻辑地址结构:
为了实现地址变换,系统中需要设立段表及页表。
此外,为了便于实现地址变换,还需配置一个段表寄存器,其中存放作业的段表起始地址和段表长度。