- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章—B 分页与分段存储管理1
作业的分段结构 以段为单位进行主存分配,每一个段在主存中占有连续的空间,但各个段之间可以离散的存放在主存不同区域中。 2.段表 在分段式存储管理系统中,为每个段分配一个连续的分区,而进程中的各个段可以离散地分配到内存中不同的分区中。在系统中为每个进程建立一张段映射表,简称为“段表”。每个段在表中占有一表项,在其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,如下图所示。进程在执行中,通过查段表来找到每个段所对应的内存区。可见,段表实现了从逻辑段到物理内存区的映射。 内存空间 0 40k: 80k: 120k: 150k: (MAIN)=0 15K (X)=1, 7K (D)=2, 8K (S)=3, 10K 作业空间 段 表 (MAIN)=0 0 15K 段号 段长 基址 (X)=1 0 0 1 7K (D)=2 2 0 8K 3 (S)=3 0 10K 15K 40K 7K 80K 8K 120K 10K 150K 3.地址变换机构 段表寄存器 越界中断 逻辑地址 段号 段长SL 基址 0 1 2 3 段表始址 段表长度 TL 段号S 位移量w 1 100 ﹥ 15K 40K 7K 80K 8K 120K 10K 150K 物理地址 80k+100 物理地址:段的基址+段内地址(位移量) 为了实现从逻辑地址到物理地址的变换功能,系统中设置了段表寄存器,用于存放段表始址和段表长度。在进行地址变换时,系统将逻辑地址中的段号S与段表长度TL进行比较。若 S≥TL,表示段号太大,访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存中的起始地址,然后再检查段内地址d是否超过该段的段长SL。若超过,即 d≥SL,同样发出越界中断信号;若未越界,则将该段的基址与段内地址w相加,得到要访问的内存物理地址。 (4)分页与分段的区别 相似之处: 都采用离散分配的主存的方式; 都需要通过地址映射机构来实现地址变换。 不同之处: (1)分页是信息的物理单位,是系统管理的需要而不是用户的需要;而分段则是信息的逻辑单位,它含有一组意义相对完整的信息,是为了更好的满足用户的需要。 (2)页的大小固定且由系统决定;而段的长度却不固定,由用户所编写的程序决定。 (3)分页式作业的地址空间是一维的;而分段式作业地址空间是二维的。 (4)分页的优点体现在内存空间的管理上,而分段的优点体现在地址空间的管理上。 (3)信息共享 段是信息的逻辑单位,因此分段系统的一个突出的优点是易于实现段的共享。即允许若干个进程共享一个或多个段,而且对段的保护也十分简单。在分页系统中,虽然也能实现程序和数据的共享,但远不如分段系统来得方便。分段系统中,每个进程的段表中设置一个段表项。下页图是分段系统中共享 editor编辑程序的示意图。 在实现段共享时,需要用到可重入代码(Reentrant Code)又称为“纯代码”(Pure Code)。它是一种允许多个进程同时访问的代码,是一种不允许任何进程对其进行修改的代码。但在每个进程中,配以局部数据区,将在执行中可能改变的部分,拷贝到该数据区,这样,程序在执行时,只对该数据区(属于该进程私有)中的内容进行修改,而不去改变共享的代码,这时的可共享代码即成为可重入代码。 图 4-18 分页系统中共享edit
文档评论(0)