大家都知道linux的程序是可以搶占的,搶占一般會出現在這兩種情況:
1.乙個程序進入task_running狀態,核心會檢查該程序的動態優先順序是否大於正在執行的程序,如果是的話則通過排程程式執行新程序
2.當乙個程序的時間片用完時,也會根據優先順序來判斷接下來執行哪個程序
需要指出的是被搶占的程序並沒有被掛起,依然處於task_running狀態,只是不再使用cpu。
linux的程序的分類大致有兩類:
第一種分類將程序分為"io受限"型以及「」cpu受限「型,前者頻繁的使用'io裝置'並將大量的時間用於等待『io輸入』,後者需要消耗大量的cpu時間用於計算。
第二種分類將程序分為三種:
1.互動式程序:需要花很多時間等待使用者的輸入,當檢查到輸入後需要很快的進行響應,但是本身占用cpu執行的時間並不長。典型應用場景有命令shell等,平均延時在50~150ms左右。
2.批處理程序:需要消耗的大量的cpu工作時間。典型場景如 編譯和科學計算。
我們通常將互動式程序和批處理程序稱之為普通程序。
普通程序有兩種優先順序:靜態優先順序和動態優先順序。
靜態優先順序決定了時間片的大小以及當其他程序時間片用完時的優先順序。動態優先順序的作用在前面說過了,動態優先順序如其名是會實時變化的,由bonus的數值和其靜態優先順序決定的。bonus的值依賴於程序過去的情況,與程序的平均隨眠值有關。同等靜態優先順序的情況下,睡眠時間越長,動態優先順序越高。
實時程序有兩種排程方式:fifo和rr。
fifo指的是最新的程序最優先處理,rr剛好相反,最老的程序最優先處理。實時程序的排程方式僅限於同等優先順序的,優先順序更高的實時程序無視任何排程方式,優先順序更高的永遠最先執行。
Linux的程序管理小結
1.檢視當前程序 可以通過下面的命令去檢視當前程序 ps 將某個時間點的程序運 況選取下來 top 動態的檢視當前的程序,所謂動態就是每隔一定時間自動重新整理一下顯示資料 pstree 以樹狀的結構顯示當前程序 2.賬戶對程序管理控制 使用者對程序的管理控制,是通過給予乙個訊號 signal 去告知...
Linux單元小結 1
虛擬機器控制 行提示符 kiosk 開啟shell的使用者 分隔符 foundation0 主機名稱 desktop 工作目錄名稱 身份提示符,表示超級使用者,表示普通使用者 命令要在行提示符之後輸入才能執行 切換使用者 高階使用者切換到低階使用者不需要密碼,低階使用者切換到高階或者平級使用者的切換...
Linux程序1 程序的概念
1 什麼是程序 乙個正在執行的程式就是乙個程序 2 併發 並行 非同步 同步 臨界區 併發 針對乙個處理器,看起來同時進行。乙個處理器在同一時刻只能執行乙個程式,但是cpu在多個程序之間快速切換,所以看起是同時進行的。這是一種假象 並行 針對多個處理器,一台機器上有多個處理器,那麼程序就有可能同時執...