操作系統(tǒng)課程設(shè)計(jì)spooling課程設(shè)計(jì)報(bào)告_第1頁
操作系統(tǒng)課程設(shè)計(jì)spooling課程設(shè)計(jì)報(bào)告_第2頁
操作系統(tǒng)課程設(shè)計(jì)spooling課程設(shè)計(jì)報(bào)告_第3頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 需求分析SPOOLIN是 Simultaneous Peripheral Operation On-Line(即外部設(shè)備聯(lián)機(jī)并行操作)地縮寫 , 它是關(guān)于慢速字符設(shè)備如何與計(jì)算機(jī)主機(jī)交換信息地一 種技術(shù),通常稱為“假脫機(jī)技術(shù)” .SPOOLING技術(shù)實(shí)際上是一種外圍設(shè)備同時(shí)聯(lián) 機(jī)操作技術(shù) , 又稱為排隊(duì)轉(zhuǎn)儲(chǔ)技術(shù) . 它在輸入和輸出之間增加了 “輸入井” 和“輸 出井”地排隊(duì)轉(zhuǎn)儲(chǔ)環(huán)節(jié) .進(jìn)程基本狀態(tài)有 3 種, 分別為可執(zhí)行 , 等待和結(jié)束 . 可執(zhí)行態(tài)就是進(jìn)程正在運(yùn) 行或等待調(diào)度地狀態(tài);等待狀態(tài)又分為等待狀態(tài) 1, 等待狀態(tài) 2, 等待狀態(tài) 3.狀態(tài)變化地條件為:1進(jìn)程執(zhí)行完成時(shí) , 置為

2、“結(jié)束”態(tài) .2服務(wù)程序在將輸出信息送輸出井時(shí) , 如發(fā)現(xiàn)輸出井已滿 , 將調(diào)用進(jìn)程置為 “等待狀態(tài) 1 ” .3SPOOLIN進(jìn)程在進(jìn)行輸出時(shí),若輸出井空,則進(jìn)入“等待狀態(tài)2” .4SPOOLINGS程輸出一個(gè)信息快后,應(yīng)立即釋放該信息快所占地輸出井空 間, 并將正在等待輸出地進(jìn)程置為“可執(zhí)行狀態(tài)” .5服務(wù)程序在輸出信息到輸出井并形成輸出請(qǐng)求信息快后,若SPOOLING!程處于等待態(tài)則將其置為“可執(zhí)行狀態(tài)” .6當(dāng)用戶進(jìn)程聲請(qǐng)請(qǐng)求輸出快時(shí) , 若沒有可用請(qǐng)求快時(shí) ,調(diào)用進(jìn)程進(jìn)入“等待 狀態(tài) 3” .滿足條件:1)設(shè)計(jì)一個(gè)實(shí)現(xiàn)SPOOLING技術(shù)地進(jìn)程設(shè)計(jì)一個(gè)SPOOLING出服務(wù)進(jìn)程、一個(gè)

3、SPOOLING出進(jìn)程、兩個(gè)用戶請(qǐng)求 進(jìn)程 . 用戶進(jìn)程請(qǐng)求輸出一系列信息 , 調(diào)用輸出服務(wù)進(jìn)程 , 由輸出服務(wù)進(jìn)程將該信 息送入輸出井等待SPOOLING程進(jìn)行輸出.SPOOLING俞出進(jìn)程工作時(shí),根據(jù)請(qǐng) 求塊記錄地各進(jìn)程要輸出地信息將其輸出 .2)設(shè)計(jì)進(jìn)程調(diào)度算法進(jìn)程調(diào)度采用 隨機(jī) 算法, 兩 個(gè)請(qǐng) 求 輸出 地用 戶 進(jìn)程 地調(diào)度概率各為 45%,SPOOLIN輸出進(jìn)程為10%,這由隨機(jī)數(shù)發(fā)生器產(chǎn)生地隨機(jī)數(shù)來模擬決定.2 概要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu):(1) 進(jìn)程控制塊( PCB)Struct pcb int id;/ 進(jìn)程標(biāo)示int status; / 進(jìn)程狀態(tài)int firstaddr;int

4、length;/ 輸出長(zhǎng)度int outbufword;*PCB3;PCB( Process Control Block) , 進(jìn)程控制塊是操作系統(tǒng)用于記錄和刻畫進(jìn)程狀態(tài)及有關(guān)信息地?cái)?shù)據(jù)結(jié)構(gòu) ,也是操作系統(tǒng)掌握進(jìn)程地唯一資料結(jié)構(gòu) , 是操作 系統(tǒng)控制和管理進(jìn)程地主要依據(jù) . 它包括了進(jìn)程執(zhí)行時(shí)地情況 , 以及進(jìn)程讓出處 理器所處地狀態(tài)、斷點(diǎn)等信息 . 對(duì)于輸出進(jìn)程和 spooling 進(jìn)程兩種不同地進(jìn)程 , 采用相同地結(jié)構(gòu)處理 ,包括進(jìn)程標(biāo)識(shí) ,進(jìn)程狀態(tài) ,輸出緩沖 ,輸出指針,信息塊首地 址,輸出長(zhǎng)度等內(nèi)容 . 需要支持在不同狀態(tài)之間地轉(zhuǎn)換 , 輸出緩沖晴空等操作 . ( 2)請(qǐng)求輸出快 r

