前幾篇請參考php
最近涉及到黑蘋果的事情比較多,順便就一塊兒補課,解決一下基礎內容。html
ACPI 是 Hewlett-Packard, Intel, Microsoft, Phoenix 和 Toshiba 共同制定的一個開放的行業規範。是 The Advanced Configuration and Power Interface 的縮寫,也就是「電源管理模式和配置管理的接口規範」。從名字能夠看出主要是「電源管理」和「配置管理」。是 BIOS 的一個高級功能模塊。linux
它幫助操做系統合理控制和分配計算機硬件設備的電量,有了ACPI,操做系統能夠根據設備實際狀況,根據須要把不一樣的硬件設備關閉。如Win7或者Win8系統,系統睡眠時,系統把當前信息儲存在內存中,只保留內存等幾個關鍵部件硬件的通電,使計算機處在高度節電狀態。固然這只是它功能中的不多一部分。git
它主要涵蓋的功能包括:程序員
在計算機應用平臺,ACPI 愈來愈重要。ACPI由不少表組成,包括:RSDP,SDTH,RSDT,FADT,FACS,DSDT,SSDT,MADT,SBST,XSDT,ECDT,SLIT,SRAT。其中DSDT就是它的一個重要的描述表。github
DSDT 是 The Differentiated System Description Table 的簡寫。字面上就能夠知道它是一個描述系統不一樣信息的表。它包含了全部除基本系統之外全部不一樣設備的信息,也就是每臺計算機設備的基本系統是相同的,而不相同的設備用 DSDT 來描述。DSDT 表代碼爲 ACPI Machine Language (AML)。ubuntu
DSDT 包含了全部和基本系統(basesystem)不一樣的設備的信息,basesystem 每臺機器都是同樣的,這個是在 acpispec 裏指定的,可是每臺機器都是不相同的,因此不相同的設備大都是由 DSDT 表來描述。它包含了不少AML代碼。大多數 BIOS 是針對 windows 開發的,而 windows 本身也不徹底遵循 acpi 規範,因此由於 BIOS 的 bug,這些代碼自己可能有錯,致使其餘的系統,如 linux,mac os 出錯。windows
Mac OS X不完整支持ACPI規範,僅支持它的子集DSDT。bash
ACPI SSDT 是 Secondary System Descriptor Table 的縮寫,它也是ACPI的描述表,包含了額外的AML信息,能夠用來和硬件交互。用來定義的語言也是AML代碼,和DSDT同樣,一般SSDT是DSDT的補充。ide
由於OS X 能夠依賴於mac使用的特定的ACPI對象名稱,一個常見的補丁是在原始ACPI集合中重命名一個對象。例如,大多數PC筆記本電腦使用GFX0來表示集成的 Intel GPU 對象(Intel HD Graphics)。在OS X中,除非該設備被命名爲IGPU,不然不會啓用英特爾圖形的電源管理。使用靜態補丁,咱們應用「Rename IGPU to GFX0」來重命名這個對象,補丁必須應用到DSDT和全部引用它的SSDTs。
上次咱們修改的就是經過這個方法解決7m核顯的問題,從新命名的補丁將是
Comment: Rename GFX0 to IGPU
Find: <4746 5830>
Replace: <4947 5055>
複製代碼
查找和替換的十六進制值分別是 GFX0 和 IGPU 的 ASCII碼,其實能夠用下面的代碼解釋一下:
u430:~ RehabMan$ echo -n GFX0|xxd
0000000: 4746 5830 GFX0
u430:~ RehabMan$ echo -n IGPU|xxd
0000000: 4947 5055 IGPU
複製代碼