總結關於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...