linux程序相關幾個關鍵點

2021-07-29 00:08:50 字數 2284 閱讀 1640

1 死鎖:兩個或兩個以上的程序因競爭系統資源而處於無休止的相互等待狀態,致使哪個程序也無法繼續執行。

2 linux程序排程方法:《》

#define sched_other  0   //普通程序時間片輪轉演算法

#define sched_fifo   1   //實時程序先進先出演算法

#defien sched_rr     2   //實時程序時間片輪轉演算法

linux用task_struct中的四個資料作為排程的依據:police counter priority rt_priority

police決定是普通程序還是實時程序

priority是普通程序的優先順序 0--70數值越大優先順序越高

re_priority是實時程序的優先順序

counter是每個程序的計數器

linux程序排程採用了動態優先順序和權值的方法,保證實時程序優先順序高於普通程序的原因:

排程程式首先給可執行佇列中每個程序賦予一定的權值(weight)。普通程序的權值就是它的counter值,而實時程序的權值是它的rt_priroty的值加1000.核心函式goodness()對程序進行加權處理。

linux程序排程的物件是可執行佇列;排程程式shedule()根據程序的權值決定下乙個程序的執行。實時程序的權值大於普通的程序 總的來說 sched_fifo > sched_rr > sched_other

待實時程序全部執行結束 普通程序進行排程:

counter值是下乙個程序排程的依據,程序在執行過程中,其counter值不斷減小,會出現兩種情況,一種情況是程序使用完時間片後讓出cpu,這時程序仍然在可執行佇列中,但是他的counter已經是0.另一種情況是該程序還沒有用完時間片,因為等待某個事件放棄了cpu並且進入了等待佇列,等到再次進入可執行狀態時,counter的值已經減小。這兩種情況都使得counter小於尚未投入執行時,也就是說他們已經不再具有特別大的優先順序。再次排程時,那些priority比他們小,但是counter值比他們大程序將被選中。priority 和 counter都表示程序的時間片,priority表示分配給程序的時間片的大小,而counter表示程序剩餘時間片的大小。在程序的執行過程中,counter不斷地減小而priority的值是不變的 它用於在counter的值變為0是對其進行賦值。只有所有普通程序的counter都為0後,排程程式才會對其進行重新賦值,系統開始新一輪的排程 priority是靜態的 counter是動態的

程序什麼時候會被排程?

【程序的狀態發生變化】

1 執行態下的程序由於等待資源或其他程序退出執行態時;

2 執行態下的程序執行結束;

3 處於等待態的程序被喚醒時

4 程序接收除錯時 

5 被除錯的程序轉到執行態時

【當前程序時間片用完】

need_resched = 1;

【程序從系統呼叫返回到使用者態時】

【中斷處理後 系統返回到使用者態】

3 linux程序的建立和撤銷

建立fock()  執行exec() 撤銷release()

4 linux程序通訊--訊號

訊號的主要作用是把系統中發生的某些事件通知給執行緒。linux訊號的數量與執行的機器平台有關,80x86 32位字長對應的訊號有32種,64位平台對應的訊號有64種 系統中每一種訊號都是乙個整數 linux訊號值從1開始 0作為特殊訊號進行處理 訊號的產生主要發生在以下3種情況:

【程序在執行過程中發生了某種錯誤】

【系統或使用者發出了控制程序終止或暫停的訊號】

【核心需要控制程序的執行而產生的訊號】

#include

#include

#include

int count = 0;

void ctrl_c_count(int);

main()

void ctrl_c_count(int dump)

改程式中使用了signal()重新設定了鍵盤輸入ctrl-c對應的訊號 sigint 的處理函式ctrl_c_count()。在程式執行中每當按下ctrl-c,變數count 加1 當按下回車鍵後 顯示count計數值 並恢復ctrl-c的原處理函式。

5 linux程序通訊--管道

訊號和管道都是早期unix作業系統使用的程序間通訊方式 訊號在程序間傳送的是乙個整數值 而管道可以傳送大量的資料。

linux採用的管道機制是一種傳送方向固定的單相信道,資料在管道中以字元流的方式傳送 以位元組為基本單位 linux把管道看作是一種檔案,但是只能使用物理記憶體 不可以使用外部磁碟存放資料

linux管道分為兩種 有名管道和無名管道 無名管道用於父子程序之間 有名管道可以在任意程序之間通訊。

LINUX程序相關的幾個函式

linux程序相關的幾個函式 1.pid t fork void 返回值 若成功呼叫一次則返回兩個值,子程序返回0,父程序返回子程序id 否則,出錯返回 1 2.exit 0 就是退出,傳入的引數是程式退出時的狀態碼,0表示正常退出,其他表示非正常退出,一般都用 1或者1,標準c裡有exit suc...

css相關的幾個點

點評 css li 去掉點的樣式寫法,其實就是利用css的list sytle樣式來實現的。li直接變色 li 關於這個list style type的一些語法與引數 語法 list style type disc circle square decimal lower roman upper ro...

Linux程序相關

下圖為ps命令各種字尾作用 uptime 了解計算機從啟動到現在已經多少時間 ps aux 檢視系統中正在執行的所有的程序 ps命令後面使用一下選項表示不同的含義 a 所有使用者 u 以面向使用者的形式顯示,即顯示擁有每個程序的使用者 x 顯示每個程序 f 提供完整的列表 僅僅執行ps aux,在預...