日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux idle基础

發布時間:2025/3/8 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux idle基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

 Linux系統越來越受到電腦用戶的歡迎,于是很多人開始學習Linux時,學習linux,你可能會遇到linux內核問題,這里將介紹linux內核中idle知識。

  1. idle是什么


  簡單的說idle是一個進程,其pid號為 0。其前身是系統創建的第一個進程,也是唯一一個沒有通過fork()產生的進程。在smp系統中,每個處理器單元有獨立的一個運行隊列,而每個運行隊列上又有一個idle進程,即有多少處理器單元,就有多少idle進程。系統的空閑時間,其實就是指idle進程的"運行時間"。既然是idle是進程,那我們來看看idle是如何被創建,又具體做了哪些事情?

  2. idle的創建


  我們知道系統是從BIOS加電自檢,載入MBR中的引導程序(LILO/GRUB),再加載linux內核開始運行的,一直到指定shell開始運行告一段落,這時用戶開始操作Linux。而大致是在vmlinux的入口startup_32(head.S)中為pid號為0的原始進程設置了執行環境,然后原是進程開始執行start_kernel()完成Linux內核的初始化工作。包括初始化頁表,初始化中斷向量表,初始化系統時間等。繼而調用 fork(),創建第一個用戶進程:

  kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);

  這個進程就是著名的pid為1的init進程,它會繼續完成剩下的初始化工作,然后execve(/sbin/init), 成為系統中的其他所有進程的祖先。關于init我們這次先不研究,回過頭來看pid=0的進程,在創建了init進程后,pid=0的進程調用 cpu_idle()演變成了idle進程。

  current_thread_info()->status |= TS_POLLING;

  在 smp系統中,除了上面剛才我們講的主處理器(執行初始化工作的處理器)上idle進程的創建,還有從處理器(被主處理器activate的處理器)上的 idle進程,他們又是怎么創建的呢?接著看init進程,init在演變成/sbin/init之前,會執行一部分初始化工作,其中一個就是 smp_prepare_cpus(),初始化SMP處理器,在這過程中會在處理每個從處理器時調用

  task = copy_process(CLONE_VM, 0, idle_regs(&regs), 0, NULL, NULL, 0);

  init_idle(task, cpu);

  即從init中復制出一個進程,并把它初始化為idle進程(pid仍然為0)。從處理器上的idle進程會進行一些Activate工作,然后執行cpu_idle()。

  整個過程簡單的說就是,原始進程(pid=0)創建init進程(pid=1),然后演化成idle進程(pid=0)。init進程為每個從處理器(運行隊列)創建出一個idle進程(pid=0),然后演化成/sbin/init。

  3. idle的運行時機


  idle 進程優先級為MAX_PRIO,即最低優先級。早先版本中,idle是參與調度的,所以將其優先級設為最低,當沒有其他進程可以運行時,才會調度執行 idle。而目前的版本中idle并不在運行隊列中參與調度,而是在運行隊列結構中含idle指針,指向idle進程,在調度器發現運行隊列為空的時候運行,調入運行。

  4. idle的workload


  從上面的分析我們可以看出,idle在系統沒有其他就緒的進程可執行的時候才會被調度。不管是主處理器,還是從處理器,最后都是執行的cpu_idle()函數。所以我們來看看cpu_idle做了什么事情。

  因為idle進程中并不執行什么有意義的任務,所以通常考慮的是兩點:1.節能,2.低退出延遲。

  其核心代碼如下:

  void cpu_idle(void) { int cpu = smp_processor_id(); current_thread_info()->status |= TS_POLLING; /* endless idle loop with no priority at all */ while (1) { tick_nohz_stop_sched_tick(1); while (!need_resched()) { check_pgt_cache(); rmb(); if (rcu_pending(cpu)) rcu_check_callbacks(cpu, 0); if (cpu_is_offline(cpu)) play_dead(); local_irq_disable(); __get_cpu_var(irq_stat).idle_timestamp = jiffies; /* Don't trace irqs off for idle */ stop_critical_timings(); pm_idle(); start_critical_timings(); } tick_nohz_restart_sched_tick(); preempt_enable_no_resched(); schedule(); preempt_disable(); } }

  循環判斷need_resched以降低退出延遲,用idle()來節能。

  默認的idle實現是hlt指令,hlt指令使CPU處于暫停狀態,等待硬件中斷發生的時候恢復,從而達到節能的目的。即從處理器C0態變到 C1態(見 ACPI標準)。這也是早些年windows平臺上各種"處理器降溫"工具的主要手段。當然idle也可以是在別的ACPI或者APM模塊中定義的,甚至是自定義的一個idle(比如說nop)。

 5.小結:


  1.idle是一個進程,其pid為0。

  2.主處理器上的idle由原始進程(pid=0)演變而來。從處理器上的idle由init進程fork得到,但是它們的pid都為0。

  3.Idle進程為最低優先級,且不參與調度,只是在運行隊列為空的時候才被調度。

  4.Idle循環等待need_resched置位。默認使用hlt節能。

  希望通過本文你能全面了解linux內核中idle知識。

