《操作系統B》--實驗指導書剖析_第1頁
《操作系統B》--實驗指導書剖析_第2頁
《操作系統B》--實驗指導書剖析_第3頁
《操作系統B》--實驗指導書剖析_第4頁
《操作系統B》--實驗指導書剖析_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、操作系統B»實驗指導書計算機科學與技術系二o一五年實驗一幾種操作系統的界面1實驗二進程調度程序設計2實驗三存儲管理程序設計10實驗一幾種操作系統的界面【目的與要求】(-)目的本實驗的目的是使學生熟悉12種操作系統的界面,在熟練使用機器的基礎上,能了解 各種命令和調用在系統中的大致工作過程。也就是通過操作系統的外部特征,逐步深入到操作 系統的內部實質內容中去,培養(yǎng)學生對系統軟件的認知、結構、設計及實施能力。(二)要求1.能熟練的在1 2種操作系統的環(huán)境下工作,學會使用各種命令,熟悉系統提供的各 種功能。主動而有效地使用計算機。2,熟悉系統實用程序的調用方法和各種系統調用模塊的功能和作用

2、?!緦嶒瀮热荨吭谀撤N操作系統的環(huán)境下建立、修改、運行、打印源程序和結果,最后撤消一個完整的程 序。提示:可按下述步驟進行1 .編寫一個完整的源程序,通過編輯命令送入機器,建立源程序文件;2 .編譯該源文件,建立相應的目標文件;3 .編譯有錯時,再用編輯命令修改源文件,消除全部詞法和語法錯誤;4 .連接目標文件,形成可執(zhí)行文件;5 .執(zhí)行該文件,得到結果;6 .打印輸出源程序和運行結果;7 .撤消本次實驗中形成的所有文件。實驗二進程調度程序設計【目的與要求】(一)目的進程是操作系統最重要的概念之一,進程調度是操作系統的主要內容,本實驗要求學生獨立地用高級語言編寫一個進程調度程序,調度算法可任意選

3、擇或自行設計。本實驗可使學生加深對進程調度和各種調度算法的理解,培養(yǎng)學生對操作系統軟件的認知、結構、設計及實施能力,通過綜合運用操作系統理論和技術,分析、構造、設 計、實施和運行操作系統的工程技能。(-)要求1 .設計一個有幾個進程共行的進程調度程序,每個進程由一個進程控制塊(PCB)表示, 進程控制塊通常應包括下述信息:進程名,進程優(yōu)先數,進程需要運行的時間,占用CPU勺時 間以及進程的狀態(tài)等,且可按照調度算法的不同而增刪。2 .調度程序應包含2 3種不同的調度算法,運行時可以任選一種,以利于各種方法的 分析和比較。3 .系統應能顯示或打印各進程狀態(tài)和參數的變化情況,便于觀察?!緦嶒瀮热荨俊?/p>

4、示例】1 題目本程序可選用優(yōu)先數法或簡單輪轉法對五個進程進行調度。每個進程處于運行 R(run)、就緒W(wait)和完成F(finish)三種狀態(tài)之一,并假定起始狀態(tài)都是就緒狀態(tài)W為了便于處理,程序中進程的運行時間以時間片為單位計算。各進程的優(yōu)先數 或輪轉時間片數、以及進程需要運行的時間片數,均由偽隨機數發(fā)生器產生。進程控制塊結構如下:表 2-1 PCB進程標識符鏈指針優(yōu)先數/輪轉時間片數占用CPU時間片數進程所需時間片數進程狀態(tài)進程控制塊鏈結構如下:圖2-1進程控制塊鏈結構其中:RUN 當前運行進程指針;head 一進程就緒鏈鏈首指針;tail 進程就緒鏈鏈尾指針。2 .算法與框圖程序框圖

