1. 程式人生 > >瀏覽器標籤頁用程序還是執行緒來實現?

瀏覽器標籤頁用程序還是執行緒來實現?

當IE和Firefox在瀏覽器市場激戰正酣時,Safari也加入了戰團。2008年,Chrome的出現,終於使Microsoft、Apple、Google和開源社群四股最大的技術推動力同時出現在這個市場上。

  Google Chrome相對於前輩做了一個獨特的創新,那就是它介面內的每個標籤頁(Tab)都是一個程序。而其它瀏覽器的每個標籤頁都是一個執行緒(這只是實際情況的抽象簡化,但此題只考慮簡化後的情況)。姑且稱Chrome為P型瀏覽器,其它瀏覽器為T型瀏覽器。請從安全性、健壯性和效能(包括速度和空間使用)三個方面對這兩種型別的瀏覽器進行比較分析,指出可能存在的異同,並說明判斷的依據。

安全性:相比於執行緒,程序之間是不共享資源和地址空間的,所以不會存在太多的安全問題,而由於多個執行緒共享著相同的地址空間和資源,所以會存線上程之間有可能會惡意修改或者獲取非授權資料的可能。

健壯性:由於多個執行緒共享同一個程序的地址空間和相關的資源, 所以當一個執行緒出現crash,那麼可能會導致相應的地址空間和資源會出現問題,從而導致其它的執行緒也crash。 當一個tab突然崩潰時,所有的tab都會崩潰,這時通常瀏覽器要重啟(重啟程序,重新生成執行緒)。而多程序則不存在這個問題, 因為不同的地址空間和資源, 當一個程序崩潰時, 並不會影響到其它程序。

效能:程序的安全性,健壯性是建立在獨立的地址空間和獨立的資源的條件下的, 所以程序的啟動,關閉,切換相比於執行緒會有更多的開銷。而這種開銷的差別在Windows下更加顯著。