操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——操作系統(tǒng)實(shí)驗(yàn)報(bào)告(同名11863)課程名稱:操作系統(tǒng)B

試驗(yàn)工程:操作系統(tǒng)試驗(yàn)

試驗(yàn)地點(diǎn):試驗(yàn)樓209

專業(yè)班級(jí):

學(xué)生姓名:學(xué)號(hào):

指導(dǎo)教師:方昀

2015年12月3號(hào)?試驗(yàn)一幾種操作系統(tǒng)的界面

試驗(yàn)?zāi)康暮鸵?/p>

目的本試驗(yàn)的目的是使學(xué)生熟悉1—2種操作系統(tǒng)的界面,在熟練使用機(jī)器的基礎(chǔ)上,能了解各種操作命令和系統(tǒng)調(diào)用在系統(tǒng)中的大致工作過(guò)程。也就是通過(guò)操作系統(tǒng)的外部特征,逐步深入到操作系統(tǒng)的內(nèi)部實(shí)質(zhì)內(nèi)容中去。

要求

能熟練的在1—2種操作系統(tǒng)的環(huán)境下工作,學(xué)會(huì)使用各種命令,熟悉系統(tǒng)提供的各種功能,主動(dòng)而有效地使用計(jì)算機(jī)。

熟悉系統(tǒng)實(shí)用程序的調(diào)用方法和各種系統(tǒng)調(diào)用模塊的功能和作用。

試驗(yàn)內(nèi)容

在某種操作系統(tǒng)的環(huán)境下建立、修改、運(yùn)行、打印源程序和結(jié)果,最終撤消一個(gè)完整的程序。

提醒:可按下述步驟進(jìn)行

編寫一個(gè)完整的源程序,通過(guò)編輯命令送入機(jī)器,建立源程序文件;

編譯該源文件,建立相應(yīng)的目標(biāo)文件;

編譯有錯(cuò)時(shí),再用編輯命令修改源文件,消除全部詞法和語(yǔ)法錯(cuò)誤;

連接目標(biāo)文件,形成可執(zhí)行文件;

執(zhí)行該文件,得到結(jié)果;

打印輸出源程序和運(yùn)行結(jié)果;

撤消本次試驗(yàn)中形成的所有文件。

試驗(yàn)步驟及程序流程圖

命令行格式對(duì)Java編譯連接運(yùn)行:

對(duì)jjj.txt文件編寫代碼,然后后綴名改為java,通過(guò)javac命令編譯、java命令執(zhí)行得到結(jié)果Hello,Java!

1-1

1-2

在eclipse下的可視化界面對(duì)Java程序進(jìn)行編譯和執(zhí)行:

1.編寫源代碼

1-3

找到執(zhí)行按鈕

1-4

查看結(jié)果

1-5

四、試驗(yàn)結(jié)果與分析

無(wú)論是可視化界面還是命令行格式都可以對(duì)程序進(jìn)行編譯連接運(yùn)行的操作。

五、探討、心得

雖然現(xiàn)在的操作系統(tǒng)可視化界面對(duì)比廣泛,但是通過(guò)這兩種方式,了解不同執(zhí)行命令的方式,有利于我們今后的學(xué)習(xí),和對(duì)多種操作系統(tǒng)的了解。

試驗(yàn)二進(jìn)程調(diào)度程序設(shè)計(jì)

試驗(yàn)?zāi)康暮鸵?/p>

目的進(jìn)程是操作系統(tǒng)最重要的概念之一,進(jìn)程調(diào)度是操作系統(tǒng)的主要內(nèi)容,本試驗(yàn)要求學(xué)生獨(dú)立地用高級(jí)語(yǔ)言編寫一個(gè)進(jìn)程調(diào)度程序,調(diào)度算法可任意選擇或自行設(shè)計(jì),本試驗(yàn)可使學(xué)生加深對(duì)進(jìn)程調(diào)度和各種調(diào)度算法的理解。

要求

