五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深究CPU 進入 IDLE 都做了啥?

2022-11-03 17:22 作者:補給站Linux內(nèi)核  | 我要投稿

cpuidle framework

每一個 CPU 核心都會有一個 idle 進程,idle 進程是當系統(tǒng)沒有調(diào)度 CPU 資源的時候,會進入 idle 進程,而 idle 進程的作用就是不使用 CPU,以此達到省電的目的。

在ARM64架構中,當CPU Idle時,會調(diào)用WFI指令(wait for interrupt),關掉CPU的Clock以便降低功耗,當有外設中斷觸發(fā)時,CPU又會恢復回來。

cpuidle core 是 cpuidle framework 的核心模塊,負責抽象出 cpuidle device、cpuidle driver 和 cpuidle governor 三個實體,如下所示:


cpuidle core 抽象出了 cpuidle device、cpuidle driver 和 cpuidle governor 三個數(shù)據(jù)結(jié)構。

數(shù)據(jù)結(jié)構

cpuidle_device

針對每個CPU核都對應一個struct cpuidle_device結(jié)構,主要字段介紹如下

對應的注冊接口是 cpuidle_register_device。


【文章福利】小編推薦自己的Linux內(nèi)核技術交流群:【891587639】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ? ?

cpuidle_driver

cpuidle driver用于驅(qū)動一個或多個CPU核,關鍵字段描述如下:

對應的注冊接口是 cpuidle_register_driver。

cpuidle_governor

governor 結(jié)構主要提供不同的回調(diào)函數(shù),最終由 menu_governor 填充,主要字段如下:

對應的注冊接口是 cpuidle_register_governor。

流程

我們先看下設備和驅(qū)動的注冊過程:


注冊之后便將設備和驅(qū)動建立起連接關系了,最終 cpuidle framework 的用戶便可通過接口來調(diào)用下層的接口,進而完成具體的硬件操作。

下面看下 CPU 進入 idle 狀態(tài)的流程圖:


可以看出,最終是通過 PSCI 來實現(xiàn) CPU 的 suspend。

PSCI

PSCI, Power State Coordination Interface,由ARM定義的電源管理接口規(guī)范,通常由Firmware來實現(xiàn),而Linux系統(tǒng)可以通過smc/hvc指令來進入不同的Exception Level,進而調(diào)用對應的實現(xiàn)。


PSCI 支持如下功能:

  • CPU hotplug (on/off)

  • CPU idle (suspend/resume)

  • System suspend/resume

  • System shutdown and reset

每個功能和ATF之間的調(diào)用接口如下所示:




深究CPU 進入 IDLE 都做了啥?的評論 (共 條)

分享到微博請遵守國家法律
壤塘县| 钦州市| 鄂州市| 六盘水市| 乐至县| 通山县| 湘乡市| 高清| 泗阳县| 台北市| 砀山县| 霍林郭勒市| 桃园市| 岳池县| 嘉兴市| 阿巴嘎旗| 渭南市| 广德县| 霍城县| 老河口市| 马关县| 巫溪县| 磐石市| 成都市| 卓资县| 天峨县| 同江市| 永顺县| 寻甸| 禹州市| 留坝县| 萝北县| 北流市| 嘉义市| 安康市| 介休市| 肥东县| 丹寨县| 和硕县| 万荣县| 锡林浩特市|