• 沒有找到結果。

跨平台的探討

在文檔中 風格化使用者介面 (頁 36-41)

Configurable Operating System (eCos) 由 RedHat 所主導,其主要設計的概念 是將各個功能以模組化的方式讓系統設計者可依不同的需要加以設定,最後產生 一個符合特定目的所需的嵌入式作業系統。和一般作業系統不同的地方在於這種 可規劃式的模組方式,讓系統設計者只需替換不同的模組元件即可更換出不同的 需求。

eCos 支援相當多的硬體平台架構,目前包含 ARM, Hitachi H8300, Intel x86, MIPS, Matsushita AM3x, Motorola 68k, PowerPC, SuperH, SPARC 和 NEC V8xx 等等,而這些不同的硬體平台和各部份相關的程式庫架構在系統核心的硬 體抽象描述層(Hardware Abstraction Layer)。當系統設計者在開發各個不同硬 體平台時,只需以不同的模組元件來替代既可。

eCos 提供系統開發者許多的功能來開發在嵌入式系統上的應用,其核心包 括了各種排程的策略 (scheduling policies)、中斷的處理、同步的機制和執行 緒的控制等等。

在排程者 (scheduler) 的設計上,核心提供了 bitmap 和 multi-level

要是系統提供 32 個 priority queue 讓程式開發者使用,但每個 queue 只准許存 在一個執行緒;而 multi-level queue 則准許在相同的優先權下能在多個執行 緒。

在同步的機制上,核心提供了 mutex、condition variable、counting semaphore、mail box 和 event flag 五種不同的做法:mutex 可以讓不同的執行 緒安全的共用一個資源,condition variable 可以讓執行緒在某些修件下開始 執行,counting semaphore 可用來指示某特定事件的發生,mail box 允許事件 觸發時可交換資料,而 event flag 可使用來等待某些不同事件的觸發。

在中斷處理設計上,核心使用兩種層次 (two-level) 的方式。當中斷發生 時,中斷處理常式 (ISR) 會儘快的處理相關的設定然後結束讓系統核心繼續能 夠處理中斷的發生。而中斷處理常式只能處理少數的核心呼叫,如果中斷處理常 式偵測到一個 I/O 動作的完成,它就會呼叫等待的執行緒,由這個執行緒呼叫 相關的延遲中斷服務常式 (Deferred Service Routine) 來執行。利用這種兩層 次的方式避免核心程式在中斷發生時造成的同步問題。

另外,除了這些核心設計之外,eCos 也提供了在嵌入式環境上所需要的功 能,包括記憶體管理、驅動程式、例外處理及 ISO C 程式庫等等。而在整個開發 設計上 eCos 還提供一個開發環境介面讓設計者方便使用。圖 23 為 eCos 開發環 境介面執行的情形。

圖 23:eCos 開發環境介面執行的情形

5-3 Java Virtual Machine

在 JVM 相關的開放原始碼計劃中,除了本篇使用的 Kaffe 之外,還有一些計 劃在發展中,如 ElectricalFire、Jupiter、SableVM 等等。

ElectricalFire 是 Mozila 計劃下利用 Just-In-Time (JIT) 技術開發的 JVM。JIT 是將 Java 轉成機器碼執行來增加 Java 執行速度的一種方式,其基本 的運作方式是 Java 程式執行到之前未使用過的函式時,程式會暫停,直到編譯 器將 Java Class 的函式編譯成機器碼之後,再繼續執行。EletricalFire 大部 份是以 C++來實作,少數和平台相關的部份由組合語言來完成,目前支援的平台 包括 x86 Linux 和 Winodws。

Jupiter 是以模組化和具有擴展性的概念來實作 JVM,其主要是利用類似在 UNIX 下用 pipeline 來執行程式的想法,在定義好的介面之間,將各個模組串接

起執行。圖 24 是 Jupiter 的執行架構。

圖 24:Jupiter 執行架構 (來源:www.eecg.toronto.edu/~doylep/jupiter/) SableVM 是一個以 C 來實作 JVM 在 Linux 執行的研究計劃,其主要目的是希 望開發出一個有效率的 VM,在實作上提出以雙向物件配置 (bi-directional object instance layout) 的方式來增快記憶回收、並將虛擬機器的記憶體依不 同需求分成不一樣的區塊等來改進 JVM 的效能。圖 25 是 SableVM 的架構。

圖 25:SableVM 架構 (來源:www.sable.mcgill.ca)

5-4 模擬實作

我們利用狀態機 (state machine) 來模擬底層的平台機制如何上層的介面

環境如何達到同步的動作。基本上,我們將系統運作時分為三種狀態:第一種是 底層的系統在執行的狀態,如處理中斷等;第二種是正常狀態,表示系統在一般 的狀態下,任何程式皆可正常執行;第三種是鎖定狀態,如手機螢幕鎖定時的狀 態等。運作的流程大致如下:一般情形下系統執行在正常狀態,使用者可以任意 操作手機。當有任何事件發生,如對方來電等,系統這時切換到系統狀態處理相 關機制,處理完畢之後回到正常狀態。當使用者設定鎖定時,則切換到鎖定狀態,

這時使用者無法任意操作手機,直到使用者解除鎖定,系統則恢復到正常態。

在文檔中 風格化使用者介面 (頁 36-41)

相關文件