欢迎访问ic37.com |
会员登录 免费注册
发布采购

计算机存储空间的分段

日期:2009-1-16 (来源:互联网)

现代应用程序都采用了结构化程序设计方法,把程序都分为主程序、子程序以及各种数据结构(数组、堆栈、队列、文件等)等模块的形式,而且在它们之间存在着各种逻辑关系。其示意图如图1所示。

图1 程序的分段结构

为了清楚地表达这种逻辑关系,在存储管理中就把分配给一个模块的多个页叫做一个段。段就是一种具有逻辑意义的存储分区,它反映了段内存储内容的意义及段与段之间的关系,例如主程序段、子程序段、数据段、堆栈段等。

这就像一本书一样,书是一页一页的,书中的一大段相对完整的内容就要占用多个页,那么人们把这多个页叫做“章”,这个“章”就相当于上面所说的段。

每个段都具有用以标识的名称,由程序员命名的名称叫做外部名,由系统规定的名称叫做内部名,也称做段号。这样,在用户程序中可以用段的外部名调用某段的功能,程序在编译或汇编时,再由编译或者汇编系统给程序中的每个段命名一个内部名(段号)。同一个应用程序中、各段之问的地址不必一定是连续的。

与分页一样,存储空间分段之后,存储单元的地址也由两部分组成,即段号和段内偏移量,如图2(a)所示。如果考虑了段内的分页,则存储单元地址的格式如图22(b)所示。

图2 分段后存储单元的地址格式