歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux內核的一些算法

Linux內核的一些算法

日期:2017/3/2 16:53:56   编辑: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.使用頁高速緩存和頁回寫,優化文件系統。

Copyright © Linux教程網 All Rights Reserved