Linux的記憶體和程序排程的問題

2021-08-17 13:56:54 字數 1609 閱讀 8558

linux程序排程以及配套的程序管理回答如下問題:

1.    linux程序和執行緒如何建立、退出?程序退出的時候,自己沒有釋放的資源(如記憶體沒有free)會怎樣?

2.    什麼是寫時拷貝?

3.    linux的執行緒如何實現,與程序的本質區別是什麼?

4.    linux能否滿足硬實時的需求?

5.    程序如何睡眠等資源,此後又如何被喚醒?

6.    程序的排程延時是多少?

7.    排程器追求的吞吐率和響應延遲之間是什麼關係?cpu消耗型和i/o消耗型程序的訴求?

8.    linux怎麼區分程序優先順序?實時的排程策略和普通排程策略有什麼區別?

9.    nice值的作用是什麼?nice值低有什麼優勢?

10.  linux可以被改造成硬實時嗎?有什麼方案?

11.  多核、多執行緒的情況下,linux如何實現程序的負載均衡?

12.  這麼多執行緒,究竟哪個執行緒在哪個cpu核上跑?有沒有辦法把某個執行緒固定到某個cpu跑?

13.  多核下如何實現中斷、軟中斷的負載均衡?

14.  如何利用cgroup對進行程序分組,並調控各個group的cpu資源?

15.  cpu利用率和cpu負載之間的關係?cpu負載高一定使用者體驗差嗎?

linux記憶體管理回答如下問題:

1.    linux系統的記憶體用掉了多少,還剩餘多少?下面這個free命令每乙個數字是什麼意思?

2.    為什麼要有dma、normal、highmem zone?每個zone的大小是由誰決定的?

3.    系統的記憶體是如何被核心和應用瓜分掉的?

4.    底層的記憶體管理演算法buddy是怎麼工作的?它和核心裡面的slab分配器是什麼關係?

5.    頻繁的記憶體申請和釋放是否會導致記憶體的碎片化?它的後果是什麼?

6.    linux記憶體耗盡後,系統會發生怎樣的情況?

7.    應用程式的記憶體是什麼時候拿到的?malloc()成功後,是否真的拿到了記憶體?應用程式的malloc()與free()與核心的關係究竟是什麼?

8.    什麼是lazy分配機制?應用的記憶體為什麼會延後以最懶惰的方式拿到?

9.    我寫的應用究竟耗費了多少記憶體?程序的vss/rss/pss/uss分別是什麼概念?虛擬的,真實的,共享的,獨佔的,究竟哪個是哪個?

10.  記憶體為什麼要做檔案系統的快取?如何做?快取何時放棄?

11.  free命令裡面顯示的buffers和cached分別是什麼?二者有何區別?

12.  交換分割槽、虛擬記憶體究竟是什麼鬼?它們針對的是什麼性質的記憶體?什麼是匿名頁?

13.  程序耗費的記憶體、檔案系統的快取何時**?**的演算法是不是類似lru?

14.  怎樣追蹤和判決發生了記憶體洩漏?記憶體洩漏後如何查詢洩漏源?

15.  記憶體大小這樣影響系統的效能?cpu、記憶體、i/o三角如何互動?它們如何綜合決定系統的一些關鍵效能?

以上問題,如果您都能回答,那麼恭喜您,您是乙個概念清楚的人,linux出現吞吐低、延遲大、響應慢等問題的時候,你可以找到乙個可能的方向。如果您只能回答低於1/3的問題,那麼,linux對您仍然是一片空白,出現問題,您只會陷入瞎貓子亂抓,而撈不到耗子的困境,或者胡亂地意測問題,陷入不斷的低水平重試。

Linux 程序的排程演算法

排程演算法指的是根據系統的資源分配策略所規定的資源分配演算法。對於不同的系統和系統目標,通常採用不同的排程演算法。1.平均等待時間波動較大 短程序可能排在長程序後面,假如有三個程序,計算時間分別為p1 12 p2 3 p3 3 任務的到達順序為p1,p2,p3,那麼周轉時間就是 12 15 18 3...

作業排程和程序排程的區別

處理機排程是作業系統的主要功能之一,它的實現策略決定了作業系統的型別,其排程演算法的優劣直接影響整個系統的效能。處理機排程的任務是選出待分派的作業或程序,為之分配處理機。一般來說,處理機排程可分為三個級別,分別是高階排程 中級排程和低階排程。高階排程又稱作業排程,作業就是使用者程式及其所需的資料和命...

Android的記憶體,程序排程管理 (二)

在執行乙個程式時,按一下房子鍵就可以退到桌面,一般來說按一下退出鍵也可以退到桌面,這兩者有什麼區別呢?其實是有區別的,你應該根據自己的需要靈活選擇 按房子鍵,看起來似乎是退出了,但是其實這個軟體並沒有被關閉,而是轉為了 後台程式 指一般的軟體,不討論特別種類的軟體 按退出鍵,看起來也是退出沒錯,但這...