作業系統 常見的程序排程演算法
1、時間片輪轉排程演算法(rr):給每個程序固定的執行時間,根據程序到達的先後順序讓程序在單位時間片內執行,執行完成後便排程下乙個程序執行,時間片輪轉排程不考慮程序等待時間和執行時間,屬於搶占式排程。優點是兼顧長短作業;缺點是平均等待時間較長,上下文切換較費時。適用於分時系統。
2、先來先服務排程演算法(fcfs):根據程序到達的先後順序執行程序,不考慮等待時間和執行時間,會產生飢餓現象。屬於非搶占式排程,優點是公平,實現簡單;缺點是不利於短作業。
3、優先順序排程演算法(hpf):在程序等待佇列中選擇優先順序最高的來執行。
4、多級反饋佇列排程演算法:將時間片輪轉與優先順序排程相結合,把程序按優先順序分成不同的佇列,先按優先順序排程,優先順序相同的,按時間片輪轉。優點是兼顧長短作業,有較好的響應時間,可行性強,適用於各種作業環境。
5、高響應比優先排程演算法:根據「響應比=(程序執行時間+程序等待時間)/ 程序執行時間」這個公式得到的響應比來進行排程。高響應比優先演算法在等待時間相同的情況下,作業執行的時間越短,響應比越高,滿足段任務優先,同時響應比會隨著等待時間增加而變大,優先順序會提高,能夠避免飢餓現象。優點是兼顧長短作業,缺點是計算響應比開銷大,適用於批處理系統。
原文:
什麼是pcb
task_struct:
為了管理程序,作業系統必須對每個程序所做的事情進行清楚的描述,為此,作業系統使用資料結構來代表處理不同的實體,這個資料結構就是通常所說的程序描述符或程序控制塊(pcb)。
在linux作業系統下這就是task_struct結構 ,所屬的標頭檔案#include 每個程序都會被分配乙個task_struct結構,它包含了這個程序的所有資訊,在任何時候作業系統都能夠跟蹤這個結構的資訊,宰割結構是linux核心彙總最重要的資料結構,下面我們會詳細的介紹。
這個程序的主要資訊:
1、與程序相關的唯一識別符號,區別正在執行的程序和其他程序
2、狀態:描述程序的狀態,因為程序有阻塞、掛起、執行等好幾個狀態,所以都有個表示符來記錄程序的執行狀態。
3、優先順序:如果有好幾個程序正在執行,就涉及到程序的執行的先後順序,這和程序的優先順序這個識別符號有關。
6、上下文資料:程序執行時處理器的暫存器中的資料。
7、i/o狀態資訊:包括顯示的i/o請求,分配給程序的i/o裝置和被程序使用的檔案列表。
8、記賬資訊:包括處理機的時間總和,記賬號等等。
其他的proc操作等等:
孤兒程序
1 #include
2 #include
3 #include
4 5 int main()
6 16 else // parent
17
21 }
殭屍程序
1 #include
2 #include
3 #include
4 5 int main()
6 15 else // parent
16
20 return 0;
21 }
kafka kafka簡單概念理解
kafka官方介紹是分布式的流處理平台,理解上比較難。先簡單理解為一種分布式的支援發布訂閱的高可用訊息佇列 kafka通過topic 主題 對資料分類,每條記錄包含 乙個key,乙個value,乙個時間戳 核心概念 一串流的記錄topic,乙個topic可以有乙個或者多個消費者來訂閱 topic資料...
Linux 程序概念以及程序狀態理解
2 程序狀態 2.2 孤兒程序 2.3 守護程序 精靈程序 程序是乙個pcb 程序控制塊 是乙個執行程式中的描述 在linux下是乙個task struct結構體,通過這個結構體實現作業系統對執行中程式的排程管理。1.1 task struct結構體 task struct結構體是linux核心中的...
程序與執行緒的簡單理解
這部分有參考網上的記憶方法,記下來用以複習 一。程序 process 和執行緒 thread 程序 process 和執行緒 thread 是作業系統中的基本概念,但是比較抽象,不容易記憶和理解,接下來就一模擬的的方式來闡述這些概念,以便於簡單易懂。計算機的核心是cpu,它主要工作是計算,時刻在執行...