




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)進(jìn)程調(diào)度實(shí)驗(yàn)操作系統(tǒng)進(jìn)程調(diào)度實(shí)驗(yàn)操作系統(tǒng)進(jìn)程調(diào)度實(shí)驗(yàn)xxx公司操作系統(tǒng)進(jìn)程調(diào)度實(shí)驗(yàn)文件編號(hào):文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度侯秀萍焦素云朱洪秀長(zhǎng)春工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院2010年3月
前言操作系統(tǒng)是信息科學(xué)、計(jì)算機(jī)軟件的核心和基礎(chǔ)學(xué)科,對(duì)它的掌握程度,決定著計(jì)算機(jī)學(xué)習(xí)者的發(fā)展水平及方向。同時(shí)它是一門(mén)實(shí)踐性很強(qiáng)的課程,不僅要學(xué)習(xí)書(shū)本上的理論,而且必須動(dòng)手實(shí)踐才能對(duì)操作系統(tǒng)基本原理真正理解。本課程提供實(shí)驗(yàn)課,其目的在于加深學(xué)生對(duì)教學(xué)內(nèi)容的理解,培養(yǎng)學(xué)生初步掌握操作系統(tǒng)基本功能的設(shè)計(jì)方法及其實(shí)現(xiàn)過(guò)程。為使學(xué)生能更好的了解操作系統(tǒng),本次實(shí)驗(yàn)安排了熟悉AIX操作系統(tǒng)的基本特性,在Windows系統(tǒng)下進(jìn)行實(shí)驗(yàn)題目的設(shè)計(jì)與實(shí)現(xiàn)。
目錄TOC\o"1-3"\h\z第一章AIX/LINUX簡(jiǎn)單命令簡(jiǎn)介 11.1如何登錄到IBM小型機(jī) 11.2如何登錄到LINUX服務(wù)器 11.3如何退出AIX/LINUX系統(tǒng) 11.4AIX/LINUX簡(jiǎn)單命令 1第二章vi編輯器的使用 52.1vi的兩種工作模式 52.2vi的文本編輯方法 5第三章背景知識(shí)介紹 73.1進(jìn)程管理 73.2進(jìn)程控制塊 73.3進(jìn)程控制塊隊(duì)列 83.4進(jìn)程調(diào)度算法 8第四章實(shí)驗(yàn)項(xiàng)目指導(dǎo) 104.1先進(jìn)先出進(jìn)程調(diào)度算法 104.2時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法 134.3優(yōu)先數(shù)進(jìn)程調(diào)度算法 144.4可變分區(qū)管理 16第五章實(shí)驗(yàn)報(bào)告內(nèi)容及格式 185.1實(shí)驗(yàn)報(bào)告內(nèi)容 185.2參考樣例 20第一章AIX/LINUX簡(jiǎn)單命令簡(jiǎn)介1.1如何登錄到LINUX服務(wù)器啟動(dòng)Windows后,選擇“開(kāi)始”-“程序”-“附件”-“命令提示符”,執(zhí)行Telnet命令,命令格式為T(mén)elnetIP地址(例C:\>telnet,IP地址為L(zhǎng)INUX服務(wù)器的地址),執(zhí)行此命令后,系統(tǒng)會(huì)提示輸入用戶名和密碼:都輸入student即可。系統(tǒng)會(huì)顯示提示符如下:$(普通用戶)#(root用戶)表明登錄成功,你可以開(kāi)始工作。1.2如何退出AIX/LINUX系統(tǒng) 如果在當(dāng)前提示符下,用戶按Ctrl-d(或在鍵入Logout)可以退出系統(tǒng),返回到提示符狀態(tài)下(或者退回WINDOWS系統(tǒng))1.3AIX/LINUX簡(jiǎn)單命令一、命令的基本格式說(shuō)明:1、格式:$命令[-命令選項(xiàng)][參數(shù)1][參數(shù)2]2、說(shuō)明:字段間用一個(gè)或多個(gè)空格分開(kāi)UNIX對(duì)大小寫(xiě)敏感,只接受小寫(xiě)命令二、常用命令介紹1、who命令功能:可以列出當(dāng)前登錄到系統(tǒng)的所有用戶的登錄名、終端號(hào)和登錄時(shí)間$whodavidtty04Nov2808:27danieltty01Nov2808:30 2、man命令可以顯示在線電子文檔3、pwd顯示當(dāng)前目錄的絕對(duì)路徑名$pwd /usr/james4、cd改變工作目錄 $cdsource(相對(duì)路徑) $cd/usr/david(絕對(duì)路徑)$cd$HOME或者cd返回用戶主目錄5、mkdir創(chuàng)建目錄 $mkdirmemos在當(dāng)前目錄下創(chuàng)建子目錄 $mkdir/source/memos指定目錄的名字 $mkdir–pxx/yy/zz創(chuàng)建多個(gè)分級(jí)目錄6、rmdir刪除目錄 $rmdirimportant刪除一個(gè)空目錄 如果目錄不空,則無(wú)法刪除 必須在父目錄或者更高層刪除子目錄7、ls顯示指定目錄的內(nèi)容 $ls列出當(dāng)前目錄內(nèi)容 $lssource顯示目錄source的文件列表 $lssource/顯示指定的文件 $ls–a列出所有文件,包括隱藏文件 $ls–R循環(huán)列出子目錄的內(nèi)容 $ls–l按照長(zhǎng)格式列表,顯示文件的詳細(xì)信息total3-rw-r--r--1davidstudent1026Jun2512:30123-rw-r--r--1davidstudent684Jun2512:30REPORTdrw-r--r--1davidstudent48Jun2512:30momos文件類型:第1列由10個(gè)字符組成,每行的第一個(gè)字符表示文件類型。-: 普通文件d: 目錄文件b: 塊設(shè)備文件,例如磁盤(pán)c: 字符設(shè)備文件,例如打印機(jī)文件的訪問(wèn)模式:9個(gè)字符表示,R: 允許讀w: 允許寫(xiě)x: 允許執(zhí)行第一組允許所有者的讀、寫(xiě)和執(zhí)行權(quán)限。第二組允許用戶組的讀、寫(xiě)和執(zhí)行權(quán)限。第三組允許其他用戶的讀、寫(xiě)和執(zhí)行權(quán)限。如果是可執(zhí)行文件,標(biāo)記執(zhí)行許可權(quán)。8、rm刪除文件rm既可以刪除文件,也可以刪除目錄。rm命令沒(méi)有任何警告信息,當(dāng)刪除文件的時(shí)候,不出問(wèn)題的話,文件就被刪除了。rm-I刪除文件前,確認(rèn)rm-r刪除指定的目錄及目錄中所有文件和子目錄9、cp復(fù)制文件格式:cp源目標(biāo)目的目標(biāo)如果目的目標(biāo)已經(jīng)存在,那么他的內(nèi)容將被破壞。$cpfile1file210、mv移動(dòng)文件、更改名字 格式:mv源目標(biāo)目的目標(biāo) $mvfile1file2(更改名字) cp和mv命令都可以接受多于兩個(gè)的參數(shù),但最后參數(shù)必須是目錄 $cpfile1file2file3directory111、uptime命令:用來(lái)得到有關(guān)系統(tǒng)負(fù)載的大致數(shù)據(jù)。$uptime3:20pmup2days,2:41,16users,loadaverage:,,uptime報(bào)告當(dāng)前的時(shí)間,系統(tǒng)已經(jīng)啟動(dòng)的時(shí)間以及有關(guān)任務(wù)負(fù)載的三個(gè)平均數(shù)據(jù)(最后1分鐘,最后5分鐘,最后15秒),該數(shù)據(jù)是對(duì)CPU使用量的大致接近。12、ps命令:生成一個(gè)報(bào)告,總結(jié)當(dāng)前進(jìn)程執(zhí)行的統(tǒng)計(jì)信息。該命令的選項(xiàng)控制要列出的進(jìn)程和要顯示的信息。最常用的格式就是$ps–ef-e:顯示所有進(jìn)程-f:顯示詳細(xì)信息UIDPIDPPIDCSTIMETTYTIMECMDroot00009:36:35 0:00schedjames8881131517:02:05tty610:02vi其中:UID:用戶IDPID:進(jìn)程IDPPID:父進(jìn)程IDC:當(dāng)前的調(diào)度程序的值STIME:進(jìn)程的開(kāi)始時(shí)間TTY: 和進(jìn)程相關(guān)的終端TIME:總的CPU運(yùn)行時(shí)間CMD:進(jìn)程運(yùn)行的命令13、nice命令:指定運(yùn)行程序的優(yōu)先值。格式:nice–n[+|-]數(shù)字命令例:$nice–n10myprog $nice–n–10myprog14、renice命令:指定進(jìn)程的優(yōu)先值。格式:renice–n[+|-]數(shù)字PID例:$renice–n+101001 $renice–n–10131315、kill命令:向進(jìn)程發(fā)信號(hào)并殺死進(jìn)程。格式:kill[-信號(hào)]PID(S)信號(hào)是要發(fā)給進(jìn)程的信號(hào)(可選),缺省是15,通知進(jìn)程終止有時(shí)候發(fā)出kill信號(hào)之后進(jìn)程依然可能存在。此時(shí)可以使用kill–9命令。一般這樣就能夠保證殺死進(jìn)程。當(dāng)殺死一個(gè)進(jìn)程的時(shí)候,也殺死了進(jìn)程的所有子進(jìn)程。第二章vi編輯器的使用2.1vi的工作模式幾乎被所有版本的UNIX系統(tǒng)均支持vi編輯器。命令模式:vi初始啟動(dòng)時(shí)先進(jìn)入命令模式。在命令模式下,所有的輸入不會(huì)在屏幕上顯示,只會(huì)被解釋執(zhí)行。輸入的命令均顯示在編輯器屏幕的最后一行。命令輸入完后,按回車(chē)執(zhí)行命令;有的命令直接就可以執(zhí)行。文本輸入模式:所有的用戶輸入將被作為文本寫(xiě)入到用戶的文件中。 狀態(tài)行:屏幕最底部的一行,用來(lái)反饋編輯操作結(jié)果。以冒號(hào)(:)、斜杠(/)、問(wèn)號(hào)()開(kāi)頭的命令也會(huì)在狀態(tài)行顯示。vi的三種模式的相互轉(zhuǎn)化如圖所示2.2vi的文本編輯方法1、進(jìn)入vi編輯器:在命令行下輸入vi[文件名]回車(chē),進(jìn)入vi編輯器。此時(shí)位命令行模式。2、設(shè)置文本編輯模式:在命令行輸入i(insert)鍵可以切換到輸入文本狀態(tài)。許多命令在命令行狀態(tài)下按下命令鍵就可以了,不用再輸入回車(chē)3、保存文件:首先要使vi由文本輸入模式切換到命令模式。連續(xù)按[ESC]鍵可以切換到命令模式。然后輸入wq(writeandquit)就可以存盤(pán)并退出編輯器。4、vi操作的常用方法可以使用下列命令選擇進(jìn)入文本模式時(shí)光標(biāo)的位置:i:在光標(biāo)左側(cè)輸入正文I:在光標(biāo)所在行的開(kāi)頭輸入正文a:在光標(biāo)右側(cè)輸入正文A:在光標(biāo)所在行的末尾輸入正文o:在光標(biāo)所在行的下一行添加新行,光標(biāo)位于新行開(kāi)頭O:在光標(biāo)所在行的上一行添加新行,光標(biāo)位于新行開(kāi)頭空格鍵和[Tab]:空格鍵在當(dāng)前光標(biāo)位置前插入一個(gè)空格。[Tab]用來(lái)插入一個(gè)制表符。[Backspace]鍵:光標(biāo)退回一個(gè)字符的位置。回車(chē)鍵:增添一個(gè)新行移動(dòng)光標(biāo):可以使用箭頭鍵來(lái)移動(dòng)光標(biāo)。有些終端上箭頭鍵不能正常工作。我們可以使用下面的控制鍵來(lái)移動(dòng)光標(biāo):h:光標(biāo)左移一個(gè)空格j:光標(biāo)下移一行k:光標(biāo)上移一行l(wèi):光標(biāo)右移一個(gè)空格$:光標(biāo)移到當(dāng)前行的末尾w:右移光標(biāo),到下一個(gè)字的開(kāi)頭b:左移光標(biāo),到前一個(gè)字的開(kāi)頭e:右移光標(biāo),到一個(gè)字的末尾0:左移光標(biāo),到本行的開(kāi)頭回車(chē)鍵:光標(biāo)移到下一行的開(kāi)頭5、文本修改:x:從指定位置開(kāi)始刪除字符dd:從指定位置刪除行u:放棄最近的修改U:放棄對(duì)當(dāng)前行所做的所有修改r:替換當(dāng)前光標(biāo)所在的字符R:從當(dāng)前光標(biāo)的位置開(kāi)始替換字符,并且使vi進(jìn)入文本輸入模式.:重復(fù)上次的修改操作命令前可以加上數(shù)字,可重復(fù)操作。搜索功能:“/”和“”分別提供了向前和向后搜索功能。在命令行提示符輸入n可以繼續(xù)查找。6、退出vi:q:退出編輯器w:保存文件,但是不退出wq:保存文件,然后退出q!:退出編輯器,放棄所有的修改ZZ:保存文件,退出vi,和wq作用相同第三章背景知識(shí)介紹3.1進(jìn)程管理進(jìn)程管理是操作系統(tǒng)中用來(lái)創(chuàng)建進(jìn)程、撤消進(jìn)程、實(shí)現(xiàn)進(jìn)程狀態(tài)轉(zhuǎn)換的部分,它提供了在可運(yùn)行的進(jìn)程之間復(fù)用CPU的方法。在進(jìn)程管理中,進(jìn)程調(diào)度是核心,因?yàn)樵诓捎枚嗟莱绦蛟O(shè)計(jì)的系統(tǒng)中,往往有若干個(gè)進(jìn)程同時(shí)處于就緒狀態(tài),當(dāng)就緒進(jìn)程個(gè)數(shù)大于處理器數(shù)目時(shí),就必須依照某種策略決定哪些進(jìn)程優(yōu)先占用處理器。本次實(shí)驗(yàn)?zāi)M在單處理器情況下的進(jìn)程調(diào)度,目的是加深對(duì)進(jìn)程調(diào)度工作的理解。3.2進(jìn)程控制塊為了管理和控制進(jìn)程,系統(tǒng)在創(chuàng)建每一個(gè)進(jìn)程時(shí),都為其開(kāi)辟一個(gè)專用的存儲(chǔ)區(qū),用以隨時(shí)記錄它在系統(tǒng)中的動(dòng)態(tài)特性。而當(dāng)一個(gè)進(jìn)程被撤消時(shí),系統(tǒng)就收回分配給它的存儲(chǔ)區(qū)。通常,把這一存儲(chǔ)區(qū)稱為該進(jìn)程的“進(jìn)程控制塊”P(pán)CB(ProcessControlBlock)。由于PCB是隨著進(jìn)程的創(chuàng)建而建立,隨著進(jìn)程的撤消而取消的,因此系統(tǒng)是通過(guò)PCB來(lái)“感知”一個(gè)個(gè)進(jìn)程的,PCB是進(jìn)程存在的唯一標(biāo)志。隨操作系統(tǒng)的不同,PCB的格式、大小以及內(nèi)容也不盡相同。一般地,在PCB中大致應(yīng)包如下4方面的信息。標(biāo)識(shí)信息:進(jìn)程名等。說(shuō)明信息:進(jìn)程狀態(tài)、程序存放位置、數(shù)據(jù)存放位置等?,F(xiàn)場(chǎng)信息:通用寄存器內(nèi)容、控制寄存器內(nèi)容、斷點(diǎn)地址等。管理信息:進(jìn)程優(yōu)先數(shù)、隊(duì)列指針等。3.3進(jìn)程控制塊隊(duì)列在多道程序設(shè)計(jì)環(huán)境里,同時(shí)會(huì)創(chuàng)建多個(gè)進(jìn)程。當(dāng)計(jì)算機(jī)系統(tǒng)只有一個(gè)CPU時(shí),每次只能讓一個(gè)進(jìn)程運(yùn)行,其他的進(jìn)程或處于就緒狀態(tài),或處于阻塞狀態(tài)。為了對(duì)這些進(jìn)程進(jìn)行管理,操作系統(tǒng)要做三件事。 (1)把處于相同狀態(tài)的進(jìn)程的PCB,通過(guò)各自的隊(duì)列指針鏈接在一起,形成一個(gè)個(gè)隊(duì)列。通常有運(yùn)行隊(duì)列、就緒隊(duì)列、阻塞隊(duì)列。(2)為每一個(gè)隊(duì)列設(shè)立一個(gè)隊(duì)列頭指針,它總是指向排在隊(duì)列之首的進(jìn)程的PCB。 (3)排在隊(duì)尾的進(jìn)程的PCB,它的“隊(duì)列指針”項(xiàng)內(nèi)容應(yīng)該為“NULL”,或一個(gè)特殊的符號(hào),以表示這是該隊(duì)的隊(duì)尾PCB。在單CPU系統(tǒng),任何時(shí)刻系統(tǒng)中都只有一個(gè)進(jìn)程處于運(yùn)行狀態(tài),因此運(yùn)行隊(duì)列中只能有一個(gè)PCB;系統(tǒng)中所有處于就緒狀態(tài)的進(jìn)程的PCB排成一隊(duì),稱其為“就緒隊(duì)列”。一般地,就緒隊(duì)列中會(huì)有多個(gè)進(jìn)程的PCB排在里面,它們形成處理機(jī)分配的候選對(duì)象。如果就緒隊(duì)列里沒(méi)有PCB存在,則稱該隊(duì)列為空;所有處于阻塞狀態(tài)進(jìn)程的PCB,應(yīng)該根據(jù)阻塞的原因進(jìn)行排隊(duì),每一個(gè)都稱為一個(gè)“阻塞隊(duì)列”。比如等待磁盤(pán)輸入/輸出進(jìn)程的PCB排成一個(gè)隊(duì)列,等待打印機(jī)輸出進(jìn)程的PCB排成一個(gè)隊(duì)列等。所以,系統(tǒng)中可以有多個(gè)阻塞隊(duì)列,每個(gè)阻塞隊(duì)列中可以有多個(gè)進(jìn)程的PCB,也可以為空。3.4進(jìn)程調(diào)度算法進(jìn)程調(diào)度算法用于確定就緒隊(duì)列中的哪一個(gè)進(jìn)程即將獲得CPU。常用的進(jìn)程調(diào)度算法有先來(lái)先服務(wù)法、時(shí)間片輪轉(zhuǎn)法、優(yōu)先數(shù)法等。1.先來(lái)先服務(wù)調(diào)度算法 先來(lái)先服務(wù)調(diào)度算法的基本思想是:以到達(dá)就緒隊(duì)列的先后次序?yàn)闃?biāo)準(zhǔn)來(lái)選擇占用處理機(jī)的進(jìn)程。一個(gè)進(jìn)程一旦占有處理機(jī),就一直使用下去,直至正常結(jié)束或因等待某事件的發(fā)生而讓出處理機(jī)。采用這種算法時(shí),應(yīng)該這樣來(lái)管理就緒隊(duì)列:到達(dá)的進(jìn)程的PCB總是排在就緒隊(duì)列末尾;調(diào)度程序總是把CPU分配給就緒隊(duì)列中的第一個(gè)進(jìn)程使用。2.時(shí)間片輪轉(zhuǎn)法時(shí)間片輪轉(zhuǎn)調(diào)度算法的基本思想是:為就緒隊(duì)列中的每一個(gè)進(jìn)程分配一個(gè)稱為“時(shí)間片”的時(shí)間段,它是允許該進(jìn)程運(yùn)行的時(shí)間長(zhǎng)度。在使用完一個(gè)時(shí)間片后,即使進(jìn)程還沒(méi)有運(yùn)行完畢,也要強(qiáng)迫其釋放處理機(jī),讓給另一個(gè)進(jìn)程使用。它自己則返回到就緒隊(duì)列末尾,排隊(duì)等待下一次調(diào)度的到來(lái)。采用這種調(diào)度算法時(shí),對(duì)就緒隊(duì)列的管理與先來(lái)先服務(wù)完全相同。主要區(qū)別是進(jìn)程每次占用處理機(jī)的時(shí)間由時(shí)間片決定,而不是只要占用處理機(jī)就一直運(yùn)行下去,直到運(yùn)行完畢或?yàn)榈却骋皇录陌l(fā)生而自動(dòng)放棄。3. 優(yōu)先數(shù)調(diào)度算法優(yōu)先數(shù)調(diào)度算法的基本思想是:為每一個(gè)進(jìn)程確定一個(gè)優(yōu)先數(shù),進(jìn)程就緒隊(duì)列按照優(yōu)先數(shù)排序。如何確定進(jìn)程的優(yōu)先數(shù)(也就是進(jìn)程的優(yōu)先級(jí))可以從如下幾個(gè)方面考慮。 (1)根據(jù)進(jìn)程的類型。比如說(shuō),系統(tǒng)中有系統(tǒng)進(jìn)程和用戶進(jìn)程。系統(tǒng)進(jìn)程完成的任務(wù)是提供系統(tǒng)服務(wù),分配系統(tǒng)資源,因此,給予系統(tǒng)進(jìn)程較高的優(yōu)先數(shù),不僅合乎情理,而且也能夠提高系統(tǒng)的工作效率。 (2)根據(jù)進(jìn)程執(zhí)行任務(wù)的重要性。每個(gè)進(jìn)程所完成的任務(wù),就其重要性和緊迫性講,肯定不會(huì)完全一樣。比如說(shuō),系統(tǒng)中處理緊急情況的報(bào)警進(jìn)程的重要性是不言而喻的。賦予報(bào)警進(jìn)程高的優(yōu)先數(shù),一旦有緊急事件發(fā)生時(shí),讓它立即占有處理機(jī)投入運(yùn)行,誰(shuí)也不會(huì)提出異議。 (3)根據(jù)進(jìn)程程序的性質(zhì)。一個(gè)CPU繁忙的進(jìn)程,由于需要占用較長(zhǎng)的運(yùn)行時(shí)間,影響系統(tǒng)整體效率的發(fā)揮,因此只能給予較低的優(yōu)先數(shù)。一個(gè)I/O繁忙的進(jìn)程,給予它較高的優(yōu)先數(shù)后,就能充分發(fā)揮CPU和外部設(shè)備之間的并行工作能力。 (4)根據(jù)對(duì)資源的要求。系統(tǒng)資源有處理機(jī)、內(nèi)存儲(chǔ)器和外部設(shè)備等??梢园凑找粋€(gè)進(jìn)程所需資源的類型和數(shù)量,確定它的優(yōu)先數(shù)。比如給予占用CPU時(shí)間短或內(nèi)存容量少的進(jìn)程以較高的優(yōu)先數(shù),這樣可以提高系統(tǒng)的吞吐量。 (5)根據(jù)用戶的請(qǐng)求。系統(tǒng)可以根據(jù)用戶的請(qǐng)求,給予它的進(jìn)程很高的優(yōu)先數(shù),作“加急”處理。4.多級(jí)隊(duì)列調(diào)度算法 多級(jí)隊(duì)列調(diào)度算法也稱多級(jí)反饋隊(duì)列調(diào)度算法,它是時(shí)間片調(diào)度算法與優(yōu)先數(shù)調(diào)度算法的結(jié)合。實(shí)行這種調(diào)度算法時(shí),系統(tǒng)中將維持多個(gè)就緒隊(duì)列,每個(gè)就緒隊(duì)列具有不同的調(diào)度級(jí)別,可以獲得不同長(zhǎng)度的時(shí)間片。例如,系統(tǒng)維持N個(gè)就緒隊(duì)列,第1級(jí)就緒隊(duì)列中進(jìn)程的調(diào)度級(jí)別最高,可獲得的時(shí)間片最短,第N級(jí)就緒隊(duì)列中進(jìn)程的調(diào)度級(jí)別最低,可獲得的時(shí)間片最長(zhǎng)。具體的調(diào)度方法是:創(chuàng)建一個(gè)新進(jìn)程時(shí),它的PCB將進(jìn)入第1級(jí)就緒隊(duì)列的末尾。對(duì)于在第1級(jí)到第N-1級(jí)隊(duì)列中的進(jìn)程,如果在分配給它的時(shí)間片內(nèi)完成了全部工作,那么就撤離系統(tǒng);如果在時(shí)間片沒(méi)有用完時(shí)提出了輸入/輸出請(qǐng)求或要等待某事件發(fā)生,那么就進(jìn)入相應(yīng)的阻塞隊(duì)列里等待。在所等待的事件出現(xiàn)時(shí),仍回到原隊(duì)列末尾,參與下一輪調(diào)度(也就是每個(gè)隊(duì)列實(shí)行先來(lái)先服務(wù)調(diào)度算法);如果用完了時(shí)間片還沒(méi)有完成自己的工作,那么只能放棄對(duì)CPU的使用,降到低一級(jí)隊(duì)列的末尾,參與那個(gè)隊(duì)列的調(diào)度。對(duì)位于最后一個(gè)隊(duì)列里的進(jìn)程,實(shí)行時(shí)間片輪轉(zhuǎn)調(diào)度算法。整個(gè)系統(tǒng)最先調(diào)度1級(jí)就緒隊(duì)列;只有在上一級(jí)就緒隊(duì)列為空時(shí),才去下一級(jí)隊(duì)列調(diào)度。當(dāng)比運(yùn)行進(jìn)程更高級(jí)別的隊(duì)列中到達(dá)一個(gè)進(jìn)程(可以肯定,在此之前比運(yùn)行進(jìn)程級(jí)別高的所有隊(duì)列全為空)時(shí),系統(tǒng)將立即停止當(dāng)前運(yùn)行進(jìn)程的運(yùn)行,讓它回到自己隊(duì)列的末尾,轉(zhuǎn)去運(yùn)行級(jí)別高的那個(gè)進(jìn)程。可以看出,多級(jí)隊(duì)列調(diào)度算法優(yōu)先照顧I/O繁忙的進(jìn)程。I/O繁忙的進(jìn)程在獲得一點(diǎn)CPU時(shí)間后就會(huì)提出輸入/輸出請(qǐng)求,因此它們總是被保持在1、2級(jí)等較前面的隊(duì)列中,總能獲得較多的調(diào)度機(jī)會(huì)。對(duì)于CPU繁忙的進(jìn)程,它們需要較長(zhǎng)的CPU時(shí)間,因此會(huì)逐漸地由級(jí)別高的隊(duì)列往下降,以獲得更多的CPU時(shí)間,它們“沉”得越深,被調(diào)度到的機(jī)會(huì)就越少。但是,一旦被調(diào)度到,就會(huì)獲得更多的CPU時(shí)間,所以,多級(jí)調(diào)度算法采用的是“你要得越多,你就必須等待越久”的原則來(lái)分配處理機(jī)的。第四章實(shí)驗(yàn)項(xiàng)目指導(dǎo)4.1先進(jìn)先出進(jìn)程調(diào)度算法實(shí)驗(yàn)?zāi)康睦斫庀冗M(jìn)先出進(jìn)程調(diào)度算法的基本思想。二、提示假定系統(tǒng)有五個(gè)進(jìn)程,每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來(lái)代表。進(jìn)程控制塊的格式如圖。其中:進(jìn)程名PCB指針要求運(yùn)行時(shí)間進(jìn)程名PCB指針要求運(yùn)行時(shí)間進(jìn)入系統(tǒng)時(shí)間狀態(tài)圖PCB指針:按進(jìn)程進(jìn)入系統(tǒng)的先后順序把五個(gè)進(jìn)程連成隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程中的指針為“NULL”。要求運(yùn)行時(shí)間:假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。進(jìn)入系統(tǒng)時(shí)間:記錄進(jìn)程進(jìn)入系統(tǒng)的時(shí)刻,調(diào)度時(shí)總是選取最早進(jìn)入系統(tǒng)的進(jìn)程先執(zhí)行。狀態(tài):可假設(shè)有兩種狀態(tài),“就緒”狀態(tài)和“結(jié)束”狀態(tài)。五個(gè)進(jìn)程的初始狀態(tài)都為“就緒”狀態(tài),用“R”表示,當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”狀態(tài),用“E”表示。(2)在每次運(yùn)行你所設(shè)計(jì)的進(jìn)程調(diào)度程序之前,為每個(gè)進(jìn)程任意確定它的“進(jìn)入系統(tǒng)時(shí)間”和“要求運(yùn)行時(shí)間”。(3)為了調(diào)度方便,把五個(gè)進(jìn)程按進(jìn)入系統(tǒng)的時(shí)間從早到晚連成隊(duì)列,用一單元Head_PCB指出隊(duì)首進(jìn)程,用指針指出隊(duì)列的連接情況,如圖。Head_PCBHead_PCBPCB1PCB2PCB3PCB4PCB5P121RP221RP321RP421RP5NULL21R圖(4)處理器調(diào)度總是選隊(duì)首進(jìn)程運(yùn)行,由于本實(shí)驗(yàn)是模擬處理器調(diào)度,所以,對(duì)被選中的進(jìn)程并不實(shí)際地啟動(dòng)運(yùn)行,而是輸出被選中進(jìn)程的名稱來(lái)模擬進(jìn)程的一次運(yùn)行。提醒注意的是:在實(shí)際的系統(tǒng)中,當(dāng)一個(gè)進(jìn)程被選中運(yùn)行時(shí),必須恢復(fù)進(jìn)程的現(xiàn)場(chǎng),讓它占有處理器運(yùn)行,直到出現(xiàn)等待事件或運(yùn)行結(jié)束,在這里省去了這些工作。(5)進(jìn)程運(yùn)行一次后,要將它的狀態(tài)修改成“結(jié)束”(E),且退出就緒隊(duì)列,移入空閑隊(duì)列。(6)若“就緒”狀態(tài)的進(jìn)程隊(duì)列不為空,則重復(fù)上面(4)和(5)的步驟,直到所有進(jìn)程都為“結(jié)束”狀態(tài)。(7)在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語(yǔ)句,能顯示或打印每次被選中進(jìn)程名稱以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。(8)為五個(gè)進(jìn)程任意確定一組“進(jìn)入系統(tǒng)時(shí)間”和“要求運(yùn)行時(shí)間”,啟動(dòng)所設(shè)計(jì)的處理器調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名稱以及進(jìn)程控制塊的動(dòng)態(tài)變化過(guò)程。4.2時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法一、實(shí)驗(yàn)?zāi)康睦斫鈺r(shí)間片輪轉(zhuǎn)法的基本思想。二、提示進(jìn)程名PCB指針進(jìn)程名PCB指針要求運(yùn)行時(shí)間已運(yùn)行時(shí)間狀態(tài)圖進(jìn)程名:作為進(jìn)程的標(biāo)識(shí),假設(shè)五個(gè)進(jìn)程的進(jìn)程名分別為Q1,Q2,Q3,Q4,Q5。PCB指針:進(jìn)程按順序排成循環(huán)隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程中的指針指出第一個(gè)進(jìn)程的進(jìn)程控制塊首地址。要求運(yùn)行時(shí)間:假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。已運(yùn)行時(shí)間:假設(shè)進(jìn)程已經(jīng)運(yùn)行的單位時(shí)間數(shù),初始值為“0”狀態(tài):可假設(shè)有兩種狀態(tài),“就緒”狀態(tài)和“結(jié)束”狀態(tài)。五個(gè)進(jìn)程的初始狀態(tài)都為“就緒”狀態(tài),用“R”表示,當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”狀態(tài),用“E”表示。(2)每次運(yùn)行你所設(shè)計(jì)的進(jìn)程調(diào)度程序之前,為每個(gè)進(jìn)程任意確定它的“要求運(yùn)行時(shí)間”。圖PCB1PCB2圖PCB1PCB2PCB3PCB4PCB5Q140RQ220RQ330RQ450RQ530RCurrent_PCB(4)處理器調(diào)度總是選擇Current_PCB指示的進(jìn)程運(yùn)行。由于本實(shí)驗(yàn)是模擬處理器調(diào)度,所以,對(duì)被選中的進(jìn)程并不實(shí)際地啟動(dòng)運(yùn)行,而是將該進(jìn)程的已運(yùn)行時(shí)間加1來(lái)模擬進(jìn)程的一次運(yùn)行,表示進(jìn)程已經(jīng)運(yùn)行過(guò)一個(gè)單位的時(shí)間。提醒注意的是:在實(shí)際的系統(tǒng)中,當(dāng)一個(gè)進(jìn)程被選中運(yùn)行時(shí),必須設(shè)置該進(jìn)程可以運(yùn)行的時(shí)間片值,以及恢復(fù)進(jìn)程的現(xiàn)場(chǎng),讓它占有處理器運(yùn)行,直到出現(xiàn)等待事件或運(yùn)行滿一個(gè)時(shí)間片。在這里省去了這些工作。僅用“已運(yùn)行時(shí)間+1”來(lái)表示進(jìn)程已經(jīng)運(yùn)行滿一個(gè)時(shí)(5)進(jìn)程運(yùn)行一次后,應(yīng)把該進(jìn)程的進(jìn)程控制塊中的指針值送到Current_PCB,以指示下一個(gè)輪到運(yùn)行的進(jìn)程,同時(shí),應(yīng)該判斷該進(jìn)程的要求運(yùn)行時(shí)間與已經(jīng)運(yùn)行時(shí)間,若該進(jìn)程的要求運(yùn)行時(shí)間不等于已運(yùn)行時(shí)間,則表示它尚未執(zhí)行結(jié)束,應(yīng)待到下一輪時(shí)再運(yùn)行;若要求運(yùn)行時(shí)間等于已運(yùn)行時(shí)間,則表示它已經(jīng)執(zhí)行結(jié)束,應(yīng)把它的狀態(tài)修改成“結(jié)束”(E)且退出隊(duì)列。此時(shí),應(yīng)把該進(jìn)程的進(jìn)程控制塊中的指針值送到前面一個(gè)進(jìn)程指針位置。(6)若“就緒”狀態(tài)的進(jìn)程隊(duì)列不為空,則重復(fù)上面(4)和(5)的步驟,直到所有進(jìn)程都為“結(jié)束”狀態(tài)。(7)在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語(yǔ)句,能顯示或打印每次被選中進(jìn)程名稱以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。(8)為五個(gè)進(jìn)程任意確定一組“要求運(yùn)行時(shí)間”,啟動(dòng)所設(shè)計(jì)的處理器調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名稱以及進(jìn)程控制塊的動(dòng)態(tài)變化過(guò)程。4.3優(yōu)先數(shù)進(jìn)程調(diào)度算法一、實(shí)驗(yàn)?zāi)康睦斫鈨?yōu)先數(shù)進(jìn)程調(diào)度算法的基本思想。二、提示(1)假定系統(tǒng)有五個(gè)進(jìn)程,每一個(gè)進(jìn)程用一個(gè)進(jìn)程控制塊PCB來(lái)代表。進(jìn)程控制塊的格式如圖。其中:進(jìn)程名PCB指針要求運(yùn)行時(shí)間進(jìn)程名PCB指針要求運(yùn)行時(shí)間優(yōu)先數(shù)狀態(tài)圖PCB指針:按優(yōu)先數(shù)的大小把五個(gè)進(jìn)程連成隊(duì)列,用指針指出下一個(gè)進(jìn)程的進(jìn)程控制塊的首地址,最后一個(gè)進(jìn)程中的指針為“NULL”。要求運(yùn)行時(shí)間:假設(shè)進(jìn)程需要運(yùn)行的單位時(shí)間數(shù)。優(yōu)先數(shù):賦予進(jìn)程的優(yōu)先數(shù),調(diào)度時(shí)總是選取優(yōu)先數(shù)大的進(jìn)程先執(zhí)行。狀態(tài):可假設(shè)有兩種狀態(tài),“就緒”狀態(tài)和“結(jié)束”狀態(tài)。五個(gè)進(jìn)程的初始狀態(tài)都為“就緒”狀態(tài),用“R”表示,當(dāng)一個(gè)進(jìn)程運(yùn)行結(jié)束后,它的狀態(tài)為“結(jié)束”狀態(tài),用“E”表示。(2)在每次運(yùn)行你所設(shè)計(jì)的進(jìn)程調(diào)度程序之前,為每個(gè)進(jìn)程任意確定它的“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”。(3)為了調(diào)度方便,把五個(gè)進(jìn)程按給定的優(yōu)先數(shù)從大到小連成隊(duì)列,用一單元Head_PCB指出隊(duì)首進(jìn)程,用指針指出隊(duì)列的連接情況,如圖。Head_PCBHead_PCBPCB1PCB2PCB3PCB4PCB5P121RP221RP321RP421RP5NULL21R圖(4)處理器調(diào)度總是選隊(duì)首進(jìn)程運(yùn)行,采用動(dòng)態(tài)改變優(yōu)先數(shù)的辦法,進(jìn)程每運(yùn)行一次,它的優(yōu)先數(shù)就減“1”,由于本實(shí)驗(yàn)是模擬處理器調(diào)度,所以,對(duì)被選中的進(jìn)程并不實(shí)際地啟動(dòng)運(yùn)行,而是執(zhí)行優(yōu)先數(shù)—1要求運(yùn)行時(shí)間—1來(lái)模擬進(jìn)程的一次運(yùn)行。提醒注意的是:在實(shí)際的系統(tǒng)中,當(dāng)一個(gè)進(jìn)程被選中運(yùn)行時(shí),必須恢復(fù)進(jìn)程的現(xiàn)場(chǎng),讓它占有處理器運(yùn)行,直到出現(xiàn)等待事件或運(yùn)行結(jié)束,在這里省去了這些工作。(5)進(jìn)程運(yùn)行一次后,若要求運(yùn)行時(shí)間不等于0,則再將它按優(yōu)先數(shù)大小插入隊(duì)列中的適當(dāng)位置;若要求運(yùn)行時(shí)間等于0,則把它的狀態(tài)修改成“結(jié)束”(E),且退出就緒隊(duì)列。(6)若“就緒”狀態(tài)的進(jìn)程隊(duì)列不為空,則重復(fù)上面(4)和(5)的步驟,直到所有進(jìn)程都為“結(jié)束”狀態(tài)。(7)在所設(shè)計(jì)的程序中應(yīng)有顯示或打印語(yǔ)句,能顯示或打印每次被選中進(jìn)程名稱以及運(yùn)行一次后進(jìn)程隊(duì)列的變化。(8)為五個(gè)進(jìn)程任意確定一組“優(yōu)先數(shù)”和“要求運(yùn)行時(shí)間”,啟動(dòng)所設(shè)計(jì)的進(jìn)程調(diào)度程序,顯示或打印逐次被選中進(jìn)程的進(jìn)程名稱以及進(jìn)程控制塊的動(dòng)態(tài)變化過(guò)程。4.4可變分區(qū)管理一、實(shí)驗(yàn)?zāi)康睦斫饪勺兎謪^(qū)管理下最先適應(yīng)算法的基本思想。二、提示可變分區(qū)方式是按作業(yè)需要的主存空間大小來(lái)分割分區(qū)的。當(dāng)要裝入一個(gè)作業(yè)時(shí),根據(jù)作業(yè)需要的主存量查看是否有足夠的空閑空間,若有,則按需要量分割一個(gè)分區(qū)分配給該作業(yè);若無(wú),則作業(yè)不能裝入。隨著作業(yè)的裝入、撤離,主存空間被分成許多個(gè)分區(qū),有的分區(qū)被作業(yè)占用,而有的分區(qū)是空閑的。例如:操作系統(tǒng)作業(yè)1操作系統(tǒng)作業(yè)1作業(yè)3空閑區(qū)作業(yè)2空閑區(qū)5K10K14K26K32K128K為了說(shuō)明那些區(qū)是空閑的,可以用來(lái)裝入新作業(yè),必須要有一張空閑區(qū)說(shuō)明表,格式如下:第二欄第一欄第二欄第一欄..長(zhǎng)度狀態(tài)14K12K未分配32K96K未分配空表目空表目...其中:起址——指出一個(gè)空閑區(qū)的主存起始地址 長(zhǎng)度——指出從起址開(kāi)始的一個(gè)連續(xù)空閑區(qū)的長(zhǎng)度 狀態(tài)——有兩種狀態(tài),一種是“未分配”狀態(tài),指出對(duì)應(yīng)的由起址指出的摸個(gè)長(zhǎng)度的區(qū)域是空閑區(qū);另一種是“空表目”狀態(tài),表示表中對(duì)應(yīng)的登記項(xiàng)目是空白(無(wú)效),可以用來(lái)登記新的空閑區(qū)(例如:作業(yè)撤離后,他所占用的區(qū)域就成了空閑區(qū),應(yīng)找一個(gè)“空表目”欄登記歸還的起址和長(zhǎng)度且修改狀態(tài))。由于分區(qū)的個(gè)數(shù)不同,所以空閑區(qū)說(shuō)明表中應(yīng)有適量的狀態(tài)為“空表目”的登記欄目,否則造成表格“溢出”無(wú)法登記。 上述的這張說(shuō)明表的登記情況是按提示中的例子所裝入的三個(gè)作業(yè)占用的主存區(qū)域后填寫(xiě)的。當(dāng)有一個(gè)新作業(yè)要求裝入主存時(shí),必須查空閑區(qū)說(shuō)明表,從中找出一個(gè)足夠大的空閑區(qū)。有時(shí)找到的空閑區(qū)可能大于作業(yè)需要數(shù)量,這時(shí)應(yīng)把原來(lái)的空閑區(qū)變成兩部分:一部分分給作業(yè)占用;另一部分又成為一個(gè)較小的空閑區(qū)。為了盡量減少由于分割造成的“碎片”,在作業(yè)請(qǐng)求裝入時(shí),盡可能利用主存的低地址部分的空閑區(qū),而盡量保存高地址部分有較大的連續(xù)空閑區(qū),以利于大型作業(yè)的裝入。為此,在空閑區(qū)說(shuō)明表中,把每個(gè)空閑區(qū)按其地址順序登記,即每個(gè)后繼的空閑區(qū)其起始地址總是比前者大,為了方便查找還可以使表格“緊縮”,總是讓“空表目”欄集中在表格的后部。(2)采用最先適應(yīng)算法(順序分配算法)分配主存空間。按照作業(yè)的需要量,查空閑區(qū)說(shuō)明表,順序查看登記欄,找到第一個(gè)能滿足需要的空閑區(qū)。當(dāng)空閑區(qū)大于需要量時(shí),一部分用來(lái)裝入作業(yè),另一部分仍為空閑區(qū)登記在空閑區(qū)說(shuō)明表中。由于本設(shè)計(jì)是模擬主存的分配,所以當(dāng)把主存分配給作業(yè)后并不實(shí)際啟動(dòng)裝入程序裝入作業(yè),而用輸出“分配情況”來(lái)代替。(3)當(dāng)一個(gè)作業(yè)執(zhí)行結(jié)束撤離時(shí),作業(yè)所占的區(qū)域應(yīng)該歸還,歸還的區(qū)域如果與其他空閑區(qū)相鄰,則應(yīng)合成一個(gè)較大的空閑區(qū),登記在空閑區(qū)說(shuō)明表中。例如:在提示中列舉的情況下,如果作業(yè)2撤離,歸還所占主存區(qū)域時(shí),應(yīng)與上、下相鄰的空閑區(qū)一起合成一個(gè)大的空閑區(qū)登記在空閑區(qū)說(shuō)明表中。請(qǐng)按最先適應(yīng)算法設(shè)計(jì)主存分配和回收的程序。然后按(1)中假設(shè)主存中已經(jīng)裝入三個(gè)作業(yè),且形成兩個(gè)空閑區(qū),確定空閑區(qū)說(shuō)明表的初值?,F(xiàn)有一個(gè)需要主存量為6K的作業(yè)4申請(qǐng)裝入主存;然后作業(yè)3撤離;再作業(yè)2撤離。請(qǐng)你為他們進(jìn)行主存分配和回收,把空閑區(qū)說(shuō)明表的初值以及每次分配或回收后的變化顯示出來(lái)或打印出來(lái)。最先適應(yīng)分配模擬算法定時(shí)鬧鐘=0定時(shí)鬧鐘=0否鍵盤(pán)信息開(kāi)始申請(qǐng)xk主存空間j=0j=j(luò)+1查看空閑區(qū)說(shuō)明表的第j個(gè)登記欄長(zhǎng)度>=xk嗎長(zhǎng)度=長(zhǎng)度-xk起址=起址+xk輸出作業(yè)不能裝入置狀態(tài)為空表目輸出分配情況結(jié)束狀態(tài)為“未分配嗎否鍵盤(pán)信息是鍵盤(pán)信息是鍵盤(pán)信息<鍵盤(pán)信息=鍵盤(pán)信息>鍵盤(pán)信息
第五章實(shí)驗(yàn)報(bào)告內(nèi)容及格式5.1實(shí)驗(yàn)報(bào)告內(nèi)容實(shí)驗(yàn)報(bào)告封面題目:完成人姓名:班號(hào):學(xué)號(hào):內(nèi)容簡(jiǎn)要描述成績(jī)(教師手寫(xiě))該生實(shí)驗(yàn)情況總結(jié)操作系統(tǒng)實(shí)驗(yàn)報(bào)告日期:功能描述寫(xiě)出你所設(shè)計(jì)的程序的主要功能。程序結(jié)構(gòu)寫(xiě)出程序包含哪些模塊,以及模塊之間的結(jié)構(gòu)關(guān)系。數(shù)據(jù)結(jié)構(gòu)寫(xiě)出程序中使用的數(shù)據(jù)結(jié)構(gòu),包括有哪些成員,每個(gè)成員的作用。宏和全局變量寫(xiě)出程序中使用哪些宏和全局變量,它們的作用以及初始值。流程圖畫(huà)出每個(gè)模塊或函數(shù)的算法流程圖。源程序打印一份源程序清單并附上清晰的注釋。執(zhí)行結(jié)果打印程序運(yùn)行時(shí)的初值和運(yùn)行結(jié)果。要求如下:進(jìn)程控制塊的初始狀態(tài)選中運(yùn)行的進(jìn)程名以及選中進(jìn)程運(yùn)行后的各個(gè)進(jìn)程控制塊狀態(tài)對(duì)于B要求每選中一個(gè)進(jìn)程運(yùn)行后都要打印。九、使用說(shuō)明描述如何使用你所設(shè)計(jì)的程序,即操作指南。十、不足之處指出程序有待改進(jìn)的地方以及改進(jìn)的思路。十一、程序調(diào)試記錄列出程序調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及解決的方法。十二、參考文獻(xiàn)列出實(shí)驗(yàn)過(guò)程中閱讀的參考書(shū)、文章。5.2參考樣例這里以時(shí)間片輪轉(zhuǎn)法為例,說(shuō)明如何分析、設(shè)計(jì)、編碼、調(diào)試、撰寫(xiě)報(bào)告。實(shí)驗(yàn)報(bào)告封面題目:時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法完成人姓名:焦素云班號(hào):050401學(xué)號(hào):10內(nèi)容簡(jiǎn)要描述設(shè)計(jì)了時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法,該程序首先初始化進(jìn)程控制塊表,然后創(chuàng)建三個(gè)進(jìn)程,并對(duì)其進(jìn)行調(diào)度、運(yùn)行,直到所有進(jìn)程全部運(yùn)行完畢。成績(jī)(教師手寫(xiě))良該生實(shí)驗(yàn)情況總結(jié)該生出滿勤;認(rèn)真編程并調(diào)程,思路正確;程序能正確執(zhí)行;答辯時(shí)回答基本正確;報(bào)告清晰整潔。不足之處是功能不全。操作系統(tǒng)實(shí)驗(yàn)報(bào)告日期:200
功能要求要求創(chuàng)建若干個(gè)進(jìn)程,并用時(shí)間片輪轉(zhuǎn)法調(diào)度這些進(jìn)程運(yùn)行。程序結(jié)構(gòu)該程序共包含七個(gè)模塊,分別是主控模塊、初始化模塊、顯示空閑隊(duì)列模塊、創(chuàng)建進(jìn)程模塊、顯示就緒隊(duì)列模塊、調(diào)度模塊以及運(yùn)行模塊。它們之間的結(jié)構(gòu)如下所示:主控模塊主控模塊初始化模塊顯示空閑隊(duì)列創(chuàng)建進(jìn)程調(diào)度模塊顯示就緒隊(duì)列運(yùn)行模塊數(shù)據(jù)結(jié)構(gòu)該程序用到的數(shù)據(jù)結(jié)構(gòu)是進(jìn)程控制塊,其組成如下:成員名作用指針用于構(gòu)造進(jìn)程隊(duì)列進(jìn)程名用于區(qū)別不同的進(jìn)程估計(jì)運(yùn)行時(shí)間進(jìn)程需要的CPU時(shí)間宏和全局變量名稱作用初始值PCB_NUM是一個(gè)宏,表示系統(tǒng)最多能容納的進(jìn)程數(shù)10EXAMPLES為調(diào)試方便所設(shè)置的最多進(jìn)程數(shù)3pcb_table[PCB_NUM]包含所有進(jìn)程控制塊的數(shù)組pcb_current運(yùn)行隊(duì)列首指針NULLpcb_free空閑隊(duì)列首指針NULLpcb_ready就緒隊(duì)列首指針NULLpcb_ready_rear就緒隊(duì)列尾指針NULLcurrent_processes系統(tǒng)中當(dāng)前的就緒進(jìn)程數(shù)0算法流程(一)主控模塊初始化進(jìn)程控制塊數(shù)組初始化進(jìn)程控制塊數(shù)組顯示空閑進(jìn)程隊(duì)列開(kāi)始創(chuàng)建進(jìn)程顯示就緒隊(duì)列當(dāng)就緒隊(duì)列不空時(shí)調(diào)度并運(yùn)行進(jìn)程,直到就緒隊(duì)列為空結(jié)束(二)初始化模塊將所有進(jìn)程控制塊鏈成單鏈表,由pcb_free指向鏈?zhǔn)住#ㄈ╋@示空閑隊(duì)列模塊依次顯示空閑隊(duì)列中每一個(gè)進(jìn)程的名字。(四)創(chuàng)建進(jìn)程模塊創(chuàng)建EXAMPLES個(gè)進(jìn)程,并將它們鏈到就緒隊(duì)列中,由pcb_ready指向鏈?zhǔn)?,由pcb_ready_rear指向鏈尾。(五)顯示就緒隊(duì)列依次顯示就緒隊(duì)列中每一個(gè)進(jìn)程的名字。(六)調(diào)度模塊若就緒隊(duì)列非空,則選擇隊(duì)首進(jìn)程,由pcb_current指出,并將隊(duì)首指針pcb_ready下移。(七)運(yùn)行模塊將當(dāng)前進(jìn)程的運(yùn)行時(shí)間減1,若減1之后為0,則將相應(yīng)進(jìn)程控制塊從就緒隊(duì)列移入空閑隊(duì)列,若減1之后不為0,則將相應(yīng)進(jìn)程控制塊移到就緒隊(duì)列尾部。源程序ext=NULL; pcb_table[PCB_NUM-1].time=0; strcpy(pcb_table[PCB_NUM-1].name,"idle"); for(i=0;i<PCB_NUM-1;i++){ pcb_table[i].next=&pcb_table[i+1]; pcb_table[i].time=0; strcpy(pcb_table[i].name,"idle"); }}Del表示該文件是一個(gè)普通文件,沒(méi)有特殊屬性。第2――4個(gè)字符用來(lái)確定文件的用戶(user)權(quán)限。第5――7個(gè)字符用來(lái)確定文件的組(group)的權(quán)限。8-10個(gè)字符用來(lái)確定文件的其他用戶(otheruser,即不是文件所有者,也不是組成員的用戶)的權(quán)限。字符為r表示用允許用戶、組成員或其他人可從該文件中讀取數(shù)據(jù)。短線“-”則表示不允許該成員讀取數(shù)據(jù)。字符為w表示允許寫(xiě),字符為x表示允許執(zhí)行。CD命令:該命令可以實(shí)現(xiàn)不同目錄之間的切換,但前提是使用該命令的用戶必須有足夠的權(quán)限對(duì)相應(yīng)目錄進(jìn)行操作。下面的命令將從當(dāng)前目錄切換至mydir目錄#cd/mydir如果不給命令加任何參數(shù),那么就會(huì)從當(dāng)前目錄切換至用戶的主目錄。如[root@linuxserver/]#cd[root@linuxserverroot]#如果要切換至當(dāng)前目錄的上一級(jí)目錄,使用的命令是CD..Mkdir命令:在進(jìn)行目錄創(chuàng)時(shí),可以設(shè)置目錄的權(quán)限。此時(shí)可以使用參數(shù)“-m”。假設(shè)要讓創(chuàng)建的mydir目錄能被所有用戶都有rwx權(quán)限(即讀、寫(xiě)、執(zhí)行的權(quán)限),可以使用以下命令:#mkdir–m777mydirMv命令:移動(dòng)或更改現(xiàn)有文件或者目錄。這個(gè)命令和CP命令類似,不同的是當(dāng)文件出現(xiàn)在目標(biāo)位置時(shí),源文件就會(huì)被刪除。Rm命令:該命令用刪除文件或者目錄,刪除的文件不能進(jìn)行恢復(fù)操作,因此,在使用該命令時(shí)必須非常小心。Rmdir命令:Rmdir[-p]目錄名稱。該命令用于刪除目錄,只能刪除空目錄,如果目錄為非空,則會(huì)出現(xiàn)錯(cuò)誤信息。–p的意思是當(dāng)子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。Cp命令:CP[選項(xiàng)]源文件或者目錄目標(biāo)文件或者目錄。該指令用于復(fù)制文件或目錄。這個(gè)命令中最常用的參數(shù)是-R,該參數(shù)會(huì)把指定目錄下的所有文件及子目錄一起進(jìn)行復(fù)制。Cat、more、less命令:都是用來(lái)顯示文件內(nèi)容的,但所能實(shí)現(xiàn)的操作卻有所不同。其中:cat:只顯示最后一屏內(nèi)容;More:只能向前看,不能后退Less:可以進(jìn)行翻面操作*Fdisk命令:fdisk[選項(xiàng)][外圍設(shè)備代號(hào)],該命令用于顯示磁盤(pán)分區(qū)信息或者創(chuàng)建新的分區(qū)。對(duì)磁盤(pán)設(shè)備/dev/had進(jìn)行分區(qū)#fdisk/dev/had;查看當(dāng)前的磁盤(pán)分區(qū)情況#fdisk-l10、*Mkfs命令:mkfs[選項(xiàng)][設(shè)備名稱];該命令的功能是實(shí)現(xiàn)磁盤(pán)的格式化,至于該命令可以實(shí)現(xiàn)多少種文件系統(tǒng)的格式化,可以在mkfs后按兩下tab鍵來(lái)顯示。如把/dev/hda5分區(qū)格式化成MS-DOS格式#mkfs–tmsdos/dev/hda511*、Chown命令:chown[選項(xiàng)][文件或者目錄](méi);該命令的功能是變更文件或目錄的所有者或所屬組。(必須以root身分登錄)。如果要把目錄/usr/local/myfile文件的所有者更改為屬于user組的zhang,可以使用下面的命令:#chownusr/local/myfile如果要更改tmp目錄下所有文件和子目錄的所有者及所屬組,可以使用下面命令:#chown–tmp12*、Chmod命令:Chmod[選項(xiàng)][文件或者目錄](méi);該命令的功能是變更文件或目錄的權(quán)限。在linux中,文件或目錄權(quán)限的分別以讀取、寫(xiě)入、執(zhí)行3種一般權(quán)限來(lái)區(qū)分。該命令的設(shè)置方式有文字(字符)和數(shù)字兩種文字(字符)方式:chmod[ugoa]+a或-或=[rwx][文件…],在命令中,使用“+”或“-”時(shí),是在保存原來(lái)權(quán)限設(shè)備的基礎(chǔ)上修改權(quán)限。當(dāng)使用“=”時(shí),權(quán)限被明確地賦予要修改的文件。其中字符u表示文件或者目錄的所有者,g表示文件或者目錄所屬組,o表示除所有者和所屬組以外的用戶,a表示全部用戶。如:#chmodugo=rwmyfile(把文件myfile讀取和寫(xiě)入的權(quán)限向所有用戶開(kāi)放)#chmodg-xmyfile(取消組成員執(zhí)行myfile的權(quán)限)#chmodg+xmyfile(增加所屬組執(zhí)行myfile文件的權(quán)限)。數(shù)字方式:chmodnnn文件,其中第1、2、3個(gè)n分別表示用戶、組成員和所有其他用戶。各個(gè)位置的上n要么是一個(gè)0,或者是一個(gè)賦予權(quán)限的相關(guān)值相加得到的單個(gè)阿拉伯?dāng)?shù)字之各。數(shù)字的意義如表值表示的意義4表示文件或者目錄的讀權(quán)限2表示文件或者目錄的寫(xiě)權(quán)限1表示文件或者目錄的執(zhí)行權(quán)限13*、Mount命令:mount<選項(xiàng)>設(shè)備名稱載入點(diǎn);在linux系統(tǒng)中,訪問(wèn)某一硬盤(pán)分區(qū)或者光驅(qū)、軟驅(qū)等設(shè)備時(shí),需要進(jìn)行掛載,mount命令可以將指定設(shè)備中的文件系統(tǒng)載入到linux的目錄下(也就是載入點(diǎn))。管理員可在參數(shù)中直接指定設(shè)備名稱與文件系統(tǒng)。對(duì)于一些經(jīng)常使用的設(shè)備,也可在\etc\fstab文件中進(jìn)行設(shè)備,以使其在系統(tǒng)啟動(dòng)時(shí)自動(dòng)進(jìn)行掛載。例如,把軟驅(qū)設(shè)備加載至\mnt\floppy目錄之上,執(zhí)行下面命令:#mount\dev\fd0\mnt\floppy(mount命令要求在掛載之前載點(diǎn)(本例中是/mnt/floppy)必須存在,否則無(wú)法執(zhí)行。/dev/fd0是與驅(qū)動(dòng)器A對(duì)應(yīng)的設(shè)備,相應(yīng)的驅(qū)動(dòng)器B是/dev/fd1。硬盤(pán)的情況比較復(fù)雜,因?yàn)閘inux是利用設(shè)備接口來(lái)描述設(shè)備的。例如,第一個(gè)IDE接口上的主硬盤(pán)是/dev/had。從硬盤(pán)是/dev/hdb,第二個(gè)IDE接口上的兩個(gè)硬盤(pán)是/dev/hdc和/dev/hdd。問(wèn)題是,由于硬盤(pán)使用的是分區(qū),所以必須使用子設(shè)備名。例如,把/dev/had上的第一個(gè)分區(qū)連結(jié)到/mnt/diskc上的命令是;#mount/dev/hda1/mnt/diskc相應(yīng)的,第二個(gè)分區(qū)是/
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 仲夏促銷(xiāo)活動(dòng)策劃方案
- 仿生青蛙活動(dòng)方案
- 企業(yè)萬(wàn)圣節(jié)活動(dòng)方案
- 企業(yè)人才周活動(dòng)方案
- 企業(yè)全年活動(dòng)方案
- 企業(yè)冰壺團(tuán)建活動(dòng)方案
- 企業(yè)十周年慶活動(dòng)方案
- 企業(yè)咨詢服務(wù)公司策劃方案
- 企業(yè)基金會(huì)募捐活動(dòng)方案
- 企業(yè)宣傳前期活動(dòng)方案
- 高一地理必修一地方時(shí)和區(qū)時(shí)課件
- 初中八年級(jí)數(shù)學(xué)同步作業(yè)判斷題練習(xí)1840道
- 中國(guó)工業(yè)清洗協(xié)會(huì)職業(yè)技能證考試(化學(xué)清洗)試題
- 蘇州市五年級(jí)下學(xué)期期末數(shù)學(xué)試題題及答案
- CPK分析表的模板
- 《敬畏生命向陽(yáng)而生》的主題班會(huì)
- 企業(yè)清產(chǎn)核資報(bào)表
- 金融風(fēng)險(xiǎn)管理習(xí)題匯總第1-13章金融風(fēng)險(xiǎn)概述思考題-經(jīng)濟(jì)資本與風(fēng)險(xiǎn)調(diào)整績(jī)效
- 2021年NICaS-(無(wú)創(chuàng)血流動(dòng)力學(xué)監(jiān)測(cè)系統(tǒng))課件
- 消防維保協(xié)議書(shū)
- 膀胱功能訓(xùn)練技術(shù)(康復(fù)護(hù)理課件)
評(píng)論
0/150
提交評(píng)論