問題的提出
在線上系統中存在著下述必須解決的矛盾:
其一,報文在應用程式中的處理時間小於報文收發時間(後者等於線路傳輸時間加上終端輸入/輸出時間)。這樣就使報文的處理與收發這兩個過程很難保持同步。
其二,多應用程式與多終端間相互交叉調用。於是,一方面分散在各地的終端用戶很難預先約定操作的先後順序,因而有可能同時對某個應用程式提出建立對話的要求;另一方面受基本系統軟體控制著的多個平行的應用程式由於相互獨立工作,因而也可能同時向某個終端傳送報文。
顯然,如果收發與處理這兩部分以簡單的串列方式工作,則勢必造成報文流量堵塞、回響時間延遲等現象。因此,必須採用平行工作方式。如圖,分別就“多終端對應於同一應用程式”、“多應用程式對應於同一終端”這兩種情況給出了串列和平行方式。
從圖中可見,平行方式是通過在應用程式與終端之間設定佇列來實現的。這樣,當多終端對應於同一應用程式時,接收報文“A1、A2、…、An’’就不再“相撞",而是等候在接收佇列中依次受到應用程式處理。反之,當多個應用程式對應於同一終端時,傳送報文“B1、B2、…、Bn"亦不再“相撞”,而是等候在傳送佇列中依次發往終端。另一方面,報文處理與收發間的速度差異,也由於佇列的設定而得到緩衝。在接收報文時,應用程式不必因傳輸速度慢而等待,可先行處理早已存入接收佇列中的來自其他終端的報文,反之,在傳送報文時,應用程式亦不必等到前一個報文到達終端後才發出下一個報文,而是連續地把報文先送入傳送佇列中等候。
於是報文的處理和收發這兩部分就可以既獨立又同步協調地平行工作,從而大大提高了系統吞吐率和實時回響速度。所謂通信軟體的佇列控制功能正是在這個意義上提出的,其緊接在通信設備管理、編輯選道模組之後,對佇列中構報文收發進行統一管理。
虛擬收發
為了適應佇列控制的要求,必須建立虛擬收發的概念:
在應用程式執行接收命令之前,報文實際上已經到達中央機佇列內;反之在應用程式執行傳送命令之後,報文實際上僅進入中央機佇列而並未真正到達終端。不妨把通信軟體中的佇列檔案與基本系統軟體中“系統輸入檔案"、“系統輸出檔案”相比較,其目的都是為了設定一種緩衝區,以便使物理設備的輸入/輸出動作與程式虛擬的輸入/輸出動作相分離,且平行工作。它們的區別是前者所對應的設備是終端,而後者所對應的設備是中央機機房內的印表機、卡片輸入機等。
佇列控制組成
佇列控制由以下三部分組成:
佇列結構:表明佇列中報文收發路徑及調度算法,並存放有關控制信息。
佇列檔案:存放報文。
佇列控制程式:根據佇列結構對報文檔案進行存取,分發給各應用程式或各終端。
可以形象地把報文在佇列中的傳送活動看作日常信件的郵寄收發過程:佇列結構相當於分散在各處的郵筒,佇列檔案相當於郵局收發室,而佇列控制程式則起著郵遞員的作用,在郵局(應用程式)與發、收信人(終端)間遞交來往信件。因此,有的文獻中,亦把佇列控制稱為“郵筒子系統"。如圖。
佇列結構及檔案
佇列結構與佇列檔案間是一種上下層的關係。作為第一層,佇列結構主要存放控制信息,如報文“進出口名”、“記錄地址”等,報文按照這些信息所指明的路徑來回於佇列檔案中。作為第二層,佇列檔案主要存放具體報文數據。
因此從檔案系統的角度看,可以認為佇列結構是佇列檔案的一種特殊索引。
佇列結構組成方法
佇列結構中設定有三類、六種佇列,如圖所示。
IAP、ITE分別為應用程式或終端的輸入佇列。
OAP、OTE分別為應用程式或終端的輸出佇列。
QRV、QSD分別為應用程式接收或傳送報文的等待佇列,來自或送往終端的報文在此停留。
輸入/輸出佇列中含有對應的等待佇列名、應用程式名,佇列選擇算法等信息,它和應用程式或終端直接相聯。等待佇列中含有等待報文個數、其在佇列中的記錄地址等信息,它和佇列檔案直接相聯。
整個佇列結構分為“應用程式一佇列”、“佇列一終端”兩部分,報文在其中的存取並非連續的。由OTE進入
QRV的報文,並不總是立即被送至lAP,它可能在佇列檔案中停留一段時間,反之亦如此。程式設計師僅需關心“應用程式一佇列”這部分,至於另一部分的工作則由佇列控制程式負責。從整體上看,“OTE→QRV→IAP"指明了接收報文的路徑,而“OAP→QSD→ITE”則指明了傳送報文的路徑。
六種佇列的個數以及其間的搭配關係。
IAP個數=系統中全部應用程式數
ITE個數=系統中全部終端數
OAP個數≤系統中全部應用程式數
OTE個數≤系統中全部終端數
QRV、QSD的設定相當靈活,它通常一個應用程式至少對應有一個QRV及一個QSD,但也可同時含有多個,以便使緊急報文得以優先接收或傳送。另外,也有多個套用程字公用一個QRV或一個QSD的情況。
如右圖分別就報文接收與傳送兩種路徑給出了幾種常用的簡單佇列結構。在實際套用中,多個應用程式與多個終端是交叉聯接的,真正的佇列結構要複雜得多,但不外乎這些簡單結構的組合。
佇列檔案的設定
報文以可變長記錄的形式存放在佇列檔案中。如同設定一個普通數據檔案那樣,必須考慮佇列檔案的存取速度和容量大小,它與檔案的物理存儲設備有關。
若一個在線上系統中報文流量較小且分布均勻,則可把佇列檔案直接設定在主存或高速存儲設備(如磁鼓)內,以獲得收發高速度。對於要求進行大量報文交換處理的場合,則只能設定在磁碟上。此時為了保證優先處理緊急報文,亦可把某些緊急報文記錄設定在主存或高速存儲設備中。也就是說,通信軟體允許把佇列檔案分別設定在不同的存儲設備中。