active_mm = mm; ( 1 )cpu_uninstall_idmap(); ( 2 )…ops = get_cpu_ops(cpu); if (ops- >cpu_postboot)ops- >cpu_postboot(); ( 3 )…set_cpu_online(cpu, true ); ( 4 )" />

色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

secondary cpu執行流程介紹

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-12-05 16:12 ? 次閱讀

secondary cpu執行流程

aarch64架構secondary cpu的內核入口函數為secondary_entry(arch/arm64/kernel/head.S),以下為其執行主流程:

圖片
由于其底層相關初始化流程與primary cpu類似,因此此處不再介紹。我們這里主要看一下它是如何通過secondary_start_kernel啟動idle線程的:

asmlinkage notrace void secondary_start_kernel(void)
{
	struct mm_struct *mm = &init_mm;              			
	…
	current- >active_mm = mm;                               (1)

	cpu_uninstall_idmap();                                 (2)
	…
	ops = get_cpu_ops(cpu);
	if (ops- >cpu_postboot)
		ops- >cpu_postboot();                           (3)
	…
	set_cpu_online(cpu, true);                             (4)
	complete(&cpu_running);                                (5)
	…
	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);               (6)
}

(1)由于內核線程并沒有用于地址空間,因此其active_mm通常指向上一個用戶進程的地址空間。而cpu初始化時,由于之前并沒有運行過用戶進程,因此將其初始化為init_mm

(2)idmap地址映射僅僅是用于mmu使能時地址空間的平滑切換,在mmu使能完成后已經沒有作用。更進一步,由于idmap頁表所使用的ttbr0_elx頁表基地址寄存器,正常情況下是用于用戶空間頁表的,在調度器接管該cpu之前也必須要將其歸還給用戶空間

(3)執行cpu_postboot回調

(4)由secondary cpu已經啟動成功,故將其設置為online狀態

(5)喚醒cpu hotplug線程

(6)讓cpu執行idle線程,其代碼實現如下:

void cpu_startup_entry(enum cpuhp_state state)
{
	arch_cpu_idle_prepare();
	cpuhp_online_idle(state);
	while (1)
		do_idle();
}

至此,cpu已經啟動完成,并開始執行idle線程了。最后當然是要通知調度器,將該cpu的管理權限移交給調度器了。它是通過cpu hotplug的以下回調實現的:

static struct cpuhp_step cpuhp_hp_states[] = {
…
[CPUHP_AP_SCHED_STARTING] = {
		.name			= "sched:starting",
		.startup.single		= sched_cpu_starting,
		.teardown.single	= sched_cpu_dying,
}
…
}

以下為該函數的實現:

