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

時鐘

時鐘硬件

時鐘又稱爲定時器,時鐘負責維護實際,並且防止一個進程壟斷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字符數通過圍繞其周界的一些列點來定義。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章