程序概念的簡單理解

2021-08-29 07:37:16 字數 1578 閱讀 6884

作業系統 常見的程序排程演算法

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,它主要工作是計算,時刻在執行...