轉載于:https://my.oschina.net/dlpinghailinfeng/blog/181659

總結

以上是生活随笔為你收集整理的Linux idle基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级全黄少妇性色生活片 | 中文字幕在线观看一区 | 亚洲欧洲精品一区二区 | 国产精华7777777 | 久久露脸国语精品国产 | 碰在线视频 | 中文字幕av网站 | 国产精品2020 | 久艹视频在线观看 | 日韩在线观看网址 | 日韩一二三级 | 国产乱人伦精品 | 天天视频黄色 | 成人深夜在线 | 国产婷| 依人综合网 | 日韩精品一区二区三区丰满 | 欧美在线网址 | 伊人成人在线 | 91成人福利在线 | 国产精品污视频 | 男人天堂2024| www99热| 精品国产99久久久久久宅男i | 夫妻性生活黄色大片 | 丁香七月婷婷 | 免费成人深夜在线观看 | 丨国产丨调教丨91丨 | 精品视频在线观看免费 | 91爱看 | 久久99精品国产91久久来源 | 911色| 国产精品入口 | 国产天堂在线观看 | 国产精品夜夜嗨 | 成人av一区二区在线观看 | 美女视频一区二区三区 | 日韩国产欧美一区二区三区 | 久久中文av | 久久99精品国产91久久来源 | 成人av免费播放 | 精品毛片 | 欧美色妞网 | 天天干天天操天天插 | 国产色婷婷一区二区三区竹菊影视 | 精品国产综合区久久久久久 | 亚洲大色网 | 成年人看的黄色 | 久久男人精品 | 免费观看黄一级视频 | 欧美视频亚洲 | 密桃成熟时在线观看 | 亚洲日本护士毛茸茸 | 被黑人猛躁10次高潮视频 | 又大又粗欧美黑人aaaaa片 | 26uuu国产精品视频 | 69社| 俄罗斯毛片 | 亚洲在线看片 | 亚洲国产剧情 | 日韩中文字幕第一页 | 欧美黑人啪啪 | 永久免费汤不热视频 | 国产精品女优 | 免费午夜av | 午夜精品久久久久久久99热黄桃 | 欧美日韩黄色大片 | 韩日一级片 | 女生喷液视频 | av免费在线观看不卡 | 大粗鳮巴久久久久久久久 | 久久国产精品久久久久久 | 欧洲成人综合网 | 亚洲视频一区二区在线观看 | 亚洲成a人v欧美综合天堂麻豆 | 又黄又爽又刺激的视频 | 精品久久久久久久久久久国产字幕 | 国产区一区二区 | 国产精品伊人久久 | 国产精品免费av一区二区 | 欧美粗暴jizz性欧美20 | 操日本老妇 | 三级在线看中文字幕完整版 | 午夜精品网 | 青草综合 | 国产精品国产三级国产传播 | 青青青国内视频在线观看软件 | 国产av剧情一区二区三区 | 中文字幕乱码中文字幕 | 日本欧美韩国国产精品 | 国产综合网站 | 嫩草在线观看视频 | 青青草原伊人网 | av色片| 中文字幕av日韩 | 国精产品一区一区三区在线 | 青青草国产在线观看 | 欧美久久激情 | 国产叼嘿视频在线观看 |