複製鏈接
請複製以下鏈接發送給好友

並行控制

鎖定
在計算機網絡中,由於有多個主機,因此,可以運行更多的用户進程。然而這些進程可能為一共享資源而競爭。為了解決這種競爭就必須首先對發出佔用此資源請求的進程進行排隊。根據排隊依次共享該資源。
當多個用户同時對數據庫進行查詢、更新等操作時,為保證這些並行操作的正確執行和保持數據庫的完整所實施的控制。
中文名
並行控制
外文名
concurrent control
應用領域
計算機等
具體應用
電視機、網絡等
目    的
對資源進行合理佔用分派
方    式
對發出佔用資源請求的進程排隊

並行控制簡介

計算機網絡中,由於有多個主機,因此,可以運行更多的用户進程。然而這些進程可能為一共享資源而競爭。為了解決這種競爭就必須首先對發出佔用此資源請求的進程進行排隊。根據排隊依次共享該資源。這就需要應用並行控制的辦法。 [1] 
其次,為了在網絡上實現並行控制,就必須使網絡上參與實現某一功能的所有進程皆能獲得與該功能相關的一致的系統狀態。並且不必訪問一個全網唯一的集中系統數據庫。所有描述全網系統狀態的信息均被保存在一個分佈式系統數據庫中,並且由所有參加實現系統功能的進程通過相互通訊來使全網系統的狀態保持一致。
系統數據庫可以是完全被分割的。也就是説,分佈在各個主機上的數據庫都只是系統數據庫的一部分。並且相互之間都不相同。
系統數據庫也可以多拷貝的形式分佈在多個主機上。
此外,還可以以部分多拷貝方式分佈在多個主機上。也就是説,每一主機上的數據庫都是系統數據庫的一部分,但這些部分之間有相重複的部分。

並行控制分佈數據庫的一致性

要實現並行控制,就必須保持系統數據庫多拷貝部分的一致性。因為只有這樣才能使網絡上各個進程通過系統數據庠所觀察到的狀態是一致的,也才談得上實現各相關進程之間的同步運行。
所渭分佈數據庫的一致性,實際上包含有兩方面的含義義。一是多拷貝之間的相互一致性,二是每一個數據庫拷貝內部的一致性。
所謂相互一致性就是説,這些多拷貝相互之間是相同的,但是,應當指出的是:在網絡上,由於通訊的延遲,因而要求每一時刻都能使這些多拷貝保持一致是很困難的。比較合理的要求是。在適當的訪問數據庫操作完成後,多個數據庫多拷貝之間應當保持一致。
分佈數據庫的內部一致性本身又有兩個方面的含義。
  • 1. 保持語義完整性的一致性。由於數據庫所反映的是客觀世界的某些事物。因此;數據席內部的數據之間常常存在着反映這些事物的關係(例如,在航空預約系統的數據麾庫中,每一航班的已訂機票數,未預定的機票數,及該航班的總座位數之間的關係是:該航班的總坐位數=已訂票數+未定的機票數),這就是所謂數據的語義完整性。因此,在數據庫上所進行的操作應當不要破壞這種語義的完整性。否則便不反映客觀實際情況。但是,要判斷那一種操作是否能保持語義的完整性,顯然與具體的應用有關。
  • 2. 在事務處理的調度中保持內部一致性。一個原子事務顯然可以保證數據庫內部的一致佳。這是因為原子事務就意味要麼完全不執行這個事務,要麼執行完這個事務,因此它不會破壞數據庫內部的一致性。但是,如果有多個事務在多個主機上都要對此數據庫進行庫操作,採用完全串行調度固然可以保證數據庫內部的一致性。但這會大大降低分佈系統的效率。為了提高效率可以讓多個並行事務相互穿插進行以便在效果上相當子多個原子事務串行執行。因此也就可以既保證多個事務並行運行,又保證了數據庫內部的一致性。可是,怎樣實行這種可串行化的多事務調度呢?應當謹慎行事,因為,如果調度不當,把讀在前和寫在後的操作順序改成為寫在前和讀後的順序,那就會造成數據庫內部的不一致。

並行控制並行控制

在並行控制中,單片機用數條輸出口線直接去控制步進電動機各相繞組的驅動線路。 [2]  很顯然,電機功率接口中不包含環形分配器,環形分配器的功能必須由單片機來完成。而單片機實現脈衝分配器的功能又有兩種方法,一種是純軟件方法,即全部用軟件來實現相序配,直接輸出各相導通或截止的信號。另一種方法是軟件與硬件結合的方法,下面分別以電視機為例予以介紹。

並行控制純軟件方法

