![合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書_第1頁](http://file4.renrendoc.com/view/b31ca1a7c5e9c8ee1472d7577308f7b7/b31ca1a7c5e9c8ee1472d7577308f7b71.gif)
![合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書_第2頁](http://file4.renrendoc.com/view/b31ca1a7c5e9c8ee1472d7577308f7b7/b31ca1a7c5e9c8ee1472d7577308f7b72.gif)
![合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書_第3頁](http://file4.renrendoc.com/view/b31ca1a7c5e9c8ee1472d7577308f7b7/b31ca1a7c5e9c8ee1472d7577308f7b73.gif)
![合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書_第4頁](http://file4.renrendoc.com/view/b31ca1a7c5e9c8ee1472d7577308f7b7/b31ca1a7c5e9c8ee1472d7577308f7b74.gif)
![合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書_第5頁](http://file4.renrendoc.com/view/b31ca1a7c5e9c8ee1472d7577308f7b7/b31ca1a7c5e9c8ee1472d7577308f7b75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書合肥師范學(xué)院第二學(xué)期操作系統(tǒng)實驗指導(dǎo)書操作系統(tǒng)實驗指導(dǎo)書操作系統(tǒng)課程組編著計算機科學(xué)與技術(shù)系操作系統(tǒng)實驗指導(dǎo)書目錄序言.-1-實驗項目一熟習(xí)LINUX基本命令及編程環(huán)境.-2-實驗項目二進度管理.-4-實驗項目三進度調(diào)動.-9-實驗項目四進度通訊.-15-實驗項目五儲蓄管理.-24-操作系統(tǒng)實驗指導(dǎo)書序言操作系統(tǒng)是計算機本科各專業(yè)的專業(yè)核心課程,其實踐性、應(yīng)用性很強,實驗講課環(huán)節(jié)是必不可以少的一個重要環(huán)節(jié)。經(jīng)過操作系統(tǒng)實驗部分講課,使學(xué)生加深理解和更好的掌握操作系統(tǒng)的基本源理、技術(shù)和方法,堅固所學(xué)理論知識,激發(fā)實驗興趣
2、,掌握實驗要領(lǐng),培育對操作系統(tǒng)理論課程所學(xué)知識貫穿交融和綜合運用的能力。經(jīng)過實驗,使學(xué)生深入認識和嫻熟掌握Linux操作系統(tǒng)的使用,及在Linux操作系統(tǒng)下進行程序設(shè)計開發(fā)的方法,掌握操作系統(tǒng)中進度管理、進度調(diào)動、進度通訊和儲蓄管理的方法,使學(xué)生擁有初步分析實質(zhì)操作系統(tǒng)的能力,為此后學(xué)習(xí)使用其余的程序設(shè)計環(huán)境和語言打好基礎(chǔ)。為了收到優(yōu)秀的實查見效,編寫這本實驗指導(dǎo)書。在指導(dǎo)書中,每一個實驗均依據(jù)該課程實驗綱領(lǐng)的要求編寫,力爭緊扣理論知識點、突出設(shè)計方法、明確設(shè)計思路,經(jīng)過多種形式完成實驗任務(wù),最后指引學(xué)生有目的、有方向地完成實驗任務(wù),得出實驗結(jié)果。實驗前,指導(dǎo)教師部署實驗任務(wù),給定實驗內(nèi)容,進
3、行必然的分析和解說,學(xué)生進行預(yù)習(xí),提早設(shè)計實驗方案,此后進入實驗室進行實驗;實驗中,要修業(yè)生依據(jù)實驗要求進行實驗,仔細完成每個實驗項目的詳細內(nèi)容,指導(dǎo)教師全程指導(dǎo)協(xié)調(diào)實驗進行,對于實驗中學(xué)生所發(fā)問題進行詳細解答;實驗后,學(xué)生應(yīng)該實時總結(jié)實驗過程,并依據(jù)實質(zhì)狀況對實驗報告進行填寫,能對在實驗過程中發(fā)生的問題實時分析并找到解決方案,提交實驗報告;指導(dǎo)教師需要對實驗報告進行仔細批閱,并依據(jù)需要采納要點內(nèi)容進行談?wù)摲治觥?1-操作系統(tǒng)實驗指導(dǎo)書實驗項目一熟習(xí)LINUX基本命令及編程環(huán)境一、實驗種類本實驗為考證性實驗。二、實驗?zāi)康呐c任務(wù)熟習(xí)Linux操作系統(tǒng)的安裝和使用;熟習(xí)使用Linux字符界面,窗口
4、系統(tǒng)的常用命令。掌握運用Linux常用的編程工具;掌握怎樣編寫、編譯、運轉(zhuǎn)程序。三、實驗準備熟習(xí)linux系統(tǒng)中常用命令及其功能熟習(xí)vi編寫器或Gedit編寫器的各項功能復(fù)習(xí)C語言程序的編寫。四、實驗內(nèi)容練習(xí)使用Gedit編寫器使用Gedit編寫器用C語言編寫一個HelloWorld程序,并保留。詳細操作:點擊“任務(wù)欄地點主文件夾”,翻開主文件夾地點文件閱讀器,空白處右鍵單擊,彈出菜單項選擇擇“創(chuàng)立文檔空文件”,新建一個空文件,并命名為“hello.c”,右鍵單擊“hello.c”,選擇“使用Gedit翻開”,在Gedit編寫器中編寫代碼以下:#includeintmain()printf(H
5、ello,Wrold!n);編寫完成后,點擊“保留”,保留文件。使用gcc編譯源程序。gcc是linux下的一種c程序編譯工具,使用方法以下:編譯:gcc-ofilename1filename.c(或許gccfilename.c-ofilename1),此中:filename.c是源文件名,filename1是目標(biāo)文件名,o代表object詳細操作:點擊“任務(wù)欄應(yīng)用程序附件終端”,目前默認路徑即為主文件夾,輸入“gcchello.c-ohello”,回車運轉(zhuǎn)后,若無任何提示,怎說明編譯成功,已生成可履行文件“hello“,若提示有錯誤,則依據(jù)詳細提示回到Gedit中改正源程序,保留后從頭編譯。
6、履行程序履行:./filenamel此中:filename1是目標(biāo)文件名。詳細操作:在“終端”中輸入“./hello”,回車后運轉(zhuǎn),若無錯誤,終端中將顯示運轉(zhuǎn)結(jié)果“Hello,Wrold!”。-2-操作系統(tǒng)實驗指導(dǎo)書五、注意事項gcc編譯器不可以夠編譯不帶擴展名的c語言程序。注意編譯和運轉(zhuǎn)程序的基本過程。從頭編寫源程序后,必然從頭編譯,才會生成新的可履行程序。-3-操作系統(tǒng)實驗指導(dǎo)書實驗項目二進度管理一、實驗種類本實驗為考證性實驗。二、實驗?zāi)康睦斫膺M度的見解,掌握父、子進度創(chuàng)立的方法。認識和認識并發(fā)履行的實質(zhì),掌握進度的并發(fā)及同步操作。三、實驗預(yù)備知識1.fork()函數(shù)頭文件:#includ
7、e#include函數(shù)原型:pid_tfork(void);pid_t是一個宏定義,其實質(zhì)是int,被定義在#include中)返回值:若成功調(diào)用一次則返回兩個值,子進度返回0,父進度返回子進度ID;不然,犯錯返回-1函數(shù)說明:一個現(xiàn)有進度能夠調(diào)用fork函數(shù)創(chuàng)立一個新進度。由fork創(chuàng)立的新進度被稱為子進度(childprocess)。fork函數(shù)被調(diào)用一次但返回兩次。兩次返回的獨一差別是子進度中返回0值而父進度中返回子進度ID。子進度是父進度的副本,它將獲得父進度數(shù)據(jù)空間、堆、棧等資源的副本。注意,子進度擁有的是上述儲蓄空間的“副本”,這意味著父子進度間不共享這些儲蓄空間。linux將復(fù)制
8、父進度的地點空間內(nèi)容給子進度,因此,子進度有了獨立的地點空間。為何fork會返回兩次?因為在復(fù)制時復(fù)制了父進度的貨倉段,因此兩個進度都逗留在fork函數(shù)中,等候返回。因為fork函數(shù)會返回兩次,一次是在父進度中返回,另一次是在子進度中返回,這兩次的返回值是不同樣樣的,過程如圖2.1。調(diào)用fork此后,數(shù)據(jù)、貨倉有兩份,代碼仍舊為一份但是這個代碼段成為兩個進度的共享代碼段都從fork函數(shù)中返回,箭頭表示各自的履行處。當(dāng)父子進度有一個想要改正代碼段時,兩個進度真切分裂。-4-操作系統(tǒng)實驗指導(dǎo)書父進度If(fork()=0),Else,父進度子進度If(fork()=0)If(fork()=0),E
9、lseElse,圖2.1fork()函數(shù)分裂表示圖示例代碼:#include/對于此程序而言此頭文件用不到#include#includeintmain(intargc,char*argv)intpid=fork();if(pid0)printf(error!);elseif(pid=0)printf(Thisisthechildprocess!);elseprintf(Thisistheparentprocess!childprocessid=%d,pid);return0;fork函數(shù)的特色歸納起來就是“調(diào)用一次,返回兩次”,在父進度中調(diào)用一次,在父進度和子進度中各返回一次。fork的另一
10、個特色是全部由父進度翻開的描繪符都被復(fù)制到子進度中。父、子進度中同樣編號的文件描繪符在內(nèi)核中指向同一個file構(gòu)造體,也就是說,file構(gòu)造體的引用計數(shù)要增添。-5-操作系統(tǒng)實驗指導(dǎo)書2.wait()函數(shù)頭文件:#include#include函數(shù)原型:pid_twait(int*status);返回值:假如履行成功則返回子進度鑒別碼(PID),假如有錯誤發(fā)生則返回-1。函數(shù)說明:wait()會臨時停止目行進度的履行,直到有信號到達或子進度結(jié)束。假如在調(diào)用wait()時子進度已經(jīng)結(jié)束,則wait()會立刻返回子進度結(jié)束狀態(tài)值。子進度的結(jié)束狀態(tài)值會由參數(shù)status返回,而子進度的進度鑒別碼也會
11、一同返回。假如不在乎結(jié)束狀態(tài)值,則參數(shù)status能夠設(shè)成NULL。子進度的結(jié)束狀態(tài)值請參照下邊的waitpid()。示例代碼:#include#include#include#includeintmain(intargc,char*argv)pid_tpid;intstatus,i;if(fork()=0)printf(Thisisthechildprocess.pid=%dn,getpid();exit(5);elsesleep(1);printf(Thisistheparentprocess,waitforchild.n);pid=wait(&status);i=WEXITSTATUS(
12、status);printf(childspid=%d.exitstatus=%dn,pid,i);3.waitpid()函數(shù)頭文件:#include#include-6-操作系統(tǒng)實驗指導(dǎo)書函數(shù)原型:pid_twaitpid(pid_tpid,int*status,intoptions);返回值:假如履行成功則返回子進度鑒別碼(PID),假如有錯誤發(fā)生則返回-1。函數(shù)說明:waitpid()會臨時停止目行進度的履行,直到有信號到達或子進度結(jié)束。假如在調(diào)用wait()時子進度已經(jīng)結(jié)束,則wait()會立刻返回子進度結(jié)束狀態(tài)值。子進度的結(jié)束狀態(tài)值會由參數(shù)status返回,而子進度的進度鑒別碼也會一
13、快返回。假如不在乎結(jié)束狀態(tài)值,則參數(shù)status能夠設(shè)成NULL。參數(shù)pid為欲等候的子進度鑒別碼,其余數(shù)值意義以下:pid0等候任何子進度鑒別碼為pid的子進度。參數(shù)option能夠為0或下邊的組合:WNOHANG假如沒有任何已經(jīng)結(jié)束的子進度則立刻返回,不予以等候。WUNTRACED假如子進度進入暫停履行狀況則立刻返回,但結(jié)束狀態(tài)不予以理睬。子進度的結(jié)束狀態(tài)返回后存于status,底下有幾個宏可鑒別結(jié)束狀況:WIFEXITED(status)假如子進度正常結(jié)束則為非0值。WEXITSTATUS(status)獲得子進度exit()返回的結(jié)束代碼,一般會先用WIFEXITED來判斷能否正常結(jié)束
14、才能使用此宏。WIFSIGNALED(status)假如子進度是因為信號而結(jié)束則此宏值為真。WTERMSIG(status)獲得子進度因信號而中斷的信號代碼,一般會先用WIFSIGNALED來判斷后才使用此宏。WIFSTOPPED(status)假如子進度處于暫停履行狀況則此宏值為真。一般只有使用WUNTRACED時才會有此狀況。WSTOPSIG(status)獲得引起子進度暫停的信號代碼,一般會先用WIFSTOPPED來判斷后才使用此宏。4.exit()函數(shù)頭文件:#include函數(shù)原型:voidexit(intstatus);返回值:無。函數(shù)說明:進度結(jié)束正常停止,返回結(jié)束狀態(tài)。stat
15、us為進度結(jié)束狀態(tài),是返回給父進度的一個整數(shù),以備查考。為了實時回收進度所占用的資源并減少父進度的干涉,UNIX/LINUX利用exit()來實現(xiàn)進度的自我停止,平常父進度在創(chuàng)立子進度時,應(yīng)在進度的尾端安排一條exit(),使子進度自我停止。exit(0)表示進度正常停止,exit(1)表示進度運轉(zhuǎn)有錯,異樣停止。-7-操作系統(tǒng)實驗指導(dǎo)書假如調(diào)用進度在履行exit()時,其父進度正在等候它的停止,則父進度可立刻獲得其返回的整數(shù)。核心須為exit()完成以下操作:(1)封閉軟中斷(2)回收資源(3)寫記帳信息(4)置進度為“僵死狀態(tài)”四、實驗內(nèi)容編寫一C語言程序,實此刻程序運轉(zhuǎn)時經(jīng)過系統(tǒng)調(diào)用fo
16、rk()創(chuàng)立兩個子進度,使父、子三進度并發(fā)履行,父親進度履行時屏幕顯示“Iamfather,兒”子進度履行時屏幕顯示“Iamson,”女兒進度履行時屏幕顯示“Iamdaughter?!倍啻芜B續(xù)頻頻運轉(zhuǎn)這個程序,察看屏幕顯示結(jié)果的次序,直至出現(xiàn)不同樣樣的狀況為止。記下這類狀況,試簡單分析其原由。3.改正程序,在父、子進度中分別使用wait()、exit()等系統(tǒng)調(diào)用“實現(xiàn)”其同步推動,并獲得子進度的ID號及結(jié)束狀態(tài)值。多次頻頻運轉(zhuǎn)改良后的程序,察看并記錄運轉(zhuǎn)結(jié)果。五、實驗報告要求列出實驗內(nèi)容1、3各程序清單,并以截圖形式記錄相應(yīng)運轉(zhuǎn)結(jié)果。對實驗運轉(zhuǎn)結(jié)果進行分析:1)實驗內(nèi)容1運轉(zhuǎn)結(jié)果為何無固定次
17、序,fork()函數(shù)創(chuàng)立進度是怎樣并發(fā)履行的。2)實驗內(nèi)容3是怎樣實現(xiàn)父子進度的同步履行的。-8-操作系統(tǒng)實驗指導(dǎo)書實驗項目三進度調(diào)動一、實驗種類本實驗為考證性實驗。二、實驗?zāi)康睦斫膺M度控制塊和進度組織方式;掌握時間片輪轉(zhuǎn)調(diào)動算法實現(xiàn)辦理機調(diào)動。三、實驗預(yù)備知識實驗基本源理進度控制塊經(jīng)過鏈表行列的方式組織起來,系統(tǒng)中存在運轉(zhuǎn)行列和就緒行列(為簡單起見,不設(shè)擁堵行列),進度的調(diào)動就是進度控制塊在運轉(zhuǎn)行列和就緒行列之間的切換。當(dāng)需要調(diào)動時,從就緒行列中精選一個進度占用辦理機,即從就緒行列中刪除一個進度,插入到運轉(zhuǎn)行列中,當(dāng)占用辦理機的進度運轉(zhuǎn)的時間片完成后,放棄辦理機,即在運轉(zhuǎn)行列中的進度控制塊經(jīng)
18、過一段時間(時間片)后,從該行列上刪除,假如該進度運轉(zhuǎn)完成,則刪除該進度(節(jié)點);不然,則插入到就緒行列中。實驗中使用的數(shù)據(jù)構(gòu)造PCB進度控制塊內(nèi)容包含參數(shù)進度名name;要求運轉(zhuǎn)時間runtime;已運轉(zhuǎn)時間runedtime;本輪運轉(zhuǎn)時間killtime。進度行列為簡單起見,只設(shè)運轉(zhuǎn)行列,就緒行列兩種數(shù)據(jù)構(gòu)造,進度的調(diào)動在這兩個行列中切換,如圖3.1所示。PCBi運轉(zhuǎn)行列PCBjPCBj+1,PCBj+n,就緒行列,圖3.1PCB鏈表3.rand()函數(shù)和srand()函數(shù)-9-操作系統(tǒng)實驗指導(dǎo)書庫函數(shù)中系統(tǒng)供給了兩個函數(shù)用于產(chǎn)生隨機數(shù):srand()和rand()。函數(shù)一:intrand
19、(void);從srand(seed)中指定的seed開始,返回一個0,RAND_MAX(0 x7fff)間的隨機整數(shù)。函數(shù)二:voidsrand(unsignedseed);參數(shù)seed是rand()的種子,用來初始化rand()的初步值。函數(shù)rand()是真切的隨機數(shù)生成器,而srand()會設(shè)置供rand()使用的隨機數(shù)種子。假如你在第一次調(diào)用rand()從前沒有調(diào)用srand(),那么系統(tǒng)會為你自動調(diào)用srand()。而使用同種子同樣的數(shù)調(diào)用srand()會致使同樣的隨機數(shù)序列被生成。srand(unsigned)time(NULL)則使用系統(tǒng)準時/計數(shù)器的值做為隨機種子。每個種子對應(yīng)
20、一組依據(jù)算法開初生成的隨機數(shù),因此,在同樣的平臺環(huán)境下,不同樣時間產(chǎn)生的隨機數(shù)會是不同樣的,相應(yīng)的,若將srand(unsigned)time(NULL)改為srand(TP)(TP為任一常量),則不論何時運轉(zhuǎn)、運轉(zhuǎn)多少次獲得的“隨機數(shù)”都會是一組固定的序列,因此srand生成的隨機數(shù)是偽隨機數(shù)。但是,要注意的是所謂的“偽隨機數(shù)”指的其實不是假的隨機數(shù)。其實絕對的隨機數(shù)但是一種理想狀態(tài)的隨機數(shù),計算機只好生成相對的隨機數(shù)即偽隨機數(shù)。計算機生成的偽隨機數(shù)既是隨機的又是有規(guī)律的一部份恪守必然的規(guī)律,一部份則不恪守任何規(guī)律。比方“世上沒有兩片形狀完滿同樣的樹葉”,這表現(xiàn)到了事物的特色差別性;但是每種
21、樹的葉子都有近似的形狀,這正是事物的共性規(guī)律性。從這個角度講,我們就能夠接受這樣的事實了:計算機只好產(chǎn)生偽隨機數(shù)而不是絕對的隨機數(shù)。系統(tǒng)在調(diào)用rand()從前都會自動調(diào)用srand(),假如用戶在rand()從前曾調(diào)用過srand()給參數(shù)seed指定了一個值,那么rand()就會將seed的值作為產(chǎn)生偽隨機數(shù)的初始值;而假如用戶在rand()前沒有調(diào)用過srand(),那么系統(tǒng)默認將1作為偽隨機數(shù)的初始值。假如給了一個定值,那么每次rand()產(chǎn)生的隨機數(shù)序列都是同樣的。因此為了防范上述狀況的發(fā)生我們平常用srand(unsigned)time(0)或許srand(unsigned)time
22、(NULL)來產(chǎn)生種子。假如仍舊感覺時間間隔太小,能夠在(unsigned)time(0)或許(unsigned)time(NULL)后邊乘上某個適合的整數(shù)。例如,srand(unsigned)time(NULL)*10)。其余,對于time_ttime(0):time_t被定義為長整型,它返回從1970年1月1日零時零分零秒到目前為止所經(jīng)過的時間,單位為秒。srand()、rand()用法舉例:#include#includevoidmain()inti,j;srand(10);/srand(int)time(0);for(i=0;i10;i+)j=(int)(rand()%20;print
23、f(%dn,j);-10-操作系統(tǒng)實驗指導(dǎo)書4.malloc()函數(shù)頭文件:#include函數(shù)原型:void*malloc(unsignedintsize);函數(shù)說明:其作用是在內(nèi)存的動向儲蓄區(qū)中分派一個長度為size的連續(xù)空間,此函數(shù)的值(即“返回值”)是一個指向分派域其實地點的指針(種類為void)。若此函數(shù)未能成功履行則返回空指針。程序流程圖-11-操作系統(tǒng)實驗指導(dǎo)書開始成立就緒行列,每個進度設(shè)置相應(yīng)參數(shù),如運轉(zhuǎn)時間,進度名字等成立運轉(zhuǎn)行列指針,初始值指向空從就緒行列中準時間先后順序選一個進度插入運轉(zhuǎn)行列每個進度占用辦理機一個時間片,即runtime=runtime-時間片大小Yrun
24、time=0runtime賦值0N改正相應(yīng)參數(shù)改正相應(yīng)參數(shù)結(jié)束該進度,將該進度插入就緒行列中即開釋節(jié)點空就緒行列為空么?Y結(jié)束產(chǎn)生一次調(diào)動,即準時間先后次序從頭節(jié)點刪除一個節(jié)點插入運轉(zhuǎn)行列中N圖3.2模擬進度調(diào)動的流程圖部分參照程序PCB數(shù)據(jù)構(gòu)造structPCB-12-操作系統(tǒng)實驗指導(dǎo)書intname;intruntime;intrunedtime;intkilltime;structPCB*next;typedefstructPCBPCB;創(chuàng)立就緒列表#defineLENsizeof(PCB)PCB*runqueue;/運轉(zhuǎn)行列指針PCB*top,*tail,*temp;/就緒行列指針in
25、ti;srand(int)time(0);for(i=0;iname=i;temp-runtime=rand()%15;temp-runedtime=0;temp-next=NULL;temp-killtime=0;if(i=0)top=temp;tail=temp;elsetail-next=temp;tail=temp;printf(processname%d,runtime=%d,runedtime=%d,killtime=%dn,tail-name,tail-runtime,tail-runedtime,tail-killtime);準時間片輪轉(zhuǎn)算法進行進度調(diào)動的過程描繪。第1步:取就
26、緒行列的隊首結(jié)點為運轉(zhuǎn)行列的結(jié)點,改正就緒行排隊首指針后移;第2步:調(diào)動運轉(zhuǎn)行列結(jié)點,即運轉(zhuǎn)行列結(jié)點的要求運轉(zhuǎn)時間減去時間片刻間;第3步:a若改正后要求運轉(zhuǎn)時間=0,則表示該進度結(jié)點運轉(zhuǎn)完成,改正良程結(jié)點的PCB信息,記錄runtime,runedtime,killtime等信息。并將結(jié)點信息輸出。b不然,表示該進度結(jié)點未完成,記錄runtime,runedtime,killtime等信息,將結(jié)點信息輸出。并將該結(jié)點置于就緒行列的隊尾,等候下次-13-操作系統(tǒng)實驗指導(dǎo)書調(diào)動,同時改正隊尾指針。第4步:若就緒行列非空,則連續(xù)履行第1步,直至就緒行列為空。四、實驗內(nèi)容成立合理的PCB數(shù)據(jù)構(gòu)造,成立
27、含有8個進度結(jié)點的就緒行列,每個進度的要求運轉(zhuǎn)時間隨機產(chǎn)生,要求每個進度的要求運轉(zhuǎn)時間不大于15。設(shè)置時間片大?。?6),使用時間片輪轉(zhuǎn)調(diào)動算法實現(xiàn)辦理機調(diào)動。五、實驗報告要求列出實驗內(nèi)容所要求的程序清單,并以截圖形式記錄相應(yīng)運轉(zhuǎn)結(jié)果;對實驗運轉(zhuǎn)結(jié)果進行分析:假如時間片設(shè)置值過大或過小,會對進度的調(diào)動產(chǎn)生何種影響。-14-操作系統(tǒng)實驗指導(dǎo)書實驗項目四進度通訊一、實驗種類本實驗為綜合性實驗。二、實驗?zāi)康恼J識什么是信息,熟習(xí)信息傳達原理。認識和熟習(xí)共享儲蓄系統(tǒng)。掌握信息的發(fā)送與接收的實現(xiàn)方法。三、實驗預(yù)備知識任務(wù)一信息的發(fā)送和接收實驗基本源理信息(message)是一個格式化的可變長的信息單元。信
28、息系統(tǒng)贊成由一個進度給其余隨意的進度發(fā)送一個信息。當(dāng)一個進度收到多個信息時,可將它們排成一個信息行列。信息使用兩種重要的數(shù)據(jù)構(gòu)造:一是信息首部,此中記錄了一些與信息相關(guān)的信息,如信息數(shù)據(jù)的字節(jié)數(shù);二是信息行列頭表,其每一表項是作為一個信息行列的信息頭,記錄了信息行列的相關(guān)信息。信息系統(tǒng)的數(shù)據(jù)構(gòu)造:structmsgformlongmtype;charmtext1024;(1)信息首部記錄一些與信息相關(guān)的信息,如信息的種類、大小、指向信息數(shù)據(jù)區(qū)的指針、信息行列的鏈接指針等。(2)信息行列頭表其每一項作為一個信息行列的信息頭,記錄了信息行列的相關(guān)信息如指向信息行列中第一個信息和指向最后一個信息的指
29、針、行列中信息的數(shù)量、行列中信息數(shù)據(jù)的總字節(jié)數(shù)、行列所贊成信息數(shù)據(jù)的最大字節(jié)總數(shù),還有近來一次履行發(fā)送操作的進度表記符和時間、近來一次履行接收操作的進度表記符和時間等。(3)信息行列的描繪符UNIX中,每一個信息行列都有一個稱為要點字(key)的名字,是由用戶指定的;信息行列有一信息行列描繪符,其作用與用戶文件描繪符同樣,也是為了方便用戶和系統(tǒng)抵信息行列的接見。-15-操作系統(tǒng)實驗指導(dǎo)書2.msgget()函數(shù)頭文件:#include#include#include函數(shù)原型:intmsgget(key_tkey,intmsgflag);函數(shù)說明:創(chuàng)立一個信息,獲得一個信息的描繪符。系統(tǒng)內(nèi)核將搜
30、尋信息行列頭表,確立能否有指命名字的信息行列。若無,系統(tǒng)內(nèi)核將分派一新的信息行列頭,并對它進行初始化,此后給用戶返回一個信息行列描繪符,不然它但是檢查信息行列的贊成權(quán)便返回。系統(tǒng)調(diào)用格式:msgqid=msgget(key,flag)。此中:msgqid是該系統(tǒng)調(diào)用返回的描繪符,失敗則返回-1。msgget()函數(shù)的第一個參數(shù)是信息行列對象的要點字(key),函數(shù)將它與已有的信息行列對象的要點字進行比較來判斷信息行列對象是否已經(jīng)創(chuàng)立。而函數(shù)進行的詳細操作是由第二個參數(shù)msgflg控制的。它能夠取下邊的幾個值:IPC_CREAT:假如信息行列對象不存在,則創(chuàng)立之,不然則進行翻開操作;IPC_EX
31、CL:和IPC_CREAT一同使用(用”|連”接),假如信息對象不存在則創(chuàng)立之,不然產(chǎn)生一個錯誤并返回。假如獨自使用IPC_CREAT標(biāo)記,msgget()函數(shù)要么返回一個已經(jīng)存在的消息行列對象的表記符,要么返回一個新成立的信息行列對象的表記符。假如將IPC_CREAT和IPC_EXCL標(biāo)記一同使用,msgget()將返回一個新建的信息對象的表記符,或許返回-1。假如信息行列對象已存在,IPC_EXCL標(biāo)記自己并無太大的意義,但和IPC_CREAT標(biāo)記一同使用能夠用來保證所得的信息行列對象是新創(chuàng)立的而不是翻開的已有的對象。除了以上的兩個標(biāo)記之外,在msgflg標(biāo)記中還能夠夠有存取權(quán)限控制符。這
32、類控制符的意義和文件系統(tǒng)中的權(quán)限控制符是近似的。3.msgsnd()函數(shù)頭文件:#include#include#include函數(shù)原型:intmsgsnd(intmsqid,constvoid*msgp,inttmsgsz,intmsgflg);函數(shù)說明:在信息行列進步行收發(fā)信息,為了發(fā)送信息,調(diào)用進度抵信息行列進行寫入時必然有寫權(quán)能。成功履行時返回0,失敗時返回-1。此中msgqid是返回信息行列的描繪符;msgp是指向用戶信息緩沖區(qū)的一個構(gòu)造體指針。緩沖區(qū)中包含消-16-操作系統(tǒng)實驗指導(dǎo)書息種類和信息正文,即longmtype;/*信息種類*/charmtext;/*信息的文本*/msg
33、sz指示由msgp指向的數(shù)據(jù)構(gòu)造中字符數(shù)組的長度;即信息的長度。這個數(shù)組的最大值由MSG-MAX()系統(tǒng)可調(diào)用參數(shù)來確立。msgflag參數(shù)是控制函數(shù)行為的標(biāo)記,取值能夠是:0,表示忽視。若在標(biāo)記msgflag中未設(shè)置IPC_NOWAIT位,則當(dāng)該信息行列中的字節(jié)數(shù)超出最大值時,或系統(tǒng)范圍的消息數(shù)超出某一最大值時,調(diào)用msgsnd進度睡眠。假如設(shè)置IPC_NOWAIT,則在此狀況下,msgsnd立刻返回。對于msgsnd(),系統(tǒng)內(nèi)核須完成以下工作:(1)抵信息行列的描繪符和贊成權(quán)及信息長度等進行檢查。若合法才連續(xù)履行,不然返回;(2)系統(tǒng)內(nèi)核為信息分派信息數(shù)據(jù)區(qū)。將用戶信息緩沖區(qū)中的信息正文
34、,拷貝到信息數(shù)據(jù)區(qū);(3)分派信息首部,并將它鏈入信息行列的尾端。在信息首部中須填寫信息種類、信息大小和指向信息數(shù)據(jù)區(qū)的指針等數(shù)據(jù);(4)改正信息行列頭中的數(shù)據(jù),如行列中的信息數(shù)、字節(jié)總數(shù)等。最后,喚醒等候信息的進度。4.msgrcv()函數(shù)頭文件:#include#include#include函數(shù)原型:intmsgrcv(intmsqid,void*msgp,intmsgsz,longmsgtyp,intmsgflg);函數(shù)說明:msgrcv()函數(shù)用來接收一信息。從指定的信息行列中接收指定種類的信息。此中,msgqid,msgp,msgsz,msgflg與msgsnd中的對應(yīng)參數(shù)相像,m
35、sgtyp是規(guī)定要讀的信息種類,msgflg規(guī)定假如該行列無信息,系統(tǒng)內(nèi)核應(yīng)做的操作,是控制函數(shù)行為的標(biāo)記,取值能夠是:0,表示忽視;IPC_NOWAIT,假如信息行列為空,則返回一個ENOMSG,并將控制權(quán)交回調(diào)用函數(shù)的進度。假如不指定這個參數(shù),那么進度將被擁堵直到函數(shù)能夠從行列中獲得符合條件的信息為止。這樣時設(shè)置了IPC_NOWAIT標(biāo)記,則立刻返回,若在flag中設(shè)置了MS_NOERROR,且所接收的信息大于size,則系統(tǒng)內(nèi)核截斷所接收的信息。對于msgrcv系統(tǒng)調(diào)用,系統(tǒng)內(nèi)核須完成下述工作:(1)抵信息行列的描繪符和贊成權(quán)等進行檢查。若合法,就往下履行;不然返回;(2)依據(jù)msgty
36、p的不同樣分紅三種狀況辦理:msgtyp=0,接收該行列的第一個信息,并將它返回給調(diào)用者;msgtyp為正整數(shù),接收種類type的第一個信息;-17-操作系統(tǒng)實驗指導(dǎo)書msgtyp為負整數(shù),接收小于等于type絕對值的最低種類的第一個信息。(3)當(dāng)所返回信息大小等于或小于用戶的懇求時,系統(tǒng)內(nèi)核便將信息正文拷貝到用戶區(qū),并從信息行列中刪除此信息,此后喚醒睡眠的發(fā)送進度。但假如信息長度比用戶要求的大時,則做犯錯返回。5.msgctl()函數(shù)頭文件:#include#include#include函數(shù)原型:intmsgctl(intmsgqid,intcmd,structmsqid_ds*buf);
37、函數(shù)說明:系統(tǒng)調(diào)用msgctl()用來控制抵信息行列的操作。此中,函數(shù)調(diào)用成功時返回0,不可以功則返回-1。buf是用戶緩沖區(qū)地點,供用戶寄存控制參數(shù)和查問結(jié)果;cmd是規(guī)定的命令。命令可分三類:(1)IPC_STAT。查問相關(guān)信息行列狀況的命令。如查問行列中的信息數(shù)量、行列中的最大字節(jié)數(shù)、最后一個發(fā)送信息的進度表記符、發(fā)送時間等;(2)IPC_SET。按buf指向的構(gòu)造中的值,設(shè)置和改變相關(guān)信息行列屬性的命令。如改變信息行列的用戶表記符、信息行列的贊成權(quán)等;(3)IPC_RMID。除去信息行列的表記符。msgqid_ds構(gòu)造定義以下:structmsgqid_dsstructipc_perm
38、msg_perm;/*贊成權(quán)構(gòu)造*/shortpad17;/*由系統(tǒng)使用*/ushortmsg_qnum;/*行列上信息數(shù)*/ushortmsg_qbytes;/*行列上最大字節(jié)數(shù)*/ushortmsg_lspid;/*最后發(fā)送信息的PID*/ushortmsg_lrpid;/*最后接收信息的PID*/time_tmsg_stime;/*最后發(fā)送信息的時間*/time_tmsg_rtime;/*最后接收信息的時間*/time_tmsg_ctime;/*最后改正時間*/;structipc_permushortuid;/*目前用戶*/ushortgid;/*目行進度組*/ushortcuid;/
39、*創(chuàng)立用戶*/ushortcgid;/*創(chuàng)立進度組*/ushortmode;/*存取贊成權(quán)*/shortpid1;longpad2;/*由系統(tǒng)使用*/樣例程序-18-操作系統(tǒng)實驗指導(dǎo)書/client_ex.c發(fā)送端#include#include#include#include#include#defineMSGKEY75structmsgformlongmtype;charmtext1024;msg;intmsgqid;voidclient()msgqid=msgget(MSGKEY,0777);/*翻開75#信息行列*/msg.mtype=1;msg.mtext1=a;printf(cli
40、ent)sentn);msgsnd(msgqid,&msg,1024,0);/*發(fā)送信息*/exit(0);intmain()client();/server_ex.c接收端#include#include#include#include#include#defineMSGKEY75structmsgformlongmtype;charmtext1024;msg;intmsgqid;voidserver()msgqid=msgget(MSGKEY,0777|IPC_CREAT);/*創(chuàng)立75#信息行列*/msgrcv(msgqid,&msg,1024,0,0);/*接收信息*/printf(%
41、c,msg.mtextmsg.mtype);-19-操作系統(tǒng)實驗指導(dǎo)書printf(server)receivedn);msgctl(msgqid,IPC_RMID,0);/*刪除信息行列,送還資源*/exit(0);intmain()server();任務(wù)二使用共享儲蓄區(qū)通訊實驗基本源理共享儲蓄區(qū)(ShareMemory)是UNIX系統(tǒng)中通訊速度最高的一種通訊系統(tǒng)。該系統(tǒng)可使若干進度共享主存中的某一個地區(qū),且使該地區(qū)出現(xiàn)(照耀)在多個進度的虛地點空間中。另一方面,一個進度的虛地點空間中又可連結(jié)多個共享儲蓄區(qū),每個共享儲蓄區(qū)都有自己的名字。當(dāng)進度間欲利用共享儲蓄區(qū)進行通訊時,必然先在主存中成立
42、一共享儲蓄區(qū),此后將它附接到自己的虛地點空間上。此后,進度對該區(qū)的接見操作,與對其虛地點空間的其余部分的操作完滿同樣。進度之間即可經(jīng)過對共享儲蓄區(qū)中數(shù)據(jù)的讀、寫來進行直接通訊。圖4.1列出二個進度經(jīng)過共享一個共享儲蓄區(qū)來進行通訊的例子。此中,進度A將成立的共享儲蓄區(qū)附接到自己的AA地區(qū),進度B將它附接到自己的BB地區(qū)。進度A的虛空間內(nèi)存地點進度B的虛空間正文正文數(shù)據(jù)數(shù)據(jù)AB共享存A儲區(qū)B棧棧圖4.1共享儲蓄區(qū)應(yīng)該指出,共享儲蓄區(qū)系統(tǒng)只為進度供給了用于實現(xiàn)通訊的共享儲蓄區(qū)和對共享儲蓄區(qū)進行操作的手段,但是并未供給對該區(qū)進行互斥接見及進度同步的舉措。因此當(dāng)用戶需要使用該系統(tǒng)時,必然自己設(shè)置同步和互
43、斥舉措才能保證明現(xiàn)正確的通訊。2.shmget()函數(shù)頭文件:#include#include#include-20-操作系統(tǒng)實驗指導(dǎo)書函數(shù)原型:intshmget(key_tkey,size_tsize,intshmflg);函數(shù)說明:獲得一個共享內(nèi)存表記符或創(chuàng)立一個共享內(nèi)存對象并返回共享內(nèi)存表記符。此中,key是共享儲蓄區(qū)的名字;size是其大?。ㄒ宰止?jié)計);shmflg是用戶設(shè)置的標(biāo)記,如IPC_CREAT。IPC_CREAT表示若系統(tǒng)中還沒有指名的共享儲蓄區(qū),則由系統(tǒng)內(nèi)核成立一個共享儲藏區(qū);若系統(tǒng)中已有共享儲蓄區(qū),便忽視IPC_CREAT,并返回此共享內(nèi)存的表記符。在shmflg標(biāo)記中
44、還能夠夠有存取權(quán)限控制符。這類控制符的意義和文件系統(tǒng)中的權(quán)限控制符是近似的。3.shmat()函數(shù)頭文件:#include#include#include函數(shù)原型:void*shmat(intshmid,constvoid*shmaddr,intshmflg);函數(shù)說明:把共享內(nèi)存區(qū)對象照耀到調(diào)用進度的地點空間,系統(tǒng)調(diào)用的返回值是共享儲蓄區(qū)所附接到的進度虛地點。連結(jié)共享內(nèi)存表記符為shmid的共享內(nèi)存,連結(jié)成功后把共享內(nèi)存區(qū)對象照耀到調(diào)用進度的地點空間,隨后可像當(dāng)?shù)乜臻g同樣訪問。此中,shmid是共享儲蓄區(qū)的表記符;shmaddr是用戶給定的,將共享儲蓄區(qū)附接到進度的虛地點空間;shmflg規(guī)
45、定共享儲蓄區(qū)的讀、寫權(quán)限,以及系統(tǒng)能否應(yīng)付用戶規(guī)定的地點做舍入操作。其值為SHM_RDONLY時,表示只好讀;其值為0時,表示可讀、可寫;其值為SHM_RND(取整)時,表示操作系統(tǒng)在必需時舍去這個地點。4.shmdt()函數(shù)頭文件:#include#include#include函數(shù)原型:intshmdt(constvoid*shmaddr);函數(shù)說明:與shmat函數(shù)相反,是用來斷開與共享內(nèi)存附帶點的地點,嚴禁本進度接見此共享內(nèi)存。此中,shmaddr是要斷開連結(jié)的虛地點,亦即從前由連結(jié)的系統(tǒng)調(diào)用shmat()所返回的虛地點。調(diào)用成功時,返回0值,調(diào)用不可以功,返回-1。本函數(shù)調(diào)用其實不刪
46、除所指定的共享內(nèi)存區(qū),而但是將先前用shmat函數(shù)連結(jié)(attach)好的共享內(nèi)存走開(detach)目前的進度。5.shctl()函數(shù)-21-操作系統(tǒng)實驗指導(dǎo)書頭文件:#include#include#include函數(shù)原型:intshmctl(intshmid,intcmd,structshmid_ds*buf);函數(shù)說明:系統(tǒng)調(diào)用shmctl()用來控制對共享儲蓄區(qū)的操作,對其狀態(tài)信息進行讀取和改正。此中,shmid是共享儲蓄區(qū)的表記符,buf是用戶緩沖區(qū)地點,cmd是操作命令。命令可分為多各樣類:(1)用于查問相關(guān)共享儲蓄區(qū)的狀況。如其長度、目前連結(jié)的進度數(shù)、共享區(qū)的創(chuàng)立者表記符等;(
47、2)用于設(shè)置或改變共享儲蓄區(qū)的屬性。如共享儲蓄區(qū)的贊成權(quán)、目前連結(jié)的進度計數(shù)等;(3)對共享儲蓄區(qū)的加鎖和解鎖命令;(4)刪除共享儲蓄區(qū)表記符等。上述的查問是將shmid所指示的數(shù)據(jù)構(gòu)造中的相關(guān)成員,放入所指示的緩沖區(qū)中;而設(shè)置是用由buf所指示的緩沖區(qū)內(nèi)容來設(shè)置由shmid所指示的數(shù)據(jù)構(gòu)造中的相應(yīng)成員。cmd有以下幾種數(shù)值:IPC_STAT:獲得共享內(nèi)存的狀態(tài),把共享內(nèi)存的shmid_ds構(gòu)造復(fù)制到buf中;IPC_SET:改變共享內(nèi)存的狀態(tài),把buf所指的shmid_ds構(gòu)造中的uid、gid、mode復(fù)制到共享內(nèi)存的shmid_ds構(gòu)造內(nèi);IPC_RMID:刪除這片共享內(nèi)存樣例程序/cl
48、ient_ex.c發(fā)送端#include#include#include#include#include#defineSHMKEY75intshmid,i;int*addr;voidclient()inti;shmid=shmget(SHMKEY,1024,0777);/*翻開共享儲蓄區(qū)*/addr=shmat(shmid,0,0);/*獲得共享儲蓄區(qū)首地點*/while(*addr!=-1);printf(client)sentn);*addr=100;-22-操作系統(tǒng)實驗指導(dǎo)書exit(0);intmain()client();/server_ex.c接收端#include#include
49、#include#include#include#defineSHMKEY75intshmid,i;int*addr;voidserver()shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);/*創(chuàng)立共享儲蓄區(qū)*/addr=shmat(shmid,0,0);/*獲得首地點*/*addr=-1;while(*addr=-1);printf(%d,*addr);printf(server)receivedn);shmctl(shmid,IPC_RMID,0);/*取消共享儲蓄區(qū),送還資源*/exit(0);intmain()server();四、實驗內(nèi)容1.依據(jù)信息
50、傳達機理,使用系統(tǒng)調(diào)用msgget(),msgsnd(),msgrev(),及msgctl()編制一長度為k的信息發(fā)送和接收的程序,要求在程序中完成10次信息的發(fā)送和接收,每次發(fā)送信息結(jié)束和接收信息結(jié)束都需給出相應(yīng)的屏幕提示,且每次發(fā)送的的內(nèi)容好多于一個字符,并能在接收端輸出。依據(jù)共享儲蓄區(qū)原理,使用系統(tǒng)調(diào)用shmget(),shmat(),shmdt(),及shctl()編制程序,要求創(chuàng)立一個長度為k的共享儲蓄區(qū),并完成10次數(shù)據(jù)的發(fā)送和接收,每次發(fā)送數(shù)據(jù)結(jié)束和接收數(shù)據(jù)結(jié)束都需給出相應(yīng)的屏幕提示,且每次發(fā)送的的數(shù)據(jù)應(yīng)能在接收端輸出。五、實驗報告要求列出實驗內(nèi)容所要求的程序清單,并以截圖形式記
51、錄相應(yīng)運轉(zhuǎn)結(jié)果。對實驗運轉(zhuǎn)結(jié)果進行分析:試比較實驗中兩種方法實現(xiàn)進度通訊的不同樣之處。-23-操作系統(tǒng)實驗指導(dǎo)書實驗項目五儲蓄管理一、實驗種類本實驗為考證性實驗。二、實驗?zāi)康氖炝?xí)內(nèi)存安閑分區(qū)的分派方式;理解動向分區(qū)儲蓄管理方式;掌握動向分區(qū)的分派與回收的過程。三、實驗預(yù)備知識實驗基本源理使用一個鏈表來模擬內(nèi)儲藏藏空間,成立內(nèi)存塊來記錄內(nèi)存分派使用狀況,經(jīng)過隨機產(chǎn)生進度及其所需要的內(nèi)存來模擬真切的進度。經(jīng)過給進度分派內(nèi)存及回收來實現(xiàn)對動向不等長儲蓄管理方法。實驗中使用的數(shù)據(jù)構(gòu)造(1)內(nèi)存塊結(jié)點包含參數(shù)進度名name;初步地點address;長度length;標(biāo)記flag,表示該塊能否被分派。2)為簡單起見,只設(shè)內(nèi)存分派記錄鏈表數(shù)據(jù)構(gòu)造,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文山2025年云南文山市公安局第一批警務(wù)輔助人員招聘47人筆試歷年參考題庫附帶答案詳解
- 怒江2025年云南怒江州財政局公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 廣州2024年廣東廣州市海珠區(qū)江海街道基層公共就業(yè)創(chuàng)業(yè)服務(wù)崗位招募筆試歷年參考題庫附帶答案詳解
- 2025年納豆香菇絲項目可行性研究報告
- 2025年電動橋式圓角擋閘項目可行性研究報告
- 2025至2031年中國潔凈吹淋傳遞窗行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國朱雀系列外墻磚行業(yè)投資前景及策略咨詢研究報告
- 2025年插件式鋁基板項目可行性研究報告
- 2025年定柱懸臂起重機項目可行性研究報告
- 2025至2031年中國保爾塑像行業(yè)投資前景及策略咨詢研究報告
- 2023-2024學(xué)年九年級三調(diào)語文試卷(含答案)
- 醫(yī)學(xué)教程 常見急腹癥的超聲診斷課件
- DB11T 1481-2024生產(chǎn)經(jīng)營單位生產(chǎn)安全事故應(yīng)急預(yù)案評審規(guī)范
- 《氓》教學(xué)設(shè)計 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 《網(wǎng)店運營與管理》第3版 課件全套 白東蕊 第1-11章 網(wǎng)上開店概述- 移動網(wǎng)店運營
- 2024年全國國家電網(wǎng)招聘之電網(wǎng)計算機考試歷年考試題(附答案)
- 化學(xué)元素周期表注音版
- 藥物過敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 2024福建省廈門市總工會擬錄用人員筆試歷年典型考題及考點剖析附答案帶詳解
- 四川省康定市大槽門金礦資源儲量核實報告
評論
0/150
提交評論