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.使用頁高速緩存和頁回寫,優化文件系統。