作業系統實驗報告
實驗3 程序同步和通訊-生產者和消費者問題模擬
1. 目的:
除錯、修改、執行模擬程式,通過形象化的狀態顯示,使學生理解程序的概念,了解同步和通訊的過程,掌握程序通訊和同步的機制,特別是利用緩衝區進行同步和通訊的過程。通過補充新功能,使學生能靈活運用相關知識,培養創新能力。
2. 內容及要求:
1) 除錯、執行模擬程式。
2) 發現並修改程式中不完善的地方。
3) 修改程式,使用隨機數控制建立生產者和消費者的過程。
4) 在原來程式的基礎上,加入緩衝區的寫互斥控制功能,模擬多個程序訪問乙個公共緩衝區,當有程序正在寫緩衝區時,其他要訪問該緩衝區的程序必須等待,當有程序正在讀取緩衝區時,其他要求讀取的程序可以訪問,而要求寫的程序應該等待。
5) 完成1)、2)、3)功能的,得基本分,完成4)功能的加2分,有其它功能改進的再加2分
3. 程式說明:
本程式是模擬兩個程序,生產者(producer)和消費者(consumer)工作。生產者每次產生乙個資料,送入緩衝區中。消費者每次從緩衝區中取走乙個資料。
緩衝區可以容納8個資料。因為緩衝區是有限的,因此當其滿了時生產者程序應該等待,而空時,消費者程序應該等待;當生產者向緩衝區放入了乙個資料,應喚醒正在等待的消費者程序,同樣,當消費者取走乙個資料後,應喚醒正在等待的生產者程序。就是生產者和消費者之間的同步。
每次寫入和讀出資料時,都將讀和寫指標加一。當讀寫指標同樣時,又一起退回起點。當寫指標指向最後時,生產者就等待。當讀指標為零時,再次要讀取的消費者也應該等待。
為簡單起見,每次產生的資料為0-99的整數,從0開始,順序遞增。兩個程序的排程是通過執行者使用鍵盤來實現的。
4. 程式使用的資料結構
程序控制塊:包括程序名,程序狀態和執行次數。
緩衝區:乙個整數陣列。
緩衝區說明塊:包括型別,讀指標,寫指標,讀等待指標和寫等待指標。
5. 程式使用說明
啟動程式後,如果使用'p'鍵則執行一次生產者程序,使用'c'鍵則執行一次消費者程序。通過螢幕可以觀察到兩個程序的狀態和緩衝區變化的情況。
6.實驗流程圖
源程式#include
#include
#include
#define pipesize 8
enum status ;
#define normal 0
#define sleep 1
#define awake 2
struct pcb
;struct waitqueue
;struct pcb *producer; /* write wait point */
struct pcb *consumerread wait point */
struct waitqueue *headerqueue, *tailqueue;
int writeptr;
int readptr;
int writein, readout;
int buffer[pipesize];
int empty, full;
void runp(char in[3]), runc(char in[3]), print();
int main()
if ('p' == in[0])
else if ('c' == in[0])
else
print();
printf("\n");
}}void runp(char in[3])
producer->status = wait;
printf("producer %s process is waiting, can't be scheduled.\n", in);
struct waitqueue *p = (struct waitqueue *)malloc(sizeof(struct waitqueue));
strcpy(p-> in);
p->pcb.status = wait;
p->pcb.time = producer->time + 1;
p->next = null;
tailqueue->next = p;
tailqueue = p;
full++;
}else
else
}}void runc(char in[3])
consumer->status = wait;
printf("consumer %s is waiting, can't be scheduled.\n",in);
struct waitqueue *p = (struct waitqueue *)malloc(sizeof(struct waitqueue));
strcpy(p-> in);
p->pcb.status = wait;
東北大學開題報告
東北大學資訊科學與工程學院 畢業設計 開題報告 設計 題目 姓名學號 專業班級 指導教師 實習單位 開題日期 年月日 開題報告格式與要求 參考 1.課題提出 從工藝 技術 經濟 發展等方面論述 根據調研結果從理論 技術 具體應用 發展方向等方面進行闡述2.設計方案論證 可行性研究 例 業務描述,資料...
東北大學物理實驗報告
實驗一霍爾效應及其應用 預習思考題 1 列出計算霍爾係數 載流子濃度n 電導率 及遷移率 的計算公式,並註明單位。霍爾係數 載流子濃度 電導率 遷移率 2 如已知霍爾樣品的工作電流及磁感應強度b的方向,如何判斷樣品的導電型別?以根據右手螺旋定則,從工作電流旋到磁感應強度b確定的方向為正向,若測得的霍...
東北大學感測器實驗報告
一 實驗目的 了解金屬箔式應變片的應變效應,單臂電橋工作原理和效能。二 基本原理 電阻絲在外力作用下發生機械變形時,其電阻值發生變化,這就是電阻應變效應,描述電阻應變效應的關係式為 r r k 式中 r r為電阻絲電阻相對變化,k為應變靈敏係數,l l為電阻絲長度相對變化。金屬箔式應變片就是通過光刻...