2010年四月八日,Apple宣佈iPhone OS 4.0支援”多工作業”,不過這個多工作業,卻不是一般的多工作業。 用Apple官方的說法:”iPhone OS 4’s new multitasking offers users a new way to quickly move between apps, and provides developers seven new multitasking services to easily add multitasking features to their apps.”(註)--iPhone OS 4的全新多工作業方法,能讓用家快速地從軟件之間切換,並為開發者提供七個多工的服務,讓開發者能加入多工作業特徵於它們的軟件裡。
對,細心一點看的話--這其實與真正的多工作業有點不同。但是,永遠有些傻兮兮的媒體斷章取義,看過標題,不明細節,就直接在文稿寫入--iPhone OS 4.0支援多工作業。
WHAT IS MULTI-TASKING?
究竟iPhone的多工作業有甚麼不同?簡單來說--它不是多工作業。
甚麼是多工作業呢?其實多工作業並不是真正的同時系統作業(特別是對於單核處理器而言),而是靠處理器在不同的應用程式下快速切換下的結果(註)。真正的多工作業,是需要取得作業系統的權限,讓軟件在退出後仍然可以調動處理器的執行緒(Threading)。
怎樣才是真正的多工作業?就是當你在玩Street Fighter 時,控制著RYU與KEN戰鬥時,突然有電話進入--當你使用電話的途中,你的RYU就會退到背景運作,然後就會被Ken海扁,吃KEN的昇龍烈破,然後當你談完2分鐘的電話回到Street Fighter時,你發現RYU早就被幹掉、或是遊戲老早就Time up了。
IPHONE’S MULTI-TASKING?
那iPhone的又有甚麼不同?有。一向以來,iPhone從來都不容許任何Apps取得iPhone OS的主導權限, 也不容任何Apps取得執行緒的控制權,所有的Apps都是在一個類似沙盒的空間上運作。這樣做法雖然不能讓Odin進行真正的多工作業,但它的最大好處是能防止任何不明來歷的軟件(包括病毒),靜靜地在iPhone背後運作、偷取資料、自我複製、甚至是大量佔用系統資源,以至拖跨整個系統。
同樣地,iPhone OS 4.0也不會把Apps的權限提升到可以在系統背景裡操控處理進程的程度--而是透過一些既有系統接口(API)分給第三方Apps,把這些App部份既有服務導入iPhone OS既有的背景服務之中。
- Background Audio:以往iPod App擁有獨有的接口,讓它可以進iPhone OS的背景中播放音樂,iPhone OS 4.0則把iPod的這個系統接口分給其它軟件。
- Background Location:GPS模組一向都可以在背景運作(MobileMe的Find You iPhone就是這樣運作),4.0只是把GPS系統接口讓給Papago等定位軟件,並同時使用Background Audio去協助你做Turn-by-turn定位而已。
- Push(Local) Notification/Voice IP:Push Notification(推送通知)這個不用說了,它早就是iPhone OS 3.0新增的背景運作系統,也有系統接讓Apps利用推送通知Notification製造一種假多工的效果。而Voice IP就是利用Push Notification和Background Audio配合而成的系統;而Local Notification就是Push Notification和Background Location的合體,對,也是上述系統的結合運作而已。
- Task Completion:Safari早就有背景下載的權限,現在只是利用系統接口接上第三方軟件,讓其它Apps都可以享有Safari一樣的背景上、下載權力。
- Fast App Switching:只是把退居背景的Apps變成睡眠狀態,並在不使用處理器的情況下凍結於記憶體裡,在需要時能快速回復工作狀態(類似Windows的Stand-by)。
透過上述系統接口的協助,Odin就可以在發Twitter的同時接聽Skype電話,也可以在玩遊戲的時候下載更新--情況就像”真正”的多工作業一樣。然而,為甚麼說iPhone OS 4.0不是真正的多工?
事實上,它並沒有破例地讓Apps在幕後執行(Exective),在背景的只有兩種:
1. 是服務(Services)而不是程序(Programs):只有音樂或GPS在運作,而不是Apps;
2. 是凍結了的程多而不是運行中的程序:在喚醒該程序之前,它是不會有任何動作的。
簡單來說,如果說真正的多工作業是當我們在接聽電話時,RYU就會被KEN海扁的話,那iPhone OS 4.0的多工就是當Odin接聽電話時,RYU和KEN都會被定格,KEN的昇龍烈破還在半空,被昇起的RYU還是一臉痛苦、被燒焦了的樣子,而計時表還可能是停在99秒--頂多是Street Fighter的背景音樂會繼續播放而已。
對,原來這些軟件退到背景後,並不會繼續運作--舉例說:Papago會在Odin去到不同的地方時,就會即時顯示該處的地圖,但是,當Papago退到背景時,軟件將不會顯示該處的地圖,直至Odin重啟你的Papago,它才會把你所身處位置的地圖讀取出來。所以,我們不能一邊看電子書,一邊把SIMCITY退到幕後來繼續儲蓄金錢時,;也不能一邊錄音/錄影的同時、一邊又發個SMS。原理上,它的運作與Android有點相似,但它把Android更徹底,因為iPhone基本上是沒有改變過目前的背景運作政策,仍然不容許第三方軟件在背景運作。
對,它只是把既有的服務優化而已,這就是iPhone OS 4.0的多工真相!
不過,雖然它不是真正多工,但會比真正多工要差嗎?不會。因為,差不多90%的多工作業都能在這個”偽多工”中完美地重現,剩下的10%也不是必須的。“偽多工”反而帶來甚麼好處?
- 沒有Apps在背景運作,就能減少處理器的使用負荷,不但能提高系統速度,也能避免系統超載而崩潰;
- 當系統低負荷時能確保沒有背景在同時運作,能進一步減少處理器的耗電量;
- 沒有軟件在背景偷偷的運作,能完全隔絕病毒、惡意軟件及蠕蟲的攻擊;