精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙系統(tǒng)內(nèi)核中CPU空閑時間都在干嘛

鴻蒙系統(tǒng)HarmonyOS ? 來源:計算機java編程 ? 作者:計算機java編程 ? 2021-03-15 14:37 ? 次閱讀

本篇說清楚CPU

cpu是負責執(zhí)行指令的,誰能給它指令?是線程(也叫任務), 任務是內(nèi)核的調(diào)度單元,調(diào)度到哪個任務CPU就去執(zhí)行哪個任務的指令. 要執(zhí)行指令就要有個取指令的開始地址. 開始地址就是大家所熟知的main函數(shù).一個程序被加載解析后內(nèi)核會在ELF中找到main函數(shù)的位置,并自動創(chuàng)建一個線程,指定線程的入口地址為main函數(shù)的地址,由此開始了取指,譯指,執(zhí)指之路.

多線程內(nèi)核是怎么處理的? 一樣的, 以JAVA舉例,對內(nèi)核來說 new thread中的run() 函數(shù) 和 main() 并沒有區(qū)別. 都是一個線程(任務)的執(zhí)行入口. 注意在系列篇中反復的說任務就是線程,線程就是任務,它們是一個東西在不同層面上的描述.對應用層說線程,對內(nèi)核層說任務. 有多少個線程就會有多少個入口,它們統(tǒng)一接受調(diào)度算法的調(diào)度, 調(diào)度算法只認優(yōu)先級的高低,不會管你是main() 還是 run() 而區(qū)別對待.

定時器的實現(xiàn)也是通過任務實現(xiàn)的,只不過是個系統(tǒng)任務OsSwtmrTaskCreate,優(yōu)先級最高,和入口地址OsSwtmrTask由系統(tǒng)指定.

所以理解CPU就要先理解任務,任務是理解內(nèi)核的主線,把它搞明白了分析內(nèi)核就輕輕松松,事半功倍了.看似高深的CPU只不過是摟草打兔子.

不相信?那就看看內(nèi)核對CPU是怎么描述的吧.本篇就圍繞這個結構體展開說.

#內(nèi)核如何描述CPU?

結構體不復雜,但很重要,一個一個掰開了說.

taskSortLink是干什么用的? 一個任務在運行過程中,會經(jīng)常會主動或被動中斷,而進入等待狀態(tài).主動中斷情況, 例如:主動delay300毫秒,這是應用層很常見的操作.被動中斷情況, 例如:申請互斥鎖失敗,等待某個事件發(fā)生 等等. 發(fā)生這些情況時任務將被掛到taskSortLink上.

`OsAdd2SortLink`,將任務掛到排序鏈表上,因等待時間不一樣,所以內(nèi)核會對這些任務按時間長短排序.

定時器相關三個變量,在系列篇定時器機制篇中已有對定時器的詳細描述,可前往查看.

搞明白定時器的機制只需搞明白: 定時器(SWTMR_CTRL_S),定時任務(swtmrTaskID),定時器響應函數(shù)(SwtmrHandlerItem),定時器處理隊列swtmrHandlerQueue 四者的關系就可以了. 一句話概括:定時任務swtmrTaskID是個系統(tǒng)任務,優(yōu)先級最高,它循環(huán)讀取隊列swtmrHandlerQueue中的已到時間的定時器(SWTMR_CTRL_S),并執(zhí)行定時器對應的響應函數(shù)SwtmrHandlerItem.

idleTaskID空閑任務,注意這又是個任務,每個cpu核都有屬于自己的空閑任務,cpu沒事干的時候就待在里面.空閑任務長什么樣?Look!

taskLockCnt 這個很簡單,記錄等鎖的任務數(shù)量.任務在運行過程中優(yōu)先級是會不斷地變化的, 例如 高優(yōu)先級的A任務在等某鎖,但持有鎖的一方B任務優(yōu)先級低,這時就會調(diào)高B的優(yōu)先級至少到A的等級,提高B被調(diào)度算法命中的概率,如此就能快速的釋放鎖交給A運行.taskLockCnt記錄被CPU運行過的正在等鎖的任務數(shù)量.schedFlag 調(diào)度的標簽.

調(diào)度并不是每次都能成功的,在某些情況下內(nèi)核會阻止調(diào)度進行.例如:OS_INT_ACTIVE硬中斷發(fā)生的時候.

excFlag標識CPU的運行狀態(tài),只在多核CPU下可見.

以上為內(nèi)核對CPU描述的全貌,不是很復雜.

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211155
  • 鴻蒙系統(tǒng)

    關注

    183

    文章

    2634

    瀏覽量

    66220