設(shè)計(jì)一個(gè)有幾個(gè)進(jìn)程并發(fā)執(zhí)行的進(jìn)程調(diào)度程序,每個(gè)進(jìn)程由一個(gè)進(jìn)程操縱塊(PCB)表示,進(jìn)程操縱塊尋常應(yīng)包括下述信息:進(jìn)程名,進(jìn)程優(yōu)先數(shù),進(jìn)程需要運(yùn)行的時(shí)間,占用CPU的時(shí)間以及進(jìn)程的狀態(tài)等,且可依照調(diào)度算法的不同而增刪。

調(diào)度程序應(yīng)包含2—3種不同的調(diào)度算法,運(yùn)行時(shí)可以任選一種,以利于各種方法的分析和對(duì)比。

系統(tǒng)應(yīng)能顯示或打印各進(jìn)程狀態(tài)和參數(shù)的變化狀況,便于觀測(cè)。

試驗(yàn)內(nèi)容

題目本程序可選用優(yōu)先數(shù)法或簡(jiǎn)單輪轉(zhuǎn)法對(duì)五個(gè)進(jìn)程進(jìn)行調(diào)度。每個(gè)進(jìn)程處于運(yùn)行R(run)、就緒W(wait)和完成F(finish)三種狀態(tài)之一,并假定起始狀態(tài)都是就緒狀態(tài)W。

為了便于處理,程序中進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位計(jì)算。各進(jìn)程的優(yōu)先數(shù)或輪轉(zhuǎn)時(shí)間片數(shù)、以及進(jìn)程需要運(yùn)行的時(shí)間片數(shù),均由偽隨機(jī)數(shù)發(fā)生器產(chǎn)生。

進(jìn)程操縱塊結(jié)構(gòu)如表2-1所示:

表2-1PCB

進(jìn)程標(biāo)識(shí)符

鏈指針

優(yōu)先數(shù)/輪轉(zhuǎn)時(shí)間片數(shù)

占用CPU時(shí)間片數(shù)

進(jìn)程所需時(shí)間片數(shù)

進(jìn)程狀態(tài)

進(jìn)程操縱塊鏈結(jié)構(gòu)如圖2-1所示:

RUN

HEAD

TAIL

1┇

1

R

3

W

5

W

W

0

2

圖2-1進(jìn)程操縱塊鏈結(jié)構(gòu)

其中:RUN—當(dāng)前運(yùn)行進(jìn)程指針;HEAD—進(jìn)程就緒鏈鏈?zhǔn)字羔?

TAIL—進(jìn)程就緒鏈鏈尾指針。

2.算法與框圖程序框圖如圖2-2所示。

priority

priority

輸入調(diào)度算法alog

開(kāi)始

alog=priority/roundrobin?

生成并按優(yōu)先數(shù)大小排列進(jìn)程操縱塊鏈

進(jìn)程時(shí)間片數(shù)為0?

從鏈?zhǔn)兹∫粋€(gè)進(jìn)程投入運(yùn)行

生成并按進(jìn)入次序

排列進(jìn)程操縱塊鏈

鏈?zhǔn)走M(jìn)程投入運(yùn)行

時(shí)間片到,進(jìn)程時(shí)間片

數(shù)減1,優(yōu)先數(shù)減3

運(yùn)行進(jìn)程退出,排到進(jìn)程鏈尾部

撤消該進(jìn)程

鏈?zhǔn)走M(jìn)程投入運(yùn)行

時(shí)間片到,進(jìn)程時(shí)間片數(shù)

減1,占用CPU時(shí)間加1

優(yōu)先數(shù)大于鏈?zhǔn)走M(jìn)程?

進(jìn)程時(shí)間片數(shù)為0?

撤消該進(jìn)程

運(yùn)行進(jìn)程退出,按優(yōu)先數(shù)插入進(jìn)程鏈

從鏈?zhǔn)兹∫粋€(gè)進(jìn)程投入運(yùn)行

終止

終止

進(jìn)程隊(duì)列空?

進(jìn)程隊(duì)列空?

roundrobin

占用處理機(jī)時(shí)間片到?

圖2-2進(jìn)程調(diào)度框圖

(1)優(yōu)先數(shù)法。