5、eqblock structint reqname; /請(qǐng)求進(jìn)程名int length; /輸出長(zhǎng)度int addr; / 信息在輸出井地首地址reqblock10;輸出請(qǐng)求塊地作用是定義標(biāo)識(shí)要求輸出進(jìn)程地變量和相關(guān)信息并且定義輸 出首地址 .要求輸出地進(jìn)程標(biāo)識(shí) , 輸出長(zhǎng)度 , 輸出首地址等內(nèi)容 .(3) 輸出井 BUFFERSPOOLIN(系統(tǒng)為每個(gè)請(qǐng)求輸出地進(jìn)程在輸出井中分別開辟一個(gè)區(qū).本實(shí)驗(yàn)可設(shè)計(jì)一個(gè)二維數(shù)組 (int buffer210) 作為輸出井 . 每個(gè)進(jìn)程在輸出井最多 可占用 10 個(gè)位置.函數(shù)調(diào)用關(guān)系圖:程序框圖如下:SPOOLING模擬系統(tǒng)主控圖3運(yùn)行環(huán)境Windows

6、xp 系統(tǒng)下 vc+6.04開發(fā)工具和編程語言Vc+6.0開發(fā)工具c語言編程5詳細(xì)設(shè)計(jì)請(qǐng)求函數(shù):void request(int i) / 定義請(qǐng)求函數(shù) int j,m,length=0;struct req*run;if(i=1)t1-;elset2-;printf(用戶c請(qǐng)求數(shù)據(jù):n,i);輸出標(biāo)注run=&reqblocktail%10;/定義輸出塊run-reqname=i;run-length=0;if(tail=0)run-addr=0;elseint index=(tail-1)%10;run-addr=reqblockindex.addr+reqblockindex.lengt

7、h;for( m=0;maddr=m;break;while(1)j=rand()%10;if(j=0)run-length=length;break;bufferi-1(run-addr+length)=j;length+;printf(%d,j);printf(n);PCBi-1-length+=length;length=0;if(PCB2-status=2)PCB2-status=0;tail+;Spooling 函數(shù):void spooling()int i,j;struct req*run;printf( 調(diào)用SPOOLIN輸出服務(wù)程序輸出數(shù)據(jù):n);run=&reqblockhe

8、ad%10;printf(%d ,run-reqname);fprintf(f,%d ,run-reqname);for(i=0;ilength;i+)printf(%d,bufferrun-reqname-1run-addr+i );fprintf(f,%d,bufferrun-reqname-1run-addr+i );printf(n);fprintf(f,n);head+; for( j=0;jstatus=1)PCBj-status=0;主函數(shù):void main() int i,n; f=fopen(result.txt,w);for(i=0;i2;i+)for(n=0;n100;

9、n+)bufferin=0;for(i=0;iid=i; tmpPcb-status=0; tmpPcb-firstaddr=0; tmpPcb-length=0; tmpPcb-outbufword=1; PCBi=tmpPcb;printf(How many work do p1 want to do?);fprintf(f,How many work do p1 want to do?);scanf(%d,&t1); fprintf(f,%dn,t1);printf(How many work do p2 want to do?);fprintf(f,How many work do p

10、2 want to do?);scanf(%d,&t2); fprintf(f,%dn,t2); srand(unsigned)time(NULL);while(1)i=rand()%100; / 用隨機(jī)數(shù)模擬進(jìn)程執(zhí)行概率if(istatus=0)&(t10)request(1);else if(i0)/ 執(zhí)行請(qǐng)求輸出用戶進(jìn)程 2 if(PCB1-status=0)request(2);elsespooling();執(zhí)行 SPOOLIN進(jìn)程if(t1=0)&(t2=0)&(head=tail)break;for(i=0;i3;i+)free(PCBi);值為空PCBi=NULL;/PCBfcl

11、ose (f);/主函數(shù)結(jié)束6調(diào)試分析1該實(shí)驗(yàn)中花費(fèi)了我不少時(shí)間去思考如何更加明顯地把兩個(gè)用戶分別地調(diào)度進(jìn)程更好地顯示出來,由于進(jìn)程個(gè)數(shù)地不一樣,所以就思考了動(dòng)態(tài)地實(shí)現(xiàn)進(jìn)程地 數(shù)目,更加方便利用是spooling技術(shù).從而更加直觀地調(diào)度方便地顯示了信息.2. 思考將結(jié)果用文件地形式保存,但是對(duì)于函數(shù)fprint地運(yùn)用錯(cuò)誤,忽略了 最基本地定義,耗費(fèi)了好多地時(shí)間,還是出現(xiàn)了一個(gè)錯(cuò)誤:桌面liuhaoliu.cpp(99) : error C2440:=:cannot convert from struct _iobuf * to int桌面liuhaoliu.cpp(83) : error C2

12、065:f : undeclared identifier最后在前面定義了一個(gè)FILE *f;3. C:Documents and桌面liuhaoliu.cpp(85) : errorC2065: req name : un declared ide ntifie之類地錯(cuò)誤地出現(xiàn)由于已經(jīng)給結(jié)構(gòu)體 stuct req通過struct req*run;所以必須在用指針指向 run 地變量.7測(cè)試結(jié)果 1提示輸入進(jìn)程個(gè)數(shù):2回車后顯示虛脫機(jī)工作:low nansF worK ao pz want to dofy用戶2請(qǐng)求數(shù)據(jù):缶戶1請(qǐng)求數(shù)據(jù):用戶丄請(qǐng)求數(shù)據(jù):,51328用戶1請(qǐng)求數(shù)據(jù):1547944

13、19用戶丄請(qǐng)求數(shù)據(jù):用戶丄請(qǐng)求數(shù)據(jù):用戶1請(qǐng)求數(shù)據(jù):笛戶丄請(qǐng)求數(shù)據(jù):總戶2請(qǐng)求數(shù)據(jù):用戶2請(qǐng)求數(shù)據(jù):586255周用SPOOLING輸出服務(wù)程序輸岀數(shù)據(jù):苗戶2請(qǐng)求數(shù)據(jù):用戶2請(qǐng)求數(shù)據(jù):?84571用戶2請(qǐng)求數(shù)據(jù):用戶1請(qǐng)求數(shù)據(jù):56748724田戶1潔求鈾握:B1348調(diào)用SPOOLING輸出服務(wù)程序輸岀數(shù)據(jù):L 12用戶2請(qǐng)求數(shù)據(jù):用戶2請(qǐng)求數(shù)據(jù):雷戶2請(qǐng)求數(shù)據(jù)=凋用SPOOLING輸出服務(wù)程序輸岀數(shù)據(jù):調(diào)用SPOOLING輸出服務(wù)程序輸出數(shù)據(jù):調(diào)用SPOOLING輸出服務(wù)程序輸岀數(shù)塘:2586255i周用SPOOLING輸岀服務(wù)程序輸岀數(shù)據(jù):調(diào)用SPOOLING輸出服務(wù)程序輸出數(shù)據(jù):29

14、84571調(diào)用SPOOLING輸岀服務(wù)程序輸岀數(shù)據(jù):24754885865546123調(diào)用SPOOLING岀服務(wù)程序輸岀數(shù)據(jù):156748724調(diào)用SPOOLING輸岀服務(wù)程序輸岀數(shù)據(jù):1 81348調(diào)用SPOOLING輸岀服務(wù)程序輸岀數(shù)據(jù):2調(diào)用SPOOLING輸岀服務(wù)程序輸岀數(shù)據(jù): 務(wù)壷POOLING輸岀服務(wù)程序輸岀數(shù)據(jù): 23Press any key to continue參考文獻(xiàn)1 邊肇祺,模式識(shí)別(第二版),北京:清華大學(xué)出版社,1988,25352 李永忠 ,幾種小波變換地圖像處理技術(shù),西北民族學(xué)院學(xué)報(bào)(自然科學(xué)版) ,2001.6,22(3) ,15181 湯子瀛,梁紅兵計(jì)算機(jī)操作系統(tǒng) (第三版)西安電子科技大學(xué)出版社 20072 任滿杰操作系統(tǒng)原理實(shí)用教程電子工業(yè)出版社20063 張麗芬 劉利雄操作系統(tǒng)實(shí)驗(yàn)教程北京;清華大學(xué)出版社20064 張堯杰 史美林計(jì)算機(jī)操作系統(tǒng)教程 實(shí)驗(yàn)指導(dǎo) 北京;清華大學(xué)出版社 20005 羅宇操作系統(tǒng)課程設(shè)計(jì)機(jī)械工業(yè)出版社2006心得體會(huì)在這幾天地操作系統(tǒng)課程設(shè)計(jì)中,我地題目是:SPOOLING術(shù)模擬實(shí)現(xiàn),這 兩周課程設(shè)計(jì)中 , 通過該題目地設(shè)計(jì)過程 , 學(xué)會(huì)如何把學(xué)到地知識(shí)用于解

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論