輸入子系統

輸入子系統通常是一個獨立的模組,由從作業系統讀數據的函式或子程式組成,處於詞法分析器的底層。把它同識別單詞的機構分隔開來,使程式的結構比較清晰。同時,也使產生的代碼更易於移植。分析程式中的大多數依賴於系統的操作都集中在輸入層。

簡介

在擬定了輸出子系統的設計方案後,系統設計人員即可著手設計輸入子系統。為了生產出用戶所規定的輸出產品,其中包括數據分析人員所要的輸出結果(例如數據分析人員所需的參考數據,如果這些參考數據必須利用數據處理系統來處理的話),就必須使數據處理系統能夠接受實現這兩個目的所需要的全部輸入。輸入予系統的主要設計目的便是為了實現這一點。

為了將各種必要的輸入編製成一份完整的清單,在討論輸入子系統的設計方法之前,我們有必要先對幾種信息源作一番考查。其中比較明顯的兩種信息源是用戶(和輸出子系統的設計方案)和數據分析人員。此外,系統設計人員還必須對各種有關的數據收集系統的性能規格進行研究,特別是這些系統所產生的數據結果的特徵。

列出了各種必要輸入的詳細表格後,即可開始實際設計。請參考下圖所示的輸入子系統模型圖,我們可以把該子系統的設計過程看作是這樣一種過程,它將一套記錄數據的媒體和格式通過處理變成另一套記錄數據的媒體和格式。前者是由各種數據收集系統直接產生的,後者則必須是非常便於分析子系統存取的。變換後的數據經過編目分類,存儲在一個或幾個系統資料庫中。這裡所說的資料庫是指利用單種格式存儲在單種記錄媒體中的數據集合。因為對典型的大容量遙感數據的存取能力是衡量數據處理系統總體有效性能的關鍵標誌,因此對輸入子系統中的資料庫提出規格要求是輸入子系統的設計重點。

構成

輸入子系統的實現需要滿足以下需求:

①輸入子系統要為每個輸入設備在/dev/目錄下生成一個設備檔案,以方便應用程式讀取指定輸入設備產生的事件。

②對於每一個輸入設備,在輸入子系統只需要實現其事件獲取即可,至於事件如何處理、如何到達設備檔案則不需要考慮。

③Linux輸入設備可以分為事件類(如USB滑鼠、USB鍵盤、觸控螢幕等)、MOUSE類(特指PS/2接口的輸入設備)、遊戲桿類3種,為這些輸入設備實現的設備檔案的接口必須有所差別。因此,輸入子系統需要為不同類型的輸入設備實現正確的設備檔案接口。

為實現這些目的,輸入子系統輸入通過以下部分實現:

設備驅動

為實現需求①,輸入子系統為每個輸入設備都實現一個設備驅動,如圖所示。每個設備驅動都可以動態註冊到輸入子系統,或從輸入子系統中註銷。

輸入子系統 輸入子系統

在給輸入設備編寫驅動程式時,需要為輸入設備實現一個設備驅動。設備驅動包含的設備信息有:

a.設備的匯流排類型、廠商、產品、版本號、名稱等身份信息;

b.設備可產生的事件類型;

c.各事件類型的分量。

當輸入設備發生輸入事件時。驅動程式要把輸人事件向輸入子系統報告。

Linux核心源碼為一些常用的輸入設備提供了驅動源碼。這些源碼分別在<drivers/input>目錄下的多個子目錄下,這些子目錄的內容如下表所列。

輸入子系統 輸入子系統

事件管理器

為實現目的①和③,輸入子系統為每種輸入設備類型都實現一個事件管理器。事件管理器管理自己類型下的所有輸入設備的設備驅動。每個事件管理器都可以動態註冊到輸入子系統,或從輸入子系統中註銷。

Linux的輸入設備主要分為事件類、MOUSE類、遊戲桿類型,所以核心源碼為這3種類型的輸入設備分別實現了evdev、mousedev、joydev事件管理器。輸入子系統的事件管理器和設備驅動的關係如下圖所示。

輸入子系統 輸入子系統

