问题 问答题

在段式存储管理中,代码共享是如何实现的可共享代码的程序应具备怎样的特征

答案

参考答案:由于现代操作系统都是多道程序系统,多个进程可能需要共享代码或数据。在程序设计中,这种共享往往是通过给出代码段(子程序)名字进行调用的方式实现的。在页式管理中虚拟地址是连续的,映射到实际物理的页面是不连续的,编译程序要能够预知代码段执行时实际存放的页面是不可能的,同时考虑到同一页面中可能存放有多个子程序的代码,因此通过页面号或页号来共享代码页是不可能的。
因为上述代码共享困难的原因,提出了段式储存管理。段式管理的基本思想是:把程序按内容或过程(函数)关系分成段,每个段有自己的名字(编号)。一个作业或进程的虚拟存储空间都对应于一个由段号(段号:段内偏移)构成的二维地址,编译程序在链接过程中就直接形成这样的二维地址形式。段式管理以段为单位分配内存,然后通过地址变化将段式虚拟地址转换成实际的内存物理地址。和页式管理一样,段式管理也采用只把那些经常访问的段驻留内存,而把那些将来一段时间不被访问的段放入外存,待需要时自动调入的方法实现虚拟存储器。
段式管理把一个进程的虚拟地址空间设计成二维结构,即段号(段号:段内偏移)的形式。与页式管理编译程序产生一维连续地址不同,段式管理系统中的编译程序译成多个段及段的名字或编号,各个段号之间无顺序关系。与页式管理页长度相同不一样,段的长度是不同的,每个段定义一组逻辑上完整的程序或数据。例如,在DOS操作系统中,一个程序内部被分为了正文段、数据段、堆栈段等。每个段是一个首地址为0并连续的一维线性空间。

选择题
单项选择题