進(jìn)程就緒鏈按優(yōu)先數(shù)大小從大到小排列,鏈?zhǔn)走M(jìn)程首先投入運(yùn)行。每過(guò)一個(gè)時(shí)間片,運(yùn)行進(jìn)程所需運(yùn)行的時(shí)間片數(shù)減1,說(shuō)明它已運(yùn)行了一個(gè)時(shí)間片,優(yōu)先數(shù)也減3。理由是該進(jìn)程假如在一個(gè)時(shí)間片中完成不了,優(yōu)先級(jí)應(yīng)降低一級(jí)。接著對(duì)比現(xiàn)行進(jìn)程和就緒鏈鏈?zhǔn)走M(jìn)程的優(yōu)先數(shù),假如仍是現(xiàn)行進(jìn)程高或者一致,就讓現(xiàn)行進(jìn)程繼續(xù)運(yùn)行,否則,調(diào)度就緒鏈鏈?zhǔn)走M(jìn)程投入運(yùn)行。原運(yùn)行進(jìn)程再按其優(yōu)先數(shù)大小插入就緒鏈,且改變它們對(duì)應(yīng)的進(jìn)程狀態(tài),直至所有進(jìn)程都運(yùn)行完各自的時(shí)間片數(shù)。

(2)簡(jiǎn)單輪轉(zhuǎn)法。

進(jìn)程就緒鏈按各進(jìn)程進(jìn)入的先后次序排列,鏈?zhǔn)走M(jìn)程首先投入運(yùn)行。進(jìn)程每次占用處理機(jī)的輪轉(zhuǎn)時(shí)間按其重要程度登入進(jìn)程操縱塊中的輪轉(zhuǎn)時(shí)間片數(shù)記錄項(xiàng)(相應(yīng)于優(yōu)先數(shù)法的優(yōu)先數(shù)記錄項(xiàng)位置)。每過(guò)一個(gè)時(shí)間片,運(yùn)行進(jìn)程占用處理機(jī)的時(shí)間片數(shù)加1,然后對(duì)比占用處理機(jī)的時(shí)間片數(shù)是否與該進(jìn)程的輪轉(zhuǎn)時(shí)間片數(shù)相等,若相等說(shuō)明已到達(dá)輪轉(zhuǎn)時(shí)間,應(yīng)將現(xiàn)運(yùn)行進(jìn)程排到就緒鏈末尾,調(diào)度鏈?zhǔn)走M(jìn)程占用處理機(jī),且改變它們的進(jìn)程狀態(tài),直至所有進(jìn)程完成各自的時(shí)間片。

三、試驗(yàn)結(jié)果

輪轉(zhuǎn)法:

(只貼出首尾和中間部分過(guò)程截圖)

優(yōu)先數(shù)法:

四、探討、心得

一開(kāi)始程序中有錯(cuò)誤,經(jīng)過(guò)修正后可以正常運(yùn)行。為便利觀測(cè)結(jié)果我將程序中部分英文換為中文,并修改了一些隨機(jī)函數(shù)的種子數(shù)。

輪轉(zhuǎn)法中為每個(gè)進(jìn)程分派了時(shí)間片,當(dāng)該進(jìn)程時(shí)間片到或執(zhí)行完畢就放到隊(duì)尾,把run指針后移,取下一個(gè)進(jìn)程執(zhí)行。由于時(shí)間片固定,執(zhí)行依照隊(duì)列順序,程序簡(jiǎn)單易懂好用。優(yōu)先數(shù)法首先給予每個(gè)進(jìn)程優(yōu)先級(jí),然后根據(jù)優(yōu)先級(jí)從高到低給進(jìn)程排序,取頭指針執(zhí)行,每執(zhí)行完一次時(shí)間片就檢查優(yōu)先級(jí),若最高繼續(xù)執(zhí)行,若不是則插入隊(duì)列中適合位置。

試驗(yàn)三存儲(chǔ)管理程序設(shè)計(jì)

一、試驗(yàn)?zāi)康暮鸵?/p>

目的存儲(chǔ)管理的主要功能之一是合理地分派主存空間。請(qǐng)求頁(yè)式管理是一種常用的虛擬存儲(chǔ)管理技術(shù)。

