專利名稱:Java操作系統(tǒng)中虛擬設(shè)備的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及輸入輸出設(shè)備處理技術(shù),特別是涉及一種Java操作系統(tǒng)中虛擬設(shè)備的實(shí)現(xiàn)方法。
背景技術(shù):
早期處理輸入、輸出設(shè)備采用脫機(jī)外圍設(shè)備操作,使用一臺(tái)外圍計(jì)算機(jī),它的功能是以最大速度從讀卡機(jī)上讀取信息并記錄到輸入磁盤上。然后,把包含有輸入信息的輸入磁盤人工移動(dòng)到主處理機(jī)上。在多道程序環(huán)境下,可讓作業(yè)從磁盤上讀取各自的數(shù)據(jù),運(yùn)行的結(jié)果信息寫入到輸出磁盤上。最后,把輸出磁盤移動(dòng)到另一臺(tái)外圍計(jì)算機(jī)上,其任務(wù)是以最大速度讀出信息并從打印機(jī)上輸出。完成上述輸入和輸出任務(wù)的計(jì)算機(jī)叫外圍計(jì)算機(jī),因?yàn)樗贿M(jìn)行計(jì)算,只實(shí)現(xiàn)把信息從一臺(tái)外圍設(shè)備傳送另一臺(tái)外圍設(shè)備上。這種操作獨(dú)立于主機(jī)處理,而不在主處理機(jī)的直接控制下進(jìn)行,所以稱作脫機(jī)外圍設(shè)備操作。脫機(jī)外圍設(shè)備操作把獨(dú)占使用的設(shè)備轉(zhuǎn)化為可共享的設(shè)備,在一定程度上提高了效率。但卻帶來(lái)了若干新的問(wèn)題增加了外圍計(jì)算機(jī),不能充分發(fā)揮這些計(jì)算機(jī)的功效。
增加了操作員的手工操作,在主處理機(jī)手外圍處理機(jī)之間要來(lái)回援輸入輸出卷,這種手工操作出錯(cuò)機(jī)會(huì)多,效率低。
不易實(shí)現(xiàn)優(yōu)先級(jí)調(diào)度,不同批次中的作業(yè)無(wú)法搭配運(yùn)行。
對(duì)于卡片輸入輸出機(jī)、行式打印機(jī)之類的設(shè)備采用靜態(tài)分配方式是不利于提高系統(tǒng)效率的。首先,占有這些設(shè)備的作業(yè)不能有效地充分利用它們。一臺(tái)設(shè)備在作業(yè)執(zhí)行期間,往往只有一部分,甚至很少一部分時(shí)間在工作,其余時(shí)間均處于空閑狀態(tài)。其次,這些設(shè)備分配給一個(gè)作業(yè)時(shí)后,再有申請(qǐng)這類設(shè)備的作業(yè)將被拒絕接受。例如,一個(gè)系統(tǒng)擁有兩臺(tái)卡片輸入機(jī),它就難于接受4個(gè)要求使用卡片輸入機(jī)的作業(yè)同時(shí)執(zhí)行,而占用卡片輸入機(jī)的作業(yè)卻又在占用的大部分時(shí)間里讓它閑著。另外,這類設(shè)備傳輸而大大延長(zhǎng)了作業(yè)的執(zhí)行時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種Java操作系統(tǒng)中虛擬設(shè)備的實(shí)現(xiàn)方法。
本發(fā)明解決其技術(shù)問(wèn)題采用的技術(shù)方案如下1)預(yù)輸入程序把一批由輸入設(shè)備輸入的作業(yè)組織在一起形成作業(yè)流,由預(yù)輸入程序?yàn)樽鳂I(yè)流中每個(gè)作業(yè)的建立一個(gè)作業(yè)信息表,并把這些作業(yè)信息表傳送到輸入井保存,以備作業(yè)執(zhí)行時(shí)使用;2)輸入井每個(gè)作業(yè)經(jīng)過(guò)預(yù)輸入程序處理后,生成一張作業(yè)信息表作業(yè)的基本信息。將這些作業(yè)信息表按按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸入井。輸入井中的作業(yè)可有四種狀態(tài)輸入狀態(tài) 預(yù)輸入程序啟動(dòng)了輸入機(jī)正在把該作業(yè)的信息傳輸?shù)捷斎刖?;收容狀態(tài) 該作業(yè)的信息已經(jīng)存放在輸入井中,但尚未被選中執(zhí)行;執(zhí)行狀態(tài) 作業(yè)已被選中并裝入內(nèi)存開(kāi)始執(zhí)行;完成狀態(tài) 作業(yè)已執(zhí)行結(jié)束,其執(zhí)行結(jié)果在輸出井中等待輸出;3)井管理程序井管理程序包括井管理讀程序和井管理寫程序,當(dāng)作業(yè)請(qǐng)求從輸入設(shè)備上讀文件信息時(shí),就把任務(wù)轉(zhuǎn)交給井管理讀程序,從輸入井讀出信息供用戶使用,當(dāng)作業(yè)請(qǐng)求從輸出設(shè)備上輸出結(jié)果時(shí),就把任務(wù)轉(zhuǎn)交給井管理寫程序,把產(chǎn)生的結(jié)果保存到輸出井中,作業(yè)調(diào)度程序調(diào)度作業(yè),當(dāng)前運(yùn)行作業(yè)調(diào)用井管理程序進(jìn)行輸入輸出井的管理;4)輸出井每個(gè)作業(yè)設(shè)置一張緩輸出表,用來(lái)登記該作業(yè)運(yùn)行后產(chǎn)生的結(jié)果文件,將這些作業(yè)信息表按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸出井,用于提供給緩輸出程序輸出到輸出設(shè)備上;5)緩輸出程序緩輸出程序負(fù)責(zé)查看輸出井中是否有待輸出的結(jié)果信息,若有,則啟動(dòng)輸出設(shè)備把作業(yè)的結(jié)果文件輸出到輸出設(shè)備。
本發(fā)明的有益效果是系統(tǒng)在輔助存儲(chǔ)器上開(kāi)辟了輸入井和輸出井。井是用作緩沖的存儲(chǔ)區(qū)域,采用井的技術(shù)能調(diào)節(jié)供求之間的矛盾,消除人工干預(yù)帶來(lái)的損失。采用虛擬設(shè)備處理系統(tǒng)的輸入輸出,對(duì)系統(tǒng)來(lái)說(shuō),從井中存取信息可以縮短信息的傳輸時(shí)間,從而加快作業(yè)的執(zhí)行。對(duì)用戶來(lái)說(shuō),只要保證信息的正確存取就行,至于信息是從井中存取還從獨(dú)占設(shè)備上存取無(wú)關(guān)緊要。由于磁盤是可共享的,因此從井中存取信息可以同時(shí)滿足多個(gè)用戶的讀寫要求,從而使每個(gè)用戶都感到有供自己獨(dú)立使用的輸入、輸出設(shè)備且速度與磁盤一樣快。虛擬設(shè)備的引入一方面提高了系統(tǒng)響應(yīng)速度,另一方面提高了并行處理的作業(yè)數(shù)。
附圖是虛擬設(shè)備流程圖。
具體實(shí)施例方式
在實(shí)施虛擬設(shè)備時(shí),具體方式如下1)預(yù)輸入程序把一批作業(yè)組織在一起形成作業(yè)流,由預(yù)輸入程序?yàn)樽鳂I(yè)流中每個(gè)作業(yè)的建立一個(gè)作業(yè)信息表,并把這些作業(yè)信息表傳送到輸入井保存,以備作業(yè)執(zhí)行時(shí)使用。
預(yù)輸入程序在工作過(guò)程中讀出和組織作業(yè)的信息,如作業(yè)名、優(yōu)先數(shù)、處理機(jī)運(yùn)行時(shí)間等,將獲得的作業(yè)信息以及預(yù)輸入表的位置登記入作業(yè)表。此后,依次讀入作業(yè)的信息,在輸入中井中尋找空閑塊存放,把讀入的信息以文件的形式登記到預(yù)輸入表中,直到預(yù)輸入結(jié)束。
2)輸入井每個(gè)作業(yè)經(jīng)過(guò)預(yù)輸入程序處理后,生成一張作業(yè)信息表作業(yè)的基本信息。將這些作業(yè)信息表按按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸入井。輸入井中的作業(yè)可有四種狀態(tài)輸入狀態(tài) 預(yù)輸入程序啟動(dòng)了輸入機(jī)正在把該作業(yè)的信息傳輸?shù)捷斎刖?;收容狀態(tài) 該作業(yè)的信息已經(jīng)存放在輸入井中,但尚未被選中執(zhí)行;執(zhí)行狀態(tài) 作業(yè)已被選中并裝入內(nèi)存開(kāi)始執(zhí)行;完成狀態(tài) 作業(yè)已執(zhí)行結(jié)束,其執(zhí)行結(jié)果在輸出井中等待輸出;井被劃分成等長(zhǎng)的物理塊,用于存放一個(gè)或多個(gè)邏輯記錄。采用兩種方式存放作業(yè)的數(shù)據(jù)信息。
第一種方式是連接方式,輸入的信息被組織成連接文件,文件的第一塊信息的位置登記在預(yù)輸入表中,以后各塊用指針連起來(lái),讀出n塊后,由連接指針就可找到第m+1塊數(shù)據(jù)的位置。這種方式的優(yōu)點(diǎn)是數(shù)據(jù)信息可以不連續(xù)存放,文件空間利用率高。
第二種是計(jì)算方式,假定從讀卡機(jī)上讀入信息并存放到磁放的井文件空間,每張卡片為80個(gè)字節(jié),每個(gè)磁道可存放100個(gè)80字節(jié)的記錄,若每個(gè)柱面有20個(gè)磁道,則一個(gè)柱面可以存放2000張卡片信息。如果把2000張卡片作為一疊存放在一個(gè)柱面上,于是輸入數(shù)據(jù)在磁盤上的位置為第一張卡片信息是0號(hào)磁道的第1個(gè)記錄,第二張卡片信息是0號(hào)第2個(gè)記錄,第101張卡片信息是1號(hào)磁道的第1個(gè)記錄,那么,第n張卡片信息被存放在磁道號(hào)=卡片號(hào)n/100記錄號(hào)=(卡片號(hào)n)mod 100用卡片號(hào)n除以100的整數(shù)和余數(shù)部分分別為其存放的磁道號(hào)和記錄號(hào)。
3)井管理程序井管理程序包括井管理讀程序和井管理寫程序。當(dāng)作業(yè)請(qǐng)求從輸入設(shè)備上讀文件信息時(shí),就把任務(wù)轉(zhuǎn)交給井管理讀程序,從輸入井讀出信息供用戶使用。當(dāng)作業(yè)請(qǐng)求從打印機(jī)上輸出結(jié)果時(shí),就把任務(wù)轉(zhuǎn)交給井管理寫程序,把產(chǎn)生的結(jié)果保存到輸出井中。
當(dāng)作業(yè)執(zhí)行過(guò)程中要求啟動(dòng)某臺(tái)設(shè)備進(jìn)行輸入或輸出操作時(shí),操作系統(tǒng)截獲這個(gè)要求并調(diào)出井管理程序控制從相應(yīng)輸入井讀取信息或?qū)⑿畔⑺椭凛敵鼍畠?nèi)。例如,作業(yè)J執(zhí)行中要求從它指定的設(shè)備上讀入某文件信息時(shí),井輸入管理程序根據(jù)文件名查看其預(yù)輸入表獲得文件起始盤地址,可以算出每欠讀請(qǐng)求所需的信息的存放位置。采用連接方式時(shí),每次保留連接指針,就可將后繼塊的信息讀入。當(dāng)輸入井中的信息被作業(yè)取出后,相應(yīng)的井區(qū)應(yīng)歸還。通過(guò)預(yù)輸入管理程序從輸入井讀入信息和通過(guò)設(shè)備管理從設(shè)備上輸入信息,對(duì)用戶而言是一樣的。
井管理程序處理輸出操作的過(guò)程與上述類似。用戶作業(yè)的輸出信息一律通過(guò)輸出井緩沖存放,有在輸出表中登記。緩輸出表的格式與預(yù)輸入表的格式類似,包括作業(yè)名、作業(yè)狀態(tài)、文件名、設(shè)備類、數(shù)據(jù)起始位置、數(shù)據(jù)當(dāng)前位置等項(xiàng)。在作業(yè)執(zhí)行當(dāng)中要求輸出數(shù)據(jù)時(shí),井輸出管理程序根據(jù)有關(guān)信息查看輸出表。如果表中沒(méi)有這個(gè)文件名,則為第一次請(qǐng)求輸出。文件的第一個(gè)信息塊的物理位置被填入起始位置,每塊信息寫入井區(qū)前可用計(jì)算法計(jì)算出塊號(hào)并將卡片數(shù)加1,或?qū)⒑罄^塊位置以連接方式寫入信息塊的連接字中,再寫到輸出井,并將下一次輸出時(shí)接受輸出信息的位置填入數(shù)據(jù)當(dāng)前位置。如果不是第一次請(qǐng)求輸出,則緩輸出表中已有登記,只要從數(shù)據(jù)當(dāng)前位置便可得到當(dāng)前輸出信息的井區(qū)。
4)輸出井每個(gè)作業(yè)設(shè)置一張緩輸出表,用來(lái)登記該作業(yè)運(yùn)行后產(chǎn)生的結(jié)果文件。將這些作業(yè)信息表按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸出井,用于提供給緩輸出程序輸出到輸出設(shè)備上;5)緩輸出程序緩輸出程序緩輸出程序負(fù)責(zé)查看輸出井中是否有待輸出的結(jié)果信息,若有,則啟動(dòng)輸出設(shè)備把作業(yè)的結(jié)果文件輸出當(dāng)計(jì)算機(jī)有空閑時(shí),Java操作系統(tǒng)調(diào)出緩輸出程序進(jìn)行緩輸出工作,它查看緩輸出表,將需要輸這些文件時(shí),根據(jù)需要組織作業(yè)和文件標(biāo)題,以及對(duì)從輸出井中讀出的信息進(jìn)行一定格式加工。當(dāng)一個(gè)作業(yè)的文件信息輸出完畢后,將它占用的井區(qū)回收以供其它作業(yè)使用。
實(shí)施例當(dāng)用戶提交了一批作業(yè)操作員鍵入預(yù)輸入命令啟動(dòng)預(yù)輸入程序工作。預(yù)輸入程序查看作業(yè)表中是否有空登記項(xiàng),若有空登記項(xiàng)則再檢查輸入井中是否有空閑空間,如果有空閑空間則可接納新的作業(yè)進(jìn)入輸入井。啟動(dòng)輸入機(jī)讀出并分析作業(yè)的標(biāo)識(shí)信息,把作業(yè)名,文件個(gè)數(shù)登記入作業(yè)表,且置成輸入狀態(tài)。接著依次讀出作業(yè)的文件信息,尋找輸入井中的空間存放這些信息,把它們組織成鏈接文件的形式登記到預(yù)輸入表中。直到該作業(yè)信息全部輸入,把作業(yè)狀態(tài)修改成收容狀態(tài),將預(yù)輸入表的位置填入作業(yè)表。當(dāng)作業(yè)流中還有后繼作業(yè)時(shí),預(yù)輸入程序繼續(xù)工作,只要能接納新作業(yè),就按上述過(guò)程把作業(yè)信息存入輸入井,直到輸入井的空間已占滿或作業(yè)表中無(wú)空登記項(xiàng)時(shí)就暫不能再接納新作業(yè)。當(dāng)不能接納新作業(yè)或當(dāng)前作業(yè)流中信息已全部進(jìn)入輸入井,則預(yù)輸入程序工作結(jié)束,當(dāng)需要時(shí)可再次啟動(dòng)預(yù)輸入程序工作。當(dāng)主存儲(chǔ)器中可以裝入作業(yè)時(shí),就從輸入井中選擇處于收容狀態(tài)的作業(yè)執(zhí)行,被選中的作業(yè)其狀態(tài)應(yīng)改為執(zhí)行狀態(tài)。作業(yè)執(zhí)行過(guò)程中要求啟動(dòng)輸入機(jī)讀文件時(shí),系統(tǒng)并不實(shí)際地啟動(dòng)輸入機(jī),而是調(diào)出井管理讀程序工作,根據(jù)作業(yè)名先找到該作業(yè)的預(yù)輸入表,再根據(jù)文件名可從預(yù)輸入表中得到文件存放的起始位置,沿著鏈接指針可依次讀出存放在輸入井中的文件信息。在這里,井管理讀程序模擬從輸入機(jī)讀文件的工作。由于輸入機(jī)把讀出的信息傳送給作業(yè)后就不再保留已讀出的信息,所以,井管理讀程序從輸入井讀出文件信息后也不必保留該信息。于是,當(dāng)文件信息傳送給作業(yè)后,應(yīng)把文件占用輸入井的存儲(chǔ)空間歸還,歸還后的空間可以用來(lái)存放其他的文件。作業(yè)執(zhí)行中要求啟動(dòng)打印機(jī)輸出結(jié)果時(shí),系統(tǒng)也不實(shí)際地啟動(dòng)打印機(jī),而是調(diào)出井管理寫程序工作。首先根據(jù)作業(yè)名找到緩輸出表,同時(shí)查找輸出井中的空閑空間,把結(jié)果信息組織成鏈接文件存入輸出井,并在緩輸出表中登記。作業(yè)執(zhí)行結(jié)束后,把作業(yè)狀態(tài)修改成完成狀態(tài)。當(dāng)處理器空閑時(shí)緩輸出程序可以占用處理器,緩輸出程序查看作業(yè)表,找出處于完成狀態(tài)的作業(yè),再查看相應(yīng)的緩輸出表得到結(jié)果文件的存放位置,讀出文件信息并把它們轉(zhuǎn)換成符合打印要求的格式,然后啟動(dòng)打印機(jī)將其打印輸出。文件信息被打印輸出后,文件占用輸出井的存儲(chǔ)空間應(yīng)歸還。一個(gè)作業(yè)結(jié)果文件均被輸出后,應(yīng)將其在作業(yè)表中除名,相應(yīng)的登記項(xiàng)成為空登記項(xiàng),可以用來(lái)登記新進(jìn)入輸入井的作業(yè)。
權(quán)利要求
1.一種Java操作系統(tǒng)中虛擬設(shè)備的實(shí)現(xiàn)方法,其特征在于1)預(yù)輸入程序把一批由輸入設(shè)備輸入的作業(yè)組織在一起形成作業(yè)流,由預(yù)輸入程序?yàn)樽鳂I(yè)流中每個(gè)作業(yè)的建立一個(gè)作業(yè)信息表,并把這些作業(yè)信息表傳送到輸入井保存,以備作業(yè)執(zhí)行時(shí)使用;2)輸入井每個(gè)作業(yè)經(jīng)過(guò)預(yù)輸入程序處理后,生成一張作業(yè)信息表作業(yè)的基本信息。將這些作業(yè)信息表按按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸入井。輸入井中的作業(yè)可有四種狀態(tài)輸入狀態(tài)預(yù)輸入程序啟動(dòng)了輸入機(jī)正在把該作業(yè)的信息傳輸?shù)捷斎刖皇杖轄顟B(tài)該作業(yè)的信息已經(jīng)存放在輸入井中,但尚未被選中執(zhí)行;執(zhí)行狀態(tài)作業(yè)已被選中并裝入內(nèi)存開(kāi)始執(zhí)行;完成狀態(tài)作業(yè)已執(zhí)行結(jié)束,其執(zhí)行結(jié)果在輸出井中等待輸出;3)井管理程序井管理程序包括井管理讀程序和井管理寫程序,當(dāng)作業(yè)請(qǐng)求從輸入設(shè)備上讀文件信息時(shí),就把任務(wù)轉(zhuǎn)交給井管理讀程序,從輸入井讀出信息供用戶使用,當(dāng)作業(yè)請(qǐng)求從輸出設(shè)備上輸出結(jié)果時(shí),就把任務(wù)轉(zhuǎn)交給井管理寫程序,把產(chǎn)生的結(jié)果保存到輸出井中,作業(yè)調(diào)度程序調(diào)度作業(yè),當(dāng)前運(yùn)行作業(yè)調(diào)用井管理程序進(jìn)行輸入輸出井的管理;4)輸出井每個(gè)作業(yè)設(shè)置一張緩輸出表,用來(lái)登記該作業(yè)運(yùn)行后產(chǎn)生的結(jié)果文件,將這些作業(yè)信息表按鏈接結(jié)構(gòu)組織為隊(duì)列,形成輸出井,用于提供給緩輸出程序輸出到輸出設(shè)備上;5)緩輸出程序緩輸出程序負(fù)責(zé)查看輸出井中是否有待輸出的結(jié)果信息,若有,則啟動(dòng)輸出設(shè)備把作業(yè)的結(jié)果文件輸出到輸出設(shè)備。
全文摘要
本發(fā)明公開(kāi)了一種應(yīng)用于Java操作系統(tǒng)的虛擬設(shè)備的實(shí)現(xiàn)方法。在Java操作系統(tǒng)中,采用虛設(shè)備處理輸入、輸出設(shè)備,解決設(shè)備的獨(dú)占沖突以及設(shè)備冗余問(wèn)題,可以提高設(shè)備利用率并縮短單個(gè)程序的響應(yīng)時(shí)間,這有利于減少加鎖時(shí)系統(tǒng)的負(fù)載,又有利于方便用戶的操作,從整體上提高了Java操作系統(tǒng)的運(yùn)行速度,特別是在處理多道作業(yè)時(shí),能有效增加處理作業(yè)數(shù)目,提高系統(tǒng)運(yùn)行效率,本發(fā)明對(duì)嵌入式系統(tǒng)環(huán)境,尤其是面向嵌入式系統(tǒng)的Java操作系統(tǒng),有重大意義。
文檔編號(hào)G06F9/46GK1828540SQ20061005025
公開(kāi)日2006年9月6日 申請(qǐng)日期2006年4月7日 優(yōu)先權(quán)日2006年4月7日
發(fā)明者陳天洲, 戴紅軍, 黃彧 申請(qǐng)人:浙江大學(xué)