欢迎大家来到IT世界,在知识的湖畔探索吧!
1.分段
为了编程和使用方便,用户希望把自己的程序按照逻辑关系组织,即划分成若干段,并且按照这些段来分配内存。这样,在分段存储管理系统中,一个作业或进程可以有多个段,这些段可以离散地放入内存的不同分区中。就是说,一个作业或进程的各段不一定放在彼此相邻的分区中。所以,段是一组逻辑信息的集合。在图中,有主程序段MAIN,子程序段P,数据段D和栈段S等。
每段都有自己的名字和长度。为管理方便,系统为每段规定一个内部段名。内部段名实际上是一个编号,称为段号。
例如,在图4-29中,段MAIN对应的段号是0,段P对应的段号是1,等等。每段的起始地址都是0,连续编址,所以段内地址空间是连续的。段长度由该段所包含的逻辑信息的长度决定,因而各段长度可以不等。
通常,用户程序需要进行编译,编译程序自动为输入的程序构建各个段。
2.程序的地址结构
由于整个进程的地址空间分成多个段,所以,逻辑地址要用两个成分来表示:段号s和段内地址d。就是说,在分段存储情况下,进程的逻辑地址空间是二维的。分段系统中所用的地址结构如图所示。
在该地址结构中,允许一个进程最多有64 K个段,每段的最大长度为64 KB。通常,规定每个进程的段号从0开始顺序编排,如0段,1段,2段等等。不同机器中指令的地址部分会有差异,如有些机器指令的地址部分占24位,其中段号占8位,段内地址占16位。
3.段表和段表地址寄存器
与分页一样,为了找出每个逻辑段在所对应的物理内存中分区的位置,系统为每个进程建立一个段映射表,简称“段表”。每个段在段表中占有一项,段表项中包含段号、段长和段起始地址(又称“基址”)等。段基址包含该段存放在内存中的起始物理地址,而段长指定该段的长度。段表按段号从小到大顺序排列。一个进程的全部段都应在该进程的段表中登记。当作业调度程序调入该作业时,就为相应进程建立段表;在撤消进程时,清除此进程的段表。
通常,段表放在内存中。为了方便地找到运行进程的段表,系统还要建立一个段表地址寄存器。它有两部分:一部分指出该段表在内存的起始地址;另一部分指出该段表的长度,表明该段表中共有多少项,即该进程一共有多少段。
4.分页和分段的主要区别
(1)页是信息的物理单位,段是信息的逻辑单位。分页系统中,用户本身并不需要把程序分页,完全是系统管理上的要求。分段系统中,用户可以知道自己的程序分成多少段以及每段的作用。
(2)页的大小是由系统确定的,段的长度因段而异。分页系统中,由机器硬件把逻辑地址划分成页号和页内地址两部分。在一个系统中所有页的大小都一样,并且只能有一种大小。分段系统中,段的长度取决于用户所编写的程序,如主程序段为8 KB,而子程序只有5 KB,等等。
(3)分页的进程地址空间是一维的,分段的进程地址空间是二维的。分页系统中,地址编号从0开始顺次递增,一直排到末尾。因而,只需用一个地址编号(如10 000)就可确定地址空间中的惟一地址。分段系统中,标识一个地址时,除给出段内地址外,还必须给出段名。只有段内地址是不够的。
(4)分页系统很难实现过程和数据的分离,分段系统却可以很容易实现这些功能。分页系统中,无法分别对过程和数据提供保护,也不便于在用户间方便地对过程进行共享。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/90225.html