本試驗(yàn)的目的是通過(guò)請(qǐng)求頁(yè)式存儲(chǔ)管理中頁(yè)面置換算法的模擬設(shè)計(jì),來(lái)了解虛擬存儲(chǔ)技術(shù)的特點(diǎn),把握請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法。

要求

模擬頁(yè)式虛擬存儲(chǔ)管理中硬件的地址轉(zhuǎn)換和缺頁(yè)中斷的處理過(guò)程,并用先進(jìn)先出調(diào)度算法(FIFO)處理缺頁(yè)中斷。

二、試驗(yàn)內(nèi)容

為了裝入一個(gè)頁(yè)面而必需調(diào)出一頁(yè)時(shí),假如被選中調(diào)出的頁(yè)面在執(zhí)行中沒(méi)有修改過(guò),則不必把該頁(yè)重新寫到磁盤上(磁盤已有副本)。因此在頁(yè)表中可以增加是否修改過(guò)的標(biāo)志,當(dāng)執(zhí)行“存〞、“寫〞指令時(shí)把對(duì)應(yīng)頁(yè)的修改標(biāo)志置“1〞,表示該頁(yè)修改過(guò),否則為“0〞,表示該頁(yè)未修改過(guò)。頁(yè)表格式(頁(yè)號(hào),標(biāo)志,主存塊號(hào),修改標(biāo)志,磁盤上的位置)

設(shè)計(jì)一個(gè)地址轉(zhuǎn)換程序來(lái)模擬硬件的地址轉(zhuǎn)換和缺頁(yè)中斷處理過(guò)程。當(dāng)訪問(wèn)的頁(yè)在主存時(shí)則形成絕對(duì)地址,但不去模擬指令的執(zhí)行,可用輸出轉(zhuǎn)換后的絕對(duì)地址來(lái)表示一條指令已完成。當(dāng)訪問(wèn)的頁(yè)不在主存時(shí)則輸出“*該頁(yè)頁(yè)號(hào)〞來(lái)表示硬件產(chǎn)生了一次缺頁(yè)中斷。

編制一個(gè)FIFO頁(yè)面調(diào)度程序。FIFO頁(yè)面調(diào)度算法總是先調(diào)出作業(yè)中最先進(jìn)入主存的那一頁(yè),因此,可以用一個(gè)數(shù)組來(lái)構(gòu)成頁(yè)號(hào)隊(duì)列。數(shù)組中每個(gè)元素是該作業(yè)已在主存的頁(yè)面號(hào),假定分派給作業(yè)的主存塊數(shù)為m,且該作業(yè)開(kāi)始的m頁(yè)已裝入主存,則數(shù)組可由m個(gè)元素組成:P[0],P[1],…,P[m-1],它們的初值為P[0]∶=0,P[1]∶=1,…,P[m-1]∶=m-1。

用一指針k指示當(dāng)要裝入新頁(yè)時(shí)應(yīng)調(diào)出的頁(yè)在數(shù)組的位置,k的初值為“0〞。當(dāng)產(chǎn)生缺頁(yè)中斷后,操作系統(tǒng)總是選擇P[k]所指出的頁(yè)面調(diào)出,然后執(zhí)行P[k]∶=要裝入的新頁(yè)頁(yè)號(hào),

k∶=(k+1)modm。在試驗(yàn)中不必實(shí)際地啟動(dòng)磁盤執(zhí)行調(diào)出一頁(yè)和裝入一頁(yè)的工作,而用輸出“OUT調(diào)出的頁(yè)號(hào)〞和“IN要裝入的新頁(yè)頁(yè)號(hào)〞來(lái)模擬一次調(diào)出和裝入的過(guò)程。

假定主存的每塊長(zhǎng)度為1024個(gè)字節(jié),現(xiàn)有一個(gè)共7頁(yè)的作業(yè),其副本已在磁盤上。系統(tǒng)為該作業(yè)分派了4塊主存塊,且該作業(yè)的第0頁(yè)至第3頁(yè)已經(jīng)裝入主存,其余3頁(yè)尚未裝入主存,該作業(yè)的頁(yè)表見(jiàn)表3-2所示。

表3-2作業(yè)的頁(yè)表

