tft每日頭條

 > 科技

 > cpu虛拟化的類型及代表

cpu虛拟化的類型及代表

科技 更新时间:2024-11-28 07:48:09

假設一個計算機隻有一個 CPU(現代計算機有更多),但是同時有多個進程,虛拟化要做的就是将這個 CPU 虛拟成多個 CPU 并分給每一個進程使用,這樣在每一個進程看來,他們都是在獨自占用 CPU,事實上隻有一個 CPU。

首先我們說一下時分共享(time sharing)CPU 技術,通過允許資源由一個實體使用一小段時間,然後由另一個實體使用一小段時間,如此下去。在這裡,資源可以是 CPU,網絡鍊接等。有時間當然就有空間,所以也就有空分共享,相信大家這時也可以理解這個概念了,例如磁盤,一旦将塊分配給文件,在文件删除之前,不可能将它再分配給别人。

對于實現時分共享有很多的挑戰,第一個就是性能(性能這個問題在任何時候都是非常重要的):如何在不增加系統開銷的情況下實現虛拟化。另外一個問題就是控制權:在運行程序時,要保留對 CUP 的使用權。操作系統需要掌控對 CPU 的控制,及時在運行程序時,不能讓程序肆無忌憚的使用 CPU,或者随意的訪問沒有權限的文件。綜上兩點,在保持控制權的同時獲得高性能,這是最大的挑戰。

接下來我們主要說一下“受限直接執行”這個機制。說白了,就是雖然程序直接運行在 CPU 上,但是是受限制的。這裡我們不得不提一種處理器模式:“用戶模式”與“内核模式”,在用戶模式下運行的代碼會受到限制,例如不能在用戶模式下發出 I/O 請求。内核模式相當于非常大的權限,運行的代碼可以做他想做的任何事,操作系統(或内核)就是在次模式下運行。所以我們的程序都是在用戶模式下運行,當程序有 I/O 請求時,是如何解決的呢?

參考書籍:操作系統導論

這個圖說的是操作系統啟動時,操作系統與硬件是如何處理中斷時鐘的。下面我們看一個進程切換的圖:

cpu虛拟化的類型及代表(操作系統如何實現)1

正如圖那樣,在兩個進程間的切換就是如此簡單:進程 A 正在運行,然後被中斷時鐘打斷。硬件保存寄存器并進入内核。在時鐘中斷處理程序中,操作系統決定從在運行的 A 進程切換到 B 進程。同時恢複寄存器進程 B,​然後切換上下文。具體來說就是通過改變棧指針來使用 B 的内核棧​。最後操作系統從陷阱返回,恢複 B 的寄存器并​運行。

是的,在兩個進程間就是這樣切換的,如果我們的操作系統最多隻支持同時運行兩個進程,那麼這個問題就不是問題了,但實際上,同時要運行的進程絕對不止兩個。所以,最主要的問題出現了,如何​調度這麼多的進程呢?也就是說,我們需要一個算法,這個算法在操作系統中,可以高效并穩定而且安全更加公平的調度進程​,從而達到對用戶而言,多個進程在同時進行。著名的算法有幾個,下一篇文章我們繼續聊​。​(碼字不易,感謝閱讀)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved