東北大學作業系統實驗三報告

2021-03-04 05:37:21 字數 2417 閱讀 2094

作業系統實驗報告

實驗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為電阻絲長度相對變化。金屬箔式應變片就是通過光刻...