




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、許 昌 學 院操作系統(tǒng)實驗報告手冊學號: 1101120207 姓名: 孫 萍 班級: 計科2班 成績: 2014年02月許昌學院信息工程學院操作系統(tǒng)實驗報告實驗一 Linux操作系統(tǒng)的安裝與配置 實驗時間: 實驗地點:計科樓107 成績:【實驗目的】1. 了解Linux操作系統(tǒng)的發(fā)展歷史,熟悉Linux發(fā)行版和Linux內核的區(qū)別。2. 了解Linux操作系統(tǒng)安裝的軟硬件條件,熟悉Linux系統(tǒng)的安裝方法,特別是如何在虛擬機上安裝、配置該操作系統(tǒng)。3. 了解在多操作系統(tǒng)環(huán)境下如何本地安裝(光盤安裝)Linux系統(tǒng)。4. 了解Linux操作系統(tǒng)的文件系統(tǒng)結構及其特點,熟悉Linux系統(tǒng)的登入和
2、登出過程【實驗內容】1、安裝并配置vmware虛擬機,設置運行環(huán)境,特別要啟動NAT和USB支持。2、在vmware上安裝Red Hat Linux 9.0,指定最大空間為20G以上(具體視硬盤剩余空間而定)。當對虛擬磁盤空間分區(qū)時,需至少指定10G給“/”(主目錄),分區(qū)格式為ext3,還需指定與內存容量相同的swap(交換)區(qū)。3、安裝完Red Hat Linux 9.0系統(tǒng)后,需配置硬件(如網卡、顯卡等)和軟件(如編程開發(fā)軟件等)。4、啟動Linux系統(tǒng)和退出Linux系統(tǒng)【實驗步驟和結果】1、啟動VMware,建立Linux虛擬機,完成后的結果如下圖所示。2、在vmware上安裝Red
3、 Hat Linux 9.0【實驗總結和體會】 通過安裝虛擬機等操作讓我認識到Linux這系統(tǒng)一些基本特點,有別于我們機器上使用的系統(tǒng),發(fā)現(xiàn)原來通過虛擬機這個軟件還可以在已有系統(tǒng)的基礎上使用其他操作系統(tǒng)。這有利于我們學習。實驗二 Linux操作系統(tǒng)的運行模式 實驗時間: 實驗地點:計科樓107 成績:【實驗目的】1. 熟悉Linux系統(tǒng)終端工作環(huán)境的使用,了解Linux命令的格式,學會利用常用的Linux命令來完成系統(tǒng)的管理和維護。2. 了解X-Windows的特點,熟悉Linux圖形用戶接口的使用,掌握GNOME桌面環(huán)境的基本操作。【實驗內容】1、通過虛擬機啟動并登陸Linux系統(tǒng)。2、打開
4、Linux的虛擬終端窗口,借助Linux的在線幫助指令man或help了解Linux系統(tǒng)常用的命令的功能以及格式,練習并掌握常用的Linux操作命令,如ls、who、w、pwd、ps、pstree、top等。3、在圖形界面環(huán)境中,查看GNOME桌面的面板和桌面,設置GNOME,包括屏幕保護程序、更改背景和指定關聯(lián)程序等。【實驗步驟和結果】1、登陸2、Linux部分操作指令LSWHOWPWDPSpstreeTop3、屏幕保護程序指定關聯(lián)程序更改桌面背景【實驗總結和體會】 當實驗中我找不到具體在那個窗口進行操作時,我繼續(xù)尋找通過網絡進行百度詢問。通過這次的實驗讓我了解了Linux的強大功能,了解到
5、Linux有許多方便快捷的設置基本配置的方法,這使我更喜歡上Linux的使用,使我在以后是相關操作實驗中有更濃厚的興趣。不管是什么樣的操作系統(tǒng)都有它的優(yōu)缺點,我知道我現(xiàn)在對Linux還只是基礎的了解,以后有更多的內容需要我學習和掌握。實驗三 Linux操作系統(tǒng)的高級應用 實驗時間: 實驗地點:計科樓107 成績:【實驗目的】1. 了解OpenOffice.Org集成辦公軟件,掌握利用OpenOffice.Org的套件來完成文檔和圖片的處理。2. 了解Linux網絡管理的知識,熟悉Linux網絡配置的方法,掌握在Linux環(huán)境下配置Web服務器和ftp服務的方法。【實驗內容】1、配置Linux系
6、統(tǒng)的網絡環(huán)境,安裝FTP和Web服務器,并配置相關的屬性,練習WINDOWS和UNIX之間的文件交換。2、利用FTP程序上傳自己的照片到FTP服務器,利用OpenOffice的文字處理工具OpenOffice Writer制作一份表格形式的個人簡歷,必須包含姓名和照片,并保存為網頁格式。3、將個人簡歷網頁設置為WEB服務器的首頁,然后在客戶端利用瀏覽器訪問。【實驗步驟和結果】1、2、點擊編輯設置ip地址與主機相同,只端口號不同重新啟動網絡服務:安裝ftp軟件包并設置新建用戶/組登陸虛擬機ftp并上傳文件【實驗總結和體會】 寫出實驗過程中遇到問題以及解決的方法和實驗的收獲。實驗過程不管用橋的連接
7、還是NET的連接,都不能實現(xiàn)ftp文件的上傳跟共享,到目前為止我也不是很清楚到底是哪里出了問題,即便是關了防火墻也不行,能做到地步為上圖顯示。實驗四 Linux進程管理 實驗時間: 實驗地點:計科樓107 成績:【實驗目的】1. 掌握GCC編譯器的用法,學會利用GCC編輯器來編輯C語言程序,學會利用GDB調試器來調試C語言程序。2. 掌握在Linux環(huán)境下觀察進程運行情況和CPU工作情況的命令。3. 了解fork()系統(tǒng)調用,掌握利用fork()創(chuàng)建進程的方法。4. 了解Linux系統(tǒng)其他與進程相關的系統(tǒng)調用,如exec、wait和exit等。5. 了解Linux常用的進程通信機制。【實驗內容
8、】1、利用Linux的文字編輯器編寫一個計算機100個自然數(shù)和的C語言程序,并用gcc編譯該程序,運行該程序。2、編寫一段程序,使用系統(tǒng)調用fork( )創(chuàng)建兩個子進程。當此程序運行時,在系統(tǒng)中有一個父進程和兩個子進程活動。讓每一個進程在屏幕上顯示一個字符:父進程顯示'a',子進程分別顯示字符'b'和字符'c'。試觀察記錄屏幕上的顯示結果,并分析原因。3、修改上述程序,每一個進程循環(huán)顯示一句話。子進程顯示'daughter '及'son ',父進程顯示 'parent ',觀察結果,分析原因。4、用
9、fork( )創(chuàng)建一個進程,再調用exec( )用新的程序替換該子進程的內容。5、修改步驟3中的程序,用lockf( )來給每一個進程加鎖,以實現(xiàn)進程之間的互斥。【實驗步驟和結果】使用命令建立文件1.c輸入命令gcc -o test 1.c2、#include"stdio.h"main()int p1=0,p2=0;if(p1=fork() /創(chuàng)建子進程1printf("bn");elseif(p2=fork()/創(chuàng)建子進程2printf("cn"); elseprintf("an");/父進程 3、#includ
10、e"stdio.h"main()int p1=0,p2=0,i;if(p1=fork() for(i=0;i<500;i+) printf("daughter%dn",i); printf("daughter%dn",i+); printf("daughter%dn",i+2); elseif(p2=fork()for(i=0;i<500;i+) printf("son%dn",i); printf("son%dn",i+); printf("son%d
11、n",i+2); elsefor(i=0;i<500;i+) printf("parent%dn",i); printf("parent%dn",i+); printf("parent%dn",i+2); 修改后的結果如圖:從上面可以看出:由于進程的并發(fā)執(zhí)行的原因,同一個程序會出現(xiàn)不同的運行結果。4、5、由上面的運行結果可以看出在程序中使用lockf()來給每一個子進程加鎖,可以實現(xiàn)進程之間的互斥。【實驗總結和體會】進程之間存在很多可能性。實驗五 進程調度模擬程序的設計與實現(xiàn) 實驗時間: 實驗地點: 計科樓107 成績
12、:【實驗目的】在采用多道程序設計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài)。當就緒進程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器。本實驗模擬在單處理器情況下的處理器調度,幫助學生加深了解處理器調度的工作。【實驗內容】1、編寫程序實現(xiàn)進程調度調度算法先來先服務、優(yōu)先級高優(yōu)先和時間片輪轉調度算法。(采用的編程語言不限)2、輸入數(shù)據(jù),輸出運行結果。【實驗步驟和結果】1、 先來先服務#include<stdio.h>float t,d;/定義兩個全局變量struct/定義一個結構體數(shù)組,包括進程信息int id;float arrivetime;float requ
13、esttime;float starttime;float endtime;float runtime;float DQRuntime;int status;arraytask4;/定義初始化的結構體數(shù)組int gettask()/給結構體數(shù)組賦值,輸入到達、服務時間int i;float a;for(i=0;i<4;i+) arraytaski.id=i+1; printf("input the number:"); printf("input the arrivetime of arraytask%d:",i);/用戶輸入進程時間,初始值為0
14、scanf("%f",&a); arraytaski.arrivetime=a; printf("input the requesttime of arraytask%d:",i); scanf("%f",&a); arraytaski.requesttime=a; arraytaski.starttime=0; arraytaski.endtime=0; arraytaski.runtime=0; arraytaski.status=0;/開始時默認標志位為0 int FCFS()/定義FCFS中尋找未執(zhí)行的進程的最
15、先到達時間int i,j,w=0;/在結構體數(shù)組中找到一個未執(zhí)行的進程for(i=0;i<4;i+)if(arraytaski.status=0)t=arraytaski.arrivetime;w=1;if(w=1) break; for(i=0;i<4;i+)/查找數(shù)組中到達時間最小未執(zhí)行的進程if(arraytaski.arrivetime<t&&arraytaski.status=0) t=arraytaski.arrivetime;for(i=0;i<4;i+)/返回最小到達時間的數(shù)組的下標if(arraytaski.arrivetime=t)r
16、eturn i; int SJF()/定義FCFS中尋找未執(zhí)行的進程的最先到達時間int i,x=0,a=0,b=0;/判斷是不是第一次執(zhí)行的進程float g;for(i=0;i<4;i+)if(arraytaski.status=1)g=arraytaski.endtime;x=1; if(x=0)/第一個執(zhí)行的進程按FCFSt=arraytask0.arrivetime;for(i=0;i<4;i+)if(arraytaski.arrivetime<t)t=arraytaski.arrivetime;a=i;return a;elsefor(i=0;i<4;i+)
17、if(arraytaski.endtime>g)g=arraytaski.endtime; for(i=0;i<4;i+)if(arraytaski.status=0&& arraytaski.arrivetime<<=g)t=arraytaski.requesttime;a=i;b=1;/判斷有沒有進程在前一個進程完成前到達 if(b!=0)/有進程到達就按SJF算法for(i=0;i<4;i+)if(arraytaski.status=0&& arraytaski.arrivetime<=g&& array
18、taski.requesttime<t)t=arraytaski.requesttime;a=i;return a;else/否則就按FCFS算法for(i=0;i<4;i+)if(arraytaski.status=0)t=arraytaski.arrivetime;for(i=0;i<4;i+)if(arraytaski.status=0&& arraytaski.arrivetime<t)t=arraytaski.arrivetime;a=i;return a; new(int s)/定義執(zhí)行進程后相關數(shù)據(jù)的修改int i,g=0;for(i=0;
19、i<4;i+) if(arraytaski.status=0)continue;elseg=1;break;if(g=0)/當處理的是第一個來執(zhí)行的進程時執(zhí)行 arraytasks.starttime=arraytasks.arrivetime; arraytasks.endtime=arraytasks.requesttime+arraytasks.arrivetime; arraytasks.runtime=arraytasks.requesttime; arraytasks.status=1; g=2; if(g=1)/當處理的不是第一個未執(zhí)行的進程時執(zhí)行 arraytasks.s
20、tatus=1;for(i=0;i<4;i+)if(arraytaski.status=1)d=arraytaski.endtime;for(i=0;i<4;i+)/查找最后執(zhí)行的進程的完成時間 if(arraytaski.endtime>d && arraytaski.status=1)d=arraytaski.endtime;if(arraytasks.arrivetime<d)/判斷修改的進程的到達的時間是否在前一個執(zhí)行的進程的完成時間前面arraytasks.starttime=d;elsearraytasks.starttime=arrayta
21、sks.arrivetime; arraytasks.endtime=arraytasks.starttime+arraytasks.requesttime;arraytasks.runtime=arraytasks.endtime-arraytasks.arrivetime;arraytasks.DQRuntime=arraytasks.runtime/arraytasks.requesttime; printfresult(int j)/定義打印函數(shù)printf("%dt",arraytaskj.id);printf("%5.2ft",arrayta
22、skj.arrivetime);printf("%5.2ft",arraytaskj.requesttime);printf("%5.2ft",arraytaskj.starttime);printf("%5.2ft",arraytaskj.endtime);printf("%5.2ft",arraytaskj.runtime);printf("%5.2ft",arraytaskj.DQRuntime); main()int i,b,k,a,c=0;int d4;clrscr();printf(
23、"t F.FCFS n");printf("t S.SJF n");printf("t Q.EXIT n");for(i=0;i+)if(c)break;printf("please input the number a:n");scanf("%d",&a);swith(a)case Q:c=1;break;case F:printf("please input the different-ArriveTime of arraytaskn");gettask();pr
24、intf("*the result of FCFSn");printf("NumbertArrivetServertStarttFinishtTurnovetTake power turnover timen");for(b=0;b<4;b+)/調用兩個函數(shù)改變結構體數(shù)的值k=FCFS();db=k;new(k); for(b=0;b<4;b+)printfresult(db);/調用打印函數(shù)打出結果continue;case S:printf("please input the different-RequestTime of a
25、rrayTasksn");gettask();printf("*the result of SJFn");printf("NumbertArrivetRequesttStarttEndtRuntDQRun timen"); for(b=0;b<4;b+)k=SJF();db=k;new(k); for(b=0;b<4;b+)printfresult(db);continue;default:printf("the number Error,please input another number!n");2、 優(yōu)先
26、級高優(yōu)先#include"stdio.h"#include"conio.h"typedef struct pcb/定義結構char name5;struct pcb *next;int needtime;int priority;char state5;Node;Node *create_process(int n)/創(chuàng)建隊列Node *head,*s,*t;int time,i=0,j;char pname5;head=(Node *)malloc(sizeof(Node);printf("please input process name:
27、");scanf("%s",&pname);strcpy(head->name,pname);printf("please input need time:");scanf("%d",&time);head->needtime=time;printf("please input priority":);scanf("%d",&j);head->priority=j;strcpy(head->state,"ready")
28、;head->next=NULL;t=head;for(i=1;i<n;i+)s=(Node *)malloc(sizeof(Node);printf("please input process name:");getchar();gets(pname);strcpy(s->name,pname);printf("please input need time:");scanf("%d",&time);s->needtime=time;printf("please input priority&
29、quot;:);scanf("%d",&j);s->priority=j;strcpy(s->state,"ready");s->next=NULL;t->next=s;t=s;return head; pri_process(Node *p)/輸出進程隊列int i;Node *q;q=p->next;printf("nnametneedtimetprioritytstaten");while(q!=NULL)printf("%5st%2dt%2dt%5sn",q->n
30、ame,q->needtime,q->priority,q->state);q=q->next; Node *order(Node head_srot)/對進程的優(yōu)先級進行排序Node *p,*s,*q,*head,*r,*t;int m,pr;char name5;head=head_srot;p=head->next;r=p;t=p;q=p->next;while(r!=NULL)while(q!=NULL)if(p->priority<q->priority)m=p->priority;p->priority=q->
31、priority;q->priority=m;strcmp(name,p->name)name;strcmp(q->name,name);pr=p->needtime;p->needtime=q->needtime;q->needtime=pr;p=q;q=q->next;r=r->next;p=t;q=p->next;return (head_srot); main()Node *p=NULL,*head=NULL,*m=NULL,*z=NULL,*n=NULL;int j,time,x=0;char c,pname5;clrscr
32、();printf("please enter process number:");scanf("%d",&x);p=create_process(head);getchar();while(x>0)order(head);m=head->next;strcpy(m->state,"run");if(m->priority>=2);m->priority-;m->needtime-;if(head->next!=NULL);pri_process(head);if(m->n
33、eedtime=0)head->next=m->next;printf("%s has finishedn",m->name);free(m);x-;getchar();textmode(C80);textbackground(0);textcolor(4);printf("over!");getchar();top3、 時間片輪轉調度算法#include<string.h>#include<stdio.h>#include<conio.h>#include<graphics.h>#def
34、ine NULL 0typedef struct quen/定義結構體char pname8;int time1;int time2;char state;struct quen *next; Quen;main()Quen *q,*p,*head,*m;char str8,fint t,d,n;clrscr();textmode(c80);textbackground(0);textcolor(15);printf("please enter the maxnumber of nodes(n):n");/輸入進程數(shù)scanf("%d",&n);
35、d=n;if(d>0)printf("enter the pname:");scanf("%s",str);printf("enter the need time:");scanf("%d",&t);head=p=(Quen *)malloc(sizeof(Quen);strcpy(p->pname,str);p->time1=t;p->time2=0;p->state='R'p->next=NULL;head=p;getchar();-d; whie(d
36、>0)/構建隊列列表printf("enter the pname:");scanf("%s",str);printf("nenter the need time:");scanf("%d",&t);q=(Quen *)malloc(sizeof(Quen);strcpy(q->pname,str);q->time1=t;q->time2=0;q->state='R'q->next=NULL;p->next=q;p=q;-d;p->next=h
37、ead;q=head; printf("process name need time runned staticn");doprintf("%s%d%d%cn",q->pname,q->time1,q->time2,q->state);q=q->next;while(q!=head);printf("n");doif(head->time1>head->time2)head->time2+;if(head->time1=head->time2)head->stat
38、e='E'q=head;textbackground(0);printf("the running process is %sn",q->pname);printf("process name left time runned staticn");dotextcolor(15);printf("%s%d%d%cn",q->pname,q->time1,q->time2,q->state);q=q->next;while(q!=head);printf("n");h
39、ead=head->next;q=head;p->next=head; elseprintf("the running process is %sn",q->pname);printf("process name left time runned staticn");doprintf("%s%d%d%cn",q->pname,q->time1,q->time2,q->state);q=q->next;while(q!=head);printf("n");head=he
40、ad->next;q=head;p=p->next;printf("is it needing new process?(y or n)n");/是否加入新的進程 getchar();scanf("%c",&f);if(f='Y'|'y')getchar();printf("enter the new process pname:");scanf("%s",str);printf("nenter the new neededtime:");sc
41、anf("%d",&t);m=(Quen *)malloc(sizeof(Quen); strcpy(m->pname,str); m->time1=t; m->time2=0;m->state='R' m->next=NULL; if(q->next->state='E') p=m; head=m; p->next=head; q=head; else p->next=m; m->next=head; p=a; while(q->next->state!=
42、9;E');printf("the processes are finishedn");【實驗總結和體會】通過本實驗,讓我對進程或作業(yè)先來先服務、高優(yōu)先權和按時間片輪轉調度算法以及進程調度的概念和算法,有了更深入的了解;也初步了解了操作系統(tǒng)對作業(yè)處理的基本思想。實驗中也遇到很多難處。實驗六 常用頁面置換算法模擬程序的設計與實現(xiàn) 實驗時間: 實驗地點: 計科樓107 成績:【實驗目的】1. 掌握請求分頁頁面置換的過程,理解請求分頁虛擬內存的實現(xiàn)原理,加深對操作系統(tǒng)存儲管理技術的理解。2. 掌握常用OPT、FIFO和LRU頁面置換算法的思想以及原理。【實驗內容】1、編寫
43、程序實現(xiàn)請求分頁中的OPT、FIFO和LRU等頁面置換算法。(采用的變成語言不限)2、輸入數(shù)據(jù),輸出運行結果【實驗步驟和結果】#include"stdio.h"#include"stdlib.h"int msize;/定義全局變量 物理塊數(shù) int psize;/頁面號引用串個數(shù) int count;static int memery10=0;/物理塊中的頁號static int page100=0;/頁面號引用串static int temp10010=0;/輔助數(shù)組/置換算法函數(shù)void FIFO();void LRU();void OPT();/輔
44、助函數(shù)void printf(unsigned int t);main()int i,k,code;printf("請輸入物理塊數(shù)M(M>0&&M<=10):");scanf("%d",&msize);printf("n請輸入頁面號引用串個數(shù)P(P<=100):");scanf("%d",&psize);printf("n請依次輸入頁面號引用串(無需隔開):");for(i=0;i<psize;i+) scanf("%1d&quo
45、t;,&pagei);printf("n輸入的頁面號引用串為:");for(k=0;k<=(psize-1)/20;k+)for(i=20*k;(i<psize)&&(i<20*(k+1);i+)if(i+1)%20=0|(i+1)%20)&&(i=psize-1) printf("%dn",pagei); else printf("%dt",pagei); printf("*n");printf("tt請選擇頁面置換算法:n");pri
46、ntf("1、先進先出(FIFO)n2、最近最久未用(LRU)n");printf("3、最佳置換算法(OPT)n4、返回上一級n5、退出n");printf("*n");doprintf("請選擇操作:bb");scanf("%d",&code);switch(code)case 1:FIFO();break;case 2:LRU();break;case 3:OPT();break;case 4:printf("接下來你要返回上一級n");printf("
47、;請輸入物理塊數(shù)M(M>0&&M<=10):n");scanf("%d",&msize);printf("n請輸入頁面號引用串個數(shù)P(P<=100):");scanf("%d",&psize);printf("n請依次輸入頁面號引用串(無需隔開):");for(i=0;i<psize;i+) scanf("%1d",&pagei); printf("n輸入的頁面號引用串為:");for(k=0;k<
48、;=(psize-1)/20;k+)for(i=20*k;(i<psize)&&(i<20*(k+1);i+)if(i+1)%20=0|(i+1)%20)&&(i=psize-1) printf("%dn",pagei); else printf("%dt",pagei); break; case 5: printf("謝謝使用!n"); exit(0); default: printf("輸入錯誤,請重新輸入:"); while(code!=6);getchar();
49、void printf(unsigned int t)int i,j,k,l;int flag;for(k=0;k<=(psize-1)/20;k+)for(i=20*k;(i<psize)&&(i<20*(k+1);i+)if(i+1)%20=0|(i+1)%20)&&(i=psize-1) printf("%dn",pagei); else printf("%dt",pagei);for(j=0;j<msize;j+)for(i=20*k;(i<msize+20*k)&&(
50、i<psize);i+)if(i>=j)printf("|%d|n",tempij);elseprintf("|");for(i=msize+20*k;(i<psize)&&i<20*(k+1);i+)for(flag=0,l=0;l<msize;l+) if(tempij=tempi-1l) flag+; if(flag=msize)/頁面在物理塊中 printf(" ");else printf("|%d|n",tempij); /每行顯示20個if(i%20=0) continue;printf("n"); printf("缺頁次數(shù):%dn",t+msize);printf("缺頁率:%d/%dn",t+msize,psize);void FIFO()int memery10=0;int time10=0;/記錄進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴金屬礦床的生態(tài)環(huán)境影響評價考核試卷
- 自來水的水質保護與保障考核試卷
- 酒店業(yè)客戶體驗優(yōu)化策略考核試卷
- 口腔科門診主任年終總結
- 急救儀器常見故障及處理
- 文獻閱讀匯報核心要素與實踐方法
- 糖尿病疾病防治與健康管理
- 顱腦損傷疾病康復
- RS-MCPG-Standard-alpha-MCPG-Standard-生命科學試劑-MCE
- “學海拾珠”系列之跟蹤月報
- 2025至2030中國執(zhí)法系統(tǒng)行業(yè)經營效益及前景運行態(tài)勢分析報告
- 2025年廣東省萬閱大灣區(qū)百校聯(lián)盟中考二模語文試題(含答案)
- 【藝恩】出游趨勢洞察報告
- 護士理論考試試題及答案
- 學生因病缺課管理制度
- 2025年江蘇省蘇州園區(qū)星海中考英語二模試卷
- 福建省廈門市2023-2024學年高一下學期期末質量檢測歷史試題(解析版)
- 四川省成都市西川中學2025年八年級英語第二學期期末檢測模擬試題含答案
- 工程項目經理競聘演講稿
- 盾構施工總結(doc106頁)
- 分部驗收橋梁主體驗收評估報告
評論
0/150
提交評論