銀行家算法實驗報告c語言版,銀行家算法實驗報告C語言版.doc

《操作系統》課程綜合性實驗報告

姓名: 學號: 2016 年 11 月 20 日

實驗題目進程調度算法程序設計一、實驗目的

通過對安全性算法和銀行家算法的模擬,進一步理解資源分配的基本概念,加深對資源申請,資源分配(銀行家算法)以及系統是否能分配(安全性算法)資源的理解。

二、設備與環境

1. 硬件設備:PC機一臺

2. 軟件環境:安裝Windows操作系統或者Linux操作系統,并安裝相關的程序開發環境,如C \C++\Java 等編程語言環境。

三、實驗內容

用C語言(或其它語言,如Java)實現對資源的資源申請與分配;

(一)銀行家算法(bank()函數):

進程i發出請求資源申請,

(1)如果Request [j]<=need[i,j],轉向步驟(2),否則認為出錯,因為他所需要的資源數已經超過它所宣布的最大值。

(2)如果:Request i[j]<=available[i,j],轉向步驟(3),否則表示尚無足夠資源,進程i需等待。

(3)若以上兩個條件都滿足,則系統試探著將資源分配給申請的進程,并修改下面數據結構中的數值:

Available[i,j]= Available[i,j]- Request [j];

Allocation[i][j]= Allocation[i][j]+ Request [j];

need[i][j]= need[i][j]- Request [j];

(4)試分配后,執行安全性檢查,調用check()函數檢查此次資源分配后系統是否處于安全狀態。若安全,才正式將資源分配給進程。否則本次試探分配作廢,恢復原來的資源分配狀態,讓該進程等待。

(5)用do{…}while 循環語句實現輸入字符y/n判斷是否繼續進行資源申請。

(二)安全性算法(safe()函數):

(1)設置兩個向量: 工作向量Work,它表示系統可提供給進程繼續運行所需的各類資源數目,在執行安全性算法開始時,Work= Available。 工作向量Finish,它表示系統是否有足夠的資源分配給進程,使之運行完成。開始時先做Finish[i]=false;當有足夠的資源分配給進程時, 再令Finish[i]=true。

(2)在進程中查找符合以下條件的進程: 條件1:Finish[i]=false; 條件2:need[i][j]<=Work[j] 若找到,則執行步驟(3)否則,執行步驟(4)

(3)當進程獲得資源后,可順利執行,直至完成,并釋放出分配給它的資源,故應執行: Work[j]= Work[j]+ Allocation[i][j]; Finish[i]=true; goto step (2);

(4)如果所有的Finish[i]=true都滿足,則表示系統處于安全狀態,否則,處于不安全狀態。

四、實驗結果及分析

1.實驗設計說明

按0由用戶輸入,按1由系統提供數據

2.實驗代碼

#include

#include

#include

#define max_process 50 //最大進程數

#define max_resource 100//最大資源數

#define false 0

#define true 1

int available[max_resource]={3,3,2};//可利用資源向量

int max[max_process][max_resource]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//最大需求矩陣

int allocation[max_process][max_resource]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//分配矩陣

int need[max_process][max_resource];//需求矩陣

int request[max_process][max_resource];//進程需要資源數

int finish[max_process];

int m=5,n=3;

void init();

int safe();

void bank();

void init2();

void print();

void print2();

void main()