5、如下圖所示鏈首進程投入運行鏈首進程投入運行結束:結束圖2-2進程調度框圖(1)優(yōu)先數法。進程就緒鏈按優(yōu)先數大小從大到小排列,鏈首進程首先投入運行。每過一個時間片,運行進程所需運行的時間片數減1,說明它已運行了一個時間片,優(yōu)先數也減3。理由是該進程如果在一個時間片中完成不了,優(yōu)先級應降低一級。 接著比較現行進程和就緒鏈鏈首進程的優(yōu)先數,如果仍是現行進程高或者相同,就讓現行進程繼續(xù)運行,否則,調度就緒鏈鏈首進程投入運行。原運行進程再按其優(yōu) 先數大小插入就緒鏈,且改變它們對應的進程狀態(tài),直至所有進程都運行完各自的時間片 數。(2)簡單輪轉法。進程就緒鏈按各進程進入的先后次序排列,進程每次占用處理機的

6、 輪轉時間按其重要程度登入進程控制塊中的輪轉時間片數記錄項(相應于優(yōu)先數法的優(yōu)先數 記錄項位置)。每過一個時間片,運行進程占用處理機的時間片數加1,然后比較占用處理 機的時間片數是否與該進程的輪轉時間片數相等,若相等說明已到達輪轉時間,應將現運行進程排到就緒鏈末尾,調度鏈首進程占用處理機,且改變 它們的進程狀態(tài),直至所有進程完成各自的時間片。3.程序清單.# in elude <stdio.h># in elude <stdlib.h># defi ne furthest 5struct process /*PCB STRUCTURE*/int id;int prior

7、ity;int cputime;int alltime;char state;int n ext; Jprocha in furthest-1;int proc num;int ran d();int algo;int run 5head3tailJ;main() /*MAIN PROGRAM*/ aga n: printf( 44 type the algorithm is (1 :RR,2:PRIO):);scanf( " %d, &algo);if (algo=2) printf( " output of priority.);in it();prischQ;

