您现在的位置:学赛首页 > 研究生院 > 软件学院 > 正文
操作系统第七章-存储器管理[7]
http://www.educity.cn 作者:ndeoin 来源:学赛网 2008年4月28日 发表评论 进入社区

  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

  作业的逻辑地址结构

  作业的逻辑地址结构:

  为了实现地址变换,系统中需要设立段表及页表。

  此外,为了便于实现地址变换,还需配置一个段表寄存器,其中存放作业的段表起始地址和段表长度。

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]