頁(yè)號(hào)

標(biāo)志

主存塊號(hào)

修改標(biāo)志

在磁盤上的位置

0

1

5

0

011

1

1

8

0

012

2

1

9

0

013

3

1

1

0

021

0

022

0

0

023

0

0

121

假如該作業(yè)依次執(zhí)行的指令序列如表3-3所示。

表3-3作業(yè)依次執(zhí)行的指令序列

操作

頁(yè)號(hào)

頁(yè)內(nèi)地址

操作

頁(yè)號(hào)

頁(yè)內(nèi)地址

+

0

070

移位

4

053

1

050

5

023

×

2

015

1

037

3

021

078

0

056

+

4

001

-

6

040

6

084

依次執(zhí)行上述的指令序列來(lái)調(diào)試你所設(shè)計(jì)的程序(僅模擬指令的執(zhí)行,不必考慮指令序列中具體操作的執(zhí)行)

為了檢查程序的正確性,可自行確定若干組指令序列,運(yùn)行設(shè)計(jì)的程序,核對(duì)執(zhí)行結(jié)果。

程序清單

#include<stdio.h

#includestdlib.h>

#definenumber12

#definelength7

structpagelist{

intbnum;//頁(yè)號(hào)

?intid;//標(biāo)志

?intchangeid;//修改標(biāo)志

?intlocation;//所在磁盤位置

}pagelist[length];//頁(yè)表

structaction{

?charname;//操作

?intobject;//頁(yè)號(hào)

intadd;//頁(yè)內(nèi)地址

}action[number];//對(duì)頁(yè)面的操作

structpagechain{

intpage;

?intblock;

?intnext;

}pagechain[length];//存放在塊中的頁(yè)

inthead;//pagechain的頭指針

intreplace(intpnu);

voidcaculate(intpnu,intleave){//計(jì)算物理地址傳入頁(yè)號(hào)和頁(yè)內(nèi)偏移

intwadd;

?inti;

?intb;

if(pagelist[pnu].id==1){

b=pagechain[pnu].block;

?}else

?b=replace(pnu);

wadd=b*1024+leave;

?printf(\n頁(yè)號(hào)為%d的分頁(yè)的物理地址:%d\t\t,pnu,wadd);

}

intreplace(intpnu){//頁(yè)面置換

intb,p;

?b=pagechain[head].block;

p=pagechain[head].page;

?//將需要的頁(yè)面調(diào)入塊

pagechain[head].page=pnu;

pagelist[pnu].bnum=b;

?pagelist[pnu].id=1;

?//將塊中頁(yè)面調(diào)出

pagelist[p].id=0;

?pagelist[p].bnum=0;

head=pagechain[head].next;

printf(\n%d與%d互換\t\t,pnu,p);

printf(%d進(jìn)去,%d出來(lái),pnu,p);

?returnb;

voidinitPagelist(){//初始化頁(yè)表

?intk,b,l;

?for(k=0;klength;k++){

if(k4){

?printf(\n請(qǐng)輸入第%d個(gè)頁(yè)面所在的塊的塊號(hào):,k);

??setbuf(stdin,NULL);

scanf(%d",b);

?pagelist[k].bnum=b;

?pagelist[k].id=1;

?}else{

?pagelist[k].bnum=0;

pagelist[k].id=0;

?}

pagelist[k].changeid=0;

?printf(\n請(qǐng)輸入第%d個(gè)頁(yè)面所在的磁盤位置:,k);

?setbuf(stdin,NULL);

?scanf("%d,l);

?pagelist[k].location=l;

?}

}

voidinitAction(){//初始化操作表

?inti,b,c;

chara;

for(i=0;inumber;i++){

?printf(\n請(qǐng)輸入相應(yīng)的操作頁(yè)面及頁(yè)內(nèi)偏移(w:移位,c:取,q:存):);

setbuf(stdin,NULL);

?scanf("%c,%d,%d,a,&b,c);

action[i].name=a;

?action[i].object=b;

action[i].add=c;

}

}

voidinitPagechain(){//初始化頁(yè)在塊中的隊(duì)列鏈

intj;

?for(j=0;j4;j+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論