{

int i;

printf("請輸入測試數據,按0由用戶輸入測試數據,按1由系統提供測試數據:\n");

scanf("%d",&i);

switch(i){

case 0: init();

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257366.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257366.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257366.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GetModuleHandle(NULL)獲取當前DLL模塊基址?

做一項目想在DLL內部代碼實現獲取本DLL的模塊基址&#xff0c;而且不知道本DLL名稱 最簡單的方法是想到GetModuleHandle(NULL)&#xff0c;是否可以呢? 參看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己嘗試了一下: DLL代碼(testDll): BOOL …

DataTable是否存在某個列的判斷

使用 DataTable.Columns.Contains方法可以判斷某個列名是否存在于某個DataTable中 //添加模擬數據 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【評分】第三次作業-團隊展示

【評分】第三次作業-團隊展示 總結 【2017-10-10】更新&#xff1a; 分數映射至 [1,2] 分 【注意】&#xff1a; 為了保護大家隱私&#xff0c;以后發表博客&#xff1a; 涉及到學號時&#xff0c;僅提供后三位涉及到姓名時&#xff0c;僅提供名&#xff08;省略姓&#xff09;…

c語言變量為什么要定義,C語言為什么要規定對所用到的變量要“先定義,后使用”...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓int a10;以上一句話對變量a進行了聲明&#xff0c;定義以及初始化extern int a;以上一句話僅僅對變量a進行了聲明&#xff0c;將a的鏈接屬性設置為externalint *p;以上定義了一個指針int a10;int *p;p&a;以上為指針變量進行了賦…

iOS 開發--github的demo

令人驚訝的是&#xff0c;YYText 雖然代碼量很大&#xff08;超過一萬行&#xff09;&#xff0c;但它只是 ibireme 的作品之一。ibireme 利用業余時間完成了 YYKit 工具庫&#xff0c;包括&#xff1a; YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 緩存…

RabbitMQ快速安裝配置指南

RabbitMQ快速安裝配置指南 官網的安裝教程由于需要解釋原理很多廢話&#xff0c;這里總結一下在CentOS7環境下的安裝配置過程。如需理解原理&#xff0c;請看官網原文的安裝指南或翻譯1. 安裝RabbitMQ server ## 安裝epel源 yum install -y epel-release## 安裝Erlang yum inst…

[轉]基于Starling移動項目開發準備工作

最近自己趁業余時間做的flash小游戲已經開發得差不多了&#xff0c;準備再完善下ui及數值后&#xff0c;投放到國外flash游戲站。期間也萌生想法&#xff0c;想把游戲拓展到手機平臺。這兩天嘗試了下&#xff0c;除去要接入ane接口的工作&#xff0c;小游戲本身不用做任何改動就…

c語言float輸出分數,c語言同一題目求解結果用float和int輸出值差1.

c語言同一題目求解結果用float和int輸出值差1.答案:3 信息版本&#xff1a;手機版解決時間 2018-12-08 22:35已解決2018-12-08 05:38c語言同一題目求解結果用float和int輸出值差1.最佳答案2018-12-08 06:01試試這樣就好了#include main(){long i;float j,j1,j2,j4,j6,j10;j110…

《構建之法》閱讀筆記02

今天我閱讀了《構建之法》4-6章。有許多的感悟。 以前編程序總喜歡亂命名變量&#xff0c;覺得自己看的懂就行了。但讀完構建之法第四章。我知道了程序是給別人看的&#xff0c;然后那只是程序比較簡單而已。如果一個程序過于龐大&#xff0c;而變量的命名有沒有實際的意義&…

2017-10-03 前端日報

2017-10-03 前端日報 精選 你需要知道的幾類npm依賴包管理看Zepto如何實現增刪改查DOM把cookie聊清楚6 Pro Tips from React DevelopersMulti-user experiences with A-Frameclintonwoo/hackernews-react-graphql: Hacker News clone rewritten with universal JavaScript, usi…

【樸靈評注】JavaScript 運行機制詳解:再談Event Loop

PS: 我先旁觀下大師們的討論&#xff0c;得多看書了~別人說的&#xff1a;“看了一下不覺得評注對到哪里去&#xff0c;只有吹毛求疵之感。 比如同步異步介紹&#xff0c;本來就無大錯&#xff1b;比如node圖里面的OS operation&#xff0c;推敲一下就可以猜到那是指同步操作&a…

c語言 strcpy原型,淺談C語言中strcpy,strcmp,strlen,strcat函數原型

實例如下&#xff1a;//strcat(dest,src)把src所指字符串添加到dest結尾處(覆蓋dest結尾處的\0)并添加\0char *strcat(char * strDest, const char *strSrc){char *resstrDest;assert((strDest!NULL)&&(strSrc!NULL));while(*strDest)strDest;while(*strDest*strSrc){s…

angular——更多按鈕的上拉菜單(路由跳轉)

<button class"btn gray_text_btn list_item" ng-click"action.toMoreOptions()"><i class"icon ion-navicon"></i> </button> <!-------------------- 底部按鈕 -----------------------><section class&qu…

Python版——博客網站四 編寫日志創建頁

2019獨角獸企業重金招聘Python工程師標準>>> 開源地址&#xff1a;https://github.com/leebingbin/Python3.WebAPP.Blog 單從編碼來說&#xff0c;WebApp開發真正困難的地方在于編寫前端頁面。前端頁面需要混合HTML、CSS和JavaScript&#xff0c;如果對這三者沒有深…

c語言0-1勻分布隨機數,C++ generate_canonical均勻分布隨機數函數用法詳解

標準均勻分布是一個在范圍 [0&#xff0c;1) 內的連續分布。generate_canonical() 函數模板會提供一個浮點值范圍在 [0&#xff0c;1) 內&#xff0c;且有給定的隨機比特數的標準均勻分布。它有 3 個模板參數&#xff1a;浮點類型、尾數的隨機比特的個數&#xff0c;以及使用的…

第三十四天 how can I 堅持

“不要把所有的雞蛋放在同一個籃子里”是錯誤的&#xff0c;投資應該像馬克吐溫說的那樣&#xff0c;要把所有的雞蛋放在同一籃子里&#xff0c;并小心的看好他。---巴菲特。 那盆花還沒死&#xff0c;但是我又能做什么呢&#xff1f;技術。永遠的技術。睡覺。轉載于:https://w…

01-Swift 介紹

簡介 Swift 語言由蘋果公司在 2014 年推出&#xff0c;用來撰寫 OS X 和 iOS 應用程序2014 年&#xff0c;在 Apple WWDC 發布 幾家歡喜,幾家愁愁者:只學Object-C的人歡喜者:之前做過java/python/js語言的人歷史 2010 年 7 月&#xff0c;蘋果開發者工具部門總監 Chris Lattner…

2017—2018 實驗報告:實驗一

實驗一&#xff1a;實驗報告 課程&#xff1a;程序設計與數據結構 班級&#xff1a; 1623 姓名&#xff1a; 張旭升 學號&#xff1a;20162329 指導教師&#xff1a;婁嘉鵬 王志強 實驗日期&#xff1a;9月25日 實驗密級&#xff1a; 非密級 預習程度&#xff1a; 已預習 必修/…

病床呼叫系統有顯示屏c語言,病床呼叫系統畢業設計

內容介紹完整版大學病床呼叫系統畢業設計&#xff0c;已修改完格式摘 要醫院已經從人工管理模式向智能化方向發展。“病床呼叫系統”可以實現對病房的智能化管理&#xff0c;可實現呼叫、求救警報、信息存儲、顯示等等功能。患者在住院期間&#xff0c;可能會在任意時間請求醫…

1. mybatis批量插入數據

通過list <insert id"saveByList" useGeneratedKeys"true" parameterType"java.util.List"> insert into T_App_Default_User(UserID,AppType,CreateTime)values <foreach collection"list" item"item" index&quo…