進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第1頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第2頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第3頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第4頁
進程調(diào)度算法磁盤調(diào)度算法銀行家算法操作系統(tǒng)課程設(shè)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

操作系統(tǒng)課程設(shè)計說明書學院名稱:專業(yè)班級:姓名:學號:2013年1月1日

評分標準優(yōu)秀:有完整的符合標準的文檔,文檔有條理、文筆通順,格式正確,程序完全實現(xiàn)設(shè)計要求,獨立完成;良好:有完整的符合標準的文檔,文檔有條理、文筆通順,格式正確;程序完全實現(xiàn)設(shè)計要求,獨立完成,但存在少量錯誤;中等:有完整的符合標準的文檔,有基本實現(xiàn)設(shè)計方案的軟件,設(shè)計方案正確;及格:有完整的符合標準的文檔,有基本實現(xiàn)設(shè)計方案的軟件,設(shè)計方案基本正確;不及格:沒有完整的符合標準的文檔,軟件沒有基本實現(xiàn)設(shè)計方案,設(shè)計方案不正確。沒有獨立完成,抄襲或雷同。成績評定為:。指導教師:年月日

目錄一.進程調(diào)度算法4-----23頁二.銀行家算法24-----34頁三.磁盤調(diào)度算法35------46頁進程調(diào)度算法1.設(shè)計目的在多道程序設(shè)計中,經(jīng)常是若干個進程同時處于就緒狀態(tài),必須依照某種策略決定哪個進程優(yōu)先占有處理機,因而必須解決進程調(diào)度的問題,進程調(diào)度算法就是要解決進程調(diào)度的問題。2.任務(wù)及要求2.1設(shè)計任務(wù)設(shè)計程序來模擬進程的四種調(diào)度算法,模擬實現(xiàn)調(diào)度的基本功能。2.2設(shè)計要求產(chǎn)生的各種隨機數(shù)要加以限制,如alltime限制在40以內(nèi)的整數(shù)。進程的數(shù)量n不能取值過大。3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)每個用來標識進程的進程控制塊PCB用結(jié)構(gòu)來描述,包括以下字段:(1)進程優(yōu)先數(shù)ID,其中0為閑逛進程,用戶進程的標識數(shù)為1,2,3…。(2)進程優(yōu)先級Priority,閑逛進程(idle)的優(yōu)先級為0,用戶進程的優(yōu)先級大于0,且隨機產(chǎn)生,優(yōu)先數(shù)越大,優(yōu)先級越高。(3)進程占用的CPU時間CPUtime,進程每運行一次,累計值等于4。(4)進程總共需要運行時間Alltime,利用隨機函數(shù)產(chǎn)生。(5)進程狀態(tài),0:就緒態(tài);1:運行態(tài);2:阻塞態(tài)。利用鏈表將數(shù)據(jù)連接起來,實現(xiàn)數(shù)據(jù)的存儲。3.2鏈表模塊3.2.1功能實現(xiàn)鏈表的存儲功能,以及實現(xiàn)存儲的查找功能。3.2.2數(shù)據(jù)結(jié)構(gòu)構(gòu)造鏈表這個數(shù)據(jù)結(jié)構(gòu),以及鏈表的初始化,鏈表的插入,鏈表的長度。3.2.3算法typedefstruct{ElemType*elem;intlength;intlistsize;}SqList;StatusInitList(SqList&l){ l.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!l.elem)exit(OVERFLOW); l.length=0; l.listsize=LIST_INIT_SIZE; returnOK;}intListLength(SqListl){ return(l.length);}StatusListInsert_Sq(SqList&L,inti,ElemTypee){//在順序表L的第i個位置前插入元素e,i的合法值為1..L.length+1if(i<1||i>L.length+1) returnERROR;if(L.length>=L.listsize){ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(OVERFLOW);L.elem=newbase; L.listsize+=LISTINCREMENT;}ElemType*q=&L.elem[i-1],*p=&L.elem[L.length-1];while(p>=q){ *(p+1)=*p;--p;}//插入位置后的元素右移*q=e;++L.length;returnOK;}StatusGetElem(SqListL,inti,ElemType&e){ if(i<=0||i>L.length) returnERROR; else e=*(L.elem+i-1); returnOK;}voidOutputlist(SqList&L){ if(0==L.length) printf("空集!"); else for(inti=0;i<L.length;++i) { printf("%c",*(L.elem+i)); }}3.3主函數(shù)模塊3.3.1功能實現(xiàn)進程調(diào)度的四種算法,以及人機交互的菜單。3.3.2數(shù)據(jù)結(jié)構(gòu)主要包括五個部分,分別是四種算法,和進程的輸入和菜單部分,功能分別實現(xiàn)。3.3.3算法voidmain(){ for(1;;){ intnumber; PCBpcb[100]; srand(time(0)); intmax; intppp[100]; inttime=0; inttime1; intm; inta[100]; a[0]=0; printf("\n*************************進程調(diào)度算法的模擬***************************\n"); printf("*1.先到先服務(wù)調(diào)度2.最短作業(yè)優(yōu)先調(diào)度*\n"); printf("*3.優(yōu)先權(quán)調(diào)度4.輪轉(zhuǎn)發(fā)調(diào)度*\n"); printf("**********************************************************************"); printf("\n請選擇調(diào)度的方法:"); scanf("%d",&m); if(m!=1&&m!=2&&m!=3&&m!=4) { printf("輸入錯誤!重新輸入:"); scanf("%d",&m); if(m!=1&&m!=2&&m!=3&&m!=4) { printf("輸入錯誤!重新輸入:"); scanf("%d",&m); if(m!=1&&m!=2&&m!=3&&m!=4) { printf("輸入錯誤!重新輸入:"); scanf("%d",&m); if(m!=1&&m!=2&&m!=3&&m!=4) { printf("輸入錯誤!重新輸入:"); scanf("%d",&m); } } } } printf("請輸入進程的個數(shù):"); scanf("%d",&number); printf("\n開始時用戶進程均為就緒狀態(tài),運行時間隨機產(chǎn)生\n\n"); SqListsq; InitList(sq); for(intr=0;r<number;r++) { pcb[r].CPUtime=0; } for(inti=0;i<number;i++) { pcb[i].Priority=rand()%50; while(1) { if(pcb[i].Priority<20) { pcb[i].Priority=rand()%50; } else break; } pcb[i].Alltime=rand()%40; while(1) { if(pcb[i].Alltime<10) { pcb[i].Alltime=rand()%40; } else break; } } for(intj=0;j<number;j++) { ListLength(sq); ListInsert_Sq(sq,ListLength(sq),pcb[i]); } if(m==1) { printf("\n****************程序演示開始*****************\n"); intcoun=0;//計數(shù)變量 intwait[100];//等待時間數(shù)組 wait[0]=0; intAllwait=0; for(inti1=0;i1<number;i1++) { printf("下面開始調(diào)用第%d個進程;\n",i1); printf("開始時間為%d執(zhí)行時間為%d\n",coun,pcb[i1].Alltime); coun+=pcb[i1].Alltime; if(i1!=0) { wait[i1]=pcb[i1-1].Alltime+wait[i1-1]; } } for(inti2=0;i2<number;i2++) { Allwait=wait[i2]+Allwait; } printf("平均等待時間為:%d\n",Allwait/number); } if(m==2) { intmin=pcb[0].Alltime;intwait1[100]; wait1[0]=0; intin=0; intcoun1=0; printf("*****************最短作業(yè)優(yōu)先調(diào)度!********************\n"); cout<<"進程所需時間分別是:"<<endl; for(i=0;i<number;i++) { cout<<pcb[i].Alltime<<endl; } printf("進程調(diào)度的順序為:"); for(i=0;i<number;i++) { min=50;for(j=0;j<number;j++) { if(pcb[j].Alltime<min) { min=pcb[j].Alltime; in=j; } } printf("%d",in+1); pcb[in].Alltime+=50; } }if(m==3) { printf("ID優(yōu)先級運行總時間進程狀態(tài)\n"); for(intk=0;k<number;k++) { printf("%d%d%d就緒\n",k+1,pcb[k].Priority,pcb[k].Alltime); } printf("\n***********************程序調(diào)度演示開始***********************\n"); for(intf=1;f<1000;f++) { intcount=0,count1=0; for(inti=0;i<number;i++) { ppp[i]=pcb[i].Priority; if(pcb[i].Alltime!=0) { count1++; } } count1--; time=time+count1*4; max=Max(ppp,number); if(pcb[max].Alltime==0) { ppp[max]=-1; pcb[max].Priority=-1; max=Max(ppp,number); } pcb[max].Priority-=4; pcb[max].Alltime-=4; pcb[max].CPUtime+=4; if(pcb[max].Alltime<=0) { pcb[max].Alltime=0; }for(intw=0;w<number;w++) { if(pcb[w].Alltime==0) { ppp[w]=-1; pcb[w].Priority=-1; } } for(inte=0;e<number;e++) { pcb[e].Priority++; } printf("\n##########第%d個進程正在執(zhí)行!##########\n",max+1); printf("\n第%d次調(diào)度結(jié)束,運行結(jié)果為:\n\n",f); printf("ID優(yōu)先級需要總時間執(zhí)行時間\n"); for(intk=0;k<number;k++) { printf("%d%d%d%d\n",k+1,pcb[k].Priority,pcb[k].Alltime,pcb[k].CPUtime); } for(intl=0;l<number;l++) { if(pcb[l].Alltime==0) count++; } if(count==number) { break; } } time1=time/number; printf("\n*****************************用戶進程全部執(zhí)行完畢!******************************"); printf("\n\n平均等待時間是:"); printf("%d\n\n",time1); } if(m==4) { printf("ID運行總時間進程狀態(tài)\n"); for(intk=0;k<number;k++) { printf("%d%d就緒\n",k+1,pcb[k].Alltime); } printf("\n***********************程序調(diào)度演示開始***********************\n"); for(intf=1;f<1000;f++) { intcount=0; for(i=0;i<number;i++) { if(pcb[i].Alltime==0) { continue; } if(pcb[i].Alltime>0) { pcb[i].Alltime-=4; pcb[i].CPUtime+=4; } if(pcb[i].Alltime<0) { pcb[i].Alltime=0; } ///////////////////////////////////////////////////// printf("\n##########第%d個進程正在執(zhí)行!##########\n",i+1); printf("\n第%d次調(diào)度結(jié)束,運行結(jié)果為:\n\n",f); printf("ID需要時間執(zhí)行時間\n"); for(intk=0;k<number;k++) { printf("%d%d%d\n",k+1,pcb[k].Alltime,pcb[k].CPUtime); } //////////////////////////////////////////////////// } for(intl=0;l<number;l++) { if(pcb[l].Alltime==0) count++; } if(count==number) { break; } } printf("\n*****************************用戶進程全部執(zhí)行完畢!******************************"); } }}4.實驗結(jié)果及分析4.1實驗結(jié)果先到先服務(wù)算法的實驗結(jié)果如下:最短作業(yè)優(yōu)先調(diào)度的實驗結(jié)果如下:優(yōu)先權(quán)調(diào)度算法的實驗結(jié)果如下:輪轉(zhuǎn)法調(diào)度的實驗結(jié)果如下:4.2結(jié)果分析本次試驗基本實現(xiàn)了進程調(diào)度的四種算法,每一種算法都能模擬出算法的具體過程。相應(yīng)的結(jié)果也完全符合預想的結(jié)果。同時,對于算法的實踐編寫進一步增加了編程的技巧,以及編程的熟練程度。銀行家算法1.設(shè)計目的銀行家算法是避免死鎖的一種十分重要的方法,通過編寫一個模擬的動態(tài)的銀行家算法的程序,能夠進一步加深對死鎖的理解,以及產(chǎn)生死鎖的必要條件。并掌握通過銀行家算法來避免死鎖。2.任務(wù)及要求2.1設(shè)計任務(wù)根據(jù)銀行家算法的基本思想來設(shè)計程序,模擬銀行家算法的過程。用程序來實現(xiàn)銀行家算法的具體動態(tài)過程。2.2設(shè)計要求根據(jù)銀行家算法的基本思想,編寫和調(diào)試一個能實現(xiàn)動態(tài)的分配資源的模擬程序。并能夠有效的防止死鎖的發(fā)生。3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)銀行家算法的基本思想是,系統(tǒng)中的所有進程放入進程集合,在安全狀態(tài)下系統(tǒng)受到進程的請求后會試探性的把資源分配給他,現(xiàn)在系統(tǒng)將剩下的資源和進程集合中其他進程還需要的資源作對比,找出剩余資源能滿足的進程,從而保證進程運行完并釋放資源繼續(xù)滿足剩下進程對資源的需要。最后檢查集合為空集時表明本次申請可行,系統(tǒng)繼續(xù)處于安全狀態(tài),可以實施本次分配。否則不能實施本次分配。3.2顯示資源矩陣showdata()模塊3.2.1功能主要是顯示資源的矩陣,包括輸入的已分配的的資源矩陣,以及輸出的資源矩陣。3.2.2數(shù)據(jù)結(jié)構(gòu)最大需求矩陣max以及已分配矩陣allocation,分別定義為m*n階的矩陣,利用二維數(shù)組來存儲。3.2.3算法voidshowdata()//顯示資源矩陣{inti,j;cout<<"系統(tǒng)目前可用的資源[Avaliable]:"<<endl;for(i=0;i<N;i++){ cout<<name[i]<<"";}cout<<endl;for(j=0;j<N;j++){cout<<Avaliable[j]<<"";//輸出分配資源}cout<<endl;cout<<"MaxAllocationNeed"<<endl;cout<<endl;cout<<"進程名";for(j=0;j<3;j++){for(i=0;i<N;i++)cout<<name[i]<<"";cout<<"";}cout<<endl;for(i=0;i<M;i++){cout<<""<<i<<"";for(j=0;j<N;j++) {cout<<Max[i][j]<<""; }cout<<"";for(j=0;j<N;j++) {cout<<Allocation[i][j]<<""; }cout<<"";for(j=0;j<N;j++) {cout<<Need[i][j]<<""; }cout<<endl;}}3.3申請資源判定模塊3.3.1功能利用銀行家實現(xiàn)對申請的資源進行判定。3.3.2數(shù)據(jù)結(jié)構(gòu)對已經(jīng)存儲的矩陣進行比較。3.3.3算法voidshare()//利用銀行家算法對申請資源對進行判定{charch;inti=0,j=0;ch='y';cout<<"請輸入要求分配的資源進程號(0-"<<M-1<<"):";cin>>i;//輸入須申請的資源號cout<<"請輸入進程"<<i<<"申請的資源:"<<endl;for(j=0;j<N;j++) {cout<<name[j]<<":";cin>>Request[j];//輸入需要申請的資源 }for(j=0;j<N;j++) {if(Request[j]>Need[i][j])//判斷申請是否大于需求,若大于則出錯 {cout<<"進程"<<i<<"申請的資源大于它需要的資源";cout<<"分配不合理,不予分配!"<<endl;ch='n';break; }else {if(Request[j]>Avaliable[j])//判斷申請是否大于當前資源,若大于則 {cout<<"進程"<<i<<"申請的資源大于系統(tǒng)現(xiàn)在可利用的資源";cout<<"分配出錯,不予分配!"<<endl;ch='n';break; } }}if(ch=='y') {changdata(i);//根據(jù)進程需求量變換資源showdata();//根據(jù)進程需求量顯示變換后的資源safe();//根據(jù)進程需求量進行銀行家算法判斷}}3.4主函數(shù)模塊3.4.1功能實現(xiàn)銀行家算法對資源的增加、刪除、修改。3.4.2數(shù)據(jù)結(jié)構(gòu)對已經(jīng)完成的模塊進行功能集成。3.4.3算法intmain(){inti,j,number,choice,m,n,flag;charming; cout<<endl;cout<<"************************銀*行*家*算*法********************"<<endl; cout<<endl;cout<<"請輸入資源的種類:";cin>>n; cout<<endl;N=n;for(i=0;i<n;i++) { cout<<"資源"<<i+1<<"的名稱,只限單個字符:";cin>>ming;name[i]=ming;cout<<"資源的數(shù)量:";cin>>number;Avaliable[i]=number; }cout<<endl;cout<<"請輸入進程的數(shù)量:";cin>>m;M=m;cout<<"請輸入各進程的最大需求量("<<m<<"*"<<n<<"矩陣):"<<endl;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>Max[i][j];do { flag=0;cout<<"請輸入各進程已經(jīng)申請的資源量("<<m<<"*"<<n<<"矩陣):"<<endl;for(i=0;i<m;i++){for(j=0;j<n;j++) { cin>>Allocation[i][j];if(Allocation[i][j]>Max[i][j])flag=1;Need[i][j]=Max[i][j]-Allocation[i][j]; }}if(flag)cout<<"申請的資源大于最大需求量,請重新輸入!\n"<<endl; }while(flag);showdata();//顯示各種資源safe();//用銀行家算法判定系統(tǒng)是否安全while(choice) { cout<<"**************************銀行家算法演示************************"<<endl;cout<<"1:增加資源";cout<<"2:刪除資源"<<endl;cout<<"3:修改資源";cout<<"4:分配資源"<<endl;cout<<"5:增加進程";cout<<"0:離開"<<endl;cout<<"****************************************************************"<<endl;cout<<"請選擇功能號:";cin>>choice;switch(choice) { case1:addresources();break;case2:delresources();break;case3:changeresources();break;case4:share();break;case5:addprocess();break;case0:choice=0;break;default:cout<<"請正確選擇功能號(0-5)!"<<endl;break; } }return1;}4.實驗結(jié)果及分析4.1實驗結(jié)果4.2結(jié)果分析銀行家算法就是在系統(tǒng)分配資源時,找到一個安全序列,使得進程間不會發(fā)生死鎖。若發(fā)生死鎖則讓進程等待。4.3實驗總結(jié)通過本次試驗,加深了我對銀行家算法的理解,掌握了如何利用銀行家算法來避免死鎖。通過對代碼的編寫也加深了我對數(shù)據(jù)結(jié)構(gòu)的進一步理解。磁盤調(diào)度算法1.設(shè)計目的加深對操作系統(tǒng)的磁盤調(diào)度的進一步理解以及進一步的認識。加強實踐能力和動手動腦能力,同時加深對磁盤調(diào)度概念的理解,同時也再一次提高了自己編程的能力。2.任務(wù)及要求2.1設(shè)計任務(wù)分析設(shè)計模擬磁盤管理系統(tǒng)的方法,加深對磁盤調(diào)度算法的了解以及個算法的特點。2.2設(shè)計要求分別設(shè)計出先來先服務(wù)算法,最短尋道時間優(yōu)先算法,掃描算法。并分別求出它們的平均尋道時間。3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)1.先來先服務(wù)的算法,即先來的請求先被響應(yīng)。FCFS算法看起來是比較合理的算法,但是當請求頻率過高的時候FCFS算法的響應(yīng)時間就會大大的延長,這也是最基本的算法,直接實現(xiàn)的是由輸入的順序來順序的執(zhí)行。2.最短尋道時間優(yōu)先算法,要求訪問的磁道,與當前磁頭所在的磁道的距離最近,從而以使每次的尋道時間最短。3.掃描磁盤調(diào)度,該算法不考慮與訪問磁道與當前磁道的距離,更優(yōu)先考慮的磁頭當前的移動方向,例如,當磁頭正在有向外移動時,SCAN算法所考慮的下一個訪問對象,應(yīng)是其與訪問的磁道,即在當前磁道之外,又是最近的。這樣磁頭逐漸的從外向里移動,直至再無更里面的磁道要訪問,從而避免了出饑餓的情況。3.2先來先服務(wù)模塊3.2.1功能實現(xiàn)磁盤調(diào)度的先來先服務(wù)調(diào)度。3.2.2數(shù)據(jù)結(jié)構(gòu)用鏈表來存儲輸入的數(shù)據(jù),即各待訪問的磁道。然后遍歷這個鏈表,依次對這個鏈表進行訪問,從而實現(xiàn)先來先服務(wù)調(diào)度。3.2.3算法voidfcfs(Node*head,intc,intf)//先來先服務(wù)算法{ voidprint(Node*);Node*l;//,*m,*n;floatnum=0;l=head->next;for(inti=0;i<c;i++) { num+=abs(l->data-f);f=l->data;l=l->next; }num=num/c;cout<<"先來先服務(wù)的尋道順序是:"<<endl;print(head);cout<<"平均尋道長度:"<<num<<endl;}3.3最短尋道時間優(yōu)先模塊3.3.1功能實現(xiàn)磁盤調(diào)度的最短尋道時間調(diào)度。3.3.2數(shù)據(jù)結(jié)構(gòu)以鏈表來存儲數(shù)據(jù),通過循環(huán)訪問鏈表來尋找距本次磁道的最短距離,依次這樣訪問。3.3.3算法、voidsstf(Node*head,intc,intf)//最短尋道時間優(yōu)先算法{ voidprint(Node*);Node*p,*q,*r,*s,*l,*m;l=(Node*)malloc(sizeof(Node));l->next=NULL;m=l;q=head;p=head->next;s=head;r=head->next;floatnum=0;for(inti=0;i<c;i++) { intmin=abs(f-r->data);for(intj=0;j<c-i-1;j++) { p=p->next;q=q->next;if(abs(f-p->data)<min) { min=abs(f-p->data);r=p;s=q; } }num+=abs(f-r->data);f=r->data;s->next=r->next;r->next=NULL;m->next=r;m=r;q=head;p=head->next;s=head;r=head->next; }num=num/c;cout<<"最短尋道時間優(yōu)先順序是:"<<endl;print(l);cout<<"平均尋道長度:"<<num<<endl;}3.4掃描算法模塊3.4.1功能實現(xiàn)磁盤調(diào)度的掃描算法。3.4.2數(shù)據(jù)結(jié)構(gòu)以鏈表來存儲數(shù)據(jù),以開始磁道為限來分磁道,分為大于的和小于的,然后分別訪問兩部分,按照開始的方向進行訪問。3.4.3算法voidscan(Node*head,intc,intf)//掃描算法{ voidprint(Node*);intmin,max,i=0,j=0;floatnum=0;Node*p,*q,*r,*s,*m,*n,*x,*y;r=(Node*)malloc(sizeof(Node));//存放比開始磁道小的磁道r->next=NULL;s=r;m=(Node*)malloc(sizeof(Node));//存放比開始磁道大的磁道m(xù)->next=NULL;n=m;x=(Node*)malloc(sizeof(Node));x->next=NULL;y=x;q=head;p=head->next;while(p->next!=NULL) { if(p->data-f>0) { q->next=p->next;p->next=NULL;n->next=p;n=p;p=q->next;i++; }else { q->next=p->next;p->next=NULL;s->next=p;s=p;p=q->next;j++; } }if(p->data>=f) { n->next=p;n=p;i++; }else { s->next=p;s=p;j++; }q=r;//對比開始磁道小的磁道排序p=r->next;while(q->next->next!=NULL) { q=q->next;p=q->next;max=q->data;while(p->next!=NULL) { if(p->data>max) { max=p->data;p->data=q->data;q->data=max;max=q->data; }p=p->next; } if(p->data>max) { max=p->data;p->data=q->data;q->data=max;max=q->data; } }q=m;p=m->next;while(q->next->next!=NULL) { q=q->next;p=q->next;min=q->data;while(p->next!=NULL) { if(p->data<min) { min=p->data;p->data=q->data;q->data=min;min=q->data; } p=p->next; } if(p->data<min) { min=p->data;p->data=q->data;q->data=min;min=q->data; } } x=m;p->next=r->next;y=x->next;while(y->next!=NULL) { num+=abs(f-y->data);f=y->data;y=y->next; } num+=abs(f-y->data);num=num/c;cout<<"掃描算法的順序是:"<<endl;print(x);cout<<"平均尋道長度為:"<<num<<endl;}4.實驗結(jié)果及分析4.1實驗結(jié)果先來先服務(wù)算法的實驗結(jié)果:最短尋道時間優(yōu)先算法實驗結(jié)果:掃描算法實驗結(jié)果:4.2結(jié)果分析至此,此次設(shè)計基本完成了所規(guī)定的功能,但由于設(shè)計時間的倉促,CSCAN調(diào)度算法還沒有實現(xiàn),其他的都基本上實現(xiàn)了。實驗結(jié)果也完全符合預想的結(jié)果,此次課程設(shè)計中我又學到了許多東西,無論在理論上還是實踐上,都有了不少的提高,這對于以后的學習以及工作都有一定的幫助。

工程付款作業(yè)指引編制人編制日期審核人簽發(fā)人修訂記錄日期修訂狀態(tài)修改內(nèi)容修改人審核人簽發(fā)人目的規(guī)范工程付款程序,明確付款審批人職責。適用范圍海爾地產(chǎn)(集團)有限公司及下屬區(qū)域公司所有工程項目付款。術(shù)語和定義3.1工程項目付款:指項目建安工程費、工程建設(shè)其它費的付款,包括合同類和非合同類的付款。3.2合同類付款包括集中采購(含授權(quán)采購)和分散采購所形成的合同付款。3.3非合同類的付款一般指政府相關(guān)部門的規(guī)費及配套費等。4.職責區(qū)域公司和涉及集團需要工程付款的部門區(qū)域公司和涉及集團需要工程付款的部門根據(jù)合同約定和工程進展情況,填寫《進度、質(zhì)量完成情況確認表》。4.1.2負責核實供方是否已按合同約定完成規(guī)定的工程量且達到質(zhì)量要求。4.1.3負責確認按合同約定是否須付款。4.1.4負責根據(jù)合同經(jīng)濟條款和預結(jié)算審核情況,確認付款金額。4.1.5項目規(guī)費或配套費的支付需同時提供政府部門有關(guān)文件和規(guī)定。4.1.6負責核對并填寫付款臺帳。4.1.7負責填寫付款審批單及匯總相關(guān)資料。4.1.8合同最終付款需同時提供《供方履約評估表》的復印件。工程管理中心負責確認區(qū)域公司提交的申請中的工程進度和工程質(zhì)量。成本管理中心4.2.1負責核定區(qū)域公司提交的申請中的工程量及應(yīng)付當期工程款。4.2.2負責核定應(yīng)付當期工程款。4.2.3負責核對并填寫部門付款臺帳。4.2.4負責向財務(wù)管理中心提供月度付款審批金額匯總表。主管副總裁負責根據(jù)合同執(zhí)行情況,確認是否可以付款。財務(wù)管理中心4.5.1負責根據(jù)合同經(jīng)濟條款和已付款情況,確認是否須付款及應(yīng)付金額。4.5.2負責根據(jù)合同經(jīng)濟條款和已付款情況,核對成本管理中心核定結(jié)果,審批是否須付款及應(yīng)付金額。4.5.3董事長/總裁批準支付后,辦理費用支付。4.5.4負責核對并填寫付款臺帳。4.5.5負責審核預算外的工程付款董事長/總裁負責根據(jù)集團總體情況,確認是否付款。5.工作程序填寫付款審批單區(qū)域公司和涉及公司需要工程付款的部門經(jīng)辦人會同顧問單位核實已完工程量,確認按合同約定是否須付款,填寫付款臺帳及付款審批單。區(qū)域公司和涉及公司需要工程付款部門的部門負責人復核經(jīng)辦人意見,包括施工進度、質(zhì)量情況及合同執(zhí)行情況,簽署審批意見。分散采購的合同付款審批按區(qū)域公司付款審批制度執(zhí)行。集中采購(含授權(quán)采購)的合同付款審批按下述審批流程執(zhí)行。5.3.1審批流程(月度資金預算內(nèi))5.3.1.1策劃設(shè)計類的合同付款需集團策劃、設(shè)計主管部門(投資發(fā)展中心、研發(fā)設(shè)計中心、工程管理中心)審核確認;5.3.1.2成本管理中心核定當期已完工程量并根據(jù)合同約定核定當期應(yīng)付款,簽署審批意見;a、100萬以內(nèi)的付款,集團工程管理中心、成本管理中心審核后,區(qū)域公司履行付款手續(xù)。b、100萬以上的付款,集團工程管理中心、成本管理中心審核簽署審批意見后提交總裁,總裁根據(jù)集團總體情況,簽署審批意見后區(qū)域公司方可履行支付手續(xù)。5.3.2付款審批流程(月度資金預算外)5.3.2.1策劃設(shè)計類的合同付款由集團策劃、設(shè)計主管部門(投資發(fā)展中心、研發(fā)設(shè)計中心、工程管理中心)審核確認;5.3.2.2成本管理中心核定當期已完工程量并根據(jù)合同約定核定當期應(yīng)付款,簽署審批意見;5.3.2.3財務(wù)管理中心經(jīng)辦人根據(jù)合同經(jīng)濟條款和已付款情況,簽署審批意見,財務(wù)管理中心總經(jīng)理確認;5.3.2.4主管副總裁根據(jù)財務(wù)總體情況,簽署審批意見;5.3.2.5董事長/總裁根據(jù)集團總體情況,簽署審批意見。5.3.2.6區(qū)域公司收到集團審核意見后,方可履行付款手續(xù)。5.4成本管理中心每月匯總付款審批金額,整理成表報送財務(wù)管理中心。財務(wù)管理中心依此表為依據(jù)核對月度資金付款額度。5.5非合同類的付款。區(qū)域公司需提供政府部門有關(guān)文件和規(guī)定,報集團成本管理中心審核后方可履行付款手續(xù)。a、100萬以內(nèi)的非合同類付款,集團相關(guān)部門及工程管理中心、成本管理中心審核后,區(qū)域公司履行付款手續(xù)b、100萬以上的非合同類付款,集團相關(guān)部門及工程管理中心、成本管理中心審核后簽署審批意見后提交總裁,總裁根據(jù)集團總體情況,簽署審批意見后區(qū)域公司方可履行支付手續(xù)。5.6合同除保修金外的最后付款需同時提供《供方履約評估表》的復印件及成本管理中心的確認單。5.7營銷費用的付款按照《營銷費

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論