int sched_cpu_starting(unsigned int cpu)
{
…
sched_rq_cpu_starting(cpu);        (1sched_tick_start(cpu);             (2)
…
}

(1)用于初始化負載均衡相關參數,此后該cpu就可以在其后的負載均衡流程中拉取進程

(2)tick時鐘是內核調度器的脈搏,啟動了該時鐘之后,cpu就會在時鐘中斷中執行調度操作,從而讓cpu參與到系統的調度流程中

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

    關注

    68

    文章

    10855

    瀏覽量

    211590
  • SMP
    SMP
    +關注

    關注

    0

    文章

    74

    瀏覽量

    19654
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19675
收藏 人收藏

    評論

    相關推薦

    U-boot的執行流程

    本文主要講述了U-boot的執行流程
    發表于 07-14 16:58 ?698次閱讀
    U-boot的<b class='flag-5'>執行</b><b class='flag-5'>流程</b>

    RK3568 SMP啟動不成功,rt-thread已經調用psci成功,但是沒有執行到_secondary_cpu_entry

    , this is RT-Thread!! msh />I/TC: Secondary CPU 1 initializing I/TC: Secondary CPU 1 swit
    發表于 11-22 17:05

    求芯片內部的程序執行流程

    想了解仿真連接仿真后,芯片內部的程序執行流程,請問有相關介紹的資料嗎?
    發表于 05-25 12:08

    SOC的多核啟動流程詳解

    , COLD_BOOT_SINGLE_CPU=1, _secondary_cold_boot=0,則下面代碼不被編譯, 則無論主核還是從核都不需要走 _secondary_cold_boot
    發表于 02-21 15:11

    什么是CPU分枝預測和推測執行技術?

    什么是分枝預測和推測執行技術?  分枝預測(branch prediction)和推測執行(speculation execution)是CPU動態執行技術中的主要內容,
    發表于 02-04 10:47 ?826次閱讀

    ATMEL的CPU介紹

    ATMEL的CPU介紹ATMEL的CPU介紹ATMEL的CPU介紹ATMEL的
    發表于 10-30 18:08 ?5次下載

    mfc程序執行流程小結,MFC程序的執行順序

     摘要:本文章主要以MFC程序的執行流程執行順序等執行過程的剖析做出的結論,下面一起來看看原文的具體介紹
    發表于 12-08 15:48 ?9543次閱讀
    mfc程序<b class='flag-5'>執行</b><b class='flag-5'>流程</b>小結,MFC程序的<b class='flag-5'>執行</b>順序

    關于如何判斷CPU是否正在執行中斷函數?

    如何判斷CPU是否正在執行中斷函數?
    的頭像 發表于 03-12 11:25 ?2594次閱讀

    如何寫出讓CPU執行更快的代碼?

    轉自:小林coding 前言 代碼都是由 CPU 跑起來的,我們代碼寫的好與壞就決定了 CPU執行效率,特別是在編寫計算密集型的程序,更要注重 CPU
    的頭像 發表于 10-29 11:21 ?2349次閱讀
    如何寫出讓<b class='flag-5'>CPU</b><b class='flag-5'>執行</b>更快的代碼?

    reset_primary函數的執行流程

    reset_primary函數的執行 以CONFIG_BOOT_SYNC_CPU使能為例, 在使能PSCI系統中,不需要使能此宏 。 reset_primary函數執行流程
    的頭像 發表于 11-02 18:06 ?554次閱讀
    reset_primary函數的<b class='flag-5'>執行</b><b class='flag-5'>流程</b>

    bootm命令的執行流程

    Bootm命令用來從memory啟動內核,bootm命令的執行流程如下圖所示。 在串口終端輸入bootm命令后,執行do_bootm函數來完成相應的功能。Do_bootm函數首先
    的頭像 發表于 12-04 17:33 ?1153次閱讀
    bootm命令的<b class='flag-5'>執行</b><b class='flag-5'>流程</b>

    cpu執行程序內部變化

    CPU(Central Processing Unit)是計算機的核心部件之一,它負責執行計算機程序的指令,并進行數據處理和控制操作。CPU執行程序時會經歷一系列復雜的內部變化。本文
    的頭像 發表于 12-05 11:26 ?631次閱讀

    secondary cpu初始化狀態設置

    spin-table spin-table啟動流程的示意圖如下: 芯片上電后primary cpu開始執行啟動流程,而secondary
    的頭像 發表于 12-05 15:27 ?1068次閱讀
    <b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>初始化狀態設置

    如何在內核中啟動secondary cpu

    啟動secondary cpu 內核在啟動secondary cpu之前當然需要為其準備好執行環境,因為內核中
    的頭像 發表于 12-05 15:46 ?598次閱讀
    如何在內核中啟動<b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>

    SMP多核secondary cpu啟動流程

    secondary cpu啟動 由于psci方式啟動secondary cpu流程,除了其所執行
    的頭像 發表于 12-05 17:41 ?855次閱讀
    SMP多核<b class='flag-5'>secondary</b> <b class='flag-5'>cpu</b>啟動<b class='flag-5'>流程</b>
    主站蜘蛛池模板: 亚洲欧美日韩国产精品26u| 亚洲人成www在线播放| 中文字幕在线视频观看| 国产成人久久精品AV| 免费成年人在线观看视频| 无码国产伦一区二区三区视频| 最近的2019中文字幕国语HD| 国产午夜亚洲精品理论片八戒| 免费乱理伦片在线观看八戒| 亚洲精品无码一区二区三区四虎| 大胆国模一区二区三区伊人 | chinese黑人第一次| 九九精品视频一区二区三区| 色综合伊人色综合网站| 99热最新网站| 久久视热频这里只精品| 亚洲男人片片在线观看| 国产黄片毛片| 秋霞影院福利电影| 91精品视频网站| 久久成人a毛片免费观看网站| 邪恶肉肉全彩色无遮盖| 高清无码色大片中文| 欧美性猛交AAA片| 97国产蝌蚪视频在线观看| 精品无码久久久久久久久| 校园女教师之禁区| 国产精品v欧美精品v日韩| 日韩欧美一级| 啊…嗯啊好深男男高h文| 男女全黄h全肉细节文| 中文在线无码高潮潮喷在线| 九色PORNY真实丨首页| 亚洲第一伊人| 国产三级91| 小便japanesewctv| 国产精品日本一区二区在线播放 | 热久久综合这里只有精品电影| 91麻豆久久| 蜜桃传媒在线播放| 2021自产拍在线观看视频|