1. 程式人生 > >現代作業系統之輸入輸出(三)

現代作業系統之輸入輸出(三)

時鐘

時鐘硬體

時鐘又稱為定時器,時鐘負責維護實際,並且防止一個程序壟斷CPU,此外還有其它的功能。 計算機中有兩種型別的時鐘,一種是連線到110V或220V的電源線上,這樣每個電壓週期產生一箇中斷,頻率是50GHZ或60HZ。 另一種型別的時鐘由三部分組成:晶體振盪器,計數器和儲存暫存器。 可程式設計時鐘通常具有幾種操作模式——一次完成模式;方波模式(不停地迴圈),週期性產生的中斷是時鐘滴答。 可程式設計時鐘晶片通常與包含兩個或三個獨立的可程式設計時鐘,並且還具有許多其他選項。 大多數計算機都有一個電池供電的備份始終。

時鐘軟體

時鐘硬體的全部工作是根據已知的時間間隔產生中斷。 時鐘的第一個功能是維護日時間,唯一要小心的就是越界。 第二個功能則是防止程序超時執行。最精確的記賬方法就是每當一個程序啟動時,便啟動一個不同主席團定時器的輔助定時器。 程序可以請求作業系統在一定時間間隔之後向他們報警。警報通常是訊號,中斷,訊息或類似的東西。 如果時鐘驅動程式擁有足夠的時鐘,它就可以為每個請求設定一個單獨的時鐘。如果不是這樣的情況,就必須用物理時鐘來模擬多個虛擬實在。一種辦法是維護一張表。 作業系統的組成部分也需要設定定時器,這些定時器被成為監視定時器。軟盤在使用時是不旋轉的。當資料要從如哪怕讀出時,點選必須首先啟動。只有當軟盤以全速旋轉時,IO才可以開始。

軟定時器

一般而言,由兩種方法管理IO——中斷和輪詢。 中斷具有很短的等待時間,但是切換代價巨大。 軟定時器避免中斷。無論當核心因何種原因在執行時,在它返回到使用者態前,都要檢查實時時鐘以瞭解軟定時器是否到期。若到期,指向被排程的事件,而無需切換到核心態(因為已經在核心態) 如果軟定時器未出現預定事件,則可以安排一個時間最大值。 如果應用程式對於偶然的時間間隔能夠忍受美妙只有1000個數據包,那麼軟定時器和低頻硬體定時器的組合可能比純粹的中斷驅動IO或純粹的輪詢要好。

使用者介面:鍵盤,資料和監視器

輸入軟體

每當一個鍵被按下的時候都會產生一箇中斷,並且每當一個鍵被是否的時候還會產生第二個中斷。


鍵盤軟體

IO埠的數字是鍵編號,稱為掃描碼,而不是ASCII碼。鍵盤按鍵不超過128個,一年次只需7位表示鍵編號。 當鍵按下時,第8位置零,當鍵釋放時,第8位置1.跟蹤每個鍵的狀態是驅動的任務。 驅動程式可以斷定哪些鍵被按下而位釋放,儘管鍵盤介面將所有負擔都加在軟體之上,但是機器靈活。 鍵盤驅動程式可以採取兩週可能的處理方法——在第一種中,驅動程式的工作只是接受輸入並且不加修改的向上傳遞,這樣,從鍵盤讀資料的程式得到的是ASCII碼的原始序列。 第二種方法是鍵盤都懂程式處理全部行內編輯,並且只將校正後的行傳送給使用者程式。 第一種處理方法是面向字元的,第二種處理方法是面向行的。最初它們分別被稱為原始模式和加工模式。非規範模式與原始模式是等價的。 如果鍵盤處於規範模式,則字元必須儲存起來直到積累完整的一行,因為使用者隨後可能決定刪除一行中的一部分。即使鍵盤處於原始模式,程式也可能尚未請求輸入,所以字元必須緩衝起來。 可以用專用的緩衝區(有固定的限制)或從池中分配(無限制) 將使用者剛剛鍵入的資訊顯示在螢幕上稱為回顯。

