- ARM嵌入式系統開發完全入門與主流實踐
- 封景剛 吳寶江編著
- 2678字
- 2019-01-01 05:02:21
2.8 用戶界面
從用戶角度來看,操作系統更重要的是用戶界面。隨著計算機硬件技術的飛速發展,計算機的計算能力在應付普通應用方面顯得綽綽有余,這個時候,人們更關心的是人機交互的便易性、友好性等方面,并且用戶界面逐漸成為任何一種操作系統不可或缺的一部分。正因為如此,微軟的Windows操作系統盡管在性能方面無法和Linux相比,但是因為其用戶界面的易用性而繼續其對市場的壟斷。當然,這其中也有上層應用軟件的原因,不過,對一般性應用而言,Linux的上層應用已經足夠豐富,并且有快速增長的勢頭。
最開始的計算機用戶界面很容易讓人們聯想起控制板,上面有一些指示燈,還有一些按鈕,甚至會只有跳線,這樣的用戶界面只有專業人士才能應用自如。隨著計算機技術的發展,計算機的應用開始面向普通大眾,于是字符型用戶界面產生了。Linux的控制臺、DOS的命令提示符狀態等都是字符型用戶界面的典型代表。在字符型用戶界面中,界面的基本顯示單元是ASCII編碼的字符。當然,通過精細編程,字符型用戶界面也可以達到很好的交互。但是,由于基本顯示單元是字符,所以并不能得到靈活自然的效果。
圖形用戶界面的引入,使得計算機的交互能力得到顯著增強。在蘋果公司第一次引入圖形用戶界面的時候,人們因為它會消耗更多的計算機資源而為它的前途擔憂,但是在微軟公司的極力倡導下,圖形用戶界面技術得到了廣泛的應用和完善,各類圖形用戶界面層出不窮,而微軟公司也因為其采用了圖形用戶界面的Windows 95系統而開始登上操作系統領域的霸主地位。
人工智能技術的發展為計算機技術的進步不斷注入了新的活力,這也表現在計算機用戶界面上。語音識別、手寫輸入和Agent技術等為計算機用戶界面的友好性、易用性的增強開辟了新的途徑。可以預見,未來計算機用戶界面的進步將主要集中在智能化方面。
由于字符型用戶界面現在應用得越來越少,而且比較簡單,下面將集中講解圖形用戶界面和智能化用戶界面。
2.8.1 圖形用戶界面
圖形用戶界面(GUI)是迄今為止計算機系統中最為成熟的人機交互技術,一個好的圖形用戶界面的設計不僅要考慮到具體硬件環境的限制,而且還要考慮到用戶的喜好等。圖形用戶界面的引入主要是從用戶角度出發的,因此用戶自身的主觀感受對圖形用戶界面的評價占了很大比重,比如說易用性、直觀性、友好性等。另外從純技術的角度看,仍然也會有一些標準需要考慮,比如說跨平臺性、對硬件的要求等。在嵌入式系統的開發和應用中,我們所考慮的問題主要還是集中在圖形用戶界面對硬件的要求,以及對硬件類型的敏感性方面,在提供給用戶的最終界面方面只要簡單實用就夠了。
雖然不同的GUI系統因為其使用場合或服務目的的不同,具體實現互有差異,但是總結起來,一般在邏輯上可以分為以下幾個模塊(圖2-13):底層I/O設備驅動(顯示設備驅動、鼠標驅動、鍵盤驅動等)、基本圖形引擎(畫點、畫線、區域填充)、消息驅動機制、高層圖形引擎(畫窗口、畫按鈕),以及GUI應用程序接口(API)。另外,為了實現GUI系統,一般需要用到操作系統內核提供的功能,如線程機制、進程管理。當然,不可避免地需要用到內存管理、I/O管理,甚至還可能有文件管理。