在這種方法中,單片機輸出口直接與功率接口耦合,環形分配器的功能全部由軟件來完成。如圖1是其示意圖。8031的P1.0~P1.4 五條輸出線輸出相應的電機狀態:AB—ABC—BC—BCD—DC—CDE—DE—DEA—EA—EAB—AB,這稱為五相十拍運行狀態。這種純軟件方法,需要在內存ROM區域開闢一個存儲空間來存放這10種輸出狀態。
圖1 純軟件代替環形分配器 圖1 純軟件代替環形分配器
系統軟件按照電機正、反轉的要求,按正、反順序依次將狀態表的內容取出來並送至8031的輸出口。
例如,在程序存儲器OFFOH開始用lO個字節存儲五相反應式步進電動機的五相十拍工作狀態表,並設低電平導通,高電平截止,則存儲狀態表的地址內容如表。 [3] 
五相十拍狀態表 五相十拍狀態表
採用上述程序實現反轉,可省去狀態表中地址為0FFAH一1003H的部分,而且可以採用同一個計數器指針R0,在正轉任意步後接着反轉時,用不着為了避免亂步而調整指針的位置。
用純軟件方法代替脈衝分配器是比較靈活的。例如要求用8031的P1口輸出A、B、C、D四相脈衝,以控制四相混合式步進電機,則可採用更簡單的方法如下:
假定門口線為低電平時繞組通電,並用Pl口的P1.1、P1.3、P1.5、P1.7分別驅動A、B、C、D四相功率接口,則四相八拍的工作狀態可安排。

並行控制軟、硬件結合的方法

軟、硬件結合的方法可進一步減少單片機的工作時間佔用,更有利於實現多台步進電動機的聯動控制。如圖2是兩台步進電動機聯動控制系統的示意圖。在這種方法中,8031以P1.0~P1.3四條數據線接到多個EPROM的低四位地址線上,可選通每個EPROM的16個地址,也即16種狀態。EPROM的低位數據輸出線作為步進電動機A、B、C,D各相的控制線。EPROM作為一種解碼器,解碼器的輸人輸出關係可以設計得更加有利於微機控制。例如如下對應關係:
圖2 兩台步進電動機聯動控制系統 圖2 兩台步進電動機聯動控制系統
這種方法只需對計數器進行加1操作,然後送Pl口;環形分配器的功能不用主機負擔,不再需要串行控制中的延時,軟件開消減少。
Pl口的高位線,按線選法,選擇不同的EPROM,也即選擇不同的步進電動機。P1口高四位,最多可線選四台步進電動機聯動控制。分別選通1#和2#EPROM及相應的步進電動機。

並行控制步迸電動機開環變速控制

控制步進電動機的轉速,實際上就是控制轉換電機通電狀態的時間長短。有兩種基本方法,一種是軟件延時,另一種是定時器定時。
1.軟件延時方法
這種方法在每次轉換電機通電狀態(簡稱換向)後,調用一個延時子程序,待延時結束後,再次執行轉換狀態子程序。如此反覆使電機按某一確定轉速運轉。執行下面程序將控制電機正向連續旋轉。
2.定時器延時的方法
不同的單片機有不同數量的片載定時器/計數器。利用其中某個定時器,加載和溢出產生中斷信號,終止主程序的執行,轉向執行定時器中斷服務程序,來產生硬件延時的效果。若將電機換相子程序放在定時器中斷服務程序:之中,則定時器每中斷一次,電機就換相一次,從而實現對電機的速度控制。

並行控制並行控制結構

並行控制控制流與數據流

(1)控制流
控制流對我們來説是非常熟悉的模型, [4]  特別是以往的(yonNeumann型)逐次控制流是控制流的代表.在逐次控制流中,從當前指令轉入下面要執行的指令,是由程序計數器暗中進行控制的,換句話説,一條控制流由程序計數器進行暗中指示.當然,控制流也可由GOTO這樣的指令公開指示。
另一方面源用並行控制運算符可以實現並待控制流,也就是可以實現幾個控制流同時激活.並行控制流有FORK。運算符(控制分支指令)和JOIN運算符,(分支控制間取同步的指令)等等
(2)數據流
如前所述,在控制流中也能實現並行執行,但為了實現並行執行,操作員必須公開記述並行控制運算符.另一方面,從LSI轉向VLSI的器件技術的迅速發展,有可能實現驅動多台處理器.以此為背景,近年來展開了對數據流的研究.在數據流申,如果運算所需要的數據完全齊備,就可以執行運算(稱為發火).然後,運算結果被送到下一運算.也就是在數據流中,由所傳送的數據啓動運算,因此有時把數據流啓動運算稱為數據驅動.數據流的最大特點是不象控制流那樣,由並行控制運算符公開指示並行執行,而是根據依賴關係,能夠很自然地並行執行可以並行執行的處理.

