版权归原作者所有,如有侵权,请联系我们

[科普中国]-队列控制

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

问题的提出

联机系统中存在着下述必须解决的矛盾:1

其一,报文在应用程序中的处理时间小于报文收发时间(后者等于线路传输时间加上终端输入/输出时间)。这样就使报文的处理与收发这两个过程很难保持同步。

其二,多应用程序与多终端间相互交叉调用。于是,一方面分散在各地的终端用户很难预先约定操作的先后顺序,因而有可能同时对某个应用程序提出建立对话的要求;另一方面受基本系统软件控制着的多个平行的应用程序由于相互独立工作,因而也可能同时向某个终端发送报文。

显然,如果收发与处理这两部分以简单的串行方式工作,则势必造成报文流量堵塞、响应时间延迟等现象。因此,必须采用平行工作方式。如图,分别就“多终端对应于同一应用程序”、“多应用程序对应于同一终端”这两种情况给出了串行和平行方式。

从图中可见,平行方式是通过在应用程序与终端之间设置队列来实现的。这样,当多终端对应于同一应用程序时,接收报文“A1、A2、…、An’’就不再“相撞",而是等候在接收队列中依次受到应用程序处理。反之,当多个应用程序对应于同一终端时,发送报文“B1、B2、…、Bn"亦不再“相撞”,而是等候在发送队列中依次发往终端。另一方面,报文处理与收发间的速度差异,也由于队列的设置而得到缓冲。在接收报文时,应用程序不必因传输速度慢而等待,可先行处理早已存入接收队列中的来自其他终端的报文,反之,在发送报文时,应用程序亦不必等到前一个报文到达终端后才发出下一个报文,而是连续地把报文先送入发送队列中等候。

于是报文的处理和收发这两部分就可以既独立又同步协调地平行工作,从而大大提高了系统吞吐率和实时响应速度。所谓通信软件的队列控制功能正是在这个意义上提出的,其紧接在通信设备管理、编辑选道模块之后,对队列中构报文收发进行统一管理。

虚拟收发为了适应队列控制的要求,必须建立虚拟收发的概念:1

在应用程序执行接收命令之前,报文实际上已经到达中央机队列内;反之在应用程序执行发送命令之后,报文实际上仅进入中央机队列而并未真正到达终端。不妨把通信软件中的队列文件与基本系统软件中“系统输入文件"、“系统输出文件”相比较,其目的都是为了设置一种缓冲区,以便使物理设备的输入/输出动作与程序虚拟的输入/输出动作相分离,且平行工作。它们的区别是前者所对应的设备是终端,而后者所对应的设备是中央机机房内的打印机、卡片输入机等。

队列控制组成队列控制由以下三部分组成:1

队列结构:表明队列中报文收发路径及调度算法,并存放有关控制信息。

队列文件:存放报文。

队列控制程序:根据队列结构对报文文件进行存取,分发给各应用程序或各终端。

可以形象地把报文在队列中的传送活动看作日常信件的邮寄收发过程:队列结构相当于分散在各处的邮筒,队列文件相当于邮局收发室,而队列控制程序则起着邮递员的作用,在邮局(应用程序)与发、收信人(终端)间递交来往信件。因此,有的文献中,亦把队列控制称为“邮筒子系统"。如图。

队列结构及文件队列结构与队列文件间是一种上下层的关系。作为第一层,队列结构主要存放控制信息,如报文“进出口名”、“记录地址”等,报文按照这些信息所指明的路径来回于队列文件中。作为第二层,队列文件主要存放具体报文数据。

因此从文件系统的角度看,可以认为队列结构是队列文件的一种特殊索引。

队列结构组成方法队列结构中设置有三类、六种队列,如图所示。1

IAP、ITE分别为应用程序或终端的输入队列。

OAP、OTE分别为应用程序或终端的输出队列。

QRV、QSD分别为应用程序接收或发送报文的等待队列,来自或送往终端的报文在此停留。

输入/输出队列中含有对应的等待队列名、应用程序名,队列选择算法等信息,它和应用程序或终端直接相联。等待队列中含有等待报文个数、其在队列中的记录地址等信息,它和队列文件直接相联。

整个队列结构分为“应用程序一队列”、“队列一终端”两部分,报文在其中的存取并非连续的。由OTE进入

QRV的报文,并不总是立即被送至lAP,它可能在队列文件中停留一段时间,反之亦如此。程序员仅需关心“应用程序一队列”这部分,至于另一部分的工作则由队列控制程序负责。从整体上看,“OTE→QRV→IAP"指明了接收报文的路径,而“OAP→QSD→ITE”则指明了发送报文的路径。

六种队列的个数以及其间的搭配关系。IAP个数=系统中全部应用程序数1

ITE个数=系统中全部终端数

OAP个数≤系统中全部应用程序数

OTE个数≤系统中全部终端数

QRV、QSD的设置相当灵活,它通常一个应用程序至少对应有一个QRV及一个QSD,但也可同时含有多个,以便使紧急报文得以优先接收或发送。另外,也有多个应用程字公用一个QRV或一个QSD的情况。

如右图分别就报文接收与发送两种路径给出了几种常用的简单队列结构。在实际应用中,多个应用程序与多个终端是交叉联接的,真正的队列结构要复杂得多,但不外乎这些简单结构的组合。

队列文件的设置报文以可变长记录的形式存放在队列文件中。如同设置一个普通数据文件那样,必须考虑队列文件的存取速度和容量大小,它与文件的物理存储设备有关。1

若一个联机系统中报文流量较小且分布均匀,则可把队列文件直接设置在主存或高速存储设备(如磁鼓)内,以获得收发高速度。对于要求进行大量报文交换处理的场合,则只能设置在磁盘上。此时为了保证优先处理紧急报文,亦可把某些紧急报文记录设置在主存或高速存储设备中。也就是说,通信软件允许把队列文件分别设置在不同的存储设备中。