


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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í) 指導(dǎo)老師: 完成時(shí)間:目錄實(shí)驗(yàn)一 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)六 磁盤(pán)調(diào)度實(shí)驗(yàn)七 進(jìn)程間通信實(shí)驗(yàn)一 Windows 進(jìn)程管理、實(shí)驗(yàn)?zāi)康?)學(xué)會(huì)使用 VC 編寫(xiě)基本的 Win32 Consol Application (控制臺(tái)應(yīng)用程序 ) 。2)2)通過(guò)創(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)通過(guò)閱讀和分析實(shí)驗(yàn)程序,學(xué)習(xí)創(chuàng)建進(jìn)
2、程、觀察進(jìn)程、終止進(jìn)程以及父子進(jìn)程同步的基 本程序設(shè)計(jì)方法。二、實(shí)驗(yàn)內(nèi)容和步驟(1)編寫(xiě)基本的 Win32 Consol Application步驟1:登錄進(jìn)入 Windows系統(tǒng),啟動(dòng)VC+ 6.0。步驟2:在“FILE”菜單中單擊“ NEW/子菜單,在“ projects ”選項(xiàng)卡中選擇“ Win32 ConsolApplication ”,然后在“ Project name ” 處輸入工程名,在“ Location ” 處輸入 工程目錄。創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序工程。步驟3:在“ FILE”菜單中單擊“ NEW”子菜單,在“ Files ”選項(xiàng)卡中選擇“ C+ Source File
3、” ,然后在“ File ”處輸入C/C+源程序的文件名。步驟4:將清單1-1所示的程序清單復(fù)制到新創(chuàng)建的 C/C+源程序中。編譯成可執(zhí)行 文件。步驟5:在“開(kāi)始”菜單中單擊“程序”-“附件”-“命令提示符”命令,進(jìn)入Windows“命令提示符”窗口,然后進(jìn)入工程目錄中的debug子目錄,執(zhí)行編譯好的可執(zhí)行程序,列出運(yùn)行結(jié)果(如果運(yùn)行不成功,則可能的原因是什么?)如果運(yùn)行不成功可能是路徑有問(wèn)題或者沒(méi)有通過(guò)編譯。(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 Applicati
4、on ”工程,然后拷貝清單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為線程開(kāi)始運(yùn)行的編號(hào),當(dāng)nclone的值大于或者等于 c_nCloneMax時(shí)程序運(yùn)行一次即跳出;變量的定義和初始化方法(位置) 只對(duì)程序的執(zhí)行結(jié)果有影響;(3)父子進(jìn)程
5、的簡(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é)果。在程序中加入跟蹤語(yǔ)句,或調(diào)試運(yùn)行程序,同時(shí)參考MSDN中的幫助文件CreateProcess()的使用方法,理解父子進(jìn)程如何傳遞參數(shù)。給出程序執(zhí)行過(guò)程的大概描述。通過(guò)mai
6、n(intargc,char* argv)傳遞參數(shù),每次運(yùn)行時(shí)先檢測(cè)argc的值,若小于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)程同步過(guò)程的一個(gè)大概描述。CreateMutex()創(chuàng)建互斥體,OpenMutex()打開(kāi)互斥體,ReleaseMutex()釋放 互斥體,WaitForSingleObj
7、ect()檢測(cè)hHandle事件的信號(hào)狀態(tài),通過(guò)這些方法可實(shí)現(xiàn)當(dāng)前只有一個(gè)進(jìn)程被創(chuàng)建或使用,實(shí)現(xiàn)進(jìn)程的同步。首先,進(jìn)程創(chuàng)建一個(gè)互斥體,打開(kāi)互斥體,如遇到互斥,則進(jìn)行處理,處理 完后,釋放互斥體,下面便是進(jìn)程等待一個(gè)要處理的項(xiàng)目三、實(shí)驗(yàn)心得與體會(huì)每個(gè)進(jìn)程都從調(diào)用 CreateProcess()API函數(shù)開(kāi)始,該函數(shù)的任務(wù)是在對(duì)象管理 器子系統(tǒng)內(nèi)初始化進(jìn)程對(duì)象。每一進(jìn)程都以調(diào)用ExitProcess() 或 Termi nateProcess()API函數(shù)終止。通常應(yīng)用程序的框架負(fù)責(zé)調(diào)用ExitProcess()函數(shù)。進(jìn)程都是有始有終,其中有中斷,還有處理進(jìn)程間互斥的函 數(shù),已達(dá)到進(jìn)程的完成后自然
8、終止。實(shí)驗(yàn)二 Linux 進(jìn)程管理一、實(shí)驗(yàn)?zāi)康?通過(guò)進(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
9、 個(gè)函數(shù),原型如下:extern 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, c
10、har *const argv);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 和所有打開(kāi)的文件描述符沒(méi)有改變 , 同時(shí)懸掛 信號(hào)被清除,信號(hào)重置為缺省行為。在函數(shù) execl,execlp, 和 execle 中, const char *arg 以及省略號(hào)代表的參數(shù)可被視為 arg0,arg1, .,argn 。它們合起來(lái)描述了指向 NULL 結(jié)尾的字符串的指針列表,即執(zhí)行程序的參 數(shù)列表。作
11、為約定 , 第一個(gè) arg 參數(shù)應(yīng)該指向執(zhí)行程序名自身 , 參數(shù)列表必須用 NULL 指針結(jié)束。 execv 和 execvp 函數(shù)提供指向 NULL 結(jié)尾的字符串的指針數(shù)組作為新程序的參數(shù)列 表。作為約定,指針數(shù)組中第一個(gè)元素應(yīng)該指向執(zhí)行程序名自身。指針數(shù)組必須用NULL 指針結(jié)束。execle 函數(shù)同時(shí)說(shuō)明了執(zhí)行進(jìn)程的環(huán)境 (environment), 它在 NULL 指針后面要求一個(gè)附 加參數(shù),NULL指針用于結(jié)束參數(shù)列表,或者說(shuō),argv數(shù)組。這個(gè)附加參數(shù)是指向NULL結(jié)尾的字符串的指針數(shù)組 , 它必須用 NULL 指針結(jié)束。其它函數(shù)從當(dāng)前進(jìn)程的 environ 外部變量中獲取新進(jìn) 程
12、的環(huán)境。execlp 和 execvp 可根據(jù) path 搜索合適的程序運(yùn)行,其它則需要給出程序全路徑。execve ()類似 execv (),但是加上了環(huán)境的處理。wait () , waitpid ()可用來(lái)等待子進(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)。wai
13、tpid 的第一個(gè)參數(shù) pid 的意義:pid > 0:等待進(jìn)程 id 為 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ù)要求:編寫(xiě)一段程序,使用系統(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)程在
14、屏幕上顯示一個(gè)字符:父進(jìn)程顯示字符“ a”;兩子進(jìn)程分別顯示字符“ 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ù)要求:編寫(xiě)一段程序,使用系統(tǒng)調(diào)用 fork ()創(chuàng)建一個(gè)子進(jìn)程。子進(jìn)程通過(guò)系統(tǒng)調(diào)用 exec更換自己原有的執(zhí)行代碼,轉(zhuǎn)去執(zhí)行Linux 命令/bin/Is(顯示當(dāng)前目錄的列表),然后調(diào)
15、用exit ()函數(shù)結(jié)束。父進(jìn)程則調(diào)用waitpid() 等待子進(jìn)程結(jié)束,并在子進(jìn)程結(jié)束后顯示子進(jìn)程的標(biāo)識(shí)符,然后正常結(jié)束。程序執(zhí)行過(guò)程如圖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í)行過(guò)程四、實(shí)驗(yàn)心得及體會(huì)這個(gè)課題的實(shí)
16、驗(yàn)讓我學(xué)會(huì)了 Win dows系統(tǒng)下虛擬機(jī)中的基本程序的編寫(xiě),第一次在虛擬級(jí)的環(huán)境中編寫(xiě)了這一個(gè)程序。并通過(guò)進(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ì)象,利用互斥與同步操作編寫(xiě)生產(chǎn)者-消費(fèi)者問(wèn)題的并發(fā)程序,加深對(duì) P (即semWait)、V(即semSignal)原語(yǔ)以及利用P、V原語(yǔ)進(jìn)行進(jìn)程間同步與互斥操作的理解。、實(shí)驗(yàn)內(nèi)容和步驟1)生產(chǎn)者消費(fèi)者問(wèn)題步驟1 :創(chuàng)建一個(gè)“Win32 Consol Application”工程,然后
17、拷貝清單3-1中的程序,編譯成可執(zhí)行文件。步驟2 :在“命令提示符”窗口運(yùn)行步驟 1中生成的可執(zhí)行文件,列出運(yùn)行結(jié)果步驟3 :仔細(xì)閱讀源程序,找出創(chuàng)建線程的WINDOWS API函數(shù),回答下列問(wèn)題:線程的第個(gè)執(zhí)行函數(shù)是什么(從哪里開(kāi)始執(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)常
18、等待 步驟5 :修改清單3-1中的程序,按程序注釋中的說(shuō)明修改信號(hào)量EmptySemaphore的初始化方法,看看結(jié)果有何不同。步驟6 :根據(jù)步驟4的結(jié)果,并查看 MSDN回答下列問(wèn)題:1)CreateMutex中有幾個(gè)參數(shù),各代表什么含義。有三個(gè)參數(shù);1)LPSECURITY_ATTRIBUTESIpMutexAttribute代表安全屬性的 指針 2)BOOlblnitialOwner 代表布爾 bInitialOwner3 )LPCTSTRpName代表 LPCTSTR!型 IpName2)CreateSemaphore中有幾個(gè)參數(shù),各代表什么含義,信號(hào)量的初值在第幾個(gè)參數(shù)中 有四個(gè)參數(shù)
19、;1)表示采用不允許繼承的默認(rèn)描述符;2)設(shè)置信號(hào)機(jī)的初始計(jì)數(shù);3)設(shè)置信號(hào)機(jī)的最大計(jì)數(shù);指定信號(hào)機(jī)對(duì)象的名稱3) 程序中P、V原語(yǔ)所對(duì)應(yīng)的實(shí)際 Windows API函數(shù)是什么,寫(xiě)出這幾條語(yǔ)句。P: WaitForSingleObject(EmptySemaphore, INFINITE);WaitForSi ngleObject(Mutex, INFINITE);WaitForSi ngleObject(FullSemaphore, INFINITE);V: ReleaseMutex(Mutex);ReleaseSemaphore(FullSemaphore, 1, NULL); Rele
20、aseSemaphore(EmptySemaphore, 1, NULL);4) CreateMutex 能用CreateSemaphore 替代嗎?嘗試修改程序 3-1,將信號(hào)量 Mutex完全 用CreateSemaphore及相關(guān)函數(shù)實(shí)現(xiàn)。寫(xiě)出要修改的語(yǔ)句。可以;Mutex = CreateSemaphore(NULL, 1, 1, NULL);P: WaitForSingleObject(Mutex, INFINITE); V: ReleaseSemaphore(Mutex, 1, NULL);三、實(shí)驗(yàn)總結(jié)這次實(shí)驗(yàn)加深了對(duì) Win dows線程的理解,了解互斥體對(duì)象,通過(guò)對(duì)生產(chǎn)者消費(fèi)者
21、等進(jìn)程間同步與互斥經(jīng)典算法的實(shí)現(xiàn),加深對(duì)P、V原語(yǔ)以及利用 P、V原語(yǔ)進(jìn)行進(jìn)程間同步與互斥操作的理解,將信號(hào)量看做生產(chǎn)或消費(fèi)的一個(gè)對(duì) 象,將信號(hào)量的生成和銷毀操作如同P操作和V操作一樣,生成者消費(fèi)者問(wèn)題模擬的就是對(duì)信號(hào)量的生成和銷毀,其中牽涉了信號(hào)量的同步,這也是該問(wèn)題為何成為同步的經(jīng)典問(wèn)題的原因。實(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) 掌握使用銀行家算法避免死鎖問(wèn)題。二、實(shí)驗(yàn)基本知識(shí)與原理1) 基本概念死鎖:多個(gè)進(jìn)程在執(zhí)行過(guò)程中,因?yàn)楦?jìng)爭(zhēng)資源會(huì)造成相互等待的局面。如果沒(méi)有外力作用, 這些進(jìn)
22、程將永遠(yuǎn)無(wú)法向前推進(jìn)。此時(shí)稱系統(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) 銀行家算法銀行家算法顧名思義是來(lái)源于銀行的借貸業(yè)務(wù),一定數(shù)量的本金要滿足多個(gè)客戶的借貸周 轉(zhuǎn),為了防止銀行家資金無(wú)法周轉(zhuǎn)而倒閉,對(duì)每一筆貸款,必須考察其是否能限期歸還。在操作系統(tǒng)中研究資源分配策略時(shí)也有類似問(wèn)題,系統(tǒng)中有限的資源要供多個(gè)進(jìn)程使用,必 須保證得到的資源的進(jìn)程能在有限的時(shí)間內(nèi)歸還資源,以供其它進(jìn)程
23、使用資源。如果資源分配不 當(dāng),就會(huì)發(fā)生進(jìn)程循環(huán)等待資源,則進(jìn)程都無(wú)法繼續(xù)執(zhí)行下去的死鎖現(xiàn)象。當(dāng)一進(jìn)程提出資源申請(qǐng)時(shí),銀行家算法執(zhí)行下列步驟以決定是否向其分配資源:1) 檢查該進(jìn)程所需要的資源是否已超過(guò)它所宣布的最大值。2) 檢查系統(tǒng)當(dāng)前是否有足夠資源滿足該進(jìn)程的請(qǐng)求。3 )系統(tǒng)試探著將資源分配給該進(jìn)程,得到一個(gè)新?tīng)顟B(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
24、, n*m 矩陣,表示 n 個(gè)進(jìn)程已分配的各種資源數(shù) .(2)編程實(shí)現(xiàn)/* 安全性檢查函數(shù) */int chkerr() / 在假定分配資源的情況下檢查系統(tǒng)的安全性int WORKN,FINISHM,tempM; /temp 用來(lái)記錄進(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ù)賦給 WORK for(i=0; i<M; i+)count=0;for(j=0; j<N; j+)if(FINISHi=FALSE
25、&&NEEDij<=WORKj)count+;if(count=N) II當(dāng)進(jìn)程各類資源都滿足 NEEDv=WORKfor(m=0; m<N; m+)WORKm=WORKm+ALLOCATIONim;FINISHi=TRUE;tempk=i;II 記錄下滿足條件的進(jìn)程k+;i=-1;for(i=0; i<M; i+)if(FINISHi=FALSE)printf("系統(tǒng)不安全 ! 本次資源申請(qǐng)不成功 !n");return 1;printf("n");printf("經(jīng)安全性檢查,系統(tǒng)安全,本次分配成功。n&q
26、uot;);printf("n");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+R
27、equestj; ALLOCATIONkj=ALLOCATIONkj-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. 如果Requestv=Need則轉(zhuǎn)2;否則,出錯(cuò)
28、2. 如果Requestv=Available,則轉(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ā)生死鎖。銀行家算法是避免死鎖的主要方法, 其思路在很多方面都非常值得我們來(lái)學(xué)習(xí)借鑒。實(shí)驗(yàn)五內(nèi)存管理一、實(shí)驗(yàn)?zāi)康模?)通過(guò)對(duì)Windows xp “任務(wù)管理器"、“計(jì)算機(jī)管理”、"我的電腦”屬性、"系統(tǒng)信息”、“系統(tǒng)監(jiān)視器”等程序的應(yīng)用,
29、學(xué)習(xí)如何察看和調(diào)整Windows的內(nèi)存性能,加深對(duì)操作系統(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)什么是“分頁(yè)過(guò)程”?當(dāng)Windows求助于硬盤(pán)以獲得虛擬內(nèi)存時(shí),這個(gè)過(guò)程被稱為分頁(yè)(paging)。分頁(yè)就是將信息從主內(nèi)存移動(dòng)到磁盤(pán)進(jìn)行臨時(shí)存儲(chǔ)的過(guò)程。2)什么是“內(nèi)存共享”?應(yīng)用程序經(jīng)常需要彼此通信和共享信息。從性能的角度來(lái)看,共享內(nèi)存的能力大大減少了應(yīng)用程序使用的內(nèi)存數(shù)量。運(yùn)行一個(gè)應(yīng)用
30、程序的多個(gè)副本時(shí),每一個(gè)實(shí)例都可以使用相同的代碼和數(shù) 據(jù),這意味著不必維護(hù)所加載應(yīng)用程序代碼的單獨(dú)副本并使用相同的內(nèi)存資源。無(wú)論正在運(yùn)行多少個(gè)應(yīng)用程序?qū)嵗?,充分支持?yīng)用程序代碼所需求的內(nèi)存數(shù)量都相對(duì)保持不變。3)什么是“未分頁(yè)合并內(nèi)存”和“分頁(yè)合并內(nèi)存”?未分頁(yè)合并內(nèi)存:包含必須駐留在內(nèi)存中的占用代碼或數(shù)據(jù),這些程序在系統(tǒng)重新啟動(dòng)或 關(guān)閉之前一直駐留在內(nèi)存的特定部分中。內(nèi)存中包含的進(jìn)程保留在主內(nèi)存中,并且不能交換到 磁盤(pán)上物理內(nèi)存的這個(gè)部分用于內(nèi)核模式操作(例如,驅(qū)動(dòng)程序)和必須保留在主內(nèi)存中才能 有效工作的其他進(jìn)程。沒(méi)有主內(nèi)存的這個(gè)部分,內(nèi)核組件就將是可分頁(yè)的,系統(tǒng)本身就有變得 不穩(wěn)定的危險(xiǎn)
31、。分頁(yè)合并內(nèi)存:存儲(chǔ)遲早需要的可分頁(yè)代碼或數(shù)據(jù)的內(nèi)存部分,雖然可以將分頁(yè)合并內(nèi)存 中的任何系統(tǒng)進(jìn)程交換到磁盤(pán)上,但是它臨時(shí)存儲(chǔ)在主內(nèi)存的這一部分,以防系統(tǒng)立刻需要 它。在將系統(tǒng)進(jìn)程交換到磁盤(pán)上之前,Windows會(huì)交換其他進(jìn)程。Windows xp中,未分頁(yè)合并內(nèi)存的最大限制是多少?最大限制為256MB4)Windows xp分頁(yè)文件默認(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)程
32、”選項(xiàng)卡。4)向下滾動(dòng)在系統(tǒng)上運(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:未分頁(yè)合并內(nèi)存估算未分頁(yè)合并內(nèi)存大小的最簡(jiǎn)單方法是使用“任務(wù)管理器”。未分頁(yè)合并內(nèi)存的估計(jì)值 顯示在“
33、任務(wù)管理器”的“性能”選項(xiàng)卡的“核心內(nèi)存”部分??倲?shù)(K): 8122*_1024分頁(yè)數(shù) :328*1024未分頁(yè)(K): 116*1024還可以使用“任務(wù)管理器”查看一個(gè)獨(dú)立進(jìn)程正在使用的未分頁(yè)合并內(nèi)存數(shù)量和分頁(yè)合并內(nèi)存數(shù)量。操作步驟如下:1)單擊“ Windows任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡,然后從“查看”菜單中選擇“選擇 列"命令,顯示“進(jìn)程"選項(xiàng)卡的可查看選項(xiàng)。2)在“選擇列”對(duì)話框中,選定“頁(yè)面緩沖池”選項(xiàng)和“非頁(yè)面緩沖池”選項(xiàng)旁邊的復(fù)選框,然后單擊“確定”按鈕。返回Windows Xp “任務(wù)管理器”的“進(jìn)程”選項(xiàng)卡時(shí),將看到其中增加顯示了各個(gè)進(jìn)程占用的分頁(yè)合并
34、內(nèi)存數(shù)量和未分頁(yè)合并內(nèi)存數(shù)量。仍以剛 才打開(kāi)觀察的應(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從性能的角度來(lái)看,未分頁(yè)合并內(nèi)存越多,可以加載到這個(gè)空間的數(shù)據(jù)就越多。擁有的物理內(nèi)存越多,未分頁(yè)合并內(nèi)存就越多。但未分頁(yè)合并內(nèi)存被限制為256MB,因此添加超出這個(gè)限制的內(nèi)存對(duì)未分頁(yè)合并內(nèi)存沒(méi)有影響。步驟5 :提高分頁(yè)性能。在Win dows xp的安裝過(guò)程中,將使用連續(xù)
35、的磁盤(pán)空間自動(dòng)創(chuàng)建分頁(yè)文件 (pagefile.sys)。用戶可以事先監(jiān)視變化的內(nèi)存需求并正確配置分頁(yè)文件,使得當(dāng)系統(tǒng)必須借助于分頁(yè)時(shí)的性能達(dá)到最高。雖然分頁(yè)文件一般都放在系統(tǒng)分區(qū)的根目錄下面,但這并不總是該文件的最佳位置。 要想從分頁(yè)獲得最佳性能,應(yīng)該首先檢查系統(tǒng)的磁盤(pán)子系統(tǒng)的配置,以了解它是否有多個(gè) 物理硬盤(pán)驅(qū)動(dòng)器。1)在“開(kāi)始”菜單中單擊“設(shè)置”-“控制面板”命令,雙擊“管理工具”圖標(biāo),再雙擊“計(jì)算機(jī)管理”圖標(biāo)。2)在“計(jì)算機(jī)管理”窗口的左格選擇“磁盤(pán)管理”管理單元來(lái)查看系統(tǒng)的磁盤(pán)配置。請(qǐng) 在表5-5 中記錄:表5-5實(shí)驗(yàn)記錄卷布局類型文件系統(tǒng)容量狀態(tài)簡(jiǎn)單基本4.88GB狀態(tài)良好(OEM
36、分區(qū))C:簡(jiǎn)單基本NTFS100.00GB狀態(tài)良好(系統(tǒng),啟動(dòng),頁(yè)面文件)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è)硬盤(pán),那么建議應(yīng)該盡可能為系統(tǒng)配置額外的驅(qū)動(dòng)器。這是因?yàn)椋篧indows xp最多可以支持在多個(gè)驅(qū)動(dòng)器上分布的16個(gè)獨(dú)立的分頁(yè)文件。為系統(tǒng)配置多個(gè)分頁(yè)文件可以實(shí)現(xiàn)對(duì)不同磁盤(pán)I/O請(qǐng)求的并行處理,這將大大提高 I/O請(qǐng)求的分頁(yè)文件性能。步驟6 :計(jì)算分頁(yè)文件的大小。要想更改分頁(yè)文件的位置或大小配置參數(shù),可按以下步驟進(jìn)行:1)右鍵單擊桌面上的
37、“我的電腦”(Win7為計(jì)算機(jī))圖標(biāo)并選定“屬性”(Win7為高級(jí)系統(tǒng)設(shè)置)。2)在“高級(jí)”選項(xiàng)卡上單擊“性能選項(xiàng)”按鈕。3)單擊對(duì)話框中的“虛擬內(nèi)存”區(qū)域中的“更改”按鈕。請(qǐng)記錄:所選驅(qū)動(dòng)器(C:) 的頁(yè)面文件大小:驅(qū)動(dòng)器:;可用空間:56362 MB初始大?。∕B):最大值(MB):所選驅(qū)動(dòng)器(D:)的頁(yè)面文件大?。海ㄈ绻械脑挘?qū)動(dòng)器:_D:可用空間:30622 MB所有驅(qū)動(dòng)器頁(yè)面文件大小的總數(shù):30622 MB允許的最小值:16 MB推薦:12183 MB當(dāng)前已分配:8122 MB4)要想將另一個(gè)分頁(yè)文件添加到現(xiàn)有配置,在“虛擬內(nèi)存”對(duì)話框中選定一個(gè)還沒(méi)有分頁(yè)文件的驅(qū)動(dòng)器,然后指定分頁(yè)
38、文件的初始值和最大值(以兆字節(jié)表示),單擊“設(shè)置”,然后單擊“確定”。5)要想更改現(xiàn)有分頁(yè)文件的最大值和最小值,可選定分頁(yè)文件所在的驅(qū)動(dòng)器。然后指 定分頁(yè)文件的初始值和最大值,單擊“設(shè)置”按鈕,然后單擊“確定”按鈕。6)在“性能選項(xiàng)”對(duì)話框中單擊“確定”按鈕。7)單擊“確定”按鈕以關(guān)閉“系統(tǒng)特性”對(duì)話框。(2)了解和檢測(cè)進(jìn)程的虛擬內(nèi)存空間。步驟1:創(chuàng)建一個(gè)“Win32 Consol Applicatio n ”工程,然后拷貝清單5-1中的程序,編譯成可執(zhí)行文件。步驟2:在VC的工具欄單擊“ Execute Program ” (執(zhí)行程序)按鈕,或者按Ctrl + F5鍵,或者在“命令提示符”窗
39、口運(yùn)行步驟1中生成的可執(zhí)行文件。步驟3:根據(jù)運(yùn)行結(jié)果,回答下列問(wèn)題虛擬內(nèi)存每頁(yè)容量為:4.00KB最小應(yīng)用地址:0x00010000最大應(yīng)用地址:0x7ffeffff當(dāng)前可供應(yīng)用程序使用的內(nèi)存空間為:1.99GB提示:可供應(yīng)用程序使用的內(nèi)存空間實(shí)際上已經(jīng)減去了開(kāi)頭與結(jié)尾兩個(gè)64KB的保護(hù)區(qū)。虛擬內(nèi)存空間中的 64KB保護(hù)區(qū)是防止編程錯(cuò)誤的一種Windows方式。任何對(duì)內(nèi)存中這一區(qū)域的訪問(wèn)(讀、寫(xiě)、執(zhí)行)都將引發(fā)一個(gè)錯(cuò)誤陷阱,從而導(dǎo)致錯(cuò)誤并終止 程序的執(zhí)行。按committed、reserved、free 等三種虛擬地址空間分別記錄實(shí)驗(yàn)數(shù)據(jù)。其中“描述”是指對(duì)該組數(shù)據(jù)的簡(jiǎn)單描述,例如,對(duì)下列一組
40、數(shù)據(jù):00010000 - 00012000 V8.00KB> Committed, READWRITE, Private可描述為:具有READWRITER限的已調(diào)配私有內(nèi)存區(qū)。 將系統(tǒng)當(dāng)前的自由區(qū)(free)虛擬地址空間按表5-6格式記錄。表5-6實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問(wèn)權(quán)限描述(60.0KB)FreeNOACCESS(60.0KB)FreeNOACCESS00294000-002a0000(48.0KB)FreeNOACCESS002a1000-002b0000(60.0KB)FreeNOACCESS(36.0KB)FreeNOACCESS(60.0KB)FreeNOAC
41、CESS(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)記錄地址大小虛擬地址空間類型訪問(wèn)權(quán)限描述(64.0 KB)CommittedREADWRITEMapped(4.00 KB)CommittedREADWRITEPrivate(4.00 KB)CommittedREADONLYImage00089000-0008c000(
42、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)虛擬地址空間按表5-8格式記錄
43、表5-8實(shí)驗(yàn)記錄地址大小虛擬地址空間類型訪問(wèn)權(quán)限描述(228KB)reservedREADONLYPrivate00090000-0028c000(1.98MB)ReservedREADONLYPrivat(124KB)ReservedREADONLYPrivate00593000-005a0000(52.0KB)ReservedREADONLYPrivate00656000-006d0000(488KB)ReservedREADONLYPrivate(1.44MB)ReservedREADONLYMapped(20.0KB)ReservedREADONLYMapped(840KB)Reser
44、vedREADONLYPrivate00bf4000-01f10000(19).1MB)ReservedREADONLYMapped(60.0KB)ReservedREADONLYImage三、實(shí)驗(yàn)總結(jié)通過(guò)對(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í)的理解。了解Win dows xp的內(nèi)存結(jié)構(gòu)和虛擬內(nèi)存的管理,理解進(jìn)程的虛擬內(nèi)存空間和物理內(nèi)存的映射 關(guān)系。實(shí)驗(yàn)六磁盤(pán)調(diào)度一、實(shí)驗(yàn)?zāi)康模?)了解磁盤(pán)結(jié)構(gòu)以及
45、磁盤(pán)上數(shù)據(jù)的組織方式。(2)掌握磁盤(pán)訪問(wèn)時(shí)間的計(jì)算方式。(3)掌握常用磁盤(pán)調(diào)度算法及其相關(guān)特性。二、實(shí)驗(yàn)基本知識(shí)及原理1 )磁盤(pán)數(shù)據(jù)的組織磁盤(pán)上每一條物理記錄都有唯一的地址,該地址包括三個(gè)部分:磁頭號(hào)(盤(pán)面好)、柱面號(hào)(磁道號(hào))和扇區(qū)號(hào)。給定這三個(gè)量就可以唯一地確定一個(gè)地址。2)磁盤(pán)訪問(wèn)時(shí)間的計(jì)算方式磁盤(pán)在工作室以恒定的速率旋轉(zhuǎn)。為保證讀或?qū)?,磁頭必須移動(dòng)到所要求的磁道上,當(dāng)所要求 的扇區(qū)的開(kāi)始位置旋轉(zhuǎn)到磁頭下時(shí),開(kāi)始讀或?qū)憯?shù)據(jù)。對(duì)磁盤(pán)的訪問(wèn)時(shí)間包括:尋道時(shí)間、旋轉(zhuǎn)延遲時(shí)間和傳輸時(shí)間。3 )磁盤(pán)調(diào)度算法磁盤(pán)調(diào)度的目的是要盡可能降低磁盤(pán)的尋道時(shí)間,以提高磁盤(pán)I/O系統(tǒng)的性能。先進(jìn)先出算法:按訪問(wèn)
46、請(qǐng)求到達(dá)的先后次序進(jìn)行調(diào)度。最短服務(wù)時(shí)間優(yōu)先算法:優(yōu)先選擇使磁頭臂從當(dāng)前位置開(kāi)始移動(dòng)最少的磁盤(pán)I/O請(qǐng)求進(jìn)行調(diào)度。SCAN(電梯算法):要求磁頭臂先沿一個(gè)方向移動(dòng),并在途中滿足所有未完成的請(qǐng)求,直到 它到達(dá)這個(gè)方向上的最后一個(gè)磁道?;蛘咴谶@個(gè)方向上沒(méi)有別的請(qǐng)求為止,后一種改進(jìn)有時(shí)候稱作LOOK策略。然后倒轉(zhuǎn)服務(wù)方向,沿相反方向掃描,同樣按順序完成所有請(qǐng)求。C-SCAN(循環(huán)掃描)算法:在磁盤(pán)調(diào)度時(shí),把掃描限定在一個(gè)方向,當(dāng)沿某個(gè)方向訪問(wèn)到最后一個(gè)磁道時(shí),磁頭臂返回到磁盤(pán)的另一端,并再次開(kāi)始掃描。三、詳細(xì)設(shè)計(jì)/SCAN (電梯算法)void SCAN(i nt array,i nt 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",&
48、;now);printf(" 磁道方向:沿磁道增大的方向 "); 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) / 兩磁道
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 野生艾草收購(gòu)合同范本
- 《李華解讀與營(yíng)銷策略》課件
- 《當(dāng)代包裝》課件
- 籃球運(yùn)動(dòng)全解析
- 科學(xué)的日常探秘
- 《紫外光譜和熒光光》課件
- 教育心理學(xué)在管理中的應(yīng)用
- 健康之道 未來(lái)之光
- 加工機(jī)械設(shè)備合同范本
- 品牌合作店鋪合同范本
- 2025年安陽(yáng)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及參考答案1套
- 11《認(rèn)識(shí)多媒體技術(shù)》教學(xué)設(shè)計(jì)、教材分析與教學(xué)反思2024年滇人版初中信息技術(shù)七年級(jí)下冊(cè)
- 2025年湖南環(huán)境生物職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)一套
- 2025年湖南安全技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)參考答案
- DB3202-T 1063-2024 質(zhì)量基礎(chǔ)設(shè)施“-站式”服務(wù)與建設(shè)規(guī)范
- 2025年廣東省深圳法院招聘書(shū)記員招聘144人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 百所名校高一數(shù)學(xué)試卷
- 第九章-或有事項(xiàng)教學(xué)教材
- 2024年江西青年職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2025年安徽省煙草專賣局(公司)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年春新冀教版英語(yǔ)三年級(jí)下冊(cè)課件 2L2
評(píng)論
0/150
提交評(píng)論