程序段(Program segment)就是一段程序,可以是一个子过程SUB,一个函数FUNCTION,或者是面向对象程序设计中的一个方法。不分页程序段是指系统程序段内存分配没有采用分页存储管理方式,而是采用其他内存存储管理方式,如分段程序段和连续程序段。

程序

程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。处理对象是数据(如数字、文字、图形、图象、声音等,它们只是表示,而无含义)或信息(数据及有关的含义)。处理规则一般指处理动作和步骤。在低级语言中, 程序是一组指令和有关的数据或信息。在高级语言中,程序一般是一组说明和语句。程序是程序设计中最基本的概念, 也是软件中最基本的概念。程序是软件的本体,又是软件的研究对象。程序的质量决定软件的质量。以上是在实现级语言中程序的含义。在设计级语言中,程序即设计规约在功能级语言中,程序即功能规约,在需求级语言中,程序即需求定义。但习惯上,程序均指实现级语言中的程序。程序要能实际起作用,必须装入到机器内部。程序的实际工作过程称为程序的执行。衡量程序质量,除对程序结构进行静态考察外,还必须考察其执行过程。与执行过程无关的特性称为程序的静态特性;与执行过程有关的特性称为程序的动态特性。为了降低程序的复杂性,在程序设计中,经常将一个程序分割成不同的程序段来完成程序某一种功能。

存储管理

存储管理由操作系统提供的一种功能。它能分配和回收存储单元。一道程序在启动执行前必须装入存储器内;程序在执行中可能还要申请存储单元;程序执行完毕后要将所占用的全部存储单元归还给系统。这些存储单元的分配和回收工作,都由操作系统来完成。具有多道程序设计功能的操作系统,还必须采取有效的策略,分配各用户程序所需的存储资源,以提高系统效率。在采用页式存储或虚似存储的系统中,操作系统还要配合硬件做页面调度工作,即将所需的页面调入存储器,将暂时不用的页面调出以腾出空间。页面调动工作完成的好坏,对系统效率有很大的影响。

分页程序段

分页程序段是指系统对内存中的程序采用分页存储管理方式,分页存储管理方式是很多操作系统中使用的一种内存管理方式。它的基本思想是:把内存空间分成若干个大小相等的固定的物理块或称之为页框,并且从0开始进行编号,相应地,进程逻辑地址空间也按照物理块的大小划分成大小相等的页面或称之为页,并且每一个进程的页面也从0开始进行编号。页面大小是操作系统可以选择的一个参数,为了确定最佳的页面大小,需要在几个互相矛盾的因素之间进行权衡。在为进程分配内存时,以块为单位进行分配,即每页获得一个物理块。将进程中的每一个页面映射到内存中的一个物理块,这样就得到进程的页表。页表的作用是实现从页号到物理块号的地址映射。根据程序运行时是必须装入所有页面还是可以仅装入部分页面,又可以将分页存储管理方式分为基本分页存储管理方式和请求分页存储管理方式。相对于连续分配方式,分页存储管理系统中程序的运行过程发生了变化。内存有效访问时间的计算问题,根据系统的实现方式(基本的还是虚拟的)、有无快表、程序运行的具体情况而有所不同1。

不分页程序段管理方式

分段程序段

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。即将程序分成不同的程序段,例如,有主程序段MAIN、子程序段X、数据段D及栈段S等,如图所示。每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。

连续程序段

连续程序段是指程序没有将程序分割成不同功能的子程序,即没将程序分为主程序和子程序,而是通过一个程序完成,在程序进入内存运行时,内存存储管理方式分配给程序一块连续的地址存储空间,直到程序运行完毕,系统才回收地址空间。这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给 OS 使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间,提供给用户使用。

固定分区程序段

固定分区式分配是最简单的一种可运行多道程序的存储管理方式。这是将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,这样,把用户空间划分为几个分区,便允许有几道作业并发运行。当有一空闲分区时,便可以再从外存的后备作业队列中选择一个适当大小的作业装入该分区,当该作业结束时,又可再从后备作业队列中找出另一作业调入该分区。可用下述两种方法将内存的用户空间划分为若干个固定大小的分区:

(1) 分区大小相等,即使所有的内存分区大小相等。其缺点是缺乏灵活性,即当程序太小时,会造成内存空间的浪费;当程序太大时,一个分区又不足以装入该程序,致使该程序无法运行。尽管如此,这种划分方式仍被用于利用一台计算机去控制多个相同对象的场合,因为这些对象所需的内存空间是大小相等的。例如,炉温群控系统,就是利用一台计算机去控制多台相同的冶炼炉。

(2) 分区大小不等。为了克服分区大小相等而缺乏灵活性的这个缺点,可把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区。这样,便可根据程序的大小为之分配适当的分区。

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学

不分页程序段

图文简介

程序段(Program segment)就是一段程序,可以是一个子过程SUB,一个函数FUNCTION,或者是面向对象程序设计中的一个方法。不分页程序段是指系统程序段内存分配没有采用分页存储管理方式,而是采用其他内存存储管理方式,如分段程序段和连续程序段。