目录
一、分段存储管理方式的引入的需求:
1.方便编程
2.信息共享
3.信息保护
4.动态增长
5.动态链接
二、分段系统的基本原理
1.分段
2.段表
3.地址变换机构
4.分页与分段的主要区别
三、信息共享
四、段页式存储管理方式
1.基本原理
2.地址变换过程
分段与分页最大的区别:
离散分配时所分配地址空间的基本单位不同。
一、分段存储管理方式的引入的需求:
1.方便编程
通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都从0开始编址,并有自己的名字和长度。因此,程序员们都迫切地需要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的,这不仅可以方便程序员编程,也可使程序非常直观,更具可读性。
2.信息共享
在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。所以,段可以是信息的逻辑单位。
3.信息保护
信息保护同样是以信息的逻辑单位为基础的,而且经常是以一个过程、函数或文件为基本单位进行保护的。
4.动态增长
在实际应用中,往往存在着一些段,尤其是数据段,在它们的使用过程中,由于数据量的不断增加,而使数据段动态增长,相应地它所需要的存储空间也会动态增加。
5.动态链接
为了提高内存的利用率,系统只将真正要运行的目标程序装入内存,也就是说,动态链接在作业运行之前,并不是把所有的目标程序段都链接起来。当程序要运行时,首先将主程序和它立即需要用到的目标程序装入内存,即启动运行。而在程序运行过程中,当需要调用某个目标程序时,才将该段(目标程序)调入内存并进行链接。可见,动态链接要求的是以目标程序(即段)作为链接的基本单位。因此,分段存储管理方式非常适合于动态链接。
二、分段系统的基本原理
1.分段
在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。
逻辑地址是由段号(段名)和段内地址所组成。
分段地址中的地址结构:
2.段表
在前面所介绍的动态分区分配方式中,系统为整个进程分配一个连续的内存空间。而在分段式存储管理系统中,则是为每个分段分配一个连续的分区。进程中的各个段,可以离散地装入内存中不同的分区中。为保证程序能正常运行,就必须能从物理内存中找出每个逻辑段所对应的位置。为此,在系统中,类似于分页系统,需为每个进程建一张段映射表,简称“段表”。每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,如图所示。段表可以存放在一组寄存器中,以利于提高地址转换速度。但更常见的方法是将段表放在内存中。在配置了段表后,执行中的进程可通过查找段表,找到每个段所对应的内存区。可见,段表是用于实现从逻辑段到物理内存区的映射的。
eg:
若段表存放起始位置为M,则k号段对应段表项存放地址为M+k*段长
3.地址变换机构
为了实现进程从逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度 TL 。在进行地址变换时,系统将逻辑地址中的段号与段表长度 TL 进行比较。若 S > TL ,表示段号太大,是访问越界,于是产生越界中断信号。若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。然后,再检查段内地址 d 是否超过该段的段长 SL 。若超过,即 d>SL ,同样发出越界中断信号。若未越界,则将该段的基址 d 与段内地址(位移量W)相加,即可得到要访问的内存物理地址。
当段表放在内存中时,每要访问一个数据,都必须访问两次内存。
4.分页与分段的主要区别
(1)页是信息的物理单位。采用分页存储管理方式是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅只是系统管理上的需要,完全是系统的行为,对用户是不可见的。分段存储管理方式中的段则是信息的逻辑单位,它通常包括的是一组意义相对完整的信息。分段的目的主要在于能更好地满足用户的需要。
(2)页的大小固定且由系统决定。在采用分页存储管理方式的系统中,在硬件结构上,就把用户程序的逻辑地址划分为页号和页内地址两部分,也就是说是直接由硬件实现的,因而在每个系统中只能有一种大小的页面。而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。
(3)分页的用户程序地址空间是一维的。分页完全是系统的行为,故在分页系统中,用户程序的地址是属于单一的线性地址空间,程序员只需利用一个记忆符即可表示一个地址。而分段是用户的行为,故在分段系统中,用户程序的地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
三、信息共享
分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或多个分段,且对段的保护也十分简单易行
1.分页系统中对程序和数据的共享
2.分段系统中对程序和数据的共享
在分段系统中,由于以段为基本单位,不管该段有多大,我们都只需为该段设置一个段表项。
四、段页式存储管理方式
分页系统以页面作为内存分配的基本单位,能有效地提高内存利用率,而分段系统以段作为内存分配的基本单位,它能够更好地满足用户多方面的需要。
1.基本原理
段页式系统的基本原理是分段和分页原理的结合,即先将用户程序分成若干段,再把每个段分成若干个页,并为每个段赋予一个段名。
在段页式系统中,其地址由段号、段内页号及页内地址(页内偏移量)三部分组成。
2.地址变换过程
在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长 TL 。
在段页式系统中,为了获得一条指令或者数据,须三次访问内存
- 第一次访问是访问内存中的段表,从中取得页表始址;
- 第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;
- 第三次访问才是真正从第二次访问所得的地址中取出指令或数据。