應用程式執行模型(Application Model)
既有的計算模型辦不到嗎?舉例來說,一個應用的Server端使用Hadoop框架設計程式,它的終端設備使用Android框架設計程式,兩者使用Client-Server的方式進行資訊交換。
這樣的模型可以讓終端設備的使用者做更複雜的事,但是這樣的模型太不自由。
Server端的程式不能搬到另一群Server,終端設備的程式的程式不能換到另一套終端設備使用。
那麼所有裝置能不能共用一套框架呢?不能共用的原因是甚麼?
因為不同的裝置它們的硬體架構不同,軟體架構也偏重某一性能,應用程式的寫法也著重在發揮該裝置的特殊性能。
如果使用通用的框架,它們的特殊性能可能就無法發揮。
虛擬機器能不能解決這個問題呢?這是我們嘗試回答的問題。
LLVM是過去一個成功的例子,在執行時期進行程式碼的轉換,對應執行的平台進行最佳化。
能不能將部份計算的工作移轉到雲端計算,並且對應執行的平台進行最佳化?
最上層的程式,只是告訴機器要做什麼事,由虛擬機器轉換成怎麼做的程式碼。
最上層的程式要告訴機器到甚麼程度,才能交給虛擬機器完成最佳化?
太簡單,虛擬機器要轉換的工作就很多,可能多到不可能做到。
太詳細,虛擬機器轉換的彈性就很小,系統的性能就會被限制住。
應用程式工作的切割 (Task Partition in an Application)
這是一個很老的問題,在平行處理的領域已經被研究很多。
有多老?197x年,當電腦計算能力還弱到不行,數學家就已經為這個問題進行了許多分析與提供了許多想法。
Mobile Cloud 說穿了,也是平行計算的一種,只是這次的計算架構,一部份裝置相對弱到不行,另一部份裝置被假設強到不行。
中間又牽扯終端設備的電力問題與資料交換的網路頻寬問題。
當裝置性能不再對等,工作切割的問題是否變得不同?
工作的切割應該以甚麼樣的模型在 Mobile Cloud 的應用場合表現最佳?
應用程式狀態的同步 (State synchronization in an Application)
現代的計算模型,仍脫不了 計算-儲存-IO 的基本架構。
計算從一個平台轉移到另一個平台,除了計算到底能不能切割之外,另外就是儲存能不能有效率的搬移,
怎樣保持兩份儲存的內容即使不同,也要有方法能找出正確的內容?
這個問題也不年輕,在分散式檔案系統已經被研究很多。
分散式檔案系統是一個通用的儲存架構,問題的範圍較大。
當範圍縮小到特定的應用程式模型,狀態同步的問題是否變得不同?
存不存在一種應用程式模型,可以簡化狀態同步的問題? 比如 Forth 語言的純堆疊架構對於狀態轉移是不是比較容易?
如果不管應用程式模型,一群狀態的同步以甚麼樣的演算法,在 Mobile Cloud 的應用場合表現最佳?
應用程式的安全問題 (Security in an Application)
單一裝置的安全性,不論是終端設備或者是伺服器,過去的研究做過很多。
但在Mobile Cloud的模型下,有什麼攻擊行為的攻擊對象是雲端主機,但卻透過行動裝置傳染?
它可能的攻擊範圍有多大,有沒有辦法加以偵測與抑制?