7.5 段式系统

分区式及分页式存储管理技术的局限
●分区式:容易出现碎片;
●分页式:一页或页号相连的几个虚页上存放的一般都不是一个逻辑意义完整的信息单位,共享公用子程序或数据变得困难;
●分页式:每调一页可能只用到该页中的部分内容,内存空间使用率不高。

7.5.1 段式系统

分段式存储管理技术的引入主要是为了满足用户(程序员)在编程和使用上多方面的要求,已成为所有存储管理方式的基础。
1、段:程序中自然划分的一组逻辑意义完整的信息集合,由用户在编程时决定。例如:code,data,stack;
2、分段式存储管理的基本原理
将程序按内容或过程(函数)关系分成段,每个分段有自己的段名,是一个连续的地址区;在内存中,每一个分段占一个分区,所有的分段不必连续存放,也不必一次性的同时装入内存。
3、段式地址空间
段式虚拟地址是二维的,包括(段号,段内地址)
例如:MOV  1,[B]|<C>
将段名为B,段内地址为C的单元中的内容送往1号寄存器中;
OS为每个段指定一个唯一的段号,段号与段号之间无顺序关系。段的长度不固定,可动态增长;
例如:指令   MOV  1,[B]|<C>   经过编译程序编译后可能成为:
MOV   1,  3|120

7.5.2 段式地址变换

1、段表:
地址变换由段表(smt)来实现。段表由若干个表目组成。每一个表目描述一个分段的信息,其逻辑应包括:段号、段长、段首址。地址变换的简化形式如图7.35所示。
2、段表始址寄存器:用于记录段表存放在内存中的首地址;通过段表始址寄存器就能在内存中找到段表;

         图7.35  段式地址变换

段式地址变换的步骤如下:
①取出程序地址(s,w)
②用s检索段表。
③如w<0或w≥1则主存越界。
④(b+w)即为所需主存地址。

7.5.3 扩充段表功能

段式系统和请求分而系统一样也可方便地扩充主存,即先装入部分分段,再根据需要装入其他各段。为此,段表的表目中封需增加以下几项:中断位i、引用位、改变位。扩充功能的段表结构如图7.36所示。


段号s

段长1

中断I

引用位

改变位

R

W

E

A

段首址b

R——可以读此块内的信息;
W——可以往此块内写入信息;
E——可以执行此块中的程序;
A——可以在此块末尾续加信息。
图7.36  扩充功能的段表结构
在段式系统中,极易实现分段的共享。例如,若两个作业共享一子程序分段,则只要在作业段表的相应表目的段首址一项中填入相同主存地址(即该子程序分段的主存始址)即可。
小结:段式的优缺点
优点:1、实现了内、外存统一管理的虚拟存储;
2、段长可以动态增长;
3、便于信息的共享;
缺点:1、更多的硬件开销;
2、出现碎片;
3、段长受内存可用区大小限制;
4、段的置换过程中出现抖动现象。
段式、页式的比较
1、段按程序逻辑结构划分,页按内、外存物理结构划分;
2、段的程序地址是二维的,页的程序地址是一维的;
3、段面向用户,页面向系统;
4、段长由用户决定,可能不相等;页长由系统决定,一定相等。

 
 Copyright © 2007 华中师范大学计算机科学系  All Rights Reserved