專利名稱:在虛擬終端環(huán)境下允許使用單個(gè)操作的機(jī)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及的是虛擬終端的環(huán)境,其中,許多的程序應(yīng)用可以同時(shí)運(yùn)行,且這些應(yīng)用中的每一個(gè)至少有一個(gè)與此相關(guān)的虛擬終端。此外,提供了許多的硬件顯示設(shè)備,並且至少一個(gè)程序應(yīng)用可以直接寫(xiě)到至少二個(gè)硬件顯示設(shè)備中。
通常,在虛擬終端環(huán)境中,在改變用戶的活動(dòng)中心之前或者從第一個(gè)應(yīng)用提交給下一個(gè)順序連接應(yīng)用前,需要系統(tǒng)的用戶執(zhí)行幾次“熱鍵”操作。該無(wú)效的多次熱鍵操作是由于以下的事實(shí)引起的單次熱鍵操作只是將活動(dòng)中心在虛擬終端之間移動(dòng),而不是在應(yīng)用之間移動(dòng)。由于多個(gè)虛擬終端可以和單個(gè)程序應(yīng)用有關(guān),因此在將活動(dòng)中心實(shí)際移動(dòng)至下一個(gè)應(yīng)用前,可能使用戶執(zhí)行幾個(gè)熱鍵序列操作。這種過(guò)分的熱鍵操作除了會(huì)產(chǎn)生由這種類型的以前技術(shù)系統(tǒng)的用戶所遇到的挫折外,還會(huì)產(chǎn)生時(shí)間和資源方面的低效的問(wèn)題。
與以前的技術(shù)相比,本發(fā)明只需經(jīng)過(guò)一次熱鍵操作即可,使計(jì)算機(jī)系統(tǒng)的用戶將活動(dòng)中心或熱鍵從一個(gè)程序應(yīng)用移動(dòng)到下一個(gè)接連的應(yīng)用。
概括地說(shuō),本發(fā)明的操作是在虛擬終端環(huán)境中進(jìn)行的,其中至少要提供二個(gè)程序應(yīng)用。並且也包括了許多硬件顯示設(shè)備和虛擬終端。
在單個(gè)程序應(yīng)用可以打開(kāi)一個(gè)以上的虛擬終端(即多進(jìn)程應(yīng)用)的情況下,該應(yīng)用指定了除了一個(gè)以外的全部虛擬終端為“不參與”任意的熱鍵操作的虛擬終端。因此,當(dāng)用戶希望將活動(dòng)中心從一個(gè)程序應(yīng)用移動(dòng)到下一個(gè)程序應(yīng)用時(shí),一個(gè)單一的熱鍵操作就可以完成該任務(wù)。例如,假設(shè)一個(gè)用戶通過(guò)第一個(gè)已被激活的虛擬終端正在與第一個(gè)多進(jìn)程程序應(yīng)用相會(huì)話的話,也假設(shè)該第一個(gè)應(yīng)用已經(jīng)打開(kāi)許多虛擬終端的話,在一次熱鍵操作之后,以前技術(shù)的虛擬終端子系統(tǒng)使第一個(gè)虛擬終端去除激活並且著手進(jìn)行使下一個(gè)虛擬終端激活的工作。然而,下一個(gè)虛擬終端可能是由第一個(gè)應(yīng)用已經(jīng)打開(kāi)的那個(gè)虛擬終端。因此,該用戶只是在第一個(gè)應(yīng)用的虛擬終端之間進(jìn)行熱鍵操作而不是在第一個(gè)和下一個(gè)接連的程序應(yīng)用之間進(jìn)行熱鍵操作。比較起來(lái),本發(fā)明將指定與每個(gè)程序應(yīng)用有關(guān)的許多虛擬終端中的一個(gè)以外的其它全部虛擬終端為不參與熱鍵操作的虛擬終端。因而,系統(tǒng)將忽略所有不參與的虛擬終端並激活那個(gè)還沒(méi)有被指定為不參與的下一個(gè)虛擬終端。由于對(duì)于每個(gè)應(yīng)用只有一個(gè)虛擬終端沒(méi)有被指定為不參與熱鍵操作的虛擬終端,因此,每個(gè)熱鍵操作將其活動(dòng)中心從第一個(gè)程序應(yīng)用移動(dòng)到下一個(gè)應(yīng)用中,而不僅僅是在可能與同一的程序應(yīng)用有關(guān)的虛擬終端之間移動(dòng)其活動(dòng)中心。
因此,按照前面的要點(diǎn)及從下面的描述和所附的權(quán)利要求連同附圖一起,對(duì)于一個(gè)技術(shù)上熟練的人而言,本發(fā)明的目的、特點(diǎn)和優(yōu)點(diǎn)將是明顯的。
圖1為描述本發(fā)明的處理系統(tǒng)內(nèi)部的層次的框圖;
圖1A為本發(fā)明的虛擬終端子系統(tǒng)的部件的另一框圖;
圖2為用于系統(tǒng)中處理文本方式的信息流程圖;
圖3為本發(fā)明在監(jiān)控方式下用于寫(xiě)到硬件顯示設(shè)備所用的數(shù)據(jù)流程圖;
圖4-9為描述本發(fā)明所使用的過(guò)程的程序框圖,以便使程序應(yīng)能具有與實(shí)際設(shè)備不同的特性。而且,使用虛擬終端時(shí)所寫(xiě)的程序可以獨(dú)立于專門(mén)的實(shí)際的終端設(shè)備,即獨(dú)立于顯示緩沖器的組織,任選的輸入設(shè)備的存在等。此外,對(duì)于處理實(shí)際資源的限制方面,虛擬終端解除了程序員的開(kāi)發(fā)適應(yīng)個(gè)別需要的過(guò)程。
盡管本發(fā)明的范圍打算使用其它的虛擬終端模型,但是典型的虛擬終端模型可以使用電傳打字機(jī),如鍵盤(pán)的發(fā)送/接收(KSR)電傳打字機(jī)。例如,可以使用的一種方式或終端模型支持虛機(jī)環(huán)境的UNIX操作系統(tǒng)的終端需求。UNIX操作系統(tǒng)需要陰極射線管的電傳打字機(jī)的仿真,例如數(shù)字設(shè)備公司(DEC)的VT100或者為最初的KSR電傳打字機(jī)增強(qiáng)型的IBM3101。
KSR終端方式是以使用PC ASCII代碼集而不是ANSI3.4/3.41代碼集的A NSI3.64標(biāo)準(zhǔn)精神進(jìn)行的ASCII終端仿真。ANSI3.64數(shù)據(jù)流是擴(kuò)展的,正如該標(biāo)準(zhǔn)所指定的那樣,以便支持增強(qiáng)的聲音生成能力,處理定位器過(guò)程的流動(dòng)並提供轉(zhuǎn)換物理顯示、字模和終端特性的各種控制。
每個(gè)虛擬終端具體化了單個(gè)KSR終端的特點(diǎn)。即,虛擬終端識(shí)別並處理所接收的數(shù)據(jù)流,該數(shù)據(jù)流導(dǎo)致請(qǐng)求要發(fā)生的動(dòng)作。這些動(dòng)作包括移動(dòng)光標(biāo),或在虛擬顯示上畫(huà)字符,插入或刪除行,清屏或修改重發(fā)字符的屬性。除了這些動(dòng)作以外,出界的數(shù)據(jù)流可以導(dǎo)致產(chǎn)生連續(xù)音調(diào)的聲音序列,或者導(dǎo)致在任意可以用的物理顯示設(shè)備42上的重發(fā)虛擬顯示。
虛擬終端從虛擬鍵盤(pán)和/或虛擬定位器中接收輸入信息,並且將數(shù)據(jù)輸出到虛擬顯示上。因此,虛擬終端總是可以期望它從它的虛擬輸入設(shè)備中接收輸入信息並且總是可以輸出到它的虛擬顯示上。這些用在虛擬終端環(huán)境下直接存取硬件顯示設(shè)備;
圖10為描繪本發(fā)明的虛擬終端環(huán)境下的不同的部件及它們相互間關(guān)系的實(shí)例的框圖;
圖11給出了圖10所描述的本發(fā)明操作的具體實(shí)例的每個(gè)程序應(yīng)用的狀態(tài)信息圖;
圖12A,12B和12C為每個(gè)程序應(yīng)用的初始化過(guò)程的流程圖;
圖13為描述SIGGRANT處理所需步驟的流程圖;
圖14為應(yīng)用程序接收SIGRETRACT時(shí)所需的處理步驟的流程圖。
圖1說(shuō)明了虛擬終端處理系統(tǒng)的層次。應(yīng)用50運(yùn)行在操作系統(tǒng)10上,如UNIX操作系統(tǒng)(UNIX是AT&T公司的注冊(cè)商標(biāo))或類似的操作系統(tǒng)。下一層為管理所有顯示硬件輸入/輸出設(shè)備40的虛擬終端子系統(tǒng)30。這些硬件設(shè)備40包括,當(dāng)然並不局限于,輸入設(shè)備41(如鍵盤(pán)、鼠標(biāo)器、圖形輸入板)和輸出設(shè)備42(如聲音設(shè)備和顯示)。
在虛擬終端處理系統(tǒng)中,驅(qū)動(dòng)用戶接口的用戶按照該用戶的命令來(lái)進(jìn)行活動(dòng)間的轉(zhuǎn)換。該處理系統(tǒng)虛擬化了資源的使用,以致于對(duì)于用戶的活動(dòng)而言,將整個(gè)資源給于一個(gè)應(yīng)用50。這是在虛擬終端子系統(tǒng)30中實(shí)現(xiàn)的。虛擬終端子系統(tǒng)30提供了虛擬終端環(huán)境中的終端支持。
用應(yīng)50可以打開(kāi)如同想使用的實(shí)際的硬件顯示設(shè)備42數(shù)那么多的虛擬終端。虛擬終端給應(yīng)用50這樣的印象,即顯示設(shè)備42比實(shí)際存在的要多,輸入設(shè)備41要比實(shí)際存在的多,並且這些設(shè)備可虛擬設(shè)備可以具有或沒(méi)有分配給它們的物理設(shè)備。因而,虛擬終端實(shí)際上可以不接收輸入或?qū)懙轿锢盹@示設(shè)備42上。當(dāng)每個(gè)虛擬終端識(shí)別和處理從鍵盤(pán)來(lái)的入站的數(shù)據(jù)流時(shí),如果請(qǐng)求的話,它可以自動(dòng)地將不同的字符和簡(jiǎn)單的功能返回到它的虛擬顯示上。該操作使運(yùn)行中的應(yīng)用50就象它正在使用實(shí)際的終端硬件設(shè)備40一樣。因此,大多數(shù)已經(jīng)存在的應(yīng)用50不需修改就可運(yùn)行在虛擬終端環(huán)境中,因?yàn)閼?yīng)用50並不知道虛擬終端不是物理終端42。
圖1A描述了虛擬終端子系統(tǒng)30的組成部分,它包括資源控制程序310,屏幕管理程序320,鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410,定位器設(shè)備驅(qū)動(dòng)程序420,聲音設(shè)備驅(qū)動(dòng)程序430,顯示設(shè)備驅(qū)動(dòng)程序440,和多個(gè)虛擬終端330等。
資源控制程序310初始化並結(jié)束虛擬終端子系統(tǒng)30,它也可以讓操作系統(tǒng)10和應(yīng)用程序50查詢和修改交互式的設(shè)備,即用戶可以得到的物理終端的配置和特性。此外,當(dāng)資源控制程序310打開(kāi)和關(guān)閉虛擬終端時(shí),即建立和破壞虛擬終端時(shí),它將分配和撤消分配虛擬終端操作所需的系統(tǒng)資源。
屏幕管理程序320執(zhí)行對(duì)虛擬終端所用的虛擬設(shè)備的物理設(shè)備的分配。屏幕管理程序320連同鍵盤(pán)和定位器設(shè)備驅(qū)動(dòng)程序410,420一起實(shí)現(xiàn)虛擬化這些輸入設(shè)備所需的時(shí)間和空間的共享。在給定的時(shí)間內(nèi),將物理顯示設(shè)備42分配給由虛擬終端所用的一個(gè)並且只能為一個(gè)虛擬顯示上。
屏幕管理程序320也對(duì)激活的虛擬終端的虛擬設(shè)備進(jìn)行所有的物理設(shè)備40的分配。激活的虛擬終端是提供給用戶交互作用的終端。激活的虛擬終端實(shí)際可以從設(shè)備41接收輸入信息,並且可以在物理顯示設(shè)備42上產(chǎn)生輸出。此外,屏幕管理程序320還提供了對(duì)物理資源40的重分配。對(duì)于物理設(shè)備40重新分配的激發(fā)的結(jié)果可以從用戶請(qǐng)求或應(yīng)用50的請(qǐng)求得到。用戶請(qǐng)求是通過(guò)物理輸入設(shè)備41來(lái)實(shí)現(xiàn)的,例如通過(guò)分配給屏幕管理程序320的邏輯鍵盤(pán)或類似的邏輯鼠標(biāo)器來(lái)實(shí)現(xiàn)的。物理資源40的重新分配包括除去現(xiàn)行激活的虛擬終端的資源並且對(duì)新激活的虛擬終端分配資源。這種資源的重新分配需要去除激活和激活終端這兩者的協(xié)作。正如前面指出的那樣,分配物理設(shè)備40需要設(shè)備驅(qū)動(dòng)程序的參加,于是保證了信號(hào)的同步,如擊鍵和工作請(qǐng)求的應(yīng)答信號(hào)的同步。
虛擬終端子系統(tǒng)30的另一組成部分為鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410,它按照從屏幕管理程序320接收的指令將輸入信號(hào)從物理鍵盤(pán)41送到虛擬終端上。虛擬終端子系統(tǒng)30的任選的部件為定位器設(shè)備驅(qū)動(dòng)程序420和聲音設(shè)備驅(qū)動(dòng)程序430。定位器設(shè)備驅(qū)動(dòng)程序420和聲音設(shè)備驅(qū)動(dòng)程序430。定位器設(shè)備驅(qū)動(dòng)程序420根據(jù)從屏幕管理程序320所接收的指令將輸入信號(hào)從物理定位器41送到虛擬終端上。聲音設(shè)備驅(qū)動(dòng)程序430可以將音頻輸出信號(hào)從子系統(tǒng)30送到物理設(shè)備42上。在虛擬終端管理程序中也包括了大量的服務(wù)于從顯示適配器所接收的中斷的顯示設(shè)備驅(qū)動(dòng)程序440。
虛擬終端子系統(tǒng)可以提供任意多數(shù)量的虛擬終端。實(shí)際的虛擬終端的最大數(shù)量因?qū)崿F(xiàn)方法而異並且將由系統(tǒng)資源使用的考慮來(lái)加以限制。每個(gè)虛擬終端包括虛擬終端方式處理器340。虛擬終端方式處理器340提供像KSR的虛擬終端操作。每個(gè)虛擬終端也包括虛擬顯示設(shè)備驅(qū)動(dòng)程序350。虛擬顯示驅(qū)動(dòng)程序350接收所有虛擬終端方式處理器340的輸出,並將它們寫(xiě)到虛擬顯示上,然而再虛擬化該顯示。每個(gè)虛擬終端也包括一個(gè)公共設(shè)備實(shí)用例行程序,通過(guò)該例行程序,虛擬終端方式處理器340可以將它的資源請(qǐng)求與資源控制器310相通信。
資源控制器310執(zhí)行虛擬終端子系統(tǒng)30的初始化。首先,資源控制器必須接收包括在系統(tǒng)中的物理設(shè)備40(顯示、鍵盤(pán)等)的列表。資源控制器310也必須接收用于區(qū)分各種其它的子系統(tǒng)部件如字模和虛擬終端缺省值等的標(biāo)識(shí)符。初始化需要1)檢查上述初始化信息的完整性和正確性,2)初始化物理輸入設(shè)備41,3)處理所提供的字模,4)建立屏幕管理程序320,5)建立與屏幕管理程序320通信所必需的通路,6)建立允許屏幕管理程序320與輸入/輸出設(shè)備40通信所必需的通路,和7)初始化部件之間共享的總的數(shù)據(jù)結(jié)構(gòu)。
資源控制器310以下述方式初始化子系統(tǒng)30。下面的例行程序是用程序設(shè)計(jì)語(yǔ)言編寫(xiě)的,從這種語(yǔ)言中可以推導(dǎo)出源代碼和機(jī)器代碼。
INITIALIZE GLOBAL DATA STRUCTUREIF THE INITIALIZATION INFORMATION NOTCOMPLETE AND CORRECTTHENPRESENT ERROR INDICATIONELSECALL INIT_DEVICESCALL CREATE_SM
PRESENT SUCCESS INDICATIONPREPARE TO SERVICE RESOURCE COMMANDS FROMTHE OPERATING SYSTEM例行程序INIT_DEVICES初始化系統(tǒng)中多種不同的設(shè)備驅(qū)動(dòng)程序並將必要的信息放到總的數(shù)據(jù)結(jié)構(gòu)中以供不同部件使用。它也可以得到在初始化參數(shù)中用于標(biāo)識(shí)字模的系統(tǒng)所必需的信息。該例行程序也建立了從設(shè)備40到資源控制器310(RC),鍵盤(pán)與定位器設(shè)備驅(qū)動(dòng)程序410與420,和操作系統(tǒng)10之間的通信通路。
VIRTUAL TERMINAL OPEN初始化之后,資源控制器310已準(zhǔn)備就緒來(lái)接收資源請(qǐng)求。當(dāng)操作系統(tǒng)10接收請(qǐng)求去打開(kāi)(建立)虛擬終端時(shí),資源控制器310將采取下列步驟1)初始化與虛擬終端有關(guān)的總的數(shù)據(jù),2)在虛擬終端方式處理器340上執(zhí)行必要的操作以保證虛擬終端處理功能的正確性,3)建立虛擬終端方式處理器340與所用的設(shè)備驅(qū)動(dòng)程序之間的雙向通信通路,4)對(duì)虛擬終端分配一個(gè)外部的標(biāo)識(shí)符,和5)初始化虛擬終端。
在初始化之后,資源控制器310通過(guò)實(shí)現(xiàn)下述例行程序來(lái)打開(kāi)虛擬終端,正如上面所指出的那樣。
IF MAXIMUM NUMBER OF VIRTUAL TERMINALS OPENTHENINDICATE NO SUCCESSELSECREATE_VT
CREATE_PATHSINITIALIZE THE VIRTUAL TERMINALTELL_SM(OPEN)INDICATE_SUCCESS例行程序CREATE_VT將代碼復(fù)制給虛擬終端方式處理器340(VTMP),它允許每個(gè)虛擬終端具有它自己的數(shù)據(jù)和堆??臻g。
例行程序CREATE_PATHS建立虛擬終端與現(xiàn)在的設(shè)備驅(qū)動(dòng)程序及請(qǐng)求打開(kāi)虛擬終端的相應(yīng)的操作系統(tǒng)10之間的雙向通信通路。該例行程序也建立了從屏幕管理程序320至虛擬終端的通信通路。CREATE_VT和CREATE_PATHS這二者都將信息保存在總的結(jié)構(gòu)中。
例行程序TELL_SM通知屏幕管理程序320新的虛擬終端已經(jīng)被打開(kāi)。該例行程序發(fā)送新的虛擬終端的名字(標(biāo)識(shí)符)(和將索引送到總的數(shù)據(jù)結(jié)構(gòu)中)以致屏幕管理程序320可以得到所需的信息。屏幕管理程序320再進(jìn)而使虛擬終端激活(見(jiàn)下文)。例行程序TELL_SM在使資源控制器310(RC)繼續(xù)進(jìn)行之前,TELL_SM等待屏幕管理程序320完成它的操作。
虛擬終端方式處理器340通過(guò)執(zhí)行下列例行程序必須完成虛擬終端的初始化。
QUERY_DEVICESSELECT_DISPLAYSELECT_INPUT例行程序QUERY_DEVICES將分配給可以獲得的設(shè)備的標(biāo)識(shí)符返回給這些設(shè)備。例行程序SELECT_DISPLAY使虛擬終端方式處理器340去選擇哪一個(gè)可以獲得的顯示設(shè)備去使用。SELECT_DISPLAY功能對(duì)所選擇的顯示設(shè)備建立通路以便讓虛擬終端方式處理器340與虛擬顯示驅(qū)動(dòng)程序350進(jìn)行通信。這樣使虛擬終端使用獨(dú)立于其它虛擬終端的它的虛擬顯示設(shè)備。然后,當(dāng)虛擬終端激活以后,虛擬終端可以開(kāi)始與用戶交互工作。
例行程序SELECT_INPUT使虛擬終端方式處理器340通過(guò)相應(yīng)的設(shè)備驅(qū)動(dòng)程序410,420來(lái)選擇接收或不接收從鍵盤(pán)和/或定位器來(lái)的輸入信號(hào)。
此時(shí),操作系統(tǒng)10能與虛擬終端通信。操作系統(tǒng)10也能向屏幕管理程序320發(fā)出關(guān)于虛擬終端的屏幕管理命令,如果它們之間提供了通信通路的話。
VIRTUAL TERMINAL CLOSE為了關(guān)閉通過(guò)上述步驟已經(jīng)打開(kāi)的虛擬終端,操作系統(tǒng)10或者虛擬終端可以發(fā)出關(guān)閉請(qǐng)求。資源控制器310接收該命令並執(zhí)行下列操作TELL_SM(CLOSE)RECOVER_RESOURCESINDICATE_COMPLETION例行程序TELL_SM向屏幕管理程序320發(fā)出一個(gè)命令以區(qū)分(通過(guò)內(nèi)部標(biāo)識(shí)符)要關(guān)閉的虛擬終端。該例行程序在處理以前要等待屏幕管理程序完成它的工作(見(jiàn)下文)。例行程序RECOVER_RESOURCES恢復(fù)正在被關(guān)閉的虛擬終端的所有資源(存貯器、控制塊等)並且從總的數(shù)據(jù)結(jié)構(gòu)中將該虛擬終端除去。例行程序INDICATE_COMPLETION通知請(qǐng)求者關(guān)閉操作已經(jīng)完成。
正如上面所指出的,當(dāng)資源控制器310等待時(shí)屏幕管理程序320執(zhí)行下列操作COMMAND_MP(CLOSE)NEW_VT_ACTIVEACK_RC例行程序COMMAND_MP通過(guò)它們之間的通信通路向虛擬終端發(fā)出關(guān)閉命令並等待虛擬終端方式處理器340的響應(yīng)。例行程序NEW_VT_ACTIVE使另一虛擬終端激活,即向新激活的虛擬終端分配物理的輸入與輸出設(shè)備40(見(jiàn)下文)。例行程序ACK_RC與資源控制器310通信,它使RC310繼續(xù)它的關(guān)閉處理工作。
虛擬終端方式處理器340接收關(guān)閉命令(以前由例行程序COMMAND_MP發(fā)送的)並且執(zhí)行下列操作。
RELEASE_DISPLAYACK_SMRELEASE_DISPLAY例行程序向虛擬顯示驅(qū)動(dòng)程序350(VDD)指出,它的資源可以被釋放了。ACK_SM例行程序使屏幕管理程序320繼續(xù)它的關(guān)閉處理。
VIRTUAL TERMINAL ACTIVATION/DEACTIVATION由于打開(kāi)或關(guān)閉的命令,或者由于用戶已經(jīng)請(qǐng)求使另一虛擬終端激活,就可以發(fā)生使虛擬終端激活的操作。它需要屏幕管理程序320,對(duì)于現(xiàn)行激活的虛擬終端的虛擬終端方式處理器340,要被激活的虛擬終端的虛擬終端方式處理器340和輸入設(shè)備驅(qū)動(dòng)程序的協(xié)作。屏幕管理程序320執(zhí)行下述操作
FIND_VTCOMMAND_KDD(NEW_VT)COMMAND_LDD(NEW_VT)COMMAND_VT(DEACTIVATE)COMMAND_VT(ACTIVATE)UPDATE_DATA(NEW_VT)例行程序FIND_VT決定了哪一個(gè)虛擬終端應(yīng)該被激活。該結(jié)果取決于與屏幕管理有關(guān)的預(yù)則和實(shí)際所接收的命令。
例行程序COMMAND-KDD向區(qū)分虛擬終端的鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410發(fā)送命令以便接收物理鍵盤(pán)41的輸入信號(hào)。例行程序COMMAND_LDD向區(qū)分虛擬終端的定位器設(shè)備驅(qū)動(dòng)程序420發(fā)送命令以便接收物理定位器42的輸入信號(hào)。這兩個(gè)例行程序在繼續(xù)它們的例程操作之前要等待設(shè)備驅(qū)動(dòng)程序410、420完成它們的操作。然后這些設(shè)備驅(qū)動(dòng)程序執(zhí)行如下所述的相同的操作。
具有去除激活任選項(xiàng)的例行程序COMMAND_VT使現(xiàn)行激活的虛擬終端去執(zhí)行實(shí)現(xiàn)去除激活虛擬終端所必須的諸如此類的操作(見(jiàn)下文)。具有激活任選項(xiàng)的例行程序COMMAND_VT使新的激活的虛擬終端去執(zhí)行實(shí)現(xiàn)激活虛擬終端所必須的諸如此類的操作(見(jiàn)下文)。
例行程序UPDATE_DATA管理屏幕管理程序320的內(nèi)部數(shù)據(jù)結(jié)構(gòu),以致于屏幕管理程序320可以知道哪一個(gè)虛擬終端是激活的。
鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410與/或定位器設(shè)備驅(qū)動(dòng)程序420執(zhí)行下列操作
SET_NEW_PATH_MODESSEND_STATUSACK_SM例行程序SET_NEW_PATH_MODES將用于對(duì)新激活的虛擬終端的通信通路的標(biāo)識(shí)符放到內(nèi)部的結(jié)構(gòu)中。該例行程序也對(duì)該虛擬終端設(shè)置正確的設(shè)備操作方式。例行程序SEND_STATUS告訴虛擬終端關(guān)于物理設(shè)備40的現(xiàn)行狀態(tài),即當(dāng)虛擬終端激活以后,已經(jīng)按了什么樣的有關(guān)的鍵(或按鈕)。例行程序ACK_SM讓屏幕管理程序320以同步的方式繼續(xù)它的處理。
正在被去除激活的虛擬終端的虛擬終端方式處理器340執(zhí)行下列操作DEACTIVATE_VDDNO_SOUND例行程序DEACTIVATE_VDD告訴虛擬顯示驅(qū)動(dòng)程序350,正在被去除激活的虛擬終端不能將信息寫(xiě)到物理顯示設(shè)備42中,但是代之以必須緩存所有該虛擬終端的輸出。例行程序NO_SOUND為虛擬終端方式處理器340設(shè)置內(nèi)部標(biāo)志,以致于由程序應(yīng)用50對(duì)聲音的請(qǐng)求不輸出到聲音設(shè)備驅(qū)動(dòng)程序430(SDD)中。
將成為激活的虛擬終端的虛擬終端方式處理器340執(zhí)行下列操作ACTIVATE_VDDSOUND_OK例行程序ACTIVATE_VDD告訴虛擬顯示驅(qū)動(dòng)程序350,正在被激活的虛擬終端可以將信息寫(xiě)到物理顯示設(shè)備42上。然而,虛擬顯示驅(qū)動(dòng)程序350首先將它的不激活期間已經(jīng)被維護(hù)的緩沖器的數(shù)據(jù)送到顯示設(shè)備42上。因而,用戶看到的是從應(yīng)用50中可以得到的最現(xiàn)行的信息。例行程序SOUND_OK為虛擬終端方式處理器340設(shè)置內(nèi)部標(biāo)志,以致于將程序應(yīng)用50對(duì)聲音的請(qǐng)求發(fā)送到聲音設(shè)備驅(qū)動(dòng)程序430中。此時(shí),用戶可以和新激活的虛擬終端交互工作。
虛擬終端從操作系統(tǒng)10中以已經(jīng)送到物理顯示終端42的輸出格式進(jìn)行輸入並虛擬化這個(gè)輸出,使應(yīng)用50相信實(shí)際的物理終端是存在的。如果虛擬終端現(xiàn)行是激活的話,(即與用戶正在交互工作的終端),然后將操作所需的所有的物理資源40提供給虛擬終端。虛擬終端從定位器設(shè)備驅(qū)動(dòng)程序420和鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410中取得輸入信息。因而,將設(shè)備驅(qū)動(dòng)程序410、420中的輸入信息送到現(xiàn)行激活的虛擬終端中。任意的生成的聲音將送到聲音設(shè)備驅(qū)動(dòng)程序430,而任意的生成的顯示將送到顯示驅(qū)動(dòng)程序440中,以便于在物理顯示設(shè)備42的實(shí)際屏幕上顯示給用戶。
其它的可能打開(kāi)的虛擬終端,但現(xiàn)在沒(méi)有激活的可以接收程序應(yīng)用50的輸出。當(dāng)這些沒(méi)有激活的虛擬終端正在接收該輸出時(shí),它們是不知道它們是否激活或者沒(méi)有激活。因而,當(dāng)沒(méi)有激活的虛擬終端接收輸出請(qǐng)求去顯示數(shù)據(jù)時(shí),它們不是將該請(qǐng)求發(fā)送到設(shè)備驅(qū)動(dòng)程序440中,而是將它虛擬化輸出到虛擬設(shè)備驅(qū)動(dòng)程序的緩沖器中。
這種設(shè)備驅(qū)動(dòng)程序緩沖器是存貯器(RAM)的一部分,它保持了虛擬顯示6的現(xiàn)行狀態(tài)。在一定時(shí)間之后的給定的點(diǎn)上,虛擬終端的虛擬設(shè)備驅(qū)動(dòng)程序緩沖器包含的是送到那個(gè)虛擬終端的所有輸出請(qǐng)求的屏幕畫(huà)面的累加的現(xiàn)狀。如果該虛擬終端是由用戶激活的話,則虛擬設(shè)備驅(qū)動(dòng)程序緩沖器的內(nèi)容將在實(shí)際的顯示屏幕上顯示。
在將實(shí)的物理顯示資源42給某個(gè)特定的虛擬終端時(shí),虛擬終端必須將在虛擬設(shè)備驅(qū)動(dòng)程序緩沖器中的累加數(shù)據(jù)轉(zhuǎn)換為物理顯示設(shè)備的命令。這使用戶能看到信息的現(xiàn)行抽點(diǎn)情況。換言之,當(dāng)迫使虛擬終端撤回其物理顯示資源42時(shí),其概念上是類似于用戶讓他的頭離開(kāi)物理終端一段時(shí)間。當(dāng)用戶將他的頭轉(zhuǎn)回來(lái)看物理終端時(shí),看到的是那一點(diǎn)時(shí)間的整個(gè)累計(jì)的顯示信息。
重要的是,即使當(dāng)沒(méi)有實(shí)設(shè)備分配給它時(shí),設(shè)備驅(qū)動(dòng)程序緩沖器仍需更新。在虛擬終端子系統(tǒng)30的顯示設(shè)備驅(qū)動(dòng)程序440部分中以設(shè)備依賴的形式來(lái)維護(hù)這些虛擬化的設(shè)備驅(qū)動(dòng)程序緩沖器。
屏幕管理程序320以下列方式與用戶交互作用。由于存在一個(gè)終端環(huán),因此每次虛擬終端打開(kāi)時(shí),就將它放在這個(gè)環(huán)中。當(dāng)用戶尋找與某個(gè)特定的虛擬終端會(huì)話時(shí),用戶可以在鍵盤(pán)上(輸入設(shè)備41)執(zhí)行一定的鍵的序列。鍵盤(pán)設(shè)備驅(qū)動(dòng)程序410將該鍵的序列發(fā)送給屏幕管理程序320。然后,通過(guò)檢查環(huán)的結(jié)構(gòu),屏幕管理程序320決定虛擬終端中的哪一個(gè)現(xiàn)在可以給用戶使用並將它激活。照這樣,用戶可在任意給定的時(shí)間內(nèi)選擇與哪個(gè)應(yīng)用的哪個(gè)操作會(huì)話。
在修改虛擬終端操作狀態(tài)中所包括的操作要調(diào)用屏幕管理程序320,設(shè)備驅(qū)動(dòng)程序410,420,430,440及虛擬終端。當(dāng)屏幕管理程序320通知新的終端要激活時(shí),屏幕管理程序320將新的路由信息發(fā)送給輸入設(shè)備驅(qū)動(dòng)程序410,420。鍵盤(pán)或定位器設(shè)備驅(qū)動(dòng)程序410、420接收這個(gè)信息並決定必需修改輸入信號(hào)的路由,使新的激活的虛擬終端可以接收這些輸入信號(hào)。
處理輸出設(shè)備的方式有一點(diǎn)點(diǎn)不同。屏幕管理程序320通知現(xiàn)行激活的虛擬終端,它將要被除去激活。就聲音設(shè)備驅(qū)動(dòng)程序430而說(shuō),虛擬終端本身對(duì)決定可以將沒(méi)有聲音的請(qǐng)求發(fā)送至聲音設(shè)備驅(qū)動(dòng)程序430負(fù)責(zé),而聲音設(shè)備驅(qū)動(dòng)程序430則產(chǎn)生用戶聽(tīng)得見(jiàn)的聲音。
對(duì)于虛擬顯示驅(qū)動(dòng)程序350而言,為了去除激活虛擬終端要實(shí)行不同的機(jī)構(gòu)。既然是這樣,虛擬顯示驅(qū)動(dòng)程序350以一系列例行程序送給激活的虛擬終端,激活的虛擬終端可以調(diào)用該例行程序,以便在物理顯示設(shè)備42上產(chǎn)生輸出。當(dāng)使虛擬終端不激活時(shí),則要調(diào)用虛擬顯示驅(qū)動(dòng)程序350的例行程序,它表明了該虛擬終端是不激活的。因而,當(dāng)應(yīng)用50試圖通過(guò)它的虛擬終端,輸出到物理顯示設(shè)備42時(shí),虛擬顯示驅(qū)動(dòng)程序350將要送到物理設(shè)備42的任意信息放到虛擬設(shè)備驅(qū)動(dòng)程序緩沖器。這使正在使用虛擬終端的應(yīng)用50可以和虛擬終端通信,就象它仍然是激活的。將要成為激活的虛擬終端調(diào)用虛擬顯示驅(qū)動(dòng)程序350的例行程序,而該驅(qū)動(dòng)程序350指出虛擬終端是激活的。虛擬終端現(xiàn)在可以用它不激活時(shí)的相同方式來(lái)使用它的虛擬顯示驅(qū)動(dòng)程序350,但是它的虛擬顯示驅(qū)動(dòng)程序350現(xiàn)在可以真正寫(xiě)到顯示適配器硬件42上。
因此,使用虛擬終端的應(yīng)用50不需要知道虛擬終端是激活的還是不激活的。它可以在任意時(shí)候與有關(guān)的虛擬終端通信並且當(dāng)虛擬終端激活時(shí),對(duì)它的虛擬顯示所做的任意修改對(duì)用戶而言是看得見(jiàn)的。應(yīng)用50的操作是獨(dú)立于它的有關(guān)的虛擬終端的激活或不激活狀態(tài)的。
由程序應(yīng)用50進(jìn)行的顯示硬件42的直接存取是本發(fā)明的另一方面,對(duì)它的理解是本發(fā)明的關(guān)鍵部分。
再來(lái)參考圖1,它給出了數(shù)據(jù)處理系統(tǒng)環(huán)境中的各種層次,並且包括了所有前面已經(jīng)討論的部件。在圖1的數(shù)據(jù)處理系統(tǒng)中,虛擬終端子系統(tǒng)30能夠以兩種不同的方式操作。一種方式為KSR方式,而第二種為監(jiān)控方式。正如前面所述的,KSR方式主要用于在顯示設(shè)備42上顯示文本,並且不能用于高性能的圖形應(yīng)用。另外,KSR是非常慢的接口,因?yàn)榈終SR虛擬終端的命令是起源于應(yīng)用程序50並且在任意數(shù)據(jù)輸出到顯示設(shè)備42以前,是通過(guò)數(shù)據(jù)處理系統(tǒng)的每一層次加以處理的,如圖1所示。
監(jiān)控方式支持應(yīng)用50,應(yīng)用50可以直接與包含在顯示設(shè)備42中的硬件刷新緩沖器會(huì)話,而不管它們是以字符方式還是以所有點(diǎn)可尋址(APA)的布置方式,均可直接會(huì)話。因而,就旁路了虛擬終端子系統(tǒng)30並且數(shù)據(jù)可直接輸出到顯示設(shè)備42中。
在監(jiān)控方式中,輸入設(shè)備有其經(jīng)過(guò)虛擬終端子系統(tǒng)30到應(yīng)用50的輸入信號(hào)。使用監(jiān)控方式的應(yīng)用具有在應(yīng)用程序50的存貯器空間中定義循環(huán)緩沖器15(圖1)的任選項(xiàng)。虛擬終端子系統(tǒng)30從輸入設(shè)備41中接收中斷,並且直接將數(shù)據(jù)存貯在輸入緩沖器15中,虛擬終端子系統(tǒng)30對(duì)應(yīng)用50並不產(chǎn)生與發(fā)出中斷信號(hào),除非是數(shù)據(jù)第一次存到循環(huán)緩沖器15中。
如果應(yīng)用50不選擇定義循環(huán)緩沖器15,則虛擬終端子系統(tǒng)30從輸入設(shè)備41中接收中斷並使用中斷通路來(lái)發(fā)送數(shù)據(jù)。該中斷通路需要排隊(duì)接口管理,而接口管理包括通信系統(tǒng)的不同層次之間的通信,如操作系統(tǒng)10與虛擬終端子系統(tǒng)30之間的通信。因而,由于操作系統(tǒng)10和虛擬終端子系統(tǒng)30的存在,應(yīng)用50須經(jīng)排隊(duì)的額外的層次。
因此,如果應(yīng)用50定義了循環(huán)緩沖器15,則上述排隊(duì)的開(kāi)銷是可以去消的。用這種方式,應(yīng)用程序50可以獲得快得多的鍵盤(pán)、鼠標(biāo)器或圖形輸入板的輸入。在這種數(shù)據(jù)處理系統(tǒng)中,關(guān)于處理輸入設(shè)備41的輸入的關(guān)鍵部份是取決于應(yīng)用50定義由應(yīng)用50和虛擬終端子系統(tǒng)30管理的循環(huán)輸入緩沖器15的能力。
循環(huán)緩沖器15的結(jié)構(gòu)需要一個(gè)位于該緩沖器開(kāi)始32字節(jié)處的狀態(tài)區(qū)域。該狀態(tài)區(qū)域有一個(gè)對(duì)于虛擬終端子系統(tǒng)30的偏移指針和一個(gè)對(duì)于應(yīng)用程序50的偏移指針。這些偏移指針是用于將數(shù)據(jù)放到緩沖器15中和從中移動(dòng)數(shù)據(jù)的。緩沖器15包括一個(gè)可變大小的緩沖器環(huán),它至少要有34字節(jié),並且最好不大于64,000字節(jié)。緩沖器環(huán)是在系統(tǒng)進(jìn)入到監(jiān)控方式之后定義的,並且將在下面更詳細(xì)地加以討論。
前面的討論已經(jīng)定義了輸入通路,即輸入設(shè)備41是如何得到到達(dá)應(yīng)用程序50的路由的。即,將輸入設(shè)備41得到的數(shù)據(jù),如擊鍵或在顯示屏上移動(dòng)定位器(鼠標(biāo)器),輸入到虛擬終端子系統(tǒng)30。而虛擬終端子系統(tǒng)30將該數(shù)據(jù)存到循環(huán)緩沖器15的緩沖器環(huán)中。一當(dāng)該數(shù)據(jù)放到緩沖器環(huán)中,應(yīng)用50就可以在任何時(shí)候移動(dòng)這些數(shù)據(jù)。
在監(jiān)控方式期間,當(dāng)應(yīng)用50正在顯示設(shè)備42上畫(huà)圖時(shí),數(shù)據(jù)是直接從相應(yīng)的應(yīng)用50發(fā)送到顯示42上的。虛擬終端子系統(tǒng)30並不知道這種直接的數(shù)據(jù)傳送。當(dāng)使用沒(méi)有通信通路的虛擬終端子系統(tǒng)30時(shí),系統(tǒng)性能將得到增強(qiáng),因?yàn)檫@旁路了虛擬終端子系統(tǒng)30中的許多通信層次。
圖2和圖3最清楚地描述了KSR和監(jiān)控方式的不同處。圖2示出了在KSR方式或非監(jiān)控方式時(shí)輸入命令在被顯示以前必須采取的通路。首先,從輸入設(shè)備41中接收數(shù)據(jù),並且通過(guò)虛擬終端子系統(tǒng)30發(fā)送到操作系統(tǒng)10中。應(yīng)用50存取操作系統(tǒng)10中的輸入數(shù)據(jù),並決定相應(yīng)的輸出。然而,操作系統(tǒng)10產(chǎn)生要在輸出顯示設(shè)備42上顯示的命令並將該命令發(fā)送到虛擬終端子系統(tǒng)30中。然后通過(guò)虛擬終端子系統(tǒng)30處理對(duì)顯示42的命令並輸出到輸出設(shè)備42中。
相反,圖3示出了在監(jiān)控方式時(shí)對(duì)顯示設(shè)備42的命令所采取的通路。虛擬終端子系統(tǒng)30接收輸入設(shè)備41的數(shù)據(jù)並將數(shù)據(jù)存到輸入緩沖器15中。一當(dāng)數(shù)據(jù)在輸入緩沖器15中時(shí),應(yīng)用50可在任意時(shí)候存取該數(shù)據(jù),並且虛擬終端子系統(tǒng)30不知道該數(shù)據(jù)正在被存取。接著,應(yīng)用50直接將輸入緩沖器15的數(shù)據(jù)發(fā)送到輸出顯示42中。
在監(jiān)控方式下虛擬終端子系統(tǒng)30被旁路了,因而它不知道應(yīng)用50和輸出設(shè)備42之間所發(fā)生的事情。因此,使用這種方式的應(yīng)用50必須通過(guò)維護(hù)它們自己的數(shù)據(jù)表示和使虛擬終端之間容易轉(zhuǎn)變的辦法來(lái)實(shí)際參與。
使用監(jiān)控方式的應(yīng)用50也響應(yīng)所有輸入數(shù)據(jù)的跟蹤(鍵盤(pán)、鼠標(biāo)器、圖形輸入板、發(fā)亮的程序功能鍵和撥號(hào)盤(pán)等)。這些應(yīng)用50可以指定最適合于它們處理要求的鍵盤(pán)輸入數(shù)據(jù)的格式規(guī)程??梢栽O(shè)置該規(guī)程的方式使鍵入的數(shù)據(jù)轉(zhuǎn)換為ASCII字符、控制序列或者返回鍵的位置、狀態(tài)和掃描代碼。應(yīng)用50也響應(yīng)返回鍵盤(pán)和定位器的輸入。
通常,監(jiān)控方式將給予應(yīng)用50下述的靈活性控制顯示硬件42,在虛擬終端子系統(tǒng)30和應(yīng)用50之間優(yōu)化數(shù)據(jù)的傳送和通過(guò)在應(yīng)用50和顯示設(shè)備42之間除去幾個(gè)層次的軟件的方法有效地改進(jìn)系統(tǒng)性能。當(dāng)然,為了實(shí)現(xiàn)這種靈活性,通過(guò)增加涉及虛擬終端子系統(tǒng)30和顯示設(shè)備42的層次必須使應(yīng)用在顯示活動(dòng)的管理方面采取更積極的作用。
圖4-9描述了應(yīng)用50的KSR和監(jiān)控方式的操作。盡管可以使用任意的操作系統(tǒng)10,但是關(guān)于UNIX類型操作系統(tǒng)或類似UNIX操作系統(tǒng)描述了該操作。
圖4給出了應(yīng)用50在監(jiān)控方式下打開(kāi)新的虛擬終端所需的步驟。它也描述了在這些步驟期間應(yīng)用50,操作系統(tǒng)10和虛擬終端子系統(tǒng)30之間的通信會(huì)話。
應(yīng)用50初始化的第一個(gè)動(dòng)作是打開(kāi)如第51步(圖4)所示的專門(mén)文件。假設(shè),應(yīng)用50選擇在監(jiān)控方式下運(yùn)行,它必須請(qǐng)求訪問(wèn)顯示硬件(第52步)。接著,應(yīng)用50必須使能為虛擬終端子系統(tǒng)30所接收的監(jiān)控方式(MOM)信號(hào),第53步。然后,在第54步,如果KSR是初始的方式的話,以應(yīng)用50到虛擬終端子系統(tǒng)30的PROTOCOL MODE(規(guī)程方式)命令將KSR方式修改成監(jiān)控方式。第55步是從應(yīng)用50發(fā)送到虛擬終端子系統(tǒng)30的屏幕請(qǐng)求命令,並且為了定義使用在監(jiān)控方式下的輸入緩沖器15,讓?xiě)?yīng)用50存取顯示設(shè)備42。
這個(gè)屏幕請(qǐng)求命令55和前面的規(guī)程命令54將虛擬終端放在監(jiān)控方式中,而且也給應(yīng)用50一個(gè)機(jī)會(huì)去定義或不定義在輸入緩沖器15中的一個(gè)緩沖器環(huán)。不管定義緩沖器環(huán)與否,必須將屏幕請(qǐng)求第55步發(fā)送到虛擬終端子系統(tǒng)30。在虛擬終端處于監(jiān)控方式時(shí),應(yīng)用50將從虛擬終端子系統(tǒng)30中接收授予中斷(SIGGRANT)12信號(hào)。它通知應(yīng)用50,它已經(jīng)完成了對(duì)與虛擬終端有關(guān)的顯示適配器硬件42的控制。從這一點(diǎn)看,應(yīng)用50可以顯示在物理輸出顯示設(shè)備42的顯示上所選擇的任何的東西。
圖5描述了在監(jiān)控方式下打開(kāi)新的終端並且在同一終端上再返回到KSR方式的步驟。圖5所示的步驟包括圖4的所有信號(hào)序列,即打開(kāi)專門(mén)的文件51,請(qǐng)求存取顯示硬件,第52步,使能監(jiān)控方式信號(hào)53,發(fā)送規(guī)程方式,第54步以便將虛擬終端置于監(jiān)控方式和請(qǐng)求屏幕55。在應(yīng)用50接收了SIGGRANT12信號(hào)之后,該虛擬終端處于監(jiān)控方式。如果應(yīng)用希望將虛擬終端置于KSR方式下,應(yīng)用必須向虛擬終端子系統(tǒng)30發(fā)送叫做屏幕釋放應(yīng)答的命令(SCREEN RELEASE ACK),第56步。第56步使虛擬終端準(zhǔn)備就緒去停止監(jiān)控方式操作。然后,應(yīng)用50必須向虛擬終端子系統(tǒng)30發(fā)送規(guī)程方式請(qǐng)求,第57步,它將虛擬終端從監(jiān)控方式改為KSR方式。
圖6描述了在監(jiān)控方式下打開(kāi)一個(gè)新的虛擬終端,然后再關(guān)閉該虛擬終端的情況。再次,該信號(hào)的序列是與圖4所示相同的。在應(yīng)用50接收了信號(hào)授與12之后,虛擬終端處于監(jiān)控方式。此時(shí),如應(yīng)用50選擇關(guān)閉該虛擬終端,它可能這樣做向虛擬終端子系統(tǒng)30發(fā)送關(guān)閉虛擬終端命令(CLOSE VT),第58步。這樣從虛擬終端子系統(tǒng)30過(guò)程中取消了該虛擬終端並且關(guān)閉了該虛擬終端。
運(yùn)行在監(jiān)控方式下的虛擬終端可以參與虛擬終端子系統(tǒng)30的熱鍵系列。熱鍵動(dòng)作可以使不同的已打開(kāi)的虛擬終端在硬件顯示設(shè)備上加以顯示。對(duì)于多數(shù)的虛擬終端共享相同的硬件顯示設(shè)備前面已經(jīng)加以討論了。
鍵盤(pán)上的操作鍵系列如果實(shí)現(xiàn)的話,將使虛擬終端屏幕在硬件顯示設(shè)備42上出現(xiàn)。如果操作鍵再次被激活的話,則下一個(gè)接連的虛擬終端屏幕將被顯示。該過(guò)程將隨著每次操作鍵(熱鍵操作)的激活而重復(fù)。一當(dāng)該鍵被激活足夠多的次數(shù)以致于每個(gè)虛擬終端屏幕已經(jīng)在硬件顯示42上出現(xiàn)的話,下一次操作鍵的激活將使已經(jīng)首先顯示過(guò)的虛擬終端再次顯示。這樣,在硬件顯示42上的虛擬終端屏幕的連續(xù)滾動(dòng)可以與鍵盤(pán)上的熱鍵操作的重復(fù)激活一起發(fā)生。
虛擬終端子系統(tǒng)30保留了運(yùn)行在KSR方式下的所有虛擬終端的屏幕內(nèi)容的付本。在運(yùn)行在KSR方式下的虛擬終端的激活時(shí),熱鍵操作自動(dòng)地在硬件顯示設(shè)備42上恢復(fù)前面保存的虛擬終端屏幕。應(yīng)用50不需保存運(yùn)行在KSR方式的虛擬終端的屏幕內(nèi)容。進(jìn)一步說(shuō),因?yàn)閼?yīng)用不需要保存/恢復(fù)屏幕的內(nèi)容,因此它還進(jìn)一步解除了跟蹤KSR方式下已經(jīng)打開(kāi)的虛擬終端狀態(tài)的要求。
然而,如果虛擬終端運(yùn)行在監(jiān)控方式下並且正在參與熱鍵操作的話,則在虛擬終端放棄顯示控制之前,必須保存數(shù)據(jù)。
圖7給出了兩個(gè)終端被打開(kāi)且均處于監(jiān)控方式的情況。如果在鍵盤(pán)上激活操作鍵,作為虛擬終端子系統(tǒng)30的一部分的虛擬終端資源控制器310,如前所述,接收信號(hào)701。虛擬終端資源控制器310發(fā)送信號(hào)702去解除激活該虛擬終端。這就起動(dòng)了虛擬終端子系統(tǒng)30的虛擬終端方式處理器340中的虛擬資源控制器定時(shí)器801,正如上面所述的。定時(shí)器可以置為指定的時(shí)間段,如30秒。
應(yīng)用50從虛擬終端子系統(tǒng)30中接收屏幕釋放中斷。以撤回信號(hào)(SIGRETRACT)的格式進(jìn)行。該SIGRETRACT通知應(yīng)用50,它已經(jīng)指定一個(gè)時(shí)間段,如30秒,來(lái)保存所有的數(shù)據(jù)並且響應(yīng)SIGRETRACT信號(hào),第101步。為了響應(yīng)SIGRETRACT信號(hào)101,應(yīng)用50向虛擬終端子系統(tǒng)30發(fā)送屏幕釋放應(yīng)答501。屏幕釋放應(yīng)答501向虛擬終端子系統(tǒng)30指出,應(yīng)用50已經(jīng)確認(rèn)下述事實(shí)硬件顯示設(shè)備42(現(xiàn)在是被寫(xiě)到的地方)必須釋放,並且應(yīng)用50已準(zhǔn)備好撤回顯示設(shè)備42。然后,再禁止虛擬資源控制器的定時(shí)器,在第803步。
此時(shí),虛擬終端子系統(tǒng)30接收屏幕釋放應(yīng)答501。虛擬終端子系統(tǒng)30再實(shí)現(xiàn)去除激活804和激活704過(guò)程,該過(guò)程對(duì)虛擬終端子系統(tǒng)而言是內(nèi)部的過(guò)程。應(yīng)用50不知道該過(guò)程的存在。下一個(gè)應(yīng)用50將從虛擬終端子系統(tǒng)30接收SIGGRANT信號(hào)102,而虛擬終端子系統(tǒng)30告訴運(yùn)行在第二個(gè)虛擬終端的應(yīng)用50,它現(xiàn)在已經(jīng)控制了可以由應(yīng)用50直接存取的顯示設(shè)備42。因此,第一個(gè)(去除激活)虛擬終端與硬件顯示42通信的能力已經(jīng)被取消了,並且第二個(gè)(激活的)虛擬終端已經(jīng)有機(jī)會(huì)在硬件顯示42上直接繪畫(huà)了。
圖8描述了兩個(gè)虛擬終端處于監(jiān)控方式並將參與熱鍵操作的情況。然而,在這種情況下應(yīng)用50在指定的時(shí)間內(nèi)並不響應(yīng)SIGRETRACT信號(hào)101。如圖8所示,從開(kāi)始用于熱鍵操作的鍵盤(pán)操作序列起,應(yīng)用50從虛擬終端子系統(tǒng)30中接收SIGRETRACT信號(hào)101(第701步)。如果應(yīng)用50在指定時(shí)間內(nèi)即30秒內(nèi)不響應(yīng)SIGRETRACT信號(hào),則虛擬終端子系統(tǒng)30中的定時(shí)器將在第807步時(shí)終止。
由于定時(shí)器的終止,應(yīng)用50將從虛擬終端子系統(tǒng)30中接收SIGKILL信號(hào)103,它指出了該虛擬終端已經(jīng)終止並且虛擬終端子系統(tǒng)30應(yīng)該關(guān)閉該虛擬終端。然后該虛擬終端則從虛擬終端子系統(tǒng)30中除去。因而,在SIGKILL處理103之后,不響應(yīng)的虛擬終端就關(guān)閉了(第502步)。然后,虛擬終端子系統(tǒng)30將接收關(guān)閉命令並通過(guò)從虛擬終端子系統(tǒng)結(jié)構(gòu)310、340中除去該過(guò)程的辦法來(lái)關(guān)閉該虛擬終端(第705和809步)。
由于在該例子中存在著正在被激活的第二個(gè)虛擬終端,虛擬終端子系統(tǒng)30知道這個(gè)第二個(gè)終端的情況,並且激活(第707步)該第二個(gè)虛擬終端。由于第二個(gè)虛擬終端處于監(jiān)控方式下,屏幕授于中斷信號(hào)(SIGGRANT)將通過(guò)虛擬終端子系統(tǒng)30發(fā)送到新激活的虛擬終端的應(yīng)用50中。此時(shí),新激活的虛擬終端已經(jīng)控制了顯示硬件42。
圖9表示的是兩個(gè)終端在KSR和監(jiān)控方式下打開(kāi)的情形。當(dāng)終端處于不激活的步驟時(shí),該終端可從監(jiān)控方式變?yōu)镵SR方式。然后該終端在KSR方式下可重新激活,則它的方式轉(zhuǎn)變?yōu)楸O(jiān)控方式。
在這種情況下,重要的是應(yīng)用50記住從虛擬終端處于監(jiān)控方式再轉(zhuǎn)變?yōu)镵SR方式起,虛擬終端子系統(tǒng)30已經(jīng)不再保留任意關(guān)于監(jiān)控方式的信息(該信息由相應(yīng)的應(yīng)用50保留)。因而,從KSR方式到監(jiān)控方式的轉(zhuǎn)換可以完成前,應(yīng)用50必須定義另一個(gè)循環(huán)輸入緩沖器15並且復(fù)位所有相關(guān)的指針。即使當(dāng)虛擬終端開(kāi)始處于監(jiān)控方式然后轉(zhuǎn)換到KSR方式時(shí)前面的循環(huán)緩沖器15已經(jīng)定義的情況下,這也是對(duì)的。當(dāng)由監(jiān)控方式轉(zhuǎn)換為KSR方式時(shí),該環(huán)形緩沖器15就不存在了。因而,圖9的情況是按順序描述了每次終端處于監(jiān)控方式時(shí)必須發(fā)送的規(guī)程方式(第504步)和屏幕請(qǐng)求(第505步)。
現(xiàn)在用圖10來(lái)描述本發(fā)明的情況,圖10為虛擬終端系統(tǒng)的部件的框圖。圖中給出了三個(gè)應(yīng)用50a,50b和50c,正如以前所討論的那樣,它們可以在監(jiān)控方式下直接寫(xiě)到顯示設(shè)備42a,42b和42c。與這些應(yīng)用一起給出的是已經(jīng)打開(kāi)的用參考數(shù)字31,32,33,34,35和36描述的六個(gè)虛擬終端。每個(gè)應(yīng)用打開(kāi)的虛擬終端數(shù)決不能大于計(jì)算機(jī)系統(tǒng)中物理顯示沒(méi)有42的總數(shù),然而,一個(gè)應(yīng)用50可以打開(kāi)比可以得到的顯示設(shè)備數(shù)小的虛擬終端??梢钥闯?,能夠打開(kāi)的虛擬終端的總數(shù)(例如,圖10為6個(gè))比整個(gè)物理顯示設(shè)備數(shù)(例如,圖10為3個(gè))要大。因而,必須使用一個(gè)機(jī)構(gòu),它可以使虛擬終端子系統(tǒng)(VTSS)30在請(qǐng)求使用的應(yīng)用之間分配顯示設(shè)備42。
在以前的技術(shù)中,虛擬終端系統(tǒng)是這樣操作的當(dāng)計(jì)算機(jī)系統(tǒng)的用戶開(kāi)始“熱鍵”序列時(shí),現(xiàn)行激活的虛擬終端就成為去除激活的虛擬終端,而下一接連的虛擬終端成為激活的了。于是,問(wèn)題是用戶只可以在虛擬終端間進(jìn)行熱鍵操作,而不是在多個(gè)程序應(yīng)用50間進(jìn)行。為了解決這個(gè)問(wèn)題,本發(fā)明指定除了一個(gè)以外的所有的由單個(gè)應(yīng)用打開(kāi)的多個(gè)虛擬終端為“不參與”任意的熱鍵操作的虛擬終端。
現(xiàn)在參改表示初始化步驟流程圖的12a、12b和12c來(lái)描述用于如圖10所描述的本發(fā)明的系統(tǒng)中的應(yīng)用50的初始化。應(yīng)該注意的是該過(guò)程是用于圖10所示系統(tǒng)中的每一個(gè)應(yīng)用50a、50b和50c的。也應(yīng)該注意的是使用本初始化過(guò)程,任意的應(yīng)用50可以用于本發(fā)明的系統(tǒng)中。只使用那些可以管理多個(gè)虛擬終端和硬件顯示設(shè)備42的應(yīng)用50是不必要的。
在第一步(圖12a),開(kāi)始用于圖10所示系統(tǒng)中的應(yīng)用50的初始化過(guò)程。應(yīng)用50查詢VTSS30以便決定存在于本發(fā)明的系統(tǒng)中的物理顯示設(shè)備42的數(shù)量(第2步)。下一步,該過(guò)程決定現(xiàn)在的顯示設(shè)備41的數(shù)量是否小于應(yīng)用50所需的顯示設(shè)備42的數(shù)量(第3步)。如果現(xiàn)在的顯示設(shè)備42的數(shù)量少于應(yīng)用50所需的顯示設(shè)備42的數(shù)量,則已經(jīng)發(fā)生錯(cuò)誤且該過(guò)程在第4步退出。然而,如果現(xiàn)在的顯示設(shè)備42的數(shù)量大于或等于應(yīng)用50所需的顯示設(shè)備42的數(shù)量,則該過(guò)程繼續(xù)前進(jìn)到第5步,其中的前面所述的方式打開(kāi)應(yīng)用50所需的虛擬終端。
在第6步,VTSS30使用輸入/輸出控制系統(tǒng)調(diào)用(IOCTL)來(lái)指定除了一個(gè)以外的所有虛擬終端為“不參與”任意熱鍵操作的虛擬終端。IOCTL讓?xiě)?yīng)用50告訴VTSS30哪些虛擬終端用該不參加熱鍵操作。然后在第7步中該過(guò)程使每一個(gè)已打開(kāi)的虛擬終端與不同的物理顯示設(shè)備42發(fā)生聯(lián)系。再說(shuō)一下,應(yīng)用50使用IOCTL來(lái)告訴VTSS30應(yīng)用50希望哪些顯示設(shè)備42與每個(gè)已打開(kāi)的虛擬終端發(fā)生聯(lián)系。
第8步在應(yīng)用50內(nèi)建立信號(hào)處理程序,以致于從VTSS30中可以連收和處理SLGGRANT和SLGRETRACT信號(hào)。信號(hào)處理程序在技術(shù)上是眾所周知的,并且常常稱之為中斷處理程序。因而,對(duì)于一個(gè)技術(shù)上熟練的人去理解本發(fā)明是不需要再詳細(xì)了解關(guān)于這些信號(hào)處理程序的建立的。然后,在初始化場(chǎng)合,圖12的過(guò)程將所有的物理顯示設(shè)備42指定為“不能用的”(圖12b的第9步)。這樣,沒(méi)有VTSS30的開(kāi)始的授與許可,應(yīng)用50是不能開(kāi)始寫(xiě)到顯示設(shè)備中的。在第10步中應(yīng)用50再使用IOCTL向VTSS30請(qǐng)求監(jiān)控方式操作。在第11步中,通過(guò)對(duì)VTSS30調(diào)用AIX操作系統(tǒng)(AIX是IBM公司的商標(biāo))的一部分的AIXGC系統(tǒng)調(diào)用,應(yīng)用50再請(qǐng)求直接硬件級(jí)存取所需的顯示設(shè)備42。在第12步,VTSS30為已經(jīng)指定為參與熱鍵操作的虛擬終端請(qǐng)求存取物理顯示設(shè)備42。再一次說(shuō),使用IOCTL來(lái)產(chǎn)生這種請(qǐng)求。此時(shí)VTSS30指定任意的顯示設(shè)備42為將要授予為“可用的”存取設(shè)備。第13步執(zhí)行任意其它的起動(dòng)特別的應(yīng)用可能需要的過(guò)程。第14步,再?zèng)Q定該特別的應(yīng)用是否已經(jīng)結(jié)束。如果這樣的話,在第15步該過(guò)程結(jié)束。然而,如果該應(yīng)用保持有效,則在第16步處理所有正常應(yīng)用的輸入。在第17步,該過(guò)程決定是否有數(shù)據(jù)從應(yīng)用50中輸出,該應(yīng)用50正在等待在已經(jīng)指定為“可用的”顯示設(shè)備42上顯示。如果是懸而不決的輸出或等待顯示的話,則在第18步更新顯示設(shè)備42。然而,如果對(duì)于可用的顯示沒(méi)有懸而不決的輸出的話,則該應(yīng)用50返回到第16步,在這一步再?zèng)Q定應(yīng)用是否已經(jīng)結(jié)束。在第18步更新顯示之后,該過(guò)程也返回到第16步。
本發(fā)明保證每一次熱鍵操作使用戶的活動(dòng)中心移到下一個(gè)接連的應(yīng)用,現(xiàn)在參改圖10和11來(lái)描述本發(fā)明的機(jī)構(gòu)的實(shí)例。對(duì)于這個(gè)例子,假設(shè)VTSS30已經(jīng)以前面所述的方式打開(kāi)了虛擬終端31、32、33、34、35和36並且每個(gè)應(yīng)用50a、50b和50c(應(yīng)用50b和50c是多道處理的應(yīng)用)已經(jīng)進(jìn)行了上面剛討論的關(guān)于圖12a、12b和12c的初始化過(guò)程。下面對(duì)圖10的系統(tǒng)必須假設(shè)某一初始穩(wěn)定狀態(tài)的條件。例如,下面假設(shè)(1)應(yīng)用50b和50c已經(jīng)指定虛擬終端33、34和36為不參與熱鍵操作的虛擬終端(圖12a的第6步);(2)應(yīng)用50a是激活的並且在監(jiān)控方式下正在直接向顯示設(shè)備42a進(jìn)行寫(xiě)操作,(3)應(yīng)用50b正在請(qǐng)求允許從VTSS30直接寫(xiě)到顯示設(shè)備42a中,因?yàn)檫@個(gè)顯示設(shè)備是對(duì)應(yīng)于參與熱鍵操作的虛擬終端32的。(4)應(yīng)用50c在監(jiān)控方式下有效地寫(xiě)到顯示設(shè)備42b和42c中。
圖11為小結(jié)這種假設(shè)的初始狀態(tài)的圖,然而,應(yīng)該注意的是可以假設(shè)許多其它穩(wěn)定狀態(tài)條件而不會(huì)背離本發(fā)明的范圍。此外,圖11給出了在例中每次執(zhí)行熱鍵操作之后的每個(gè)應(yīng)用50a,50b和50c的條件。應(yīng)該注意的是,每個(gè)熱鍵序列將活動(dòng)中心在每個(gè)接連的應(yīng)用50之間移動(dòng),即該序列是從50a到50b再到50c然后返回到50a。
開(kāi)始,用戶在輸入設(shè)備41上執(zhí)行熱鍵序列。應(yīng)該注意的是對(duì)于這個(gè)例子而言,假設(shè)虛擬終端31、32和35參與熱鍵操作(圖12a的第6步)。在熱鍵操作之后,應(yīng)用50a從VTSS30中接收SLGRETRACT信號(hào),因?yàn)樘摂M終端31是激活的,應(yīng)用50a直接將虛擬方式下的數(shù)據(jù)在顯示設(shè)備42a上顯示。在應(yīng)用50a的初始化過(guò)程第8步所建立的信號(hào)處理程序接收SIGRETRACT信號(hào)並執(zhí)行如圖14所示的處理(該過(guò)程假設(shè)信號(hào)處理程序已經(jīng)由初始化過(guò)程在應(yīng)用50中建立)。
在圖14的第一步中,由應(yīng)用50建立的SIGRETRACT信號(hào)處理程序從VTSS30中接收SIGRETRACT信號(hào)。然后,信號(hào)處理程序使用IOCTL來(lái)查詢VTSS30以便決定正在撤回的是哪個(gè)顯示設(shè)備42(第2步)。必須注意的是在以前的技術(shù)中,AIX操作系統(tǒng)提供SIGRETRACT信號(hào),而運(yùn)行在以前技術(shù)的AIX下的應(yīng)用50是不能決定已經(jīng)撤回的是哪一個(gè)顯示設(shè)備。
第3步是保存正在被撤回的顯示設(shè)備上的屏幕內(nèi)容。這些屏幕內(nèi)容由應(yīng)用50保存在“如果需要”的庫(kù)中。即,當(dāng)應(yīng)用50一旦再次變?yōu)榧せ畹脑?,不需要的信息就不保存了。然后顯示設(shè)備42被指定為應(yīng)用50“不能用”來(lái)寫(xiě)入的設(shè)備(第4步)。在第5步,應(yīng)用50中的信號(hào)處理程序告訴VTSS 30,所有的SIGRETRACT處理何時(shí)完成。如果對(duì)于參與熱鍵操作的虛擬終端執(zhí)行了撤回處理的話,則在第6步該過(guò)程結(jié)束。如果這樣,則信號(hào)處理程序重新請(qǐng)求允許應(yīng)用50直接寫(xiě)到剛被撤回的屏幕上(第7步)。然而,如果SIGRETRACT是對(duì)沒(méi)有參與熱鍵操作的虛擬終端而言的話,則SIGRETRACT處理在第8步結(jié)束。應(yīng)該注意的是每次執(zhí)行該過(guò)程時(shí),VTSS 30向應(yīng)用50發(fā)送SIGRETRACT信號(hào)並且在多數(shù)情況下,在關(guān)于本發(fā)明和參考圖10所解釋的該例子的整個(gè)余下部分是將要執(zhí)行的。
現(xiàn)在繼續(xù)討論本例,假設(shè)應(yīng)用50a剛剛完成SIGRETRACT處理,正如上面所說(shuō)的那樣,並且已經(jīng)將應(yīng)答信號(hào)返回給VTSS30,而且現(xiàn)在已經(jīng)置于“請(qǐng)求狀態(tài)”,因?yàn)樘摂M終端31已經(jīng)被指定為參與熱鍵操作(見(jiàn)圖14的第6、7步)。熱鍵操作使VTSS 30起動(dòng)激活虛擬終端32的步驟,虛擬終端32是指定參與熱鍵操作的下一個(gè)虛擬終端。在VTSS 30接收了SIGRETRACT信號(hào)的應(yīng)答之后,向應(yīng)用50b發(fā)出關(guān)于激活虛擬終端32的SIGGRANT信號(hào)。應(yīng)用50b中的信號(hào)處理程序再以圖13的過(guò)程所描述的方式處理該SIGGRANT信號(hào)。
圖13為表示涉及處理由應(yīng)用50的信號(hào)處理程序(圖12a的第8步)所接收的SIGGRANT信號(hào)的步驟的流程圖。在圖13的第1步*,信號(hào)處理程序從VTSS30中接收SIGGRANT信號(hào),並開(kāi)始執(zhí)行這個(gè)過(guò)程。在第2步,通過(guò)指定I為可以用的顯示設(shè)備數(shù)並使它等于1來(lái)初始化該過(guò)程。第3步?jīng)Q定第I個(gè)顯示設(shè)備42指定為“可以用”的還是“不可以用”的(見(jiàn)圖12b的第9步)。如果該顯示設(shè)備42是可用的,則該過(guò)程繼續(xù)進(jìn)行到第4步,其中要決定所有的顯示設(shè)備是否已經(jīng)檢查了其可用性。如果是這樣的話,則該過(guò)程在第5步結(jié)束。然而,如果在第4步中,已經(jīng)確定了不是所有的顯示設(shè)備已經(jīng)檢查了可用性的話,則該過(guò)程通過(guò)設(shè)置要考慮的顯示設(shè)備為I=I+1的方法來(lái)重新指定要檢查其可用性的顯示設(shè)備42(第6步)。在這個(gè)重新指定之后,該過(guò)程返回到第3步。如果在第3步中,被考慮的顯示設(shè)備不是標(biāo)志為可用的話,則在第7步中確定被考慮的虛擬終端是否已經(jīng)指定為不參與的虛擬終端。如果是這樣的話,則應(yīng)用50向VTSS 30的屏幕管理程序320發(fā)出IOCTL,使該顯示設(shè)備為可見(jiàn)的設(shè)備(第8步)。然而,如果該虛擬終端不是標(biāo)志為不參與的虛擬終端,則標(biāo)志該顯示設(shè)備42為可見(jiàn)的設(shè)備並重新建立屏幕顯示(第9步)。在第9步以后,該過(guò)程返回到第4步以確定所有設(shè)備是否已經(jīng)檢查了可用性。
就本例子而言,由應(yīng)用50b中的信號(hào)處理程序所完成的SIGGRANT處理是在VTSS30從應(yīng)用50a中接收應(yīng)答信號(hào)之后進(jìn)行的。因而,由于該熱鍵操作,已經(jīng)授于應(yīng)用50b對(duì)監(jiān)控方式下的顯示設(shè)備42a進(jìn)行直接寫(xiě)的訪問(wèn)。下一步,應(yīng)用50b請(qǐng)求將由應(yīng)用50b打開(kāi)的不參與熱鍵操作的虛擬終端33成為可見(jiàn)的設(shè)備,使應(yīng)用50b也可以直接寫(xiě)到監(jiān)控方式下的顯示設(shè)備42b中。應(yīng)用50b向VTSS30和包括在其中的屏幕管理程序320提出該請(qǐng)求。VTSS30和應(yīng)用50b再經(jīng)歷打開(kāi)監(jiān)控方式下虛擬終端所需的相同步驟,如參考圖4前面所討論的那樣。這樣不參與熱鍵操作的虛擬終端就成為可見(jiàn)的了(圖13的第7和8步)並且授于顯示設(shè)備42b,使應(yīng)用50b可直接寫(xiě)到監(jiān)控方式下的該顯示設(shè)備42b中。
直接在顯示設(shè)備42b和42c上寫(xiě)過(guò)的應(yīng)用50c現(xiàn)在從VTSS30中為顯示設(shè)備42b接收SIGRETRACT信號(hào),因?yàn)閼?yīng)用50b已經(jīng)服從于熱鍵操作並且正在請(qǐng)求顯示設(shè)備42b。在SIGRETRACT處理之后,應(yīng)用50c再重新請(qǐng)求顯示設(shè)備42b(圖14的第7步),因?yàn)樵擄@示設(shè)備對(duì)應(yīng)于已經(jīng)指定為參與熱鍵操作的應(yīng)用50c的虛擬終端35。該(初始的)熱鍵序列並不影響顯示設(shè)備42c的狀態(tài),因?yàn)閼?yīng)用50c是唯一期望寫(xiě)到那里的應(yīng)用。因而,應(yīng)用50c仍然在進(jìn)行直接寫(xiě)到監(jiān)控方式下的顯示設(shè)備42c中。
為了總結(jié)本發(fā)明題目例子的狀態(tài),在開(kāi)始熱鍵操作之后,應(yīng)用50a正在請(qǐng)求存取顯示設(shè)備42a,應(yīng)用50b在監(jiān)控方式下正在寫(xiě)到顯示設(shè)備42a和42b中,而應(yīng)用50c正在請(qǐng)求存取顯示設(shè)備42b且正在直接寫(xiě)到監(jiān)控方式下的顯示設(shè)備42c中。
下面,假設(shè)用戶在輸入設(shè)備41上執(zhí)行第二次熱鍵操作。VTSS30再去除激活虛擬終端32和通過(guò)跳過(guò)不參與熱鍵操作的虛擬終端33和34,來(lái)激活下一個(gè)參與的虛擬終端35。虛擬終端35的激活是以參考圖11A的如前所述方式發(fā)生的。
如前所述,VTSS30必須包括一個(gè)讓它去選擇要激活的下一個(gè)參與的虛擬終端的機(jī)構(gòu)。如果下一接連的虛擬終端指定為不參與的話,則VTSS30要跳到?jīng)]有被指定為不參與的下一接連的虛擬終端上。
對(duì)于現(xiàn)行的例子中假設(shè)虛擬終端33和34均被指定為不參與的事實(shí)下,因而,VTSS30跳過(guò)虛擬終端33和34而到虛擬終端35上。由于虛擬終端35的激活,已經(jīng)在請(qǐng)求顯示設(shè)備42b的應(yīng)用50c,現(xiàn)在則服從于熱鍵操作。對(duì)于顯示設(shè)備42b,VTSS30向應(yīng)用50b發(fā)出SIGRETRACT信號(hào)。在撤回顯示設(shè)備42b之后,應(yīng)用50b再向VTSS30返回一個(gè)應(yīng)答信號(hào)。下一步,向應(yīng)用50c發(fā)出SIGGRANT信號(hào),以授于它直接存取顯示設(shè)備42b。此時(shí),應(yīng)用50c再向VTSS30的屏幕管理程序320請(qǐng)求顯示設(shè)備42a,因?yàn)檫@是唯一留下的應(yīng)用50c還沒(méi)有存取的顯示設(shè)備。對(duì)于顯示設(shè)備42a,VTSS 30再向應(yīng)用50b發(fā)出SIGRETRACT信號(hào)。在SIGRETRACT處理和發(fā)送應(yīng)答之后,應(yīng)用50b請(qǐng)求顯示設(shè)備42a(圖14的第7步)。在接收應(yīng)答之后,對(duì)于顯示設(shè)備42a,VTSS30向應(yīng)用50c發(fā)出SIGGRANT信號(hào)。應(yīng)該注意的是發(fā)生在應(yīng)用50b和50c的信號(hào)處理程序中的SIGGRANT和SIGRETRACT的處理,在關(guān)于圖13和圖14所述的處理上是相同的。關(guān)于顯示設(shè)備42c的狀態(tài)是沒(méi)有改變的,因?yàn)閼?yīng)用50c是唯一期望寫(xiě)到那里的應(yīng)用,並且在第二次熱鍵操作之前,應(yīng)用50c已經(jīng)有效地寫(xiě)到監(jiān)控方式下的該顯示設(shè)備中。
因而,參考圖11,在第二次熱鍵操作之后,應(yīng)用50a、50b和50c是處于下列狀態(tài)的應(yīng)用50a保持處于請(qǐng)求存取顯示設(shè)備42a的狀態(tài);因?yàn)閷?duì)應(yīng)用的熱鍵操作和正在請(qǐng)求顯示設(shè)備42a的緣故,應(yīng)用50b有兩個(gè)被拿開(kāi)(撤回)的顯示設(shè)備42a和42b。而應(yīng)用50c現(xiàn)在已經(jīng)可以對(duì)所有三個(gè)顯示設(shè)備42a、42b和42c進(jìn)行存取,並且可以直接寫(xiě)到這些監(jiān)控方式下的顯示設(shè)備。由于這個(gè)熱鍵操作和由VTSS30發(fā)出的隨后相關(guān)的SIGRETRACT(向應(yīng)用50b發(fā)出的)和SIGGRANT信號(hào)(向應(yīng)用50c發(fā)出的),應(yīng)用50c能夠從應(yīng)用50b中取走兩個(gè)顯示設(shè)備42a和42b。應(yīng)用50c以前對(duì)顯示設(shè)備42c也直接在寫(xiě),因而該熱鍵操作沒(méi)有修改該狀態(tài)。
現(xiàn)在將要討論的是另一個(gè)熱鍵操作,其中,用戶在輸入設(shè)備41上初始該序列,而VTSS30知道要去除激活虛擬終端35,跳過(guò)不參與的虛擬終端36再處理下一個(gè)參與的虛擬終端31。應(yīng)該注意的是虛擬終端的順序可以為任意期望的次序,然而,對(duì)于本例子而言,假設(shè)其順序是從虛擬終端31到虛擬終端36再返回到虛擬終端31的卷形次序。然而,任意序列均可工作,如以降序方式從虛擬終端36到虛擬終端31再返回到虛擬終端36。
對(duì)于顯示設(shè)備42a而言,應(yīng)用50c的信號(hào)處理程序從VTSS30中接收SIGRETRACT信號(hào),並且在該處理完成之后向VTSS30發(fā)送應(yīng)答信號(hào)。在從應(yīng)用50c接收應(yīng)答信號(hào)之后,對(duì)于顯示設(shè)備42a而言,VTSS30向應(yīng)用50a發(fā)出SIGGRANT信號(hào)。在由應(yīng)用50a處理SIGGRANT之后,應(yīng)用50a在監(jiān)控方式下可以寫(xiě)到顯示設(shè)備42a中(即應(yīng)用50a在顯示設(shè)備42a上是有效的)。
于是,這第三次熱鍵操作已經(jīng)將虛擬終端35去除激活而將虛擬終端31激活了。然而,從應(yīng)用50c中撤回顯示設(shè)備42b和42c是不必要的,因?yàn)閼?yīng)用50a沒(méi)有在請(qǐng)求顯示設(shè)備42b和42c,而只請(qǐng)求顯示設(shè)備42a,它是通過(guò)從VTSS30發(fā)出SIGGRANT信號(hào)而在以前已經(jīng)被授于訪問(wèn)的。因而,可以從圖11中看出,應(yīng)用50a現(xiàn)在正在寫(xiě)到處于監(jiān)控方式下的顯示設(shè)備42a中,應(yīng)用50b保持請(qǐng)求存取顯示設(shè)備42a,而應(yīng)用50c正在寫(xiě)到處于監(jiān)控方式下的顯示設(shè)備42b和42c中。再參考圖11,可以看出,在第三次熱鍵操作之后,應(yīng)用50a、50b和50c的關(guān)于顯示設(shè)備42a、42b和42c的狀態(tài)是完全與開(kāi)始假設(shè)的狀態(tài)相同的。
因而,可以看出本發(fā)明如何使包括能直接寫(xiě)到多個(gè)顯示設(shè)備中的多個(gè)應(yīng)用的系統(tǒng)的用戶起動(dòng)的每一個(gè)熱鍵操作總是能夠?qū)⑺芯康娘@示設(shè)備從一個(gè)應(yīng)用轉(zhuǎn)換到下一個(gè)應(yīng)用中,而不是象以前的技術(shù)系統(tǒng)所提供的從一個(gè)虛擬終端轉(zhuǎn)換到下一個(gè)虛擬終端。也可以看出,對(duì)于所有的其中含有期望直接寫(xiě)到顯示設(shè)備中的過(guò)程而言,服從于熱鍵操作的應(yīng)用50將總是具有對(duì)顯示設(shè)備的存取權(quán)力的。前面描述的例子並不打算將本發(fā)明局限于圖10所描述的系統(tǒng)中。本發(fā)明的范圍是打算用于任意使用大量應(yīng)用的系統(tǒng)中,而且其中至少有一個(gè)應(yīng)用能直接寫(xiě)到多個(gè)硬件顯示設(shè)備上。
雖然已經(jīng)示出並加以描述了某個(gè)擇優(yōu)的具體體現(xiàn),應(yīng)該理解的是可以對(duì)其中進(jìn)行許多的變換或修改而不會(huì)離開(kāi)所附的專利范圍。例如,本發(fā)明將能夠使一個(gè)本領(lǐng)域的技術(shù)人員從具有下述配置的系統(tǒng)中得到其中的好處,該系統(tǒng)的第一個(gè)應(yīng)用可以寫(xiě)到第一個(gè)顯示設(shè)備中而另一個(gè)程序應(yīng)用可以直接寫(xiě)到第一個(gè)顯示設(shè)備和至少有一個(gè)的其它顯示設(shè)備。
權(quán)利要求
1.將活動(dòng)中心從第一個(gè)程序應(yīng)用移到接連的程序應(yīng)用的方法,它通過(guò)單個(gè)移動(dòng)操作加以實(shí)現(xiàn),所說(shuō)的方法的特點(diǎn)在于下述步驟中提供許多硬件顯示設(shè)備;提供許多所說(shuō)的程序應(yīng)用;提供許多虛擬終端,每個(gè)所說(shuō)的虛擬終端與所說(shuō)的程序應(yīng)用中的特定的一個(gè)有關(guān)並且直接對(duì)應(yīng)于所說(shuō)的硬件顯示設(shè)備中的一個(gè);指定與所說(shuō)的應(yīng)用中的特定的一個(gè)有關(guān)的所說(shuō)的虛擬終端中的除了一個(gè)以外的所有的虛擬終端為不參與所說(shuō)的移動(dòng)操作的虛擬終端;並且起動(dòng)所說(shuō)的移動(dòng)操作,以致于忽略所有所說(shuō)的接連的不參與的虛擬終端。
2.按照權(quán)利要求1的方法,其特征在于激活與所說(shuō)的接連的程序應(yīng)用有關(guān)的接連的虛擬終端的步驟,該終端沒(méi)有被指定為不參與所說(shuō)的移動(dòng)操作。
3.按照權(quán)利要求1的方法,其特征在于,所說(shuō)的許多程序應(yīng)用中至少有一個(gè)可以直接寫(xiě)到至少二個(gè)所說(shuō)的許多硬件顯示設(shè)備中。
4.按照權(quán)利要求3的方法,其中移動(dòng)的方法的特點(diǎn)還在于下述步驟中決定哪些所說(shuō)的硬件顯示設(shè)備是由所說(shuō)的接連的程序應(yīng)用所需的;從由任意其它所說(shuō)的許多程序應(yīng)用所使用中撤回對(duì)所說(shuō)的硬件顯示設(shè)備的存取,這些所說(shuō)的硬件顯示設(shè)備是所說(shuō)的接連的程序應(yīng)用所需的;並且對(duì)所說(shuō)的接連的程序應(yīng)用授于對(duì)所說(shuō)的所需的硬件顯示設(shè)備的存取。
5.按照權(quán)利要求4的方法,其特點(diǎn)在于決定提供一個(gè)機(jī)構(gòu)的步驟構(gòu)成的所說(shuō)的步驟可以查詢關(guān)于哪些所說(shuō)的硬件顯示設(shè)備必須被撤回,通過(guò)上述的機(jī)構(gòu),所說(shuō)的程序應(yīng)用普遍存取由所說(shuō)的接連的程序應(yīng)用所需的至少為一個(gè)的所說(shuō)的硬件顯示設(shè)備。
6.通過(guò)執(zhí)行單個(gè)的移動(dòng)操作,將活動(dòng)中心從第一個(gè)程序應(yīng)用移到下一接連的程序應(yīng)用的方法,所說(shuō)的方法其特點(diǎn)在于下述步驟中提供許多硬件顯示設(shè)備;提供許多所說(shuō)的程序應(yīng)用,至少一個(gè)所說(shuō)的程序應(yīng)用能直接寫(xiě)到至少為二個(gè)的所說(shuō)的許多硬件設(shè)備中;提供許多虛擬終端,每個(gè)所說(shuō)的虛擬終端與特定的一個(gè)所說(shuō)的程序應(yīng)用有關(guān),並且直接對(duì)應(yīng)于一個(gè)所說(shuō)的硬件顯示設(shè)備;指定與特定的一個(gè)所說(shuō)的應(yīng)用有關(guān)的,除了一個(gè)以外的所有的所說(shuō)的虛擬終端為不參與所說(shuō)的移動(dòng)操作;決定哪些所說(shuō)的硬件顯示設(shè)備是由所說(shuō)的下一接連的程序應(yīng)用所需的;提供一個(gè)機(jī)構(gòu)可以查詢關(guān)于哪些所說(shuō)的硬件顯示設(shè)備必須被撤回,通過(guò)該機(jī)構(gòu)所說(shuō)的程序應(yīng)用普遍存取由所說(shuō)的下一接連的程序應(yīng)用所需的至少為一個(gè)所說(shuō)的硬件顯示設(shè)備;並且起動(dòng)所說(shuō)的移動(dòng)操作以致于忽略所有所說(shuō)的接連的不參與的虛擬終端。
7.通過(guò)執(zhí)行單個(gè)移動(dòng)操作,將活動(dòng)中心從第一個(gè)程序應(yīng)用移到接連的程序應(yīng)用的系統(tǒng),其特點(diǎn)在于許多硬件顯示設(shè)備;許多所說(shuō)的程序應(yīng)用;許多虛擬終端,每個(gè)所說(shuō)的虛擬終端與特定的一個(gè)所說(shuō)的程序應(yīng)用有關(guān)並且直接對(duì)應(yīng)于一個(gè)所說(shuō)的硬件顯示設(shè)備;用于指定與特定的一個(gè)所說(shuō)的應(yīng)用有關(guān)的,除了一個(gè)以外的所有所說(shuō)的虛擬終端為不參與所說(shuō)的移動(dòng)操作的方法,以致于忽略所有所說(shuō)的接連的不參與的虛擬終端。
8.按照權(quán)利要求7的系統(tǒng),其特點(diǎn)在于,用于激活與所說(shuō)的接連的程序應(yīng)用有關(guān)的接連的虛擬終端的方法,該虛擬終端沒(méi)有指定為不參與所說(shuō)的移動(dòng)操作。
9.按照權(quán)利要求7的系統(tǒng),其特點(diǎn)在于,所說(shuō)的許多程序應(yīng)用中至少一個(gè)可以直接寫(xiě)到至少為二個(gè)的所說(shuō)的許多硬件顯示設(shè)備中。
10.按照權(quán)利要求9的系統(tǒng),其特點(diǎn)在于,用于決定哪些所說(shuō)的硬件顯示設(shè)備是由所說(shuō)的接連的程序應(yīng)用所需的方法;用于從任意其它的所說(shuō)的許多程序應(yīng)用所使用的所說(shuō)的硬件顯示設(shè)備中撤回由所說(shuō)的接連的程序應(yīng)用所需的所說(shuō)的硬件顯示設(shè)備的存取的方法;並且用于對(duì)所說(shuō)的接連的程序應(yīng)用授于對(duì)所說(shuō)的所需的硬件顯示設(shè)備的存取的方法。
11.按照權(quán)利要求10的系統(tǒng),其特點(diǎn)在于,為了決定用于提供一個(gè)機(jī)構(gòu)的構(gòu)成方法的所說(shuō)的方法可以查詢關(guān)于哪些所說(shuō)的硬件顯示設(shè)備必須被撤回。通過(guò)上述機(jī)構(gòu),所說(shuō)的程序應(yīng)用普遍存取由所說(shuō)的接連的程序應(yīng)用所需的至少為一個(gè)的所說(shuō)的硬件顯示設(shè)備。
12.通過(guò)執(zhí)行單個(gè)的移動(dòng)操作,將活動(dòng)中心從第一個(gè)程序應(yīng)用移到下一接連的程序應(yīng)用的系統(tǒng),所說(shuō)的系統(tǒng)其特點(diǎn)在于許多硬件顯示設(shè)備;許多所說(shuō)的程序應(yīng)用,至少一個(gè)所說(shuō)的程序應(yīng)用能直接寫(xiě)到至少為二個(gè)的所說(shuō)的許多硬件設(shè)備中;許多虛擬終端,每個(gè)所說(shuō)的虛擬終端與特定的一個(gè)所說(shuō)的程序應(yīng)用有關(guān)並且直接對(duì)應(yīng)于一個(gè)所說(shuō)的硬件顯示設(shè)備;用于指定與特定的一個(gè)所說(shuō)的應(yīng)用有關(guān)的除了一個(gè)以外的所有所說(shuō)的虛擬終端為不參與所說(shuō)的移動(dòng)操作的方法;用于決定哪些所說(shuō)的硬件顯示設(shè)備是由所說(shuō)的下一接連的程序應(yīng)用所需的方法;通過(guò)一個(gè)機(jī)構(gòu),所說(shuō)的程序應(yīng)用普遍存取由所說(shuō)的下一接連的程序應(yīng)用所需的至少為一個(gè)所說(shuō)的硬件顯示設(shè)備,該機(jī)構(gòu)可以查詢關(guān)于哪些所說(shuō)的硬件顯示設(shè)備必須被撤回;並且用于起動(dòng)所說(shuō)的移動(dòng)操作以致于忽略所有所說(shuō)的接連的不參與的虛擬終端的方法。
13.在虛擬終端環(huán)境中,將活動(dòng)中心從第一個(gè)多道處理的程序應(yīng)用移到接連的程序應(yīng)用的方法,所說(shuō)的方法的特點(diǎn)在下列步驟中指定與特定的一個(gè)所說(shuō)的程序應(yīng)用有關(guān)的除了一個(gè)以外的所有所說(shuō)的虛擬終端為不參與任意的移動(dòng)操作;並且起動(dòng)單個(gè)移動(dòng)操作以致于忽略與所說(shuō)的接連的程序應(yīng)用有關(guān)的所有所說(shuō)的不參與的虛擬終端。
14.按照權(quán)利要求13的方法,其特點(diǎn)在于,對(duì)于每個(gè)所說(shuō)的多道處理程序應(yīng)用,繼續(xù)所說(shuō)的移動(dòng)操作的步驟。
全文摘要
本發(fā)明提供了在虛擬終端環(huán)境下的多個(gè)程序應(yīng)用之間移動(dòng)活動(dòng)中心的方法,以致于使用單個(gè)熱鍵操作使下一個(gè)接連的應(yīng)用總是成為可見(jiàn)的并能與用戶會(huì)話的。在本發(fā)明的系統(tǒng)中提供了多個(gè)應(yīng)用,其中至少有一個(gè)可以直接寫(xiě)到多個(gè)硬件顯示設(shè)備中。此外,打開(kāi)了許多虛擬終端,每一個(gè)虛擬終端與一個(gè)特定的程序應(yīng)用有關(guān)并且對(duì)應(yīng)于一個(gè)硬件顯示設(shè)備。除了一個(gè)以外的所有與單個(gè)應(yīng)用有關(guān)的虛擬終端被指定為“不參與”任意的熱鍵操作。
文檔編號(hào)G06F9/06GK1060545SQ9110047
公開(kāi)日1992年4月22日 申請(qǐng)日期1991年1月24日 優(yōu)先權(quán)日1990年2月1日
發(fā)明者哈里什·錢(qián)德?tīng)枴ぐ⒏窭郀? 理查德·利·沃伯格 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司