程序管理主要包括程序排程,程序的建立和撤銷、程序的阻塞和喚醒,中斷作用的實現。
用全域性變數模擬重要暫存器,如cpu重要暫存器,程式狀態暫存器psw、指令暫存器ir,程式計數器pc,資料緩衝暫存器dr等。
中斷的發現應該是硬體的工作,這裡在函式cpu中加檢測psw的方式來模擬。在cpu()函式中,每執行一條指令之前,先檢查psw,判斷有無中斷,若有進行中斷處理,然後再執行解釋指令。cpu函式應該不斷迴圈執行的。
程式結束(執行指令end形成的中斷,軟中斷):將結果寫入檔案out,其中包括檔案路徑名和x的值,呼叫程序撤銷原語撤銷程序,然後進行程序排程;
i/o中斷(裝置完成輸入輸出):將輸入輸出完成的程序喚醒,將等待該裝置的乙個程序同時喚醒。
系統中的絕對時鐘和相對時鐘用全域性變數模擬。系統時鐘用來記錄開機以後的時間。
這裡的系統時鐘並不是計算機的真正的時鐘,這裡所說的時間只是乙個單位,例如使用vb中的時鐘控制項實現,每觸發一次timer事件,絕對時鐘增1,表示增加乙個時間單位,絕對時鐘減1,表示時間片消耗乙個。
程序控制塊內容包括程序識別符號、主要暫存器內容、程序狀態、阻塞原因等等。本模擬系統最多容納10個程序塊。
pcb區域用陣列模擬。
程序控制塊根據內容的不同組成不同的佇列,空白程序控制塊鏈、就緒佇列和阻塞佇列,正在執行的程序只有乙個,系統初始時只有空白程序控制塊鏈。
採用搶占式優先順序排程演算法。
程序排程函式的主要工作是:
將正在執行的程序儲存在該程序對應程序控制塊中;
從就緒佇列中選擇乙個程序;
將這個程序中程序控制塊中記錄的各暫存器內容恢復到cpu各個暫存器內。
建立四個函式模擬程序建立、撤銷、阻塞和喚醒四個原語。
程序建立create
程序建立的主要工作是:
第一步,申請空白程序控制塊;
第二步,申請主存空間,申請成功,裝入主存;
第三步,初始化程序控制塊;
第四步,將程序鏈入就緒佇列,根據情況決定是否轉向程序排程。
程序撤銷destory
程序撤銷的主要工作是:
第一步,**程序所佔記憶體資源;
第二步,**程序控制塊;
第三步,在螢幕上顯示程序執行結果,程序撤銷
程序阻塞block
程序阻塞的主要工作是:
第一步,儲存執行程序的cpu現場;
第二步,修改程序狀態;
第三步,將程序鏈入對應的阻塞佇列,然後轉向程序排程。
1.4.8程序的建立:
程序建立的主要工作是:
第一步,申請空白程序控制塊;
第二步,申請主存空間,申請成功,裝入主存;
第三步,初始化程序控制塊;
1.4.9程序的撤銷:
程序撤銷的主要工作是:
第一步,**程序所佔記憶體資源;
第二步,**程序控制塊;
第三步,在螢幕上顯示程序執行結果,程序撤銷
1.4.10 程序的阻塞:
程序阻塞的主要工作是:
第一步,儲存執行程序的cpu現場;
第二步,修改程序狀態;
第三步,將程序鏈入對應的阻塞佇列,然後轉向程序排程。
1.4.11程序的喚醒
程序喚醒的主要工作是
第一步,將程序由阻塞佇列中摘下;
第二步,修改程序狀態為就緒;
第三步,鏈入就緒佇列,根據情況決定是否轉向程序排程。
1.4.12螢幕顯示
螢幕顯示要求包括:
顯示系統時鐘;
顯示正在執行的程序的程序名、執行的指令、中間結果、相對時鐘暫存器內容;
顯示就緒佇列中程序名;
顯示阻塞佇列中程序名。
1.4.13硬體工作的模擬
硬體工作的模擬包括**處理器的模擬、主要暫存器的模擬、中斷的模擬和時鐘的模擬四方面。
①**處理器的模擬。用函式cpu( )(該函式不能有引數)模擬**處理器。該函式主要負責解釋「可執行檔案」中的命令。如:給x賦值x=?;x自加x++;x自減x–;申請裝置和時間!??;程式結束end;
cpu只能解釋指令暫存器ir中的指令。乙個程序的執行時要根據程序執行的位置,將對應的指令存放到指令暫存器中。
②主要暫存器的模擬用全域性變數模擬重要暫存器,如cpu重要暫存器,程式狀態暫存器psw、指令暫存器ir,程式計數器pc,資料緩衝暫存器dr等。
③中斷的模擬。中斷的發現應該是硬體的工作,這裡在函式cpu中加檢測psw的方式來模擬。在cpu()函式中,每執行一條指令之前,先檢查psw,判斷有無中斷,若有進行中斷處理,然後再執行解釋指令。cpu函式應該不斷迴圈執行的。
模擬中斷的種類有如下幾種:程式結束、時間片到、i/o中斷。程式結束(執行指令end形成的中斷,軟中斷):將結果寫入檔案out,其中包括檔案路徑名和x的值,呼叫程序撤銷原語撤銷程序,然後進行程序排程;i/o中斷(裝置完成輸入輸出):將輸入輸出完成的程序喚醒,將等待該裝置的乙個程序同時喚醒。時鐘中斷:程序時間片用完,轉為就緒,重新程序排程。
④時鐘的模擬。系統中的絕對時鐘和相對時鐘用全域性變數模擬。系統時鐘用來記錄開機以後的時間。
這裡的系統時鐘並不是計算機的真正的時鐘,這裡所說的時間只是乙個單位,例如使用vb中的時鐘控制項實現,每觸發一次timer事件,絕對時鐘增1,表示增加乙個時間單位,絕對時鐘減1。
作業系統課程設計
實驗 一 程序管理與程序同步 實驗目的 了解程序管理的實現方法,理解和掌握處理程序同步問題的方法並完成程式設計。實驗內容 實現銀行家演算法 程序排程的過程模擬。實驗步驟 理解銀行家演算法的核心機制 設計相應資料結構 程式設計實現 測試。理解程序的三狀態排程過程 設計排程演算法 程式設計實現 測試。實...
作業系統課程設計
1 實驗內容 學習程序管理的設計與實現,學習和運用作業系統原理,設計乙個作業系統子系統的模擬系統。通過該系統的設計除錯可增加對作業系統實現的感知性。設計乙個允許n個程序併發執行的程序管理的模擬系統。該系統包括簡單的程序控制 同步及通訊機構,其程序排程演算法可任意選擇。分析系統所需的資料結構 演算法的...
作業系統課程設計題目
1.shell 程式設計實驗 實驗 編寫乙個shell指令碼檔案 e 1 自學命令 cut,grep,sort,test。編寫shell指令碼,將以下檔案d1和d2集成為檔案d3。e 2 編寫兩個shell 指令碼s1,s2,s1能夠啟動3個程序,程序名稱分別為a,b,c,每個程序的 如下 int ...