版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院操作系統(tǒng)課程設(shè)計(jì)報(bào)告學(xué)號(hào)*姓名班級(jí)*完成時(shí)間:指導(dǎo)老師:* * *目錄實(shí)驗(yàn)一i Windows進(jìn)程管理實(shí)驗(yàn)二Linux 進(jìn)程管理實(shí)驗(yàn)三 互斥與同步實(shí)驗(yàn)四銀行家算法的模擬與實(shí)現(xiàn)實(shí)驗(yàn)五內(nèi)存管理實(shí)驗(yàn)六磁盤調(diào)度實(shí)驗(yàn)七進(jìn)程間通信實(shí)驗(yàn)一 Windows進(jìn)程管理、實(shí)驗(yàn)?zāi)康?)學(xué)會(huì)使用 VC編寫基本的 Win32 Consol Application (控制臺(tái)應(yīng)用程序)。2) 2)通過創(chuàng)建進(jìn)程、觀察正在運(yùn)行的進(jìn)程和終止進(jìn)程的程序設(shè)計(jì)和調(diào)試操作,進(jìn)一步熟悉 操作系統(tǒng)的進(jìn)程概念,理解 Windows進(jìn)程的“一生”。3) 3)通過閱讀和分析實(shí)驗(yàn)程序,學(xué)習(xí)創(chuàng)建進(jìn)程、觀察進(jìn)程、終止進(jìn)程以
2、及父子進(jìn)程同步的 基本程序設(shè)計(jì)方法。、實(shí)驗(yàn)內(nèi)容和步驟(1)編寫基本的 Win32 Consol Application步驟1:登錄進(jìn)入 Windows系統(tǒng),啟動(dòng)VC+ 6.0。步驟2:在“FILE”菜單中單擊“ NEW子菜單,在“projects ”選項(xiàng)卡中選擇“ Win32 ConsolApplication ”,然后在 “ Project nam3 處輸入工程名,在 “ Location ” 處輸入 工程目錄。創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序工程。步驟3:在“FILE”菜單中單擊“ NEW子菜單,在“ Files ”選項(xiàng)卡中選擇“ C+ Source File ”,然后在“ File ”處輸入C
3、/C+源程序的文件名。步驟4:將清單1-1所示的程序清單復(fù)制到新創(chuàng)建的 C/C+源程序中。編譯成可執(zhí)行 文件。步驟5:在“開始”菜單中單擊“程序”-“附件”-“命令提示符"命令,進(jìn)入Windows"命令提示符"窗口,然后進(jìn)入工程目錄中的debug子目錄,執(zhí)行編譯好的可執(zhí)行程序,列出運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?)如果運(yùn)行不成功可能是路徑有問題或者沒有通過編譯。(2)創(chuàng)建進(jìn)程本實(shí)驗(yàn)顯示了創(chuàng)建子進(jìn)程的基本框架。該程序只是再一次地啟動(dòng)自身,顯示它的系統(tǒng) 進(jìn)程ID和它在進(jìn)程列表中的位置。步驟1:創(chuàng)建一個(gè)“Win32 Consol Application ”
4、工程,然后拷貝清單1-2中的程序 編譯成可執(zhí)行文件。步驟2:在“命令提示符"窗口運(yùn)行步驟1中生成的可執(zhí)行文件,列出運(yùn)行結(jié)果。按 下ctrl+alt+del ,調(diào)用windows的任務(wù)管理器,記錄進(jìn)程相關(guān)的行為屬性。運(yùn)行結(jié)果:步驟3:在“命令提示符"窗口加入?yún)?shù)重新運(yùn)行生成的可執(zhí)行文件,列出運(yùn)行結(jié) 果。按下ctrl+alt+del ,調(diào)用windows的任務(wù)管理器,記錄進(jìn)程相關(guān)的行為屬性。運(yùn)行結(jié)果:步驟4:nclone為線程開始運(yùn)行的編號(hào),當(dāng)nclone的值大于或者等于c_nCloneMax時(shí)程序運(yùn)行一次即跳出;變量的定義和初始化方法(位置)對(duì)程序的執(zhí)行結(jié)果有影響;(3)父子
5、進(jìn)程的簡(jiǎn)單通信及終止進(jìn)程步驟1:創(chuàng)建一個(gè)“Win32 Consol Application ”工程,然后拷貝清單1-3中的程 序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊“ Execute Program"(執(zhí)行程序)按鈕,或者按Ctrl + F5鍵, 或者在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件,列出運(yùn)行結(jié)果。步驟3:按源程序中注釋中的提示,修改源程序1-3 ,編譯執(zhí)行(執(zhí)行前請(qǐng)先保存已經(jīng)完成的工作),列出運(yùn)行結(jié)果。在程序中加入跟蹤語句,或調(diào)試運(yùn)行程序,同時(shí)參考MSDN中的幫助文彳C CreateProcess()的使用方法,理解父子進(jìn)程如何傳遞參數(shù)。給出程序執(zhí)行過程的
6、大概描述。通過main(int argc,char* argv口?)傳遞參數(shù),每次運(yùn)行時(shí)先檢測(cè)argd勺值,若小于1程序運(yùn)行結(jié)束,否則繼續(xù)往下執(zhí)行步驟4:按源程序中注釋中的提示,修改源程序1-3 ,編譯執(zhí)行,列出運(yùn)行結(jié)果步驟 5:參考 MSDN 中的幫 助文件 CreateMutex() 、OpenMutex() ReleaseMutex() 和WaitForSingleObject()的使用方法,理解父子進(jìn)程如何利用互斥體進(jìn)行同步的。給出父子進(jìn)程同步過程的一個(gè)大概描述。CreateMutex()創(chuàng)建互斥體,OpenMutex()打開互斥體,ReleaseMutex()釋放 互斥體,WaitF
7、orSingleObject()檢測(cè)hHandle事件的信號(hào)狀態(tài),通過這些方法可實(shí)現(xiàn)當(dāng)前只有一個(gè)進(jìn)程被創(chuàng)建或使用,實(shí)現(xiàn)進(jìn)程的同步。首先,進(jìn)程創(chuàng)建一個(gè)互斥體,打開互斥體,如遇到互斥,則進(jìn)行處理,處理 完后,釋放互斥體,下面便是進(jìn)程等待一個(gè)要處理的項(xiàng)目三、實(shí)驗(yàn)心得與體會(huì)每個(gè)進(jìn)程都從調(diào)用CreateProcess()?API函數(shù)開始,該函數(shù)的任務(wù)是在對(duì)象管理 器子系統(tǒng)內(nèi)初始化進(jìn)程對(duì)象。每一進(jìn)程都以調(diào)用ExitProcess() 或 TerminateProcess()API 函數(shù)終止。通常應(yīng)用程序的框架負(fù)責(zé)調(diào)用?ExitProcess()函數(shù)。進(jìn)程都是有始有終,其中有中斷,還有處理進(jìn)程間互斥 的函數(shù)
8、,已達(dá)到進(jìn)程的完成后自然終止。實(shí)驗(yàn)二Linux進(jìn)程管理一、實(shí)驗(yàn)?zāi)康耐ㄟ^進(jìn)程的創(chuàng)建、撤銷和運(yùn)行加深對(duì)進(jìn)程概念和進(jìn)程并發(fā)執(zhí)行的理解, 明確進(jìn)程和程序之間的區(qū)別。二、背景知識(shí)在Linux 中創(chuàng)建子進(jìn)程要使用fork()函數(shù),執(zhí)行新的命令要使用exec ()系列函數(shù),等待子進(jìn)程結(jié)束使用 wait ()函數(shù),結(jié)束終止進(jìn)程使用exit ()函數(shù)。fork()原型如下:pid_t fork(void);fork建立一個(gè)子進(jìn)程,父進(jìn)程繼續(xù)運(yùn)行,子進(jìn)程在同樣的位置執(zhí)行同樣的程序。對(duì)于父進(jìn)程,fork()返回子進(jìn)程的pid,對(duì)于子進(jìn)程,fork()返回0。出錯(cuò)時(shí)返回-1。exec 系列有6個(gè)函數(shù),原型如下:ext
9、ern char *environ;int execlp( const char *file, const char *arg,);int execle( const char *path, const char *arg,char * const envp);int execv( const char *path, char *const argv);int execve (const char "filename, char *const argv , char *const envp);int execvp( const char *file, char *const argv
10、);exec系列函數(shù)用新的進(jìn)程映象置換當(dāng)前的進(jìn)程映象.這些函數(shù)的第一個(gè)參數(shù)是待執(zhí)行程序的路徑名(文件名)。這些函數(shù)調(diào)用成功后不會(huì)返回,其進(jìn)程的正文(text),數(shù)據(jù)(data)和棧(stack)段被待執(zhí)行程序程序覆蓋。但是進(jìn)程的PID和所有打開的文件描述符沒有改變,同時(shí)懸掛信號(hào)被清除,信號(hào)重置為缺省行為。在函數(shù)execl,execlp, 和execle 中,const char *arg以及省略號(hào)代表的參數(shù)可被視為arg0,arg1,argn 。它們合起來描述了指向NULL結(jié)尾的字符串的指針列表,即執(zhí)行程序的參數(shù)列表。作為約定,第一個(gè)arg參數(shù)應(yīng)該指向執(zhí)行程序名自身,參數(shù)列表必須用NULL指針
11、結(jié)束。execv 和 execvp 函數(shù)提供指向 NULL 結(jié)尾的字符串的指針數(shù)組作為新程序的參數(shù)列表。作為約定,指針數(shù)組中第一個(gè)元素應(yīng)該指向執(zhí)行程序名自身。指針數(shù)組必須用 NULL 指針結(jié) 束。execle 函數(shù)同時(shí)說明了執(zhí)行進(jìn)程的環(huán)境(environment), 它在 NULL 指針后面要求一個(gè)附加參數(shù) ,NULL 指針用于結(jié)束參數(shù)列表, 或者說 ,argv 數(shù)組。這個(gè)附加參數(shù)是指向 NULL 結(jié)尾的字符串的指針數(shù)組 , 它必須用 NULL 指針結(jié)束。 其它函數(shù)從當(dāng)前進(jìn)程的 environ 外部變量中獲取新進(jìn)程的環(huán)境。execlp和 execvp 可根據(jù) path 搜索合適的程序運(yùn)行,其它
12、則需要給出程序全路徑。execve()類似 execv (),但是加上了環(huán)境的處理。wait () , waitpid ()可用來等待子進(jìn)程結(jié)束。函數(shù)原型:#include <sys/wait.h>pid_t wait(int *stat_loc);pid_t waitpid(pid_t pid, int *stat_loc,int options);當(dāng)進(jìn)程調(diào)用 wait ,它將進(jìn)入睡眠狀態(tài)直到有一個(gè)子進(jìn)程結(jié)束。 wait 函數(shù)返回子進(jìn)程的進(jìn)程 id , stat_loc 中返回子進(jìn)程的退出狀態(tài)。waitpid 的第一個(gè)參數(shù)pid 的意義:pid > 0:等待進(jìn)程 id 為
13、pid 的子進(jìn)程。pid = 0:等待與自己同組的任意子進(jìn)程。pid = -1: 等待任意一個(gè)子進(jìn)程pid < -1: 等待進(jìn)程組號(hào)為 -pid 的任意子進(jìn)程。因此, wait(&stat) 等價(jià)于 waitpid(-1, &stat, 0) , waitpid 第三個(gè)參數(shù)option 可以是 0 ,WNOHANG,WUNTRACED幾者的組合。三、實(shí)驗(yàn)內(nèi)容與步驟( 1)進(jìn)程的創(chuàng)建任務(wù)要求: 編寫一段程序,使用系統(tǒng)調(diào)用 fork ()創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序行在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。 讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符: 父進(jìn)程顯示字符“a”;兩子進(jìn)程分別顯示
14、字符“ b ”和字符“ c ”。步驟1 :使用vi或gedit 新建一個(gè)fork_demo.c 程序,然后拷貝清單 2-1中的程 序,使用cc或者gcc編譯成可執(zhí)行文件fork_demo 。例如,可以使用 gcc - o fork_demo fork_demo.c 完成編譯。步驟2 :在命令行輸入./fork_demo 運(yùn)行該程序。(2)子進(jìn)程執(zhí)行新任務(wù)任務(wù)要求:編寫一段程序,使用系統(tǒng)調(diào)用fork ()創(chuàng)建一個(gè)子進(jìn)程。子進(jìn)程通過系統(tǒng)調(diào)用 exec 更換自己原有的執(zhí)行代碼,轉(zhuǎn)去執(zhí)行Linux 命令/bin/ls(顯示當(dāng)前目錄的列表),然后調(diào)用exit()函數(shù)結(jié)束。父進(jìn)程則調(diào)用 waitpid()
15、 等待子進(jìn)程結(jié)束,并在子進(jìn)程結(jié)束后顯示子進(jìn)程的標(biāo)識(shí)符,然后正常結(jié)束。程序執(zhí)行過程如圖2-1所示。步驟1 :使用vi或gedit 新建一個(gè)exec_demo.c程序,然后拷貝清單2-2中的程序(該 程序的執(zhí)行如圖2-1所示),使用cc或者gcc編譯成可執(zhí)行文件exec_demo。例如,可以使 用 gcc - o exec_demo exec_demo.c 完成編譯。步驟2 :在命令行輸入./exec_demo運(yùn)行該程序。步驟3 :觀察該程序在屏幕上的顯示結(jié)果,并分析。圖2-1 exec_demo.c 程序的執(zhí)行過程四、實(shí)驗(yàn)心得及體會(huì)這個(gè)課題的實(shí)驗(yàn)讓我學(xué)會(huì)了 Windows系統(tǒng)下虛擬機(jī)中的基本程序
16、的編寫,第一次在虛擬級(jí)的環(huán)境中編寫了這一個(gè)程序。并通過進(jìn)程的創(chuàng)建。撤銷和運(yùn)行加深對(duì)進(jìn)程概念和進(jìn)程并發(fā)執(zhí)行的理 解,明確了進(jìn)程和程序之間的區(qū)別。實(shí)驗(yàn)三互斥與同步一、實(shí)驗(yàn)?zāi)康?)回顧操作系統(tǒng)進(jìn)程、線程的有關(guān)概念,加深對(duì) Windows線程的理解。2) 了解互斥體對(duì)象,利用互斥與同步操作編寫生產(chǎn)者 -消費(fèi)者問題的并發(fā)程序,加深對(duì)P (即 semWait)、V(即semSignal)原語以及利用P、V原語進(jìn)行進(jìn)程間同步與互斥操作的理解。二、實(shí)驗(yàn)內(nèi)容和步驟1)生產(chǎn)者消費(fèi)者問題步驟1 :創(chuàng)建一個(gè)"Win32 Consol Application ”工程,然后拷貝清單3-1中的程序,編譯成可執(zhí)行文
17、件。步驟2 :在“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件,列出運(yùn)行結(jié)果。步驟3 :仔細(xì)閱讀源程序,找出創(chuàng)建線程的WINDOWAPI函數(shù),回答下列問題:線程的第個(gè)執(zhí)行函數(shù)是什么(從哪里開始執(zhí)行)?它位于創(chuàng)建線程的API函數(shù)的第幾個(gè)參數(shù)中?答:第一個(gè)執(zhí)行函數(shù)是Producer ;位于創(chuàng)建線程API函數(shù)的第三個(gè)參數(shù)中步驟4 :修改清單3-1中的程序,調(diào)整生產(chǎn)者線程和消費(fèi)者線程的個(gè)數(shù),使得消費(fèi)者數(shù)目大 與生產(chǎn)者,看看結(jié)果有何不同。察看運(yùn)行結(jié)果,從中你可以得出什么結(jié)論?當(dāng)生產(chǎn)者數(shù)目大于消費(fèi)者時(shí),生產(chǎn)者需要等待消費(fèi)者;當(dāng)消費(fèi)者 數(shù)目大于生產(chǎn)者時(shí),消費(fèi)者要經(jīng)常等待 .步驟5 :修改清單3-1中的程序,
18、按程序注釋中的說明修改信號(hào)量EmptySemaphore的初始化方法,看看結(jié)果有何不同步驟6 :根據(jù)步驟4的結(jié)果,并查看 MSDN回答下列問題:1) CreateMutex中有幾個(gè)參數(shù),各代表什么含義有三個(gè)參數(shù);1) LPSECURITY_ATTR舊UTES?IpMutexAttributeS表安全屬性的 指針?2) BOOL blnitialOwner?代表布爾 bInitialOwner?3 ) LPCTSTR IpName 傳 LPCTSTR® IpName2) CreateSemaphore中有幾個(gè)參數(shù),各代表什么含義,信號(hào)量的初值在第幾個(gè)參數(shù)中。有四個(gè)參數(shù);1)表示采用不允
19、許繼承的默認(rèn)描述符;2)設(shè)置信號(hào)機(jī)的初始計(jì)數(shù);3)設(shè)置信號(hào)機(jī)的最大計(jì)數(shù);指定信號(hào)機(jī)對(duì)象的名稱.3)程序中P、V原語所對(duì)應(yīng)的實(shí)際 Windows API函數(shù)是什么,寫出這幾條語句。P: WaitForSingleObject(EmptySemaphore, INFINITE);WaitForSingleObject(Mutex, INFINITE);WaitForSingleObject(FullSemaphore, INFINITE);V: ReleaseMutex(Mutex);ReleaseSemaphore(FullSemaphore, 1, NULL);ReleaseSemaphore
20、(EmptySemaphore, 1, NULL);4)CreateMutex 能用CreateSemaphore 替代嗎?嘗試修改程序 3-1 ,將信號(hào)量 Mutex 完全 用CreateSemaphore及相關(guān)函數(shù)實(shí)現(xiàn)。寫出要修改的語句。可以;Mutex = CreateSemaphore(NULL, 1, 1, NULL);P: WaitForSingleObject(Mutex, INFINITE);V: ReleaseSemaphore(Mutex, 1, NULL);三、實(shí)驗(yàn)總結(jié)這次實(shí)驗(yàn)加深了對(duì) Windows線程的理解,了解互斥體對(duì)象,通過對(duì)生產(chǎn)者消費(fèi)者等進(jìn)程間同步與互斥經(jīng)典算法
21、的實(shí)現(xiàn),加深對(duì)P、V原語以及利用 P、V原語進(jìn)行進(jìn)程間同步與互斥操作的理解,將信號(hào)量看做生產(chǎn)或消費(fèi)的一個(gè)對(duì) 象,將信號(hào)量的生成和銷毀操作如同P操作和V操作一樣,生成者消費(fèi)者問題模擬的就是對(duì)信號(hào)量的生成和銷毀,其中牽涉了信號(hào)量的同步, 這也是該問題為何成為同步的經(jīng)典問題的原因。實(shí)驗(yàn)四 銀行家算法的模擬與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?1)進(jìn)一步了解進(jìn)程的并發(fā)執(zhí)行。(2)加強(qiáng)對(duì)進(jìn)程死鎖的理解,理解安全狀態(tài)與不安全狀態(tài)的概念。(3)掌握使用銀行家算法避免死鎖問題。二、實(shí)驗(yàn)基本知識(shí)與原理1)基本概念死鎖:多個(gè)進(jìn)程在執(zhí)行過程中,因?yàn)楦?jìng)爭(zhēng)資源會(huì)造成相互等待的局面。如果沒有外力作用, 這些進(jìn)程將永遠(yuǎn)無法向前推進(jìn)。此時(shí)稱系
22、統(tǒng)處于死鎖狀態(tài)或者系統(tǒng)產(chǎn)生了死鎖。安全序列:系統(tǒng)按某種順序并發(fā)進(jìn)程,并使它們都能達(dá)到獲得最大資源而順序完成的序列為安全 序列。安全狀態(tài):能找到安全序列的狀態(tài)稱為安全狀態(tài),安全狀態(tài)不會(huì)導(dǎo)致死鎖。不安全狀態(tài):在當(dāng)前狀態(tài)下不存在安全序列,則系統(tǒng)處于不安全狀態(tài)。2)銀行家算法銀行家算法顧名思義是來源于銀行的借貸業(yè)務(wù),一定數(shù)量的本金要滿足多個(gè)客戶的借貸周 轉(zhuǎn),為了防止銀行家資金無法周轉(zhuǎn)而倒閉,對(duì)每一筆貸款,必須考察其是否能限期歸還。在操作系統(tǒng)中研究資源分配策略時(shí)也有類似問題,系統(tǒng)中有限的資源要供多個(gè)進(jìn)程使用,必須保證得到的資源的進(jìn)程能在有限的時(shí)間內(nèi)歸還資源,以供其它進(jìn)程使用資源。如果資源分配不 當(dāng),就會(huì)
23、發(fā)生進(jìn)程循環(huán)等待資源,則進(jìn)程都無法繼續(xù)執(zhí)行下去的死鎖現(xiàn)象。當(dāng)一進(jìn)程提出資源申請(qǐng)時(shí),銀行家算法執(zhí)行下列步驟以決定是否向其分配資源:1) 檢查該進(jìn)程所需要的資源是否已超過它所宣布的最大值。2) 檢查系統(tǒng)當(dāng)前是否有足夠資源滿足該進(jìn)程的請(qǐng)求。3) ) 系統(tǒng)試探著將資源分配給該進(jìn)程,得到一個(gè)新狀態(tài)。三、詳細(xì)設(shè)計(jì)( 1)數(shù)據(jù)結(jié)構(gòu)資源總量向量 Resource, m維,表示m種資源的總量??捎觅Y源向量Available , m 維,表示未分配的各種可用資源數(shù)量。需求矩陣 Claim , n*m 矩陣,表示n 個(gè)進(jìn)程對(duì) m 類資源的最大需求。分配矩陣 Allocation , n*m矩陣,表示 n個(gè)進(jìn)程已分配
24、的各種資源數(shù).( 2)編程實(shí)現(xiàn)/* 安全性檢查函數(shù)*/int chkerr() / 在假定分配資源的情況下檢查系統(tǒng)的安全性int WORKN,FINISHM,tempM; /temp 用來記錄進(jìn)程安全執(zhí)行的順序int i,j,m,k=0,count;for(i=0; i<M; i+)FINISHi=FALSE;for(j=0; j<N; j+)WORKj=AVAILABLEj; / 把可利用資源數(shù)賦給WORKfor(i=0; i<M; i+)count=0;for(j=0; j<N; j+)if(FINISHi=FALSE&&NEEDij<=WOR
25、Kj)count+;if(count=N)/當(dāng)進(jìn)程各類資源都滿足 NEED<=WORKfor(m=0; m<N; m+)WORKm=WORKm+ALLOCATIONim;FINISHi=TRUE;tempk=i;/ 記錄下滿足條件的進(jìn)程k+;i=-1;for(i=0; i<M; i+)if(FINISHi=FALSE)!n");printf(" 系統(tǒng)不安全 ! 本次資源申請(qǐng)不成功return 1;printf("n");n");printf("經(jīng)安全性檢查,系統(tǒng)安全,本次分配成功。printf("n&quo
26、t;);printf("本次安全序列:");for(i=0; i<M; i+)/ 打印安全系統(tǒng)的進(jìn)程調(diào)用順序printf(" 進(jìn)程 ");printf("%d",tempi);if(i<M-1)printf("->");printf("n");return 0;/* 資源向量改變*/void rstordata(int k)int j;for(j=0; j<N; j+)AVAILABLEj=AVAILABLEj+Requestj;ALLOCATIONkj=ALLOCATI
27、ONkj-Requestj;NEEDkj=NEEDkj+Requestj;/* 系統(tǒng)對(duì)進(jìn)程請(qǐng)求響應(yīng),資源向量改變*/void changdata(int k)int j;for(j=0; j<N; j+)AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;四、結(jié)果與分析五、實(shí)驗(yàn)心得與體會(huì)設(shè)計(jì)主要由兩部分組成。第一部分: 銀行家算法( 掃描 )1. 如果 Request<=Need, 則轉(zhuǎn) 2; 否則 , 出錯(cuò)2. 如果 Request<=Availab
28、le, 則轉(zhuǎn)向 3, 否則等待3. 系統(tǒng)試探分配請(qǐng)求的資源給進(jìn)程4. 系統(tǒng)執(zhí)行安全性算法第二部分主要是進(jìn)行資源的修改。在這里可以修改資源的可用資源和資源還需求資源。多個(gè)進(jìn)程同時(shí)運(yùn)行時(shí), 系統(tǒng)根據(jù)各類系統(tǒng)資源的最大需求和各類系統(tǒng)的剩余資源為進(jìn)程安排安全序列,使得系統(tǒng)能快速且安全地運(yùn)行進(jìn)程,不至發(fā)生死鎖。銀行家算法是避免死鎖的主要方 法,其思路在很多方面都非常值得我們來學(xué)習(xí)借鑒。實(shí)驗(yàn)五 內(nèi)存管理一、實(shí)驗(yàn)?zāi)康模?)通過對(duì)Windows xp "任務(wù)管理器”、“計(jì)算機(jī)管理”、“我的電腦”屬性、“系統(tǒng)信 息”、“系統(tǒng)監(jiān)視器”等程序的應(yīng)用,學(xué)習(xí)如何察看和調(diào)整Windows 的內(nèi)存性能,加深對(duì)操作
29、系統(tǒng)內(nèi)存管理、虛擬存儲(chǔ)管理等理論知識(shí)的理解。( 2) 了解 Windows xp 的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理解進(jìn)程的虛擬內(nèi)存空間和物理內(nèi)存 的映射關(guān)系。二、實(shí)驗(yàn)內(nèi)容和步驟( 1)觀察和調(diào)整Windows XP 的內(nèi)存性能。步驟 1 : 閱讀“背景知識(shí)”,請(qǐng)回答:1) 什么是“分頁過程”?分頁就是當(dāng) Windows 求助于硬盤以獲得虛擬內(nèi)存時(shí),這個(gè)過程被稱為分頁(paging)將信息從主內(nèi)存移動(dòng)到磁盤進(jìn)行臨時(shí)存儲(chǔ)的過程。2)什么是“內(nèi)存共享”?應(yīng)用程序經(jīng)常需要彼此通信和共享信息。從性能的角度來看,共享內(nèi)存的能力大大減少了 應(yīng)用程序使用的內(nèi)存數(shù)量。 運(yùn)行一個(gè)應(yīng)用程序的多個(gè)副本時(shí),每一個(gè)實(shí)例都可
30、以使用相同的代碼 和數(shù)據(jù),這意味著不必維護(hù)所加載應(yīng)用程序代碼的單獨(dú)副本并使用相同的內(nèi)存資源。無論正在運(yùn) 行多少個(gè)應(yīng)用程序?qū)嵗?,充分支持?yīng)用程序代碼所需求的內(nèi)存數(shù)量都相對(duì)保持不變。3)什么是“未分頁合并內(nèi)存”和“分頁合并內(nèi)存”?未分頁合并內(nèi)存:包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù),這些程序在系統(tǒng)重新啟動(dòng) 或關(guān)閉之前一直駐留在內(nèi)存的特定部分中。內(nèi)存中包含的進(jìn)程保留在主內(nèi)存中,并且不能交 換到磁盤上物理內(nèi)存的這個(gè)部分用于內(nèi)核模式操作(例如,驅(qū)動(dòng)程序)和必須保留在主內(nèi)存 中才能有效工作的其他進(jìn)程。沒有主內(nèi)存的這個(gè)部分,內(nèi)核組件就將是可分頁的,系統(tǒng)本身 就有變得不穩(wěn)定的危險(xiǎn)。分頁合并內(nèi)存:存儲(chǔ)遲早需要的
31、可分頁代碼或數(shù)據(jù)的內(nèi)存部分,雖然可以將分頁合并內(nèi) 存中的任何系統(tǒng)進(jìn)程交換到磁盤上,但是它臨時(shí)存儲(chǔ)在主內(nèi)存的這一部分,以防系統(tǒng)立刻需 要它。在將系統(tǒng)進(jìn)程交換到磁盤上之前,Windows會(huì)交換其他進(jìn)程。Windows xp中,未分頁合并內(nèi)存的最大限制是多少?最大限制為256MB4) Windows xp分頁文件默認(rèn)設(shè)置的最小容量和最大容量是多少?步驟2 :登錄進(jìn)入 Windows xp。步驟3 :查看包含多個(gè)實(shí)例的應(yīng)用程序的內(nèi)存需求。1)啟動(dòng)想要監(jiān)視的應(yīng)用程序,例如Word。2)右鍵單擊任務(wù)欄以啟動(dòng)“任務(wù)管理器”。3)在“ Windows任務(wù)管理器”對(duì)話框中選定“進(jìn)程”選項(xiàng)卡。4)向下滾動(dòng)在系統(tǒng)上
32、運(yùn)行的進(jìn)程列表,查找想要監(jiān)視的應(yīng)用程序。請(qǐng)?jiān)诒?-3 中記錄:表5-3實(shí)驗(yàn)記錄映像名稱PIDCPUCPU 時(shí)間內(nèi)存使用dwn.exe1640000:00:0816996KQQ.exe *323548000:00:082048KWps.exe *325836020:00:3859264K“內(nèi)存使用”列顯示了該應(yīng)用程序的一個(gè)實(shí)例正在使用的內(nèi)存數(shù)量。5)啟動(dòng)應(yīng)用程序的另一個(gè)實(shí)例并觀察它的內(nèi)存需求。請(qǐng)描述使用第二個(gè)實(shí)例占用的內(nèi)存與使用第一個(gè)實(shí)例時(shí)的內(nèi)存對(duì)比情況。步驟4:未分頁合并內(nèi)存估算未分頁合并內(nèi)存大小的最簡(jiǎn)單方法是使用“任務(wù)管理器”。未分頁合并內(nèi)存的估計(jì)值顯示在“任務(wù)管理器”的“性能”選項(xiàng)卡的“核
33、心內(nèi)存”部分。總數(shù)(K) : 8122*1024分頁數(shù) :328*1024未分頁(K): 116*1024還可以使用“任務(wù)管理器”查看一個(gè)獨(dú)立進(jìn)程正在使用的未分頁合并內(nèi)存數(shù)量和分頁合并內(nèi)存數(shù)量。操作步驟如下:1)單擊“ Windows任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡,然后從“查看”菜單中選擇“選 擇列”命令,顯示“進(jìn)程”選項(xiàng)卡的可查看選項(xiàng)。2)在“選擇列”對(duì)話框中,選定“頁面緩沖池”選項(xiàng)和“非頁面緩沖池”選項(xiàng)旁邊的復(fù)選框,然后單擊“確定”按鈕。返回 Windows Xp "任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡 時(shí),將看到其中增加顯示了各個(gè)進(jìn)程占用的分頁合并內(nèi)存數(shù)量和未分頁合并內(nèi)存數(shù)量。仍以剛才打
34、開觀察的應(yīng)用程序(例如Word)為例,請(qǐng)?jiān)诒?-4中記錄:表5-4實(shí)驗(yàn)記錄映像名稱PIDCPUCPU時(shí)間內(nèi)存使用dwn.exe1640000:00:1217248KQQ.exe *323548000:00:1073888KWps.exe *325836020;01;1467088K從性能的角度來看,未分頁合并內(nèi)存越多,可以加載到這個(gè)空間的數(shù)據(jù)就越多。擁有的物理內(nèi)存越多,未分頁合并內(nèi)存就越多。但未分頁合并內(nèi)存被限制為256MB,因此添加超出這個(gè)限制的內(nèi)存對(duì)未分頁合并內(nèi)存沒有影響。步驟5 :提高分頁性能。在Windows xp的安裝過程中,將使用連續(xù)的磁盤空間自動(dòng)創(chuàng)建分頁文件 (pagefile.
35、sys) 。用戶可以事先監(jiān)視變化的內(nèi)存需求并正確配置分頁文件,使得當(dāng)系 統(tǒng)必須借助于分頁時(shí)的性能達(dá)到最高。雖然分頁文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并不總是該文件的最佳位 置。要想從分頁獲得最佳性能,應(yīng)該首先檢查系統(tǒng)的磁盤子系統(tǒng)的配置,以了解它是否 有多個(gè)物理硬盤驅(qū)動(dòng)器。1)在“開始”菜單中單擊“設(shè)置”-“控制面板”命令,雙擊“管理工具”圖標(biāo),再雙擊“計(jì)算機(jī)管理”圖標(biāo)。2)在“計(jì)算機(jī)管理”窗口的左格選擇“磁盤管理”管理單元來查看系統(tǒng)的磁盤配置。 請(qǐng)?jiān)诒?-5 中記錄:表5-5實(shí)驗(yàn)記錄卷布局類型文件系 統(tǒng)容量狀態(tài)簡(jiǎn)單基本4.88GB狀態(tài)良好(OEM區(qū))C:簡(jiǎn)單基本NTFS100.00GB狀
36、態(tài)良好(系統(tǒng),啟動(dòng),頁面文件)D:簡(jiǎn)單基本NTFS30.00GB狀態(tài)良好(邏輯驅(qū)動(dòng)器)E:簡(jiǎn)單基本NTFS30.00GB狀態(tài)良好(邏輯驅(qū)動(dòng)器)F:簡(jiǎn)單基本NTFS100.00GB狀態(tài)良好(邏輯驅(qū)動(dòng)器)如果系統(tǒng)只有一個(gè)硬盤,那么建議應(yīng)該盡可能為系統(tǒng)配置額外的驅(qū)動(dòng)器。這是因?yàn)椋?Windows xp最多可以支持在多個(gè)驅(qū)動(dòng)器上分布的16個(gè)獨(dú)立的分頁文件。為系統(tǒng)配置多個(gè)分頁文件可以實(shí)現(xiàn)對(duì)不同磁盤I/O請(qǐng)求的并行處理,這將大大提高I/O請(qǐng)求的分頁文件性能。步驟6 :計(jì)算分頁文件的大小。要想更改分頁文件的位置或大小配置參數(shù),可按以下步驟進(jìn)行:1)右鍵單擊桌面上的“我的電腦" (Win7為計(jì)算機(jī))
37、圖標(biāo)并選定“屬性” (Win7 為高級(jí)系統(tǒng)設(shè)置)。2)在“高級(jí)”選項(xiàng)卡上單擊“性能選項(xiàng)”按鈕。3)單擊對(duì)話框中的“虛擬內(nèi)存”區(qū)域中的“更改”按鈕。請(qǐng)記錄:所選驅(qū)動(dòng)器(C:)的頁面文件大小:驅(qū)動(dòng)器: £ ;可用空間:56362 MB初始大?。∕B):最大值(MB):所選驅(qū)動(dòng)器(D:) 的頁面文件大小:(如果有的話)驅(qū)動(dòng)器:D:可用空間:30622 MB所有驅(qū)動(dòng)器頁面文件大小的總數(shù):30622 MB允許的最小值:16 MB推薦:12183 MB當(dāng)前已分配: 8122 MB4)要想將另一個(gè)分頁文件添加到現(xiàn)有配置,在“虛擬內(nèi)存”對(duì)話框中選定一個(gè)還沒 有分頁文件的驅(qū)動(dòng)器,然后指定分頁文件的初始
38、值和最大值(以兆字節(jié)表示),單擊“設(shè)置”,然后單擊“確定”。5)要想更改現(xiàn)有分頁文件的最大值和最小值,可選定分頁文件所在的驅(qū)動(dòng)器。然后 指定分頁文件的初始值和最大值,單擊“設(shè)置”按鈕,然后單擊“確定”按鈕。6)在“性能選項(xiàng)”對(duì)話框中單擊“確定”按鈕。7)單擊“確定”按鈕以關(guān)閉“系統(tǒng)特性”對(duì)話框。(2) 了解和檢測(cè)進(jìn)程的虛擬內(nèi)存空間。步驟1:創(chuàng)建一個(gè)"Win32 Consol Application ”工程,然后拷貝清單5-1中的程序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊"Execute Program" (執(zhí)行程序)按鈕,或者按Ctrl + F5鍵,或者在
39、“命令提示符”窗口運(yùn)行步驟1中生成的可執(zhí)行文件。步驟3:根據(jù)運(yùn)行結(jié)果,回答下列問題虛擬內(nèi)存每頁容量為:4.00KB最小應(yīng)用地址:0x00010000最大應(yīng)用地址:0x7ffeffff當(dāng)前可供應(yīng)用程序使用的內(nèi)存空間為:1.99GB提示:可供應(yīng)用程序使用的內(nèi)存空間實(shí)際上已經(jīng)減去了開頭與結(jié)尾兩個(gè)64KB的保護(hù)區(qū)。虛擬內(nèi)存空間中的 64KB保護(hù)區(qū)是防止編程錯(cuò)誤的一種Windows方式。任何對(duì)內(nèi)存中這一區(qū)域的訪問(讀、寫、執(zhí)行)都將引發(fā)一個(gè)錯(cuò)誤陷阱,從而導(dǎo)致錯(cuò)誤 并終止程序的執(zhí)行。按committed、reserved、free 等三種虛擬地址空間分別記錄實(shí)驗(yàn)數(shù)據(jù)。其 中“描述”是指對(duì)該組數(shù)據(jù)的簡(jiǎn)單描述
40、,例如,對(duì)下列一組數(shù)據(jù):00010000 - 00012000 <8.00KB> Committed, READWRITE, Private可描述為:具有READWRITEW艮的已調(diào)配私有內(nèi)存區(qū)。將系統(tǒng)當(dāng)前的自由區(qū)(free)虛擬地址空間按表5-6格式記錄表5-6實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問權(quán)限描述(60.0KB)FreeNOACCESS(60.0KB)FreeNOACCESS00294000-002a0000(48.0KB)FreeNOACCESS002a1000-002b0000(60.0 KB)FreeNOACCESS(36.0KB)FreeNOACCESS(60.0
41、 KB)FreeNOACCESS(40.0KB)FreeNOACCESS(636 KB)FreeNOACCESS(0.98MB)FreeNOACCESS(704 KB)FreeNOACCESS提示:詳細(xì)記錄實(shí)驗(yàn)數(shù)據(jù)在實(shí)驗(yàn)活動(dòng)中是必要的,但想想是否可以簡(jiǎn)化記錄的辦 法?將系統(tǒng)當(dāng)前的已調(diào)配區(qū)(committed)虛擬地址空間按表5-7格式記錄表5-7實(shí)驗(yàn)記錄地址大小虛擬地址 空間類型訪問權(quán)限描述(64.0 KB)CommittedREADWRITEMapped(4.00 KB)CommittedREADWRITEPrivate(4.00 KB)CommittedREADONLYImage00089
42、000-0008c000(12.0 KB)CommittedREADWRITEPrivate(16.0 KB)CommittedREADWRITEPrivate00089000-0008c000(12.0 KB)CommittedREADWRITEPrivate(16.0 KB)CommittedREADWRITEPrivate(12.0KB)CommittedREADWRITEPrivate(16.0KB)CommittedREADONLYMapped002a0000-002a1000(4.00KB)CommittedREADWRITEPrivate將系統(tǒng)當(dāng)前的保留區(qū)(reserved)虛擬
43、地址空間按表5-8格式記錄表5-8實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問權(quán)限描述(228KB)reservedREADONLYPrivate00090000-0028C000(1.98MB)ReservedREADONLYPrivat(124KB)ReservedREADONLYPrivate00593000-005a0000(52.0KB)ReservedREADONLYPrivate00656000-006d0000(488KB)ReservedREADONLYPrivate(1.44MB)ReservedREADONLYMapped(20.0KB)ReservedREADONLYMappe
44、d(840KB)ReservedREADONLYPrivate00bf4000-01f10000(19.1MB)ReservedREADONLYMapped(60.0KB)ReservedREADONLYImage三、實(shí)驗(yàn)總結(jié)通過對(duì) Windows xp "任務(wù)管理器”、“計(jì)算機(jī)管理”、“我的電腦”屬性、“系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”等程序的應(yīng)用,學(xué)習(xí)如何察看和調(diào)整Windows的內(nèi)存性能,加深對(duì)操作系統(tǒng)內(nèi)存管理、虛擬存儲(chǔ)管理等理論知識(shí)的理解。了解Windows xp的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理解進(jìn)程的虛擬內(nèi)存空間和物理內(nèi)存的映 射關(guān)系。實(shí)驗(yàn)六磁盤調(diào)度一、實(shí)驗(yàn)?zāi)康模?) 了解磁盤結(jié)構(gòu)
45、以及磁盤上數(shù)據(jù)的組織方式。(2)掌握磁盤訪問時(shí)間的計(jì)算方式。(3)掌握常用磁盤調(diào)度算法及其相關(guān)特性。二、實(shí)驗(yàn)基本知識(shí)及原理1 )磁盤數(shù)據(jù)的組織磁盤上每一條物理記錄都有唯一的地址,該地址包括三個(gè)部分:磁頭號(hào)(盤面好)、柱面號(hào)(磁道號(hào))和扇區(qū)號(hào)。給定這三個(gè)量就可以唯一地確定一個(gè)地址。2)磁盤訪問時(shí)間的計(jì)算方式磁盤在工作室以恒定的速率旋轉(zhuǎn)。為保證讀或?qū)?,磁頭必須移動(dòng)到所要求的磁道上,當(dāng)所要 求的扇區(qū)的開始位置旋轉(zhuǎn)到磁頭下時(shí),開始讀或?qū)憯?shù)據(jù)。對(duì)磁盤的訪問時(shí)間包括:尋道時(shí)間、旋 轉(zhuǎn)延遲時(shí)間和傳輸時(shí)間。3)磁盤調(diào)度算法磁盤調(diào)度的目的是要盡可能降低磁盤的尋道時(shí)間,以提高磁盤I/O系統(tǒng)的性能。先進(jìn)先出算法:按
46、訪問請(qǐng)求到達(dá)的先后次序進(jìn)行調(diào)度。最短服務(wù)時(shí)間優(yōu)先算法:優(yōu)先選擇使磁頭臂從當(dāng)前位置開始移動(dòng)最少的磁盤I/O請(qǐng)求進(jìn)行調(diào)度。SCAN(電梯算法):要求磁頭臂先沿一個(gè)方向移動(dòng),并在途中滿足所有未完成的請(qǐng)求,直到它到達(dá)這個(gè)方向上的最后一個(gè)磁道。 或者在這個(gè)方向上沒有別的請(qǐng)求為止, 后一種改進(jìn)有時(shí)候稱作LOOK策略。然后倒轉(zhuǎn)服務(wù)方向,沿相反方向掃描,同樣按順序完成所有請(qǐng)求。C-SCAN(循環(huán)掃描)算法:在磁盤調(diào)度時(shí),把掃描限定在一個(gè)方向,當(dāng)沿某個(gè)方向訪問到最后一個(gè)磁道時(shí),磁頭臂返回到磁盤的另一端,并再次開始掃描。三、詳細(xì)設(shè)計(jì)/SCAN (電梯算法)void SCAN(int array,int m)int
47、 now;int temp;int i,j;int sum=0;float avg;for(i=0; i<m; i+)for(j=i+1; j<m; j+)/ 對(duì)磁道號(hào)進(jìn)行從小到大排列if(arrayi>arrayj)/ 兩磁道號(hào)之間比較temp=arrayi;arrayi=arrayj;arrayj=temp;for( i=0; i<m; i+)/ 輸出排序后的磁道號(hào)數(shù)組printf("%d ",arrayi);printf("n請(qǐng)輸入當(dāng)前的磁道號(hào):");scanf("%d",&now);printf
48、(" 磁道方向:沿磁道增大的方向 ");printf("n SCAN 調(diào)度結(jié)果 : ");for(i=0; i<m; i+)if(now<=arrayi)printf("%d ",arrayi);sum=arrayi-now+sum;now=arrayi;elsej=i;temp=arrayi;for(i=j; i>=0; i-)printf("%d ",arrayi);sum=now-arrayi+sum;now=arrayi;avg=(float)sum/m;printf("n 移動(dòng)的總道數(shù): %d n",sum);printf(平均尋道長(zhǎng)度: %f n",avg);/C-SCAN (循環(huán)掃描)算法void CSCAN(int array,int m)int now;int temp;int i,j;int sum=0;float avg;for(i=0; i<m; i+)for(j=i+1; j<m; j+)/ 對(duì)磁道號(hào)進(jìn)行從小到大排列if(arrayi>arrayj)/ 兩磁道號(hào)之間比較temp=arrayi;arrayi=arra
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色低碳分布式光儲(chǔ)充一體化綜合利用項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025-2030全球草酸镥水合物行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國游戲插畫行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球單通道凝血分析儀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球EPROM 存儲(chǔ)器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國3,4,5-三甲氧基甲苯行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國代謝物定制合成服務(wù)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球低扭矩滾子軸承行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國汽車差速器錐齒輪行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球高壓電動(dòng)車軸行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2024年云南省公務(wù)員考試【申論縣鄉(xiāng)卷、行測(cè)、事業(yè)單位招聘】3套 真題及答案
- 湖南省長(zhǎng)沙市長(zhǎng)郡教育集團(tuán)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試英語試題(含答案)
- 2024上海市招聘社區(qū)工作者考試題及參考答案
- 2024-2025學(xué)年人教版三年級(jí)(上)英語寒假作業(yè)(九)
- 《招標(biāo)投標(biāo)法》考試題庫200題(含答案)
- 立春氣象與健康
- 河南退役軍人專升本計(jì)算機(jī)真題答案
- 室內(nèi)空氣治理技術(shù)培訓(xùn)
- 2024-2025學(xué)年上外版高二上學(xué)期期中英語試卷與參考答案
- 物業(yè)管理企業(yè)用工風(fēng)險(xiǎn)與防范對(duì)策
- 拜耳法氧化鋁生產(chǎn)工藝流程框圖
評(píng)論
0/150
提交評(píng)論