收藏 人收藏

    評論

    相關推薦

    鴻蒙內(nèi)核源碼Task/線程技術分析

    前言 在鴻蒙內(nèi)核,廣義上可理解為一個Task就是一個線程 一、怎么理解Task 1. 官方文檔是怎么描述線程 基本概念 從系統(tǒng)的角度看,線程是競爭
    的頭像 發(fā)表于 10-18 10:42 ?2179次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼Task/線程技術分析

    你的計算機CPU使用率是多少?CPU空閑時干嘛

    假設你正在用計算機瀏覽網(wǎng)頁,當網(wǎng)頁加載完成后你開始閱讀,此時你沒有移動鼠標,沒有敲擊鍵盤,也沒有網(wǎng)絡通信,那么你的計算機此時在干嘛
    的頭像 發(fā)表于 12-05 09:27 ?1046次閱讀
    你的計算機<b class='flag-5'>CPU</b>使用率是多少?<b class='flag-5'>CPU</b><b class='flag-5'>空閑時</b>在<b class='flag-5'>干嘛</b>?

    如何在Aurix TC399控制器測量空閑時間

    我想測量一下微控制器的空閑時間(Aurix TC399)。 你能幫我解決這個問題嗎? 我們需要監(jiān)控任何寄存器嗎?或者該怎么做? 期待你的回復。
    發(fā)表于 01-25 07:31

    有沒空閑時間承包項目的高手。我司研發(fā)項目轉包

    有沒空閑時間承包項目的高手。我司研發(fā)項目轉包,有愿意的聯(lián)系{ QQ:1725408475
    發(fā)表于 02-23 09:10

    鴻蒙內(nèi)核開發(fā)的相關資料分享

    第一章 鴻蒙內(nèi)核開發(fā)概述1.1鴻蒙系統(tǒng)有哪些內(nèi)容?鴻蒙系統(tǒng),就相當于一套完整的PC軟件
    發(fā)表于 11-08 06:16

    CPU 空閑時都在做什么?

    人在空閑的時候免不了昏昏欲睡那cpu空閑時在做什么呢?
    的頭像 發(fā)表于 03-06 15:43 ?4972次閱讀
    當 <b class='flag-5'>CPU</b> <b class='flag-5'>空閑時</b>它<b class='flag-5'>都在</b>做什么?

    鴻蒙內(nèi)核源碼分析:鴻蒙內(nèi)核的每段匯編代碼解析

    本篇說清楚CPU的工作模式 讀本篇之前建議先讀鴻蒙內(nèi)核源碼分析(總目錄)其他篇. 正如一個互聯(lián)網(wǎng)項目的后臺管理系統(tǒng)有權限管理一樣,CPU工作
    的頭像 發(fā)表于 03-02 09:56 ?4302次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼分析:<b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>的每段匯編代碼解析

    鴻蒙內(nèi)核源碼分析:task是內(nèi)核調(diào)度的單元

    系統(tǒng)的角度看,線程是競爭系統(tǒng)資源的最小運行單元。線程可以使用或等待CPU、使用內(nèi)存空間等系統(tǒng)資源,并獨立于其它線程運行。 鴻蒙
    發(fā)表于 11-23 15:51 ?22次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼分析:task是<b class='flag-5'>內(nèi)核</b>調(diào)度的單元

    鴻蒙內(nèi)核源碼分析:時鐘是觸發(fā)調(diào)度最大的源動力

    時鐘管理模塊很簡單,但卻有內(nèi)核最重要的代碼段 OsTickHandler(),這是干嘛的,可以理解為 JAVA的定時任務,但這是系統(tǒng)內(nèi)核的定時器。因
    發(fā)表于 11-24 17:50 ?32次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼分析:時鐘是觸發(fā)調(diào)度最大的源動力

    華為系統(tǒng)openharmony 鴻蒙內(nèi)核的理解

    鴻蒙OS分布式操作系統(tǒng)是一款基于微內(nèi)核的全場景分布式OS,是華為自主研發(fā)的操作系統(tǒng)
    的頭像 發(fā)表于 06-23 10:48 ?4042次閱讀

    鴻蒙推送時間 華為鴻蒙推送時間

    自從華為6月正式發(fā)布推送鴻蒙系統(tǒng)2.0,許多用戶都對鴻蒙系統(tǒng)感興趣也想下載,然而不怎么清楚鴻蒙系統(tǒng)
    的頭像 發(fā)表于 07-08 11:23 ?8385次閱讀
    <b class='flag-5'>鴻蒙</b>推送<b class='flag-5'>時間</b> 華為<b class='flag-5'>鴻蒙</b>推送<b class='flag-5'>時間</b>

    鴻蒙內(nèi)核開發(fā)概述

    第一章 鴻蒙內(nèi)核開發(fā)概述1.1 鴻蒙系統(tǒng)有哪些內(nèi)容?鴻蒙系統(tǒng),就相當于一套完整的PC軟件
    發(fā)表于 11-03 11:21 ?20次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>開發(fā)概述

    恒訊科技分析:是什么導致云計算CPU竊取時間

    由于云計算CPU竊取時間比傳統(tǒng)的專用物理環(huán)境要復雜一些。由于操作系統(tǒng)的報告工具尚未針對在
    的頭像 發(fā)表于 08-05 16:55 ?650次閱讀

    FreeRTOS空閑任務是什么

    空閑任務是 FreeRTOS 必不可少的一個任務,其他 RTOS 類系統(tǒng)也有空閑任務,比如 uC/OS。看名字就知道,空閑任務是處理器空閑
    的頭像 發(fā)表于 07-30 10:55 ?1229次閱讀

    如何在內(nèi)核啟動secondary cpu

    給調(diào)度器之前,并沒有實際的業(yè)務進程,而我們知道內(nèi)核cpu空閑時會執(zhí)行idle進程。因此,在其啟動之前需要為每個cpu初始化一個idle進
    的頭像 發(fā)表于 12-05 15:46 ?550次閱讀
    如何在<b class='flag-5'>內(nèi)核</b><b class='flag-5'>中</b>啟動secondary <b class='flag-5'>cpu</b>