多核、虛擬化、多操作系統的軟件趨勢
將原本分散的多處理器系統整合為單一多核系統并不能通過(guò)簡(jiǎn)單地將多個(gè)系統簡(jiǎn)單地壓縮在一個(gè)多核系統中來(lái)實(shí)現。系統架構的變化使多個(gè)系統之間的并行運行和通信協(xié)調方式發(fā)生了不小的變化。
本文引用地址:http://dyxdggzs.com/article/105985.htm在采用多核技術(shù)的時(shí)候,操作系統管理內核的基本方式有兩種:第一種是對稱(chēng)多處理(SMP),這是由一個(gè)操作系統來(lái)控制多個(gè)內核。只要有一個(gè)內核空閑可用,操作系統就在線(xiàn)程等待隊列中分配下一個(gè)線(xiàn)程給這個(gè)空閑內核來(lái)運行。第二種是非對稱(chēng)多處理(AMP),每個(gè)內核上都運行各自的操作系統。
因此,多核系統并不是直接把多個(gè)芯片的多處理器濃縮到單一芯片之中這么簡(jiǎn)單。實(shí)際上,多核系統和多處理器系統之間存在著(zhù)許多重要的區別,導致不能把多處理器系統上的軟件直接移植到多核系統上來(lái)。
多處理器系統和多核系統的主要區別之一就是,在多處理器系統中,CPU之間的界線(xiàn)是比較清晰的。在典型的多處理器情況下,多個(gè)CPU通過(guò)總線(xiàn)連接起來(lái),即便是共享外部存儲器,這些CPU基本上都是獨立運行的。在多核系統中,情況就有所不同。不論采用何種架構,在多核系統中,被共享的東西非常多,例如中斷控制器、外設以及Cache(高速緩存)等。
多操作系統下的Supervisor或Hypervisor
當你希望運行SMP(同構核)環(huán)境時(shí),多核系統的這種特征通常表現為一種優(yōu)勢,因為所有的內核都由同一個(gè)操作系統來(lái)管理。但是,當你要在多核系統中同時(shí)運行兩種以上的操作系統時(shí),例如同時(shí)運行一套RTOS(嵌入式實(shí)時(shí)操作系統)和一套通用操作系統,就會(huì )遇到較多的困難。在這種情況下,會(huì )有兩種選擇:第一,在兩個(gè)操作系統之間進(jìn)行頻繁的溝通,例如在它們之間建立主、從關(guān)系;第二,更簡(jiǎn)便的方法是采用Supervisor或者Hypervisor,這是一些少量的代碼,負責管理協(xié)調多個(gè)操作系統。顯然,第二種方式是更徹底、靈活、具有擴展性的多核軟件架構。
Hypervisor 之所以能夠有效地管理運行在其上的多個(gè)操作系統,得益于分區和虛擬化的方法??偟膩?lái)說(shuō),系統中有三類(lèi)資源可以被虛擬化:執行單元(CPU)、內存和設備。執行單元虛擬化是基于時(shí)間片來(lái)進(jìn)行。內存虛擬化是把物理內存劃分成許多區域。設備虛擬化則是通過(guò)給設備定義接口和API調用來(lái)提高使用靈活性和利用率。
Hypervisor并不是一個(gè)全新的概念,在服務(wù)器中早已得到廣泛而且成功的應用。不過(guò),嵌入式系統中經(jīng)常用到的Hypervisor主要是對內存和設備進(jìn)行虛擬化,以便在操作系統之間的資源共享得到完全的保證,而不是對執行單元進(jìn)行虛擬化。這種專(zhuān)用的Hypervisor比較小,而且直接運行在硬件上,不像服務(wù)器中用到的Hypervisor主要運行在完整的操作系統之上并且使用宿主操作系統的資源。
在嵌入式Hypervisor中,性能和獨立性是兩大最重要的需求,而后向兼容性(可以讓從屬操作系統不經(jīng)修改即可運行在宿主操作系統之上)是服務(wù)器Hypervisor中非常重要的需求。為了滿(mǎn)足嵌入式系統的特殊需求,這類(lèi)Hypervisor應當采用以下特殊設計:
•設備盡可能直接映射給從屬操作系統,以便獲得最高的性能,以及實(shí)現最佳的隔離性。
•應當具有更強的可伸縮性,可以自主選擇對哪些部分進(jìn)行虛擬化,也可以自主選擇虛擬化的目的是提高性能還是提高隔離性。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論