並行控制數據流語言和數據流程圖

運算所需要的數據完全備齊時,就發火、執行運算,然後運算結果被送到下面的運算.這樣的數據流概念只有開發出數據流語言和數據流機器之後,才能成為現實。
用數據流語言記述的程序被編譯後,轉換成數據流程圖,能直接執行數據流程圖的機器就是數據流機器.本節介紹數據流語言和數據流程圖,關於數據流機器將在後面介紹。
(1)數據流語言
數據流語言的最大特點是單一代入規則.簡單地説,就是向某一變量代入的數值最多隻允許代入一個.下面用例子來加以説明。
在以前的程序設計語言中,允許象程序例1那樣代入,且經常使用.該代入的意義就是向為X保留的存儲單元寫或從該單元讀,也就是執行X:一5時,數值5被寫入存儲單元.執行x+1時,從X的存儲單元讀出數值5,並將其加1,其結果6再寫入為x保留的存儲單元.
但是,在數據流中沒有存儲單元的概念,所以不允許象程序例1那樣向變量代入兩次以上
也就是,在數據流語言中,變量並不是象以前的程序設計語言的變量那樣,表示存儲器的單元名,而是表示結果的結果名.這樣,對數據流來説,沒有存儲單元的概念,因此存在的問題是難於保留經歷的過程.
用數據流語言記述的程序被轉換成數據流程圖.
圖3 圖3
例如,表達式的數據流程圖如圖3所示.
用○符號圈起來的部分叫做節,連接節與節的有向線段叫做弧.從圖看出,節相當於運算,弧表示數據流.流入節的弧數是運算的操作數的個數.在這個例子中,全部運算均為兩個操作數,例如在e節中,當B的值與C的值都到達時就發火,並執行減法運算,其結果出現在輸出弧上.此外,同一級的節可以並行執行.
這裏應注意的是,在表達式中,沒有指明哪一部分同哪一部分可以執行並行執行.然而,可以知道,在該表達式被編譯後產生的數據流程圖中,運算所需要的數據備齊並在處理器有冗餘(這種場合為兩台微處理器)時,則可並行執行○節和e節。
也就是説,即使程序員沒有意識和明確指示可並行執行的部分,如果程序被轉換成數據流程圖,那麼從數據依賴關係就可以知道可並行執行的部分.換句話説,根據數據流就能自然地抽出程序中的並行性.

並行控制數據流的結構

從以免計算為理論基礎的函數型程序設計語言和數據流結構的研究開發過程,可以立刻發現兩者有親和性。例如,在函數型程序設計語言中有函數計算的獨立性,而在數據流結構中有通過備齊數據流中的輸入數據來啓動的運算獨立性,或在前者中有函數處理,而在後者中有運算間由於發出和接收數據所引起的運算間的依賴關係等等。
此外,對數據流結構來説,即使程序員沒有意識包含在算法中的並行性,也能以自然形式將它取出,所以可以推薦數據流結構作為面向Prolog的結構的一個有力補充。下面將介紹數據流結構的一般組成。
數據流結構的組成要素由處理部分和結構體存儲器兩種要素組成如圖4。
圖4 圖4
這兩種要素每一種的個數以及用什麼樣的網絡把它們的組成要素連接起來,要由體系結構專家來確定。
處理部分由隊列存儲器和運算部分組成一隊列存儲器控制數據排隊,如果發火所需要的數據備齊(也有到達一個數據就先發火的情況),就把這些數據和指令送給運算部件。
運算部件對數據執行指令,再將結果送給隊列存儲器.指令對結構體數據操作時,將指令與數據(實際上是結構體存儲器的指針)送入結構體存儲器。
對純數據流來説,數據本身在弧上流動,就會使結構體數據加長,所以直接讓它在弧上流動效率低.因此,引進了結構體存儲器來作為結構體數據的公共存儲器.結構體存儲器執行對結構體數據的存儲、管理、操怍。因此,弧上的數據分為兩種情況,一種情況t基數值本身,另一種情況是指示結構體存儲器的指針。
參考資料
  • 1.    王敬覺編著.計算機網絡操作系統:湖南大學出版社,1989:29
  • 2.    李鐵才.電視控制技術:哈爾濱工業大學出版社,2000:63
  • 3.    李仁定.電視的微機控制:李仁定 .電視的微機控制,1999:63
  • 4.    (日)淵一博 鈴木則久,微電子學講座7.程序設計語言與超大規模集成電路:科學出版社,1988年12月第1版:70