




已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
操作系統(tǒng)實驗實驗二 進程管理 學號 1315251003 姓名 陳鑫 班級 集成電路 華僑大學電子工程系實驗二 進程管理實驗目的 1、 理解進程的概念,明確進程和程序的區(qū)別。2、 理解并發(fā)執(zhí)行的實質。3、 掌握進程的創(chuàng)建、睡眠、撤銷等進程控制方法。 實驗內容與基本要求 用C語言編寫程序,模擬實現(xiàn)創(chuàng)建新的進程;查看運行進程;換出某個進程;殺死進程等功能。 實驗報告內容 1、 進程、進程控制塊等的基本原理。2、 程序流程圖。3、 程序及注釋。4、 運行結果以及結論。原理:C語言是順序執(zhí)行語言,沒有多線程編程.所以在此,只是利用鏈表的操作模擬了一個進程管理.通過創(chuàng)建3條單向鏈表:run運行態(tài)進程鏈表 ready就緒態(tài)進程鏈表 wait等待態(tài)進程鏈表 通過鏈表節(jié)點的插入,退出,刪除,增加.可以實現(xiàn)進程管理的模擬.源碼:#include #include#pragma warning(disable:4996)typedef struct PCBint UID;int Prio;char name10;struct PCB *next;PCB;PCB *ready, *run, *wait;int insert(PCB *head, PCB *node)PCB *p;p = head;if (p-next = NULL)head-next = node;return 1;while (p)if (p-next = NULL)p-next = node;return 1;elsep = p-next;PCB *dequeue(PCB *head)PCB *p;p = head;if (p-next = NULL)return NULL;elsep = p-next;head-next = p-next;p-next = NULL;return p;int init()system(cls);PCB *p;ready = (PCB *)malloc(sizeof(PCB);ready-next = NULL;run = (PCB *)malloc(sizeof(PCB);run-next = NULL;wait = (PCB *)malloc(sizeof(PCB);wait-next = NULL;printf(輸入進程UID和進程名,優(yōu)先級來創(chuàng)建一個新的進程:n);while (1)p = (PCB *)malloc(sizeof(PCB);p-next = NULL;scanf(%d %s %d,&p-UID,&p-name,&p-Prio);if (p-UID = 0)printf(初始進程已經被創(chuàng)建n);break;elseinsert(ready, p);printf(t%dt%st%dn,p-UID,p-name,p-Prio);return 1;int create()PCB *p;p = (PCB *)malloc(sizeof(PCB);p-next = NULL;printf(輸入進程UID和進程名,優(yōu)先級來創(chuàng)建一個新的進程n);scanf(%d %s %d, &p-UID, &p-name,&p-Prio);if (insert(ready, p)printf(創(chuàng)建了一個新進程:UID =%d NAME =%s Prio= %dn, p-UID, p-name,p-Prio);elseprintf(創(chuàng)建失敗n);return 1;int runqueue()PCB *p = dequeue(ready);if (p = NULL)printf(就緒隊列中沒有進程! n);return 0;elseinsert(run, p);printf(運行進程隊列中插入了一個進程:UID = %d NAME= %s Prio= %dn, p-UID, p-name,p-Prio);return 1;int waitqueue()PCB *p = dequeue(run);if (p = NULL)printf(等待進程隊列中沒有進程);return 0;elseinsert(wait, p);printf(等待進程隊列中插入一個進程:UID = %d NAME= %s Prio= %dn, p-UID, p-name,p-Prio);return 1;int readyqueue()PCB *p = dequeue(wait);if (p = NULL)printf(等待進程隊列中沒有進程 n);return 0;elseinsert(ready, p);printf(就緒進程隊列中插入一個進程: UID= %d NAME= %s Prio= %dn,p-UID,p-name,p-Prio);return 1;int outputqueue(PCB *head)PCB *p;if (head-next = NULL)printf(隊列為空n);return 1;p = head-next;while (p)printf(UID= %d NAME= %s Prio= %dn,p-UID,p-name,p-Prio);p = p-next;return 0;int outputs()printf(就緒隊列:n);outputqueue(ready);printf(運行隊列:n);outputqueue(run);printf(等待隊列:n);outputqueue(wait);return 1;int main()char COMMAND;if (init() = 1)printf(初始化.n);elseprintf(初始化失敗:n);printf(創(chuàng)建一個新的進程請輸入c;n);printf(就緒隊列轉向運行隊列請輸入r;n);printf(運行隊列轉向等待隊列請輸入w;n);printf(等待隊列轉向就緒隊列請輸入d;n);printf(請輸入命令(支持大小寫均識別);n);while (1)scanf(%c,&COMMAND);switch (COMMAND)case n:break;case c:create(); break;case r:runqueue(); break;case w:waitqueue(); break;case d:readyqueue(); break;caseo:outputs(); break;case C:create(); break;case R:runqueue(); break;c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《漢語閱讀教程》課件-教學課件:漢語閱讀教程
- 2025標準辦公室裝修設計合同
- 湖南省長沙市雅禮教育集團2024-2025學年高一下學期期中考試物理試題(原卷版)
- 鈍痛的臨床護理
- 2025金融服務行業(yè)中介居間合同范本
- 2025汽車買賣的合同范文
- 江蘇移動2025春季校園招聘筆試參考題庫附帶答案詳解
- 2025房產交易合同樣本:個人房屋買賣協(xié)議
- 2025年公共營養(yǎng)師之二級營養(yǎng)師題庫綜合試卷B卷附答案
- 胃出口梗阻的臨床護理
- (二模)濟寧市2025年4月高考模擬考試地理試卷
- 首都醫(yī)科大學附屬北京安貞醫(yī)院招聘考試真題2024
- 抽化糞池合同協(xié)議
- 中醫(yī)養(yǎng)生館運營方案中醫(yī)養(yǎng)生館策劃書
- (二模)寧波市2024-2025學年第二學期高考模擬考試 英語試卷(含答案)+聽力音頻+聽力原文
- 高考備考:100個高考??家族e的文言實詞(翻譯+正誤辨析)
- 軟件項目交付管理制度
- 知識產權現(xiàn)場審核記錄表模板
- 機械系統(tǒng)動力學試題及答案
- 食品安全自查、從業(yè)人員健康管理、進貨查驗記錄、食品安全事故處置等保證食品安全的規(guī)章制度
- 2024年吉林省中考滿分作文《情味浸潤的時光》4
評論
0/150
提交評論