顧秀軍
南京交通技師學(xué)院
基于多線程的計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室的設(shè)計(jì)與實(shí)現(xiàn)
顧秀軍
南京交通技師學(xué)院
隨著社會(huì)經(jīng)濟(jì)的不斷發(fā)展,科學(xué)技術(shù)水平的不斷提高,計(jì)算機(jī)已經(jīng)成為了我們生產(chǎn)、生活和教育中不可缺少的一部分,隨著遠(yuǎn)程教學(xué)和世界各個(gè)研究機(jī)構(gòu)合作的不斷增加和多樣化,實(shí)驗(yàn)時(shí)通過虛擬技術(shù)來完成已經(jīng)是大勢(shì)所趨。本人在多線程的基礎(chǔ)上對(duì)計(jì)算機(jī)虛擬實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了一些研究和探索。
多線程計(jì)算機(jī)硬件;虛擬實(shí)驗(yàn)室;人機(jī)交互處理
虛擬實(shí)驗(yàn)室突破了時(shí)間和地點(diǎn)的限制,大大減輕了研究者的額外負(fù)擔(dān),還可以減少元件和設(shè)備的損耗,讓使用者克服實(shí)際計(jì)算機(jī)操作中硬件不能滿足實(shí)驗(yàn)的困難,所以一種計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室的設(shè)計(jì)和實(shí)現(xiàn)有著十分重要的意義。所以長(zhǎng)期以來我國(guó)科技研究人員始終致力于基于多線程的基選集硬件虛擬實(shí)驗(yàn)的研究。
要想實(shí)現(xiàn)計(jì)算機(jī)的多線程虛擬實(shí)驗(yàn)室,需要的主要部件有以下幾個(gè)。編碼器、譯碼器、虛擬內(nèi)存芯片數(shù)據(jù)庫,能夠生成數(shù)字信號(hào)的儀器,數(shù)字示波器等硬件構(gòu)成。這一套系統(tǒng)是一個(gè)虛擬的平臺(tái),其作用是組成一個(gè)虛擬電腦,把虛擬生成的電路芯片和CPU芯片整合在一起,按照具體的實(shí)驗(yàn)內(nèi)容,該系統(tǒng)是由四個(gè)模塊構(gòu)成:(1)圖形化編碼模塊。其主要功能是把取樣檢測(cè)的數(shù)據(jù)進(jìn)行圖形編碼處理,輸出顯示在虛擬顯示器上。(2)能夠檢測(cè)信號(hào)的模塊。該模塊的主要作用是對(duì)檢測(cè)點(diǎn)的生成信號(hào)進(jìn)行取樣,并對(duì)取得的數(shù)據(jù)進(jìn)行整理。(3)虛擬計(jì)算機(jī)仿真運(yùn)行模塊。其主要組成部分有虛擬主板芯片集、CPU、內(nèi)存、SCSI和IDE磁盤設(shè)備、端口以及顯示設(shè)備等,其主要仿真虛擬計(jì)算機(jī)在虛擬環(huán)境中運(yùn)行。(4)輸出模塊。其功能是把圖形化的編碼信息輸出。
模塊與模塊之間存在著一定的聯(lián)系,虛擬電腦運(yùn)轉(zhuǎn)時(shí),檢測(cè)信號(hào)的模塊也同時(shí)在運(yùn)轉(zhuǎn),并將檢測(cè)到的信號(hào)編碼輸出。檢測(cè)信號(hào)的模塊、虛擬計(jì)算機(jī)仿真運(yùn)行模塊、輸出模塊存在著串聯(lián)關(guān)系,即先進(jìn)行信號(hào)檢測(cè),將測(cè)到的信號(hào)進(jìn)行編碼,然后將編好的碼輸出,這三個(gè)模塊是一環(huán)套一環(huán),后續(xù)處理依賴于前面的數(shù)據(jù)。由于模塊之間存在搶占操作,數(shù)據(jù)之間還有相對(duì)應(yīng)的處理順序,所以必須虛擬電腦進(jìn)行運(yùn)行、編碼、數(shù)據(jù)加測(cè)和輸出并行操作,如若不然就會(huì)對(duì)實(shí)驗(yàn)環(huán)境的交互性產(chǎn)生很大的影響。所以解決虛擬實(shí)驗(yàn)室虛擬環(huán)境的并行操作是一個(gè)關(guān)鍵問題。
虛擬實(shí)驗(yàn)室可以調(diào)度的最小單位是線程,任何程序都可以用多個(gè)線程來完成,多個(gè)線程可以共用一個(gè)地址空間,這種方式可以讓線程之間的聯(lián)系簡(jiǎn)單高效。因此計(jì)算機(jī)操作系統(tǒng)可以利用線程時(shí)間片和優(yōu)先級(jí)別在線程之間進(jìn)行調(diào)度,就可以實(shí)現(xiàn)模塊并行工作。計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室使用數(shù)據(jù)緩沖的方法來保證模塊數(shù)據(jù)的同步。虛擬是實(shí)驗(yàn)室的各個(gè)模塊所占有的運(yùn)行時(shí)間各有不同,所以為了讓數(shù)據(jù)在模塊之間同步,對(duì)數(shù)據(jù)就必須進(jìn)行緩存,為此我們?cè)O(shè)計(jì)四個(gè)數(shù)據(jù)緩沖區(qū)存儲(chǔ)經(jīng)模塊處理之后的數(shù)據(jù)。(1)圖形化編碼緩沖區(qū)。這個(gè)的作用是存儲(chǔ)經(jīng)過檢測(cè)信號(hào)緩沖區(qū)圖形編碼后的數(shù)據(jù)。(2)信號(hào)檢測(cè)緩沖區(qū)。儲(chǔ)存監(jiān)測(cè)點(diǎn)的取樣信號(hào)。(3)顯示緩沖區(qū)。用于存貯虛擬示波器輸出的數(shù)據(jù)。(4)時(shí)序緩沖區(qū)。用于存儲(chǔ)虛擬計(jì)算機(jī)運(yùn)行時(shí)產(chǎn)生的時(shí)序信號(hào)。計(jì)算機(jī)虛擬實(shí)驗(yàn)室的各個(gè)模塊互相作用,其對(duì)數(shù)據(jù)緩沖區(qū)進(jìn)行共享但是又會(huì)搶占系統(tǒng)資源。為此我們就要設(shè)計(jì)一個(gè)線程作為輔助應(yīng)用到每一個(gè)模塊上面,通過線程來對(duì)共享的數(shù)據(jù)進(jìn)行協(xié)調(diào),然后再通過設(shè)定的優(yōu)先級(jí)別來讓線程并行運(yùn)行。
計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室內(nèi)的線程輔助存儲(chǔ)數(shù)據(jù)要進(jìn)行相應(yīng)的分析和處理,線程的等待運(yùn)行狀態(tài)和緩沖區(qū)的空滿狀態(tài)是緊密相連的。在取樣信號(hào)的緩沖區(qū)為空的時(shí)候,就應(yīng)該激活信號(hào)檢測(cè)線程來為取樣信號(hào)緩沖區(qū)記錄數(shù)據(jù),如果取樣信號(hào)緩沖區(qū)狀態(tài)為滿的時(shí)候,就應(yīng)該激活圖形化編碼中的線程,將其中的數(shù)據(jù)進(jìn)行整理和編碼處理。因此,為了各相對(duì)應(yīng)的線程能夠在緩沖區(qū)轉(zhuǎn)換狀態(tài)的時(shí)候處于激活狀態(tài),并對(duì)數(shù)據(jù)進(jìn)行處理,計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室采用“事件驅(qū)動(dòng)”來實(shí)現(xiàn)線程狀態(tài)的轉(zhuǎn)換。按照設(shè)置緩沖區(qū)的不同,操作系統(tǒng)會(huì)設(shè)置相應(yīng)的事件與之一一對(duì)應(yīng),觸發(fā)對(duì)應(yīng)線程的事件有如下過程:(1)用戶對(duì)主線程進(jìn)行指令操作的時(shí)候,如果時(shí)序緩沖區(qū)為空、則線程被激活,時(shí)序信號(hào)被傳到時(shí)序緩沖區(qū),并使?fàn)顟B(tài)變?yōu)闈M。當(dāng)信號(hào)被用戶輸出的時(shí)候,信號(hào)線程及檢測(cè)信號(hào)的線程就變?yōu)檫\(yùn)行。(2)當(dāng)時(shí)序緩沖區(qū)狀態(tài)為滿、取樣狀態(tài)為空,檢測(cè)信號(hào)的線程就被激活,緩沖區(qū)的信號(hào)就被傳輸?shù)饺拥却齾^(qū),傳過去之后,時(shí)序緩沖區(qū)變?yōu)榭?,取樣緩沖區(qū)變?yōu)闈M。(3)取樣緩沖區(qū)為滿,圖形編碼的信號(hào)緩沖區(qū)為空時(shí),同時(shí)現(xiàn)場(chǎng)可以運(yùn)行,在這種狀態(tài)下就需要激活圖形編碼線程,將數(shù)據(jù)編碼后傳到圖形編碼區(qū),這樣取樣緩沖區(qū)就為空,圖形編碼緩沖區(qū)的狀態(tài)為滿。主線程主要負(fù)責(zé)每個(gè)輔助線程并且對(duì)其優(yōu)先級(jí)進(jìn)行設(shè)置,一個(gè)線程如果用完了自己的時(shí)間配額時(shí),如果沒有其他優(yōu)先級(jí)線程,那么它將會(huì)重新獲得一個(gè)時(shí)間配額,繼續(xù)運(yùn)行,一旦由現(xiàn)成搶占,它將會(huì)排在優(yōu)先級(jí)的首位,在線程運(yùn)行的過程中要對(duì)主線程進(jìn)行實(shí)時(shí)監(jiān)控,時(shí)刻掌握它的運(yùn)行狀態(tài),并將它的標(biāo)志設(shè)置為“允許運(yùn)行”。
圖1 多線程進(jìn)程的模型
計(jì)算機(jī)虛擬實(shí)驗(yàn)室內(nèi)的模塊與數(shù)據(jù)之間的并行運(yùn)行,使系統(tǒng)的數(shù)據(jù)交換和仿真性得到極大的提高,同時(shí)也提高了系統(tǒng)的運(yùn)行效率,基于多線程的計(jì)算機(jī)硬件虛擬實(shí)驗(yàn)室設(shè)計(jì)的實(shí)現(xiàn),為計(jì)算機(jī)硬件實(shí)驗(yàn)工作提供了高度的仿真和交互的實(shí)驗(yàn)系統(tǒng)。
[1]夏明超,黃益莊,謝忻.THDS-100調(diào)度自動(dòng)化系統(tǒng)中多線程技術(shù)的應(yīng)用[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2001(3).
[2]盛羽,余進(jìn),陳松喬,王建新.基于CPU仿真器的匯編語言學(xué)習(xí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2010(6).
[3]李紅梅,王堅(jiān),李巍,趙丹,劉壯.基于Spring+Hibernate的開發(fā)方法及實(shí)例[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2008(6).
[4]趙曉平,張令彌,羅光坤.VC多線程編程在動(dòng)態(tài)測(cè)試系統(tǒng)中的實(shí)現(xiàn)[A].第九屆全國(guó)振動(dòng)理論及應(yīng)用學(xué)術(shù)會(huì)議論文集[C].2007.
[5]程建鋼,韓錫斌,趙淑莉,陳剛,馬勃民,楊超.清華教育在線網(wǎng)絡(luò)教育支撐平臺(tái)的研究與設(shè)計(jì)[J].中國(guó)遠(yuǎn)程教育,2002(5).
10.16767/j.cnki.10-1213/tu.2017.12.048