原创 Linux分頁機制之概述--Linux內存管理(六)

1 分頁機制在虛擬內存中,頁表是個映射表的概念, 即從進程能理解的線性地址(linear address)映射到存儲器上的物理地址(phisical address).很顯然,這個頁表是需要常駐內存的東西, 以應對頻繁的查詢映射需要(實際上

原创 Linux內存描述之內存區域zone--Linux內存管理(三)

1 內存管理域zone爲了支持NUMA模型,也即CPU對不同內存單元的訪問時間可能不同,此時系統的物理內存被劃分爲幾個節點(node), 一個node對應一個內存簇bank,即每個內存簇被認爲是一個節點首先, 內存被劃分爲結點. 每個節點關

原创 Linux內存描述之概述--Linux內存管理(一)

1 前景回顧1.1 UMA和NUMA兩種模型共享存儲型多處理機有兩種模型均勻存儲器存取(Uniform-Memory-Access,簡稱UMA)模型將可用內存以連續方式組織起來,非均勻存儲器存取(Nonuniform-Memory-Acce

原创 android 休眠喚醒機制分析(一) — wake_lock【轉】

Android的休眠喚醒主要基於wake_lock機制,只要系統中存在任一有效的wake_lock,系統就不能進入深度休眠,但可以進行設備的淺度休眠操作。wake_lock一般在關閉lcd、tp但系統仍然需要正常運行的情況下使用,比如聽歌、

原创 服務器體系(SMP, NUMA, MPP)與共享存儲器架構(UMA和NUMA)

1. 3種系統架構與2種存儲器共享方式1.1 架構概述從系統架構來看,目前的商用服務器大體可以分爲三類對稱多處理器結構(SMP:Symmetric Multi-Processor)非一致存儲訪問結構(NUMA:Non-Uniform Mem

原创 Linux CFS調度器之pick_next_task_fair選擇下一個被調度的進程--Linux進程的管理與調度(二十八)

1. CFS如何選擇最合適的進程每個調度器類sched_class都必須提供一個pick_next_task函數用以在就緒隊列中選擇一個最優的進程來等待調度, 而我們的CFS調度器類中, 選擇下一個將要運行的進程由pick_next_tas

原创 Linux CFS調度器之task_tick_fair處理週期性調度器--Linux進程的管理與調度(二十九)

1. CFS如何處理週期性調度器週期性調度器的工作由scheduler_tick函數完成(定義在kernel/sched/core.c, line 2910), 在scheduler_tick中週期性調度器通過調用curr進程所屬調度器類s

原创 實時調度類

按照POSIX標準的強制要求,除了“普通”進程之外, Linux還支持兩種實時調度類。調度器結構使得實時進程可以平滑地集成到內核中,而無需修改核心調度器,這顯然是調度類帶來的好處。現在比較適合於回想一些很久以前討論過的事實。實時進程的特點在

原创 Linux CFS調度器之喚醒搶佔--Linux進程的管理與調度(三十)

我們也講解了CFS的很多進程操作 table th:nth-of-type(1){ width: 20%; } table th:nth-of-type(2){ width: 20% ; } 信息函數描述進程入隊/出隊enqueue_tas

原创 Linux CFS調度器之虛擬時鐘vruntime與調度延遲--Linux進程的管理與調度(二十六)

1 虛擬運行時間(今日內容提醒)1.1 虛擬運行時間的引入CFS爲了實現公平,必須懲罰當前正在運行的進程,以使那些正在等待的進程下次被調度。具體實現時,CFS通過每個進程的虛擬運行時間(vruntime)來衡量哪個進程最值得被調度。CFS中

原创 Linux CFS調度器之隊列操作--Linux進程的管理與調度(二十七)

1. CFS進程入隊和出隊完全公平調度器CFS中有兩個函數可用來增刪隊列的成員:enqueue_task_fair和dequeue_task_fair分別用來向CFS就緒隊列中添加或者刪除進程2 enqueue_task_fair入隊操作2

原创 Linux CFS調度器之負荷權重load_weight--Linux進程的管理與調度(二十五)

1. 負荷權重1.1 負荷權重結構struct load_weight負荷權重用struct load_weight數據結構來表示, 保存着進程權重值weight。其定義在/include/linux/sched.h, v=4.6, L11

原创 Linux進程優先級的處理--Linux進程的管理與調度(二十二)

1. linux優先級的表示1.1 優先級的內核表示linux優先級概述 在用戶空間通過nice命令設置進程的靜態優先級, 這在內部會調用nice系統調用, 進程的nice值在-20~+19之間. 值越低優先級越高. setprior

原创 Linux喚醒搶佔----Linux進程的管理與調度(二十三)

1. 喚醒搶佔當在try_to_wake_up/wake_up_process和wake_up_new_task中喚醒進程時, 內核使用全局check_preempt_curr看看是否進程可以搶佔當前進程可以搶佔當前運行的進程. 請注意該過

原创 Linux的notifier機制的應用

在linux內核系統中,各個模塊、子系統之間是相互獨立的。Linux內核可以通過通知鏈機制來獲取由其它模塊或子系統產生的它感興趣的某些事件。notifier_block結構體在include/linux/notifier.h中定義:stru