關於Linux核心的一些演算法

2021-07-14 22:01:16 字數 811 閱讀 5662

總結關於linux核心的一些演算法**

1.linux

排程i/o消耗型和處理器消耗型程序(保證及時的io響應和高效的cpu利用率)負載平衡:每顆cpu上有乙個程序佇列,當cpu的負載差大於25%時執行負載平衡程式。(從最忙的cpu上取下乙個優先順序最高且cpu親和力最小的程序到負載最輕的cpu程序佇列中)。

為什麼要取優先順序最高的程序呢?

因為把優先順序高的程序平均分配到各個

cpu上去才能使系統的效能達到最高。

cpu的親和力:主要是快取記憶體或是其它原因,如某個程序只能在某個

cpu上執行。

2.中斷處理程式與執行緒的不同之處。

1、中斷中不能睡眠。

2、中斷上下文具有較嚴格的時間限制,因為它打斷了正在執行的執行緒。

3、中斷處理程式不具有自己的棧,它共享被中斷執行緒的棧,因此在分配乙個任務棧要注意比實際需求的要大一點,以防中斷發生時,中斷程式使用棧時溢位。

3. 自旋鎖:主要特點,與等待乙個訊號量不同的是它在得不到想要的資源時程序不會睡眠。

4. 引入讀寫自旋鎖。讀寫自旋鎖減少了鎖的粒度。

5.slab

層:優化動態記憶體分配,(將相同大小的動態記憶體分配和釋放放到乙個連續的記憶體區,這樣就不會產生記憶體碎片,因為每次分配剛好是乙個單位,每次釋放也剛好是乙個單位,比如用在程序控制塊的動態分配與釋放中)。

6. 磁碟塊

i/o操作:使用

linux

電梯演算法,在磁碟底層操作時將磁碟塊

io請求按磁軌排序,以減少磁頭尋跡時間而優化磁碟

io操作。

7.使用頁快取記憶體和頁回寫,優化檔案系統。

linux一些核心引數

kernel.maxfiles 系統支援最大的openfiles root dev mon001 sysctl a grep file max fs.file max 3260519 kernel.maxproc 系統支援的最大程序數量 root dev mon001 sysctl a grep 4...

關於演算法的一些資料

1.clrs 演算法導論 演算法百科全書,只做了前面十幾章的習題,便感覺受益無窮。2.algorithms 演算法概論 短小精悍,別據一格,準經典之作。乙個壞訊息 同演算法導論,該書沒有習題答案。好訊息 習題很經典,難度也適中,只需花點點時間自己也都能做出來。不好也不壞的訊息 我正在寫習題的答案,已...

關於陣列的一些演算法

去除陣列裡,重複的元素 方案1,用陣列本身的特性,去重 datetime dt datetime.now string s new string q s.distinct toarray 方案2,相鄰的進行比較,如果不等,則加入list string stringarray s listlistst...