圖2-13 GUI的一般架構
2.8.2 關鍵技術
1. 模塊化
計算機系統設計的一個大趨勢,就是系統設計的模塊化。模塊化的初衷就是實現外部調用與內部實現的分離,從而在帶來系統架構清晰化的同時,為系統的維護和改進也打下基礎。
上面提到的GUI的一般架構事實上就是從模塊化設計的思想出發對GUI體系結構進行邏輯上的劃分,諸如顯示驅動、鼠標驅動、鍵盤驅動等構成了GUI的硬件基礎。由于此類設備的多樣性,需要對其進行抽象,并提供給上層一個統一的調用接口,而各類設備驅動則自成一體,形成一個GUI設備管理模塊。當然,從操作系統內核的角度看,GUI設備管理模塊則是操作系統內核的I/O設備管理的一部分。
在GUI體系結構中,消息是一個非常重要的概念,它不僅是底層I/O硬件和GUI上層進行交互的基礎,同時也是各類GUI組件如窗口、按鈕等相互作用的重要媒介。一個GUI系統的消息驅動機制的效率對該系統的性能,尤其是對響應速度等性能的影響很大。基本圖形引擎模塊完成一些基本的圖形操作,諸如畫點、畫線、區域填充等,它直接和底層I/O設備打交道,同時,多線程或者多進程機制的引入也為基本圖形模塊的實現提供了很大的靈活性。
高級圖形引擎模塊在消息傳遞機制和基本圖形引擎的基礎上完成對諸如窗口、按鈕等的管理。GUI/API則是提供給最終程序員的編程接口,使得他們能夠利用GUI體系所提供的GUI高級功能快速開發GUI應用程序。
2. 消息驅動機制
任何一個GUI系統都會有相應的消息驅動機制,在某些GUI系統中,消息驅動也被稱為事件驅動。
在消息驅動的應用程序中,計算機外設發生的事件,如鍵盤擊鍵、鼠標摁鍵等都由系統收集,并將其以事先約定的格式翻譯成特定的消息。應用程序一般都包含有自己的消息隊列,系統將消息發送到應用程序的消息隊列中,應用程序可以建立一個消息處理循環,在這個循環中不斷地讀取消息并處理消息,直到有特定的消息傳來為止。圖2-14給出了消息驅動機制的一般流程。

圖2-14 消息驅動機制的一般流程
一般地,消息由一個整型的標識和一些附加參數組成。應用程序一般提供一個處理消息的標準函數,在消息循環中,系統可以調用此函數,應用程序再在此函數中處理相應的消息。
3. GUI系統移植
隨著計算機硬件的發展,各類GUI設備日益多樣化,GUI系統的跨平臺移植問題顯得日益突出。例如,單單顯示技術這一項,就有幀緩沖、VGA和SVGA等多種,而輸入技術也有鼠標、鍵盤、觸摸筆等。
為了盡可能地減少平臺移植的代價,模塊化技術得到了廣泛應用。通過模塊化技術可以將與硬件平臺相關的部分在GUI系統中單列成一個模塊,或者干脆就從GUI系統中獨立出來,成為操作系統核心的一部分。GUI系統的上層結構則是建立在一個抽象的與平臺無關的結構之上的,這樣的話,就可以使得GUI系統移植僅僅局限在與硬件平臺相關的部分上,這不僅能夠減少移植的代價,而且也能夠保護應用程序開發人員的利益,因為這樣他們利用上層GUI API開發的應用程序不用做修改就可以運行在不同硬件平臺上了。
4. GUI系統的微型化
GUI系統的微型化是在嵌入式系統開發中常常要遇到的。現在一般的GUI系統為了各方面的因素考慮,比如說為了程序員開發的便利性,常常會有很多冗余設計,這里所謂的冗余設計是指某些較高層次的API并非必須,而是可以由較低層的API組合而成的,GUI系統的微型化首先是拿這樣的API開刀把它們給裁減掉。另外需要注意的是,在某些具體應用中,可能使用到的API函數很少,可能只是一個完整GUI API系統的一個很小的子集。在這種情況下,雖然說為了滿足一般應用需要的API仍然很多,但是卻可以根據某些特定應用的需要只取一般API集合的一個小的子集,從而實現GUI系統的微型化。
- Hands-On Intelligent Agents with OpenAI Gym
- Big Data Analytics with Hadoop 3
- Hands-On Internet of Things with MQTT
- MCSA Windows Server 2016 Certification Guide:Exam 70-741
- 機器學習流水線實戰
- 21天學通Visual Basic
- 精通數據科學算法
- Dreamweaver CS6中文版多功能教材
- 嵌入式操作系統原理及應用
- PLC與變頻技術應用
- AVR單片機工程師是怎樣煉成的
- 電氣控制及Micro800 PLC程序設計
- 基于元胞自動機的人群疏散系統建模與分析
- Oracle Blockchain Quick Start Guide
- 多傳感器數據智能融合理論與應用