李軍伍資訊

2023-02-09 07:57:06 字數 2936 閱讀 7889

實驗一程序排程

一、 實習內容

1、 模擬多批道處理多作業系統的程序排程;

2、 模擬實現同步機構避免併發程序執行時可能與時間相關的錯誤。

二、 實習目的

在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒程序個數大於處理器數時,就必須依照某種策略來決定哪些程序優先占用處理器。本實習模擬在單處理器情況下的處理器排程,幫助學生加深了解處理器排程的工作。

模擬系統,對程序排程、程序執行狀態及pv操作原理加深理解和掌握。

三、 實習題目

採用剝奪式優先演算法,對3個程序進行模擬排程。模擬pv操作同步機構,用pv操作解決程序進入臨界區的問題。

【設計思想】

(1)對三個程序進行模擬排程時,對各程序的靜態數進行設定,設程序p1、p2、p3的優先級數分別為1,、2、3,優先級數越大,表示優先順序越低。每個程序都處於執行態「e」、就緒態「r」和等待態「w」三種狀態之一,並假定初始狀態為「r」。

(2)每乙個程序都用乙個pcb表來表示,pcb表的具體內容根據具體情況來定。本程序排程模擬中,為每個pcb表定義四項內容:程序塊號id、程序所處狀態status、優先級數priority以及等待原因waiter1。

系統在執行時,能夠顯示和列印各程序和系統引數的變化情況,以便於觀察各程序的排程。

(3)完成必要的初始化操作後便進入程序排程程式,首先由程序p1進入執行,當程序因等待某個事件被阻塞或喚醒某個等待程序時,轉程序排程模組。

(4)程序進入臨界區前後,呼叫pv操作。

(5)如果喚醒的程序的優先順序高於正在執行程序的優先順序,則剝奪現行程序的執行權。

(6)當三程序都處於等待狀態時,則退出本模擬系統。

四、程序模組示例

1.資料結構

structpcb[5];

2.訊號量

structsem[3];

3.現場保護棧

char stack[11][5];//每個程序都有乙個大小為10個字的現場保護棧,用來保護中斷時的斷點位址等資訊。

4.全域性變數

int i;//用來模擬乙個程式計數器

char addr;//用來模擬通用暫存器

int m1,m2;//為系統設定公用資料,被四個程序共享使用。

五、 程式執行框圖及執行結果

六、 程式說明

本程式採用j**a語言編寫,模擬3個程序的運**況,程序在執行過程中要呼叫p操作申請訊號量,如果該程序得到其申請的訊號量,就繼續執行,否則該程序被阻塞,並將程序置為所申請訊號量的等待者,如果已有其它程序在等待同一訊號量,則將該程序排在所有等待程序之後。

程序在執行過程中,除了呼叫p操作申請訊號量之外,還要呼叫v操作釋放訊號量。v操作釋放訊號量之後,將喚醒被阻塞的程序。

程式執行過程中,程序1通過p操作申請訊號量1,程序2通過p操作申請訊號量2,程序1消耗的訊號量由程序2通過v操作產生,程序2消耗的訊號量由程序3產生,程序3既消耗訊號量3,釋放訊號量2,i控制程序三的執行次數,當i的值大於設定的值時,程序是呼叫對它自己呼叫p操作,阻塞它本身,程式結束。

三個程序的執行通過程序排程模組統一安排。排程模組通過find()函式找到第乙個就緒程序,如果當前沒有程序在執行,就直接執行此就緒程序。如果有程序在執行,則比較兩者的優先數,然後執行優先權高者。

程式一共有四個類,程序控制塊類訊號量類測試框架類主程式測試類

七、 心得:

通過小組內多次爭論,**程式,終於將pv操作的機制弄明白,然後一起協同將三個程序程式排程弄好,在做程式介面的時候,我們借鑑了同學的經驗和部分的**,並向已經做出來的同學請教,同時改進自己的思維。在相互合作的過程中我們都認識到自己的經驗不足。一開始以為涉及到作業系統的模擬程式設計的都是高不可攀的,然而在仔細閱讀課本以及實驗說明後,發現只要弄清楚了優先級數排程的實現原理後其實並不難,用優先佇列就可以了。

通過這個實驗一來加深了對優先級數排程的理解,二來也加強了自己的程式設計實踐能力!雖然我們做好了這次的任務,但是也凸顯了很多的不足之處.需要鍛鍊.

八、 源程式:

public class pcb

public void setid(int id)

public int getwaiter1()

public void setwaiter1(int waiter1)

public int getpriority()

public void setpriority(int priority)

public string getstatus()

public void setstatus(string status)

}public class sem

public void setvalue(int value)

public int getwaiter2()

public void setwaiter2(int waiter2)

}public class processtestframe extends jframe

public string tostring()

}class mybutton extends jbutton

}/*** 進度條

* @author administrator

**/class mypanel extends jpanel

}/*** 進度展示

* @author administrator

**/class buttonpanel extends jpanel {

jbutton button1 = new jbutton("開始");

jbutton button2 = new jbutton("暫停");

jlabel label1 = new jlabel("程序一狀態:",

jlabel label2 = new jlabel("程序二狀態:",

jlabel label3 = new jlabel("程序三狀態:",

jtextarea area = new jtextarea[3];

學李林森事蹟資訊

蓮花池街道 四個注重 學習李林森先進事蹟 為紮實推動學習李林森同志先進事蹟活動,在全街掀起學先進 趕先進的熱潮,近日,蓮花池街道以 四個注重 為載體,多種形式組織黨員幹部學習李林森同志的先進事蹟。一 注重方向正確。機關 社群幹部緊緊圍繞街道黨工委 辦事處中心工作和服務大局,通過梳理工作職責 目標任務...

李橋教師隊伍建設發展規劃

為建設一支適應現代化教育要求的教師隊伍,根據夷陵區教育局檔案精神,結合我校教師隊伍的實際狀況,特制訂本規劃。一 指導思想 堅持以 理論和 重要思想為指導,以全面提高教師隊伍的整體素質為中心,以培養骨幹教師 學科帶頭人為重點,以精幹 高效 務實 創新為原則,建設一支具有良好思想政治素質和業務素質,符合...

關於李莊村黨員隊伍建設情況的

調研報告 按照縣委組織部要求,我們利用近段時間,對李莊村黨員隊伍建設情況進行了專題調研。通過走訪黨員群眾 召開座談會和發放調查問卷等方式,基本掌握了該村黨員隊伍的整體狀況,總結了經驗,查詢了問題,並就進一步加強黨員隊伍建設進行了思考。一 黨員隊伍的基本情況及工作情況 一 黨員數量及結構組成方面。李莊...