處理排程與死鎖

2022-09-15 01:42:13 字數 1439 閱讀 1304

提高併發性

1、提高cpu併發計算能力

(1)多程序&多執行緒

(2)減少程序切換,使用執行緒,考慮程序繫結cpu

(3)減少使用不必要的鎖,考慮無鎖程式設計

(4)考慮程序優先順序

(5)關注系統負載

2、改進i/o模型

(1)dma技術(儲存器直接訪問,指一種高速的資料傳輸操作,允許在外部裝置和儲存器之間直接讀寫資料,既不通過cpu,也不需要cpu干預。)

(2)非同步i/o

(3)改進多路i/o就緒通知策略,epoll(能顯著提高程式在大量併發連線中只有少量活躍的情況下的系統cpu利用率)

(4)記憶體對映

(5)直接i/o

系統cpu比較高的原因

1、首先檢視是哪些程序的cpu佔用率最高(如下可以看到詳細的路徑)

ps -aux --sort -pcpu | more

ps -mp pid -o thread,tid,time | more

2、檢視j**a程序的每個執行緒的cpu佔用率

ps -lp 5798 cu | more # 5798是查出來程序pid

3、追蹤執行緒,檢視負載過高的原因,使用jdk下的乙個工具

jstack 5798 # 5798是pid

jstack -j-d64 -m 5798 # -j-d64指定64為系統

jstack 查出來的執行緒id是16進製制,可以把輸出追加到檔案,匯出用記事本開啟,再根據系統中的執行緒id去搜尋檢視該id的執行緒執行內容,可以和開發一起排查。

死鎖定義及必要條件

如果一組程序中的每乙個程序都在等待僅有改組程序中的其他程序才能引發的事件,則改組程序是死鎖的。

(一)互斥條件:乙個資源一次只能被乙個程序訪問。即某個資源在一段時間內只能由乙個程序占有,不能同時被兩個或兩個以上的程序佔 有。這種獨佔資源如cd-rom驅動器,印表機等等,必須在占有該資源的程序主動釋放它之後,其它程序才能占有該資源。這是由資源本身的屬性所決定的。

(二)請求與保持條件:程序已經占有至少乙個資源,但提出新的資源請求,而該資源已被另外程序占有,此時請求程序阻塞,但對自己已獲得的資源保持不放。

(三)不可搶占條件:程序已獲得的資源在未使用完之前不能被搶占,而只能由程序使用完自行釋放。

(四)迴圈等待條件:若干資源形成一種迴圈等待資源關係鏈。

避免死鎖

系統處於安全狀態時,可避免死鎖。系統進行資源分配之前,先計算此次分配的安全性。若系統無法找到安全序列,則稱系統處於不安全狀態。

dijkstra銀行家演算法:

每個新程序進入系統時,必須申明執行時可能需要的每種資源型別最大單元數量。當程序請求一組資源,系統要首先確定是否有足夠資源分配給該程序,若有,進一步計算分配後是否會使系統處於不安全狀態。如果不會,則把資源分配給他,否則讓程序等待。

處理機排程與死鎖

1.程序排程的功能 儲存處理機的現場資訊,按某種演算法選取程序,把處理器分配給程序 2 程序排程方式 非搶占方式 一旦把處理機分配給某程序後,不管它要執行多長時間,都一直讓它執行下去,決不會因為時鐘中斷等原因而搶占正在執行程序的處理機,也不允許 其它程序搶占已經分配給它的處理機。直至該程序完成,自願...

處理機排程與死鎖

1 非搶占方式 non preemptive mode 一旦處理機分配給某程序,該程序一直執行。決不允許其他程序搶占已分配執行程序的處理機。2 搶占方式 preemptive mode 允許排程程式根據某種原則,暫停某個正在執行的程序,將處理機重新分配給另一程序。程序排程方式比較 3 中級排程 in...

作業系統 處理排程與死鎖

1.處理機的排程層次 1 高階排程,又稱為作業排程或者長程排程,將作業調入記憶體 作業 除了程式和資料,還有乙份作業說明書。批處理系統以作業為基本單位從外存調入記憶體的。2 低階排程,又稱為程序排程或者短程排程,排程物件是程序 或核心級執行緒 程序排程的方式 非搶占式和搶占方式 非搶占式特點 實現簡...