1- 調研程序的排程演算法.
程序排程演算法主要有以下幾種:
1)先來先服務排程演算法
先來先服務(fcfs)排程演算法是一種最簡單的排程演算法,該演算法即可用於作業排程,也可以用於程序排程,fcfs演算法比較有利於長程序(作業),而不利於短作業(程序),由此可知本演算法適合於cpu繁忙型的作業(程序)。而不利於i/o繁忙型的作業(程序)在所有排程演算法中,最簡單的是非搶占式的fcfs演算法。
演算法優點:易於理解且實現簡單,只需要乙個佇列(fifo),且相當公平。
演算法缺點:比較有利於長程序,而不利於短程序,有利於cpu繁忙的程序,而不利於i/o繁忙的程序。
2)短作業優先排程演算法
短作業進(程序)優先排程運算(sjf,short test job first)又稱為短作業「短程序優先」spn(short test process next);是對fcfs演算法的改進,其目標是減少平均周轉的時間
3)最高響應比優先排程演算法
4)輪轉排程演算法
5)多級反饋佇列
2- 調研task_struct結構體, 理解結構體中的各個欄位的含義.
task_struct是linux系統中的pcb.
標示符: 描述本程序的唯一標示符,用來區別其他程序。
狀態: 任務狀態,退出**,退出訊號等。
優先順序: 相對於其他程序的優先順序。
程式計數器: 程式中即將被執行的下一條指令的位址。
記憶體指標: 包括程式**和程序相關資料的指標,還有和其他程序共享的記憶體塊的指標
上下文資料: 程序執行時處理器的暫存器中的資料[休學例子,要加圖cpu,暫存器]。
i/o狀態資訊: 包括顯示的i/o請求,分配給程序的i/o裝置和被程序使用的檔案列表。
記賬資訊: 可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等。
其他資訊
3- 使用**模擬實現殭屍程序, 孤兒程序的場景.
//殭屍程序
#include #include #include int main()
if(pid>0)
return 0;
}//孤兒程序
#include #include #include int main()
if(pid>0)
return 0;
}
4- 練習使用setenv, export等環境變數相關的函式和命令.
1.setenv(改變或增加環境變數)
相關函式 getenv,putenv,unsetenv
表頭檔案 #include
定義函式 int setenv(const char *name,const char * value,int overwrite);
函式說明 setenv()用來改變或增加環境變數的內容。
引數 name為環境變數名稱字串。
引數 value則為變數內容。
引數 overwrite用來決定是否要改變已存在的環境變數。如果overwrite不為0,則改變環境變數原有內容,原有內容會被改為引數value所指的變數內容。如果overwrite為0,且該環境變數已有內容,則引數value會被忽略。
返回值 執行成功則返回0,有錯誤發生時返回-1。
錯誤** enomem 記憶體不足,無法配置新的環境變數空間
2.export [-fnp][變數名稱]=[變數設定值]
-f 代表[變數名稱]中為函式名稱。
-n 刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
-p 列出所有的shell賦予程式的環境變數。
Linux程序相關
下圖為ps命令各種字尾作用 uptime 了解計算機從啟動到現在已經多少時間 ps aux 檢視系統中正在執行的所有的程序 ps命令後面使用一下選項表示不同的含義 a 所有使用者 u 以面向使用者的形式顯示,即顯示擁有每個程序的使用者 x 顯示每個程序 f 提供完整的列表 僅僅執行ps aux,在預...
Linux程序理解
1.1程序分類 linux作業系統包括三種不同型別的程序,每種程序都有自己的特點和屬性。a 互動程序 由乙個shell啟動的程序。互動程序既可以在前台執行,也可以在後台執行。b 批處理程序 這種程序和終端沒有聯絡,是乙個程序序列。c 監控程序 也稱守護程序 linux系統啟動時啟動的程序,並在後台執...
linux 程序相關簡介
簡單的說,程序是處於執行狀態的程式,乙個執行著的程式可能有多個程序。程序一般分為互動程序 批處理程序和守護程序三類。守護程序總是活躍的,一般是後台執行,守護程序一般是由系統在開機時通過指令碼自動啟用啟動或超級管理使用者root來啟動。程序的屬性 程序標誌符 程序id,核心分配,該標誌符非負,範圍0 ...