8、elseif (algo=1) prin tf( woutput of round robin" ); in it(); timesch();else print% "try again,please;goto aga n;)for (j=1 ; j<=4O;j+)printf( "=”);printf(n<M);for (j=1 ;j<=40;j+) printf(" =");printf(ncn);printf(" system finishedprin t()/PRINT THE RUNNING PROCESS

9、,W WAITING QUEUE AND PCBSEQUENCE int k5p;for (k=1 ;k<=40;k+) printf( ");printf( nrUnning proc.");printf( " waiting queue. ");printf( n " %dn ,prochainrun.id);p=head;while(p!=0) printf( " 5d',p);p=procha inf p. next; printf( n ") ; for (k=1 ;k<=40;k+) prin

10、tf(");print* 優(yōu));printf( “id”);for (k=1 ;k<furthest+1 ;k+) printf( " %5d' ,prochaink.id);printf( nM,);printf( " priority "); for (k=1 ;k<furthest+1 ;k+) printf( “ % 5d' 5prochaink.priority);printf( nM,);printf( " cputime ");for (k=1 ;k<furthest+1 ;k+)in

11、sert(q) in sert2() mit()(printf( " %5d' ,prochaink.cputime);printf( n " ) ; printf( " alltime "); for (k=1 ;k<furthest+1 ;k+)printf( " %5d' ,prochaink.alltime);printf( nM );printf( " state”);for (k=1 ;k<furthest+1 ;k+)printf( " 5c” ,prochaink.state);p

12、rintf( n ”);printf( “ next ”);for (k=1 ;k<furthest+1 ;k+)printf( " %5d' ,prochaink.next);printf( n ”);/*INSERT A PROCESS*/int p,s; p=head; s=procha in head. nextwhile(procha in q.priority<procha in s.priority )&&( s!=0) P=s;s=procha in s. next;procha in p. next=q; procha in q.

13、 next=s;/*PUT A PROCESS ONTO THE TAIL OF THE QUEUE7 prochai n tail. next=ru n;tail=ru n;procha inrun . next=0;/*CREATE A W AITING QUEUE*/inti;head=0;if (alog=2)for (i=1 ;i<furthest+1 ;i+) procha in i.id=i;procha in i.priority=(ra nd()+11)%41;procha in i.cputime=O;procha in i.alltime=(ra nd()+1)%7

14、;prochaini.state= 1 W ;procha in i. next=0;if(procha in i.priority<procha in head.priority)&&(head!=0) in sert(procha in i.id); else procha in i. next=head; head= procha in i.id;)elsefor (i=1 ;i<furthest+1 ;i+) procha in i.id=i;procha in i.priority=(ra nd()+1)%3+1;procha in i.cputime=O

15、;procha in i.alltime=(ra nd()+1)%7;prochaini.state= ' W ;prochai ni. next=(i+1 )%(furthest+1); head=1;tail=furthest;procha in furthest .n ext=0;run=head;rg - Wprochainrun.state= ,卬; ihead=procha in head, next;procha inrun . next=0;print();prisch() "THE PROCESS WITH PRIO ALGORITHM*/ while(ru

16、 n!=0) procha inrun .cputime+=1;procha in run .priority-=3;procha inrun .alltime-=1; if(procha in ru n.alltime=O) prochainrun.sta te= 1 F* ; procha inrun . next=0; if(head!=0)run=head;prochainrun.state= f R1 head=procha in head. next; else procha in 0.id=procha inrun .id;run=0;elseif(procha in run .

17、priority< procha in head. priority )&&(head!=0) proch ainrun.state= f W ;in sert(r un);run=head;prochainrun.state=,卬;head= procha in head, next;)prin t();)timesch() /*THE PROCESS WITH RR ALRORITHM7 while(ru n!=0) procha inrun .alltime-=1;procha inrun .cputime+=1;if(prochai nrun .alltime=0

18、)* procha inrun .state= " F'; procha inrun . next=0; if(head!=0)run=head;prochainrun.state=,卬;head=procha in head. next; else procha in 0.id=procha inrun .id; run=0;)elseif(procha inrun .cputime=procha inrun. priority )&&(head!=0) prochainrun.state=,W ;procha inrun .cputime=0;in ser

19、t2();run=head;prochainrun.state= r R head=procha in head. next; ) prin t();)實驗三存儲管理程序設計【目的與要求】(一)目的存儲管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬存儲管理技本實驗的目的是通過請求頁式存儲管理中頁面置換算法的模擬設計,來了解虛擬存儲技術 的特點,掌握請求頁式存儲管理的頁面置換算法。通過本實驗可使學生加深對虛擬存儲管理技 術的理解,培養(yǎng)學生對操作系統軟件的認知、結構、設計及實施能力,通過綜合運用操作系統理論和技術,分析、構造、設計、實施和運行操作系統的工程技能。(二)要求模擬頁式

20、虛擬存儲管理中硬件的地址轉換和缺頁中斷,并用先進先出調度算法 (FIFO)處理缺頁中斷?!緦嶒瀮热荨俊咎崾尽?1)為了裝入一個頁面而必須調出一頁時,如果被選中調出的頁面在執(zhí)行中沒有修改過, 則不必把該頁重新寫到磁盤上(因磁盤上已有副本)。因此,在頁表中可以增加是否修改過的標志,當執(zhí)行“存”指令、“寫”指令時把對應頁的修改標志置成“ F表示該頁修改過,否則為“ 0”表示該頁未修改過。頁表格式如表3-1所示。表31頁表格式頁號標志主存塊號修改標志磁盤上的位置(2)設計一個地址轉換程序來模擬硬件的地址轉換和缺頁中斷。當訪問的頁在主存時則形成絕對地址,但不去模擬指令的執(zhí)行,可用輸出轉換后的絕對地址來表示一條指令已完成。當訪問的頁不在主存時則輸出“*該頁頁號”來表示硬件產生了一次缺頁中斷。模擬地址轉換的程序流程如圖3-1所示。(3)編制一個FIFO頁面調度程序。FIFO頁面調度算法總是先調出作業(yè)中最先進入主存的那一頁,因此,可以用一個數組來構成頁號隊列。數組中每個元素是該作業(yè)已在主存的頁面號,假定分配給作業(yè)的主存塊數為m且該作業(yè)

溫馨提示

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

評論

0/150

提交評論