一、實驗目的
通過實驗使學生進一步了解程序、程序狀態、程序控制等基本概念。基本能達到下列具體的目標:
1、 理解程序 pcb 的概念,以及 pcb 如何實現、如何組織以及管理。
2、 複習資料結構中如何對鏈的操作,包括建鏈、刪除、插入結點等,來實現程序的管理。
二、實驗環境說明:
此實驗採用的是win7作業系統
直接編寫c或c++檔案在終端用命令列執行;
3.dev-c++
三、實驗內容
1、建立乙個結點,即 pcb
塊包括使用者標識域、狀態域(執行、等待、就緒)、 link 域。
2、建立三個佇列(執行佇列、就緒佇列、等待佇列)。
3、根據程序狀態轉換實現對三個佇列的具體操作。具體的驅動可以採用時間片演算法或手動排程的形式完成三個狀態之間的轉換
4、用 switch 選擇語句選擇狀態。
5、按照自己的設定能完成所有的狀態轉換的執行(包括建立和執行結束)。
#include
#include
#include
#include
#include
struct pcb_type
;//缺少「};」
int shumu=
0,pid_l;
struct pcb_type neicun[20]
;struct pcb_type hc[10]
;int max=0;
int number=0;
void
create()
;void
run();
void
huanchu()
;void
kill()
;int
main()
}}void
create()
else
printf
("\n建立程序成功!\n");
}void
run(
)int max=0;
for(
int i=
0;i)// if(
(neicun[i]
.state==
2&&neicun[i]
.priority>=neicun[max]
.priority))if
(neicun[max]
.state==2)
//這裡增加顯示當前執行的程序 }}
/* 換出 */
void
huanchu()
printf
("當前已有程序%d個:\n"
,shumu)
;for
(int h=
0;h)//當前所有的程序
printf
(,h,neicun[h]
.pid,neicun[h]
.priority,neicun[h]
.cputime,neicun[h]
.state)
;printf
("請輸入要換出程式的編號:");
scanf
("%d"
,&k);if
(neicun[k]
.state==3)
else
printf
("無法換出,程序名為:%s的程序"
,neicun[k]
.pid)
;//換出結果提示
}void
kill()
int k=0;
printf
("當前已有程序%d個:\n"
,shumu)
;for
(int h=
0;h)//當前所有的程序
printf
(,h,neicun[h]
.pid,neicun[h]
.priority,neicun[h]
.cputime,neicun[h]
.state)
;printf
("請輸入要殺死程式的序號:");
scanf
("%d"
,&k)
; neicun[k]
.cputime=0;
neicun[k]
.priority=0;
neicun[k]
.state=0;
if(k==
(shumu-1)
) shumu--
;else
shumu--;}
printf
("程序名為:%s已被殺死!\n"
,neicun[k]
.pid)
;//顯示程序已被殺死
}
CentOS 系統檢視程序 殺死程序
1 檢視程序 ps aux grep nginx 上述命令表示檢視nginx相關的程序 2 殺死程序 kill 9 7819 上述命令表示殺死pid為7819的程序 3 附錄 ps命令各引數說明 ps a 顯示現行終端機下的所有程式,包括其他使用者的程式 ps a 顯示所有程式 ps c 列出程式時...
程序(一) 作業系統 程序建立
馮諾依曼體系結構 認識作業系統 程序概念 程序狀態 環境變數 程式位址空間 進度排程 現代計算機硬體體系結構 輸入裝置 採集獲取資料 鍵盤 輸出裝置 資料輸出 顯示器 儲存器 記憶體 運算器 處理器cpu 控制器 硬體結構決定軟體行為 qq聊天 所有的硬體都是圍繞著記憶體工作的 為什麼不使用更大的硬...
作業系統之程序建立
作業系統基於某種原因決定建立乙個新程序時,會按如下步驟操作 為新程序分配乙個唯一的程序識別符號。此時,主程序表中會新增乙個新表項,每個程序乙個表項。為程序分配空間。這包括程序映像中的所有元素。因此,作業系統必須知道私有使用者位址空間 程式和資料 和使用者棧需要多少空間。預設情況下會根據程序的型別分配...