linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是不負責任的行為嗎?其實不是,實際上啟動時最耗時的操作就是硬體檢測和初始化,正是因為如此,linuxbios才把如此艱鉅的任務避開,一併給了作業系統核心。
那麼核心能把這些任務給誰呢?它必須自己解決之,因為它是基礎。為了加快啟動速度,linux設計者將硬體檢測和初始化的任務交給了很多的核心執行緒,這樣的話,乙個核心執行緒在檢測初始化乙個硬體等待的時候就可以去檢測初始化另乙個硬體,乙個並行進行,在多cpu機器上會更好。依照linux的傳統,一切都是程序,最起碼你得有這個意思想讓任務成為程序,在核心初始化期間,核心維護了兩個鍊錶,乙個是pending鍊錶,乙個是running鍊錶,將要檢測餅初始化的硬體相關的函式加入pending鍊錶就不用管了,linux強大的程序排程機制會很好的處理諸多硬體初始化核心執行緒的執行,另外,在核心初始化完成以後,這些核心執行緒的機制介面將長期保留,一旦有繁瑣的任務需要併發執行仍然可以用和硬體檢測初始化的核心執行緒的方式來完成,這個機制十分靈活。
我有一點不解的是,為何不能用更加統一的工作佇列來實現呢?難道工作佇列的並行性不好嗎?
linux核心啟動的優化
linux核心啟動需要時間,並且需要很多的時間,這是逃避不了的,了解linuxbios的朋友可能知道,linuxbios作為bios和別的bios相比啟動的特別快,因為它把硬體檢測的任務交給了linux核心而不是bios,畢竟bios檢測完了核心再檢測是一種浪費,為了bios的效能,把工作推給核心是...
linux 核心 核心啟動流程
cs是 段暫存器,ip是指令指標暫存器 相當於偏移位址 儲存的是 指令的位址。cs ip共同作用生成了 位址,具體演算法是cs左移4位 ip即是 位址。例如cs 0xf000,ip 0xfff0,則 位址為0xffff0.global globl 命令 global symbol global 使得...
Linux核心優化
主要是指在linux系統中針對服務應用而進行的系統核心引數調整,優化沒有的標準,根據實際需求優化才是最合適的。vim etc sysctl.connet.ipv4.tcp fin timeout 2 保持在fin wait 2狀態的時間,使系統可以處理更多的連線。此引數值為整數,單位為秒。net.i...