滑鼠軟體

滑鼠僅僅指出位置的變化,而不是絕對位置本身。

輸出軟體

文字視窗

當輸出是連續的單一字型,大小和顏色的形式時,輸出比輸入簡單。 為了更為複雜的更新螢幕,大多數驅動沉痼支援一系列命令來移動游標,在游標處插入或刪除字元或行。這些命令常常被稱為轉義序列。

X視窗系統

當X在一臺機器執行時,從鍵盤或滑鼠採集輸入並且將輸出寫到螢幕上的軟體稱為X伺服器。他必須跟蹤當前選擇按個串列埠。這樣就知道新的鍵盤輸入傳送個給哪個X客戶,並從X客戶接受顯示命令。 X伺服器總是位於使用者的計算機內部,而X客戶有可能在緣分的遠端計算伺服器上。X伺服器的主要工作是在螢幕上顯示位,所以讓它靠近使用者。 在單機上或通過網路咋iUNIX上執行X串列埠系統都是可行的。 X只是一個視窗系統,而不是完全的GUI。要獲得完整的GUI,要在其上執行其他軟體層。 X提供了一個工具包,組成了本徵函式集。並以此為基礎可以構建GUI。 大多數應用程式利用的是對Motif的呼叫,而不是對Xlib的呼叫。 視窗管理不是X本身的組成部分。一個單獨的使用者程序稱為視窗管理器控制著螢幕上視窗的建立,刪除以及移動。為了管理視窗,視窗管理器要傳送命令到伺服器噶偶是它作甚,。礦口管理器經常執行在X客戶相同的機器上,但是理論上可以執行哎任何地方。 從程式到工作站大多數繪圖命令都是單項傳送的,不期望應答。其原因是傳送時間長,會降低執行速度。 事件匆匆工作站流向程式,通常是為了相應人的某些行為。存在許多類時間,但是傳送給一個沉痼的只有那些它宣傳願意處理的Windows事件。 事件是拍成佇列的,程式從佇列中讀取資料,而作業系統不會主動呼叫應用程式中的過程。 X的一個關鍵概念是資源,資源是一個儲存一定資訊的資料結構。次元可以在多個程序之間共享。圖形上下文將屬性和視窗,在概念上與Windows的裝置上下文相類似。 主迴圈由兩條語句構成,並且在邏輯上比Windows中對應的迴圈要簡單得多。第一個語句得一個事件,第二條語句對事件型別進行分配從而進行處理。

圖形化使用者介面

WIMP代表著視窗,圖示,選單和頂點裝置。 GUI軟體可以在使用者級程式碼中實現(如UNIX系統中做的那樣),也可以在作業系統中實現(Windows) GUI系統的輸入仍然使用鍵盤和滑鼠,但是輸出幾乎總是送往特殊的硬體電路板,稱為圖形介面卡。 Windows是面向訊息的。每個程式都有一個訊息佇列,與程式的所有視窗相關的訊息都被髮送到該佇列中。程式的主迴圈包括提取下一條資訊,並且通過呼叫針對該訊息型別的內部國產對其進行處理。在某些情況下,windows本身可以繞過訊息佇列而之間呼叫這些過程。 Windows由兩種方法可以讓一個程式做某些事情,一種方法是投遞一條訊息到訊息佇列,而另一種方法是傳送一調訊息到視窗,從而使Windows直接呼叫WndProc本身。

點陣圖

GDI過程是向量圖形學的實力。 每一個網個方塊的平均紅,綠,藍取值被取樣並且儲存為一個畫素的值。這樣的檔案被稱為點陣圖。 點陣圖具有一個問題是不能縮放。 Windows支援DIB(裝置無關點陣圖),副檔名bmp。在畫素之前具有檔案與資訊頭以及一個顏色表,這樣的資訊使得在不同的裝置直接移動點陣圖非常容易。

字型

TrueType字型不是點陣圖而是字元的輪廓。每個TrueType字元數通過圍繞其周界的一些列點來定義。