硬科技:為何x86的虛擬化這麼難搞(上)

2020.03.09 08:00AM
照片中提到了應用程式、老子要記憶體!、耶!夠用了!,包含了標牌、英特爾、中央處理器、犯罪記錄、脆弱性

筆者常常不小心用注音輸入法打成「淫笑卡」的音效卡,沒事就被寫成「噓你話」的虛擬化(Virtaulization),是一個涵蓋範圍甚廣甚至無所不在的技術名詞,從個人電腦玩家琅琅上口的硬體虛擬化,一路到程式設計師耳孰能詳的應用程式介面(API, Application Programming Interface),都是虛擬化的應用範圍。

先了解一下維基百科對於虛擬化的定義:

在計算機技術中,虛擬化或虛擬技術(Virtualization)是一種資源管理技術,是將電腦的各種實體資源(CPU、記憶體、磁碟空間、網路適配器等),予以抽象、轉換後呈現出來並可供分割、組合為一個或多個電腦組態環境。由此,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些電腦硬體資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料儲存。

延伸閱讀:
書評-虛擬化技術的世界,遠比你想像的寬廣

但在了解虛擬化技術之前,應該要對真實世界的電腦具備完整的認知,特別是近代多工作業系統的概念以及「同時」執行多個應用程式的方式,這會讓各位科科更進一步的體認到「指令集架構」作為「電腦的基礎語言」和「軟體硬體之間的介面」的角色。

「系統核心模式」vs.「使用者模式」

兼具管理驅動程式與系統底層的「系統核心模式(Kernel Mode)」與負責應用程式執行的「使用者模式(User Mode)」,定義出2種最基本運作權限的「雙模式運作(Dual Mode)」是近代多工作業系統的基礎,保護系統檔案與共用資源,確保作業系統核心免於一般使用者的破壞與互相干擾,也是需要處理器提供相對應執行權限、系統管理指令、中斷例外處理流程與記憶體保護機制的地方。

照片中提到了Applications、Kernel、CPU,包含了Linux內核、Linux內核、核心、操作系統、的Linux

當科科按下電腦的電源鈕時,會發生以下的開機順序:

  • 處理器從唯讀記憶體(Boot ROM)擷取並執行系統自我檢測程式(POST,Power-On Self-Test)。
  • 從硬體或SSD等儲存媒介讀取作業系統載入器(OS Loader)。
  • 將作業系統核心(Kernel)載入到記憶體。
  • 開始在系統核心模式(Kernel Mode)執行作業系統核心。
  • 陸續載入裝置驅動程式(Device Driver),直到可完全運行電腦的基本功能。
  • 進入執行階段(Runtime)後,作業系統啟動使用者模式(User Mode),載入與執行應用程式。

照片中提到了按下電源鈕、從開機用唯讀記憶體擷取、執行POST、( Power On Self-Test ),包含了圖、線、角度、點、字形

應用程式透過「例外、設陷、系統呼叫」要求資源

可能影響系統底層「動搖國本」的處理器指令,都應定義為只能在系統核心模式執行的「特權指令(Privileged Instruction),處理器僅允許這些指令在系統核心模式執行。

假如應用程式需要硬體資源,例如要求增加可使用的主記憶體容量,需要執行系統特權指令,那就會觸發處理器的例外處理機制(Exception Handling),由作業系統的設陷(Trap,或稱為軟體中斷)決定是否執行該指令,如同意,就啟動系統呼叫(System Call)要求作業系統核心進行分配,讓處理器轉而執行相對應的系統程式碼,分配更多的記憶體容量。執行結束後,再恢復執行該應用程式。當應用程式需要存取某硬體裝置,也是透過系統呼叫,讓處理器載入適當的裝置驅動程式,完成後,再讓處理器回到之前的狀態。

多工作業系統也是基於相同的原理,以x86指令集為例,作業系統的應用程式執行狀態、相關資訊與程式用到的暫存器資料,都會紀錄成工作狀態節區(TSS,Task State Segment)資料結構,x86處理器藉由反覆載入、回存TSS的「Context Switch」以實現「分身」多工能力,而多工作業系統就是最常見的虛擬化應用。

照片中提到了TSS (Task-State Segment)、LDT Segment Selector、GS,包含了音樂、亞馬遜網、齊納二極管、1N4763A二極管NTE Electronics、亞馬遜音樂

但支撐多工作業系統的條件可不簡單,尤其處理器廠商需要絞盡腦汁設法滿足作業系統廠商的需求。為何MS-DOS沒辦法多工?就因為8086沒有雙模式可用,難以隔離,隨便一個應用程式都可能毀掉作業系統。這也是x86指令集歷代演進中最重要的一環,沒有之一。繼續閱讀:硬科技:為何x86的虛擬化這麼難搞(中)

照片中提到了Ring 3、Ring 2、Least privileged,包含了仁環、保護圈、操作系統、電腦安全、網絡攻擊

3 則回應

  • 現在反而是MAC上,虛擬x86做的最好
    2020-03-09
    • 我不太相信,有相關技術文章嗎!?
      2020-03-27
  • 期待下一篇,這篇只有摸到邊邊啊,流口水。
    2020-03-09