當一個設備驅動註冊到輸入子系統後。每個事件管理器都掃描這個設備驅動的身份信息,並用自身攜帶的輸入設備匹配列表和設備驅動的身份進行比較,以確定該設備驅動是否和自己匹配。若事件管理器檢測到和自己匹配的設備驅動,則會為該設備驅動生成設備檔案,如下圖所示。

輸入子系統 輸入子系統

事件管理器攜帶了一個file_operation類型的檔案操作列表。新生成的設備檔案的檔案I/O實現就是由這個檔案操作列表實現的,該檔案操作列表為設備檔案實現了open、close、read、ioctl、sync等調用。

事件管理器為每個設備檔案維護了一個輸入事件緩衝區,如下圖所示。

輸入子系統 輸入子系統

當設備驅動獲取到輸入設備的輸入事件後,就會向輸入子系統報告。輸入子系統會通知負責管理該設備驅動的事件管理器。事件管理器接到通知後,就把設備驅動提交的輸入事件複製到相應的緩衝區中。當進程通過輸入設備的設備檔案讀取輸入事件時,就在該緩衝區中讀取。若緩衝區沒有輸入事件讀取,則進程將一直等到設備驅動提交了輸入事件再讀取。

核心模組

輸入子系統使用了核心模組管理所有註冊的設備驅動和事件管理器。同時,核心模組為設備驅動和事件管理器提供了註冊/註銷函式。另外.事件管理器和設備驅動之間溝通也由核心模組提供橋樑。核心模組的實現檔案為<drivers/input/nput.c>。總的來說,設備驅動、核心模組、事件管理器構成了輸入子系統,整體框圖如下圖所示。

在線上數據輸入子系統的主要功能和特點

在線上數據輸入子系統(ODE),ODE是Online data entRy在線上數據輸入的縮寫,它是由ESA-IRS開發的提供用戶使用的輔助系統。它的功能較單一,結構也比較簡單。主要功能是:用戶可通過終端在線上將自己的數據存入ESA-IRS的汁算機系統。它也提供了對數據進行各種操作如增加、刪除的功能,並和其他文檔一樣可進行在線上的或脫機的顯示及列印。根據用戶需要,也可將用戶數據進行裝入、倒排等處理,生成如其他文獻庫一樣的在線上檢索文檔。IRS已用這種方式對它的用戶,或對每天每個用戶運行情況等進行了管理,建立了一系列ODE檔案,如ODE·USER,ODE LOG,在原始文獻在線上訂購系統中也用ODE方式建立了用戶地址文檔,供文獻提供者使用。

使用ODE系統的終端設備必須是TEL42型高速終端,或IRS開發的雙文字顯示終端EVRAB,EURAB終端畫畫分成兩個部分,一部分是歐洲語言(英、德,法、西文),另一部分為阿拉伯語。它的兩個畫面字元相當TEL42的—個畫面。TEL42終端是一個螢幕22行, 每行80字元, 共21X 80=1760字元,為ODE系統規定的—·個信息塊,也可稱一頁。ODE的操作基本以塊為單位。

ODE系統的內部數據組織有多種形式,對有共同格式的信息決,提供一種MASK手段,即將這種格式預先建好,並存在ODE系統的檔案中,需要時可調出使用,每個檔案最多可有10種MASK。如文獻型的數據組織,MASK即可包含篇名,作者,出版日期,機構,類型,來源,分類號,主題間,文摘等數據項名。如是人事檔案類型,·則可·為姓名姓別,年齡、工作單位、工資、工齡,專業等數據項名,這些數據項名就可做在一個MASK中成為MASK1,MASK2等等。並可在終端上編制簡單的程式來建立被保護的MASK,即使用該MASK時,游標可向前,或向後跳過規定的數據項名,只停在要輸入或更新的數據起始位上。

ODE數據的保密有兩種手段,一是檔案存取使用檔案所有者給定的檔案名稱,二是系統設立了讀鍵和寫鍵。檔案所有者可利用它們將檔案的讀或寫加密,使只有知道讀鍵的用戶才可以打開檔案得到顯示,也只有知道寫鍵的用戶才可以在線上輸入和修改數據。讀、寫鍵可隨時在線上修改。

相關詞條

熱門詞條

聯絡我們