多核下作業系統的設計怎麼學習?

時間 2021-05-14 14:49:02

1樓:Lele wei

cpu多核需要晶元支援硬體虛擬化,同時結合軟體虛擬化,以充分利用多核的效能。

汽車平台還有多核硬體虛擬化和軟體虛擬化的操作,可以讓smp上同時跑乙個/多個guest os和乙個rtos,以滿足汽車對實時性和其他非實時性任務的需求,可以參考下green hills的解決方案,能滿足可靠性和安全性的要去,在汽車電子平台領域應用廣泛。

2樓:老白Walt

比如說:

多cpu的cache coherency就是乙個大問題單核下的一些atomic操作到smp下不再是atomic了mutex, spinlock等concurrency的實現也都不一樣了,因為多核下是真正的並行執行

等等Symmetric Multi-Processing總之,對於UP,memory只對應乙個CPU,而同時只有乙個執行緒/irq在執行,但在SMP下memory對應多個cpu及多個執行緒,這就需要IC以及核心實現的時候要考慮到share memory競爭的問題,所以大部分的change都是鎖的概念

另外還有多個CPU跑不同OS的場景,未來在某些領域也是一種趨勢

3樓:

我僅就我了解的來說說。

多核與單核,其實區別沒有你想想的那麼大,單核是多核的一種情況,在core=1的時候你稱為單核,在core>1的時候你稱為多核。

對於中斷處理來說,比較早的時候,CPU處理中斷是進中斷->關中斷->處理中斷->開中斷->出中斷(沒寫保護現場等),對於比較早的時候的低效能單CPU來說,沒問題,這點可以參照51和STM32等微控制器。8051是我學過最經典的小小CPU了,它處理中斷的時候就是這樣的過程,然後STM32可是Cortex M3架構的哦,屬於很新的ARM了(06年左右出的),也是這麼處理的。

在多核CPU的情況下,不能因為乙個CPU進入某個中斷的話就在全域性遮蔽這個中斷,因為別的CPU還可以去響應中斷,單個cpu響應中斷的時候需要關中斷的話,關閉本地中斷就可以了。那麼多核的時候,響應中斷是有競爭呢,還是什麼別的關係?你可以看看linux下的/proc/interrupts,這個檔案記錄了自啟動至今cpu響應中斷情況的統計,乙個中斷發生時,往往有CPU-Affinity等引數,導致它去找CPU0,然後CPU0分出去中斷。

多核心排程的難度在哪?將來作業系統是否能夠實現頻率不夠,核心來湊?能否做到無腦堆核心就能達到高效能?

很簡單。假設有一家飯店,原本只有一名廚師。來了100個客人點了1000盆菜,顯然很多人要等很久才能吃上菜。聘請一位水平高超手腳麻利的廚師,要價很高,而且再麻利也不能5分鐘燒1000盆菜 但是,如果聘請1000名廚師,那麼就有可能可以在5分鐘內燒出1000盆菜。然而,現在有乙個客人,一日三餐都在這個飯...

如何安排作業系統的學習路線?

閒敲棋子 我覺得可以從以下幾個點慢慢開始吧 首先肯定是要會用,嘗試拿一台主機,自己動手裝系統,開始不一定要什麼定製,什麼高階的,裝好了就行,然後熟悉作業系統的基礎的功能,組織形式,基礎的命令,了解他的優缺點,學習一些簡單的系統管理的東西。然後,到這個階段,就看你想學作業系統哪個方面了,是運維?開發?...

怎麼理解作業系統也是程式語言寫的。

落昔 在電腦科學領域,先有雞還是先有蛋的問題,是有一些有趣的理論的。最有名的例子就是,最被廣泛使用的的C語言的編譯器,GCC,本身就是由C來編寫的。bootstrap的本意是鞋子後跟上面幫你提腳後跟的帶子。圖源wikipedia 這是怎麼做到的呢?我怎麼在沒有C語言編譯器的情況下構建C語言編寫的GC...