




版權(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é)與技術(shù)系實(shí)驗(yàn)報(bào)告2009 2010學(xué)年第1 學(xué)期課程 操作系統(tǒng)原理實(shí)驗(yàn)名稱編寫單通路i/o系統(tǒng)中的 設(shè)備分配程序?qū)W生姓名 馮阿雷 畢秋平 高健 寧陽(yáng)專業(yè)班級(jí) 07計(jì)本(1)班指導(dǎo)教師屠 菁2000 年 12 月一、實(shí)驗(yàn)?zāi)康氖炀氄莆諉瓮穒/o系統(tǒng)中的設(shè)備分配方法。二、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)要求實(shí)現(xiàn)模擬單通路i/o系統(tǒng)中的設(shè)備分配程序,有如下要求:1、設(shè)計(jì)系統(tǒng)設(shè)備表sdt、設(shè)備控制表dct、控制器表coct、通道表chct和邏輯設(shè)備表lut。2、提供給用戶各表目的初態(tài)。3、回答信息: 能夠分配時(shí),給出設(shè)備號(hào)、控制器號(hào)、通道號(hào), 否則,給出無(wú)法分配的回答,插入相應(yīng)的等待隊(duì)列。三、實(shí)驗(yàn)步驟
2、1、 任務(wù)分析為單通路i/o系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)備表sdt、設(shè)備控制表dct、控制器表coct、通道表chct和邏輯設(shè)備表lut五張表。用戶可以查看各表目的內(nèi)容,另外,程序?yàn)橛脩暨M(jìn)程分配設(shè)備,并且輸出分配結(jié)果,如果能夠分配,則給出設(shè)備號(hào)、控制器號(hào)、通道號(hào),否則,給出無(wú)法分配的回答,插入相應(yīng)的等待隊(duì)列。2、概要設(shè)計(jì)為實(shí)現(xiàn)本次實(shí)驗(yàn)任務(wù)要求,首先,定義sdt、dct、coct、chct、lut五張表,調(diào)用input()函數(shù)初始化各表內(nèi)容;其次,調(diào)用print()函數(shù),實(shí)現(xiàn)對(duì)上述四張表的輸出顯示;最后,調(diào)用add_process()函數(shù),為用戶進(jìn)程申請(qǐng)?jiān)O(shè)備,如果分配成功,給出設(shè)備號(hào)、控制器號(hào)、通道號(hào),否則,
3、給出無(wú)法分配的原因,并將該進(jìn)程插入相應(yīng)的等待隊(duì)列中。本程序包含如下3個(gè)模塊:(1) 主模塊,由函數(shù)main()組成。(2) 顯示表目模塊,由函數(shù)print()組成。(3) 分配設(shè)備模塊,由函數(shù)add_process()、process_run()等函數(shù)組成。繪制流程圖如下:運(yùn)行程序主函數(shù)運(yùn)行進(jìn)程申請(qǐng)?jiān)O(shè)備顯示sdt、coct、dct、chct、lut五張表退出判斷設(shè)備是否存在輸出無(wú)法分配原因判斷控制器是否忙輸出無(wú)法分配原因輸入所需設(shè)備名稱(輸入0退出申請(qǐng))判斷通道是否忙輸出無(wú)法分配原因給予分配,輸出分配信息ynynyn輸入0輸入非0 流程圖3、詳細(xì)設(shè)計(jì)和編碼通過(guò)以上的分析和初步設(shè)計(jì),已經(jīng)對(duì)本程序
4、作了初步了解。下面將對(duì)本程序的各個(gè)模塊作詳細(xì)的講解。(1)主函數(shù)模塊對(duì)各個(gè)表就行初始化,設(shè)置好各個(gè)表的狀態(tài),以及對(duì)各個(gè)步驟進(jìn)行函數(shù)調(diào)用來(lái)實(shí)現(xiàn)本實(shí)驗(yàn)的要求。(2)顯示表目模塊調(diào)用print()函數(shù),顯示出sdt系統(tǒng)設(shè)備表、dct設(shè)備控制表、coct控制器控制表、chct通道表和lut邏輯設(shè)備表五張表目,直接顯示各表中的設(shè)備類型、設(shè)備名稱和設(shè)備狀態(tài)等信息。(3) 分配設(shè)備模塊在此模塊中,首先調(diào)用add_process()函數(shù),要求用戶輸入所要申請(qǐng)的邏輯設(shè)備名稱,然后根據(jù)邏輯設(shè)備名稱查看lut表中的該設(shè)備是否存在,若不存在,則直接退出分配,輸出分配失敗原因,若存在,則繼續(xù)如下分析:a.分配設(shè)備。根據(jù)
5、lut表找到設(shè)備表,然后根據(jù)sdt表中指向dct表該設(shè)備的指針,檢索到dct設(shè)備控制表中該物理設(shè)備,檢查該設(shè)備的狀態(tài)信息busy。若忙,則將要求i/o的進(jìn)程插入到該設(shè)備的等待隊(duì)列中等待;若不忙,則繼續(xù)步驟(b)。b.分配控制器。根據(jù)設(shè)備控制表dct中的控制器表指針,可找到與此設(shè)備相連的控制器表coct,通過(guò)檢查該表中的狀態(tài)信息busy。若忙,則將要求i/o的進(jìn)程插入到等待該控制器的隊(duì)列中等待;若不忙,則把該控制器分配給進(jìn)程,繼續(xù)步驟(c)。c.分配通道。首先根據(jù)控制器表coct中的通道表指針找到與此控制器相連的通道表chct,從中了解此通道的狀態(tài)信息busy。若為忙,則把該進(jìn)程插入等待通道的隊(duì)
6、列chl中;若通道空閑,則表明本次i/o請(qǐng)求所需之i/o設(shè)備和相應(yīng)的控制器、通道都能得到,于是便可啟動(dòng)i/o設(shè)備開(kāi)始數(shù)據(jù)傳送。調(diào)用add_process()函數(shù)來(lái)實(shí)現(xiàn)上述步驟。分配完成后,將相應(yīng)的設(shè)備、控制器和通道的狀態(tài)信息busy置1。結(jié)束分配程序。4、調(diào)試分析本次程序設(shè)計(jì)的核心內(nèi)容在于設(shè)備的分配過(guò)程,一次分配只有在設(shè)備、控制器和通道三者都分配成功時(shí),這次分配才算成功。該程序的核心邏輯關(guān)系是先分配設(shè)備再分配控制器最后分配通道。當(dāng)三者都空閑并安全時(shí),才可分配,最終啟動(dòng)該i/o設(shè)備進(jìn)行數(shù)據(jù)傳送。5、測(cè)試結(jié)果運(yùn)行程序后,運(yùn)行結(jié)果如下圖1。圖1進(jìn)行初始化,運(yùn)行結(jié)果如下圖2圖2圖3各表的初始化狀態(tài)如圖
7、3。 圖3進(jìn)程分配設(shè)備結(jié)果如圖3四、實(shí)驗(yàn)總結(jié)通過(guò)本次實(shí)驗(yàn),充分的理解了單通道i/o設(shè)備分配程序,知道了設(shè)備表,控制器表,通道表以及其他表的數(shù)據(jù)結(jié)構(gòu),加深了對(duì)課本知識(shí)的理解,明白了設(shè)備分配的過(guò)程:先分配設(shè)備,接下來(lái)分配控制器,然后再分配通道,若成功就可以啟動(dòng)該i/o設(shè)備進(jìn)行數(shù)據(jù)傳送了。同時(shí),通過(guò)和同學(xué)一起做這個(gè)實(shí)驗(yàn),從中學(xué)習(xí)到了合作的經(jīng)驗(yàn),為以后的工作打下基礎(chǔ)。經(jīng)過(guò)編寫程序,復(fù)習(xí)了c語(yǔ)言程序。五、附錄源程序:#include#include#include#include#define name_num 10typedef struct _coct_listchar namename_num;s
8、truct _coct_list *next; coct_list;typedef struct _chctchar namename_num;/int state;/coct_list *coct_head;coct_list *coct_tail;struct _chct *next; chct;typedef struct _dct_listchar namename_num;/等待控制器隊(duì)列的設(shè)備名字struct _dct_list *next; dct_list;typedef struct _coctchar namename_num;/int state;/chct *chct;
9、/dct_list *dct_head;/等待控制器隊(duì)列的隊(duì)首指針dct_list *dct_tail;/struct _coct *next; coct;/設(shè)備控制表typedef struct _processchar * namename_num;/進(jìn)程名字/int num;/進(jìn)程標(biāo)志號(hào)struct _process *next; process;typedef struct _dctchar namename_num;/設(shè)備名字char typename_num;/設(shè)備類型int adr;/設(shè)備地址int state;/設(shè)備狀態(tài)coct *coct;/指向控制器表的指針process
10、*process_head;/等待進(jìn)程的隊(duì)首指針process *process_tail;/等待進(jìn)程的隊(duì)尾指針int repeat;/重復(fù)次數(shù)struct _dct *next; dct;/系統(tǒng)設(shè)備表sdttypedef struct _sdtchar namename_num;char typename_num;/設(shè)備類型dct *dct;/dct指針long adr;/驅(qū)動(dòng)程序入口 sdt;typedef struct _lutchar namename_num;char dct_namename_num;int adr;struct _lut *next; lut;/默認(rèn)狀態(tài)下初始化書
11、中p113的單通道i/odct *main_dct;coct *main_coct;chct *main_chct;lut *main_lut;void init_1();void init()puts(-);puts( 進(jìn)行初始化工作 ,請(qǐng)您輸入相關(guān)內(nèi)容);/puts(n 如:與設(shè)備1有關(guān)的控制器名為控制器1,通道名為通道1,您應(yīng)如下輸入:);puts(n 如:與設(shè)備1有關(guān)的控制器名為控制器1,通道名為通道1,您應(yīng)如下輸入:);puts(n 請(qǐng)輸入設(shè)備號(hào): (此處輸入:設(shè)備1);puts( 請(qǐng)輸入控制器號(hào): (此處輸入:控制器1);puts( 請(qǐng)輸入通道號(hào): (此處輸入:通道1);puts(
12、 這樣完成一次輸入);puts(n 注意:當(dāng)設(shè)備號(hào)為-1時(shí),退出輸入);puts(-);init_1();void init_1()dct *dct;coct *coct;chct *chct;lut *lut;dct=(dct *)malloc(sizeof(dct);main_dct=dct;dct-next=null;coct=(coct *)malloc(sizeof(coct);main_coct=coct;coct-next=null;chct=(chct *)malloc(sizeof(chct);main_chct=chct;chct-next=null;lut=(lut *)
13、malloc(sizeof(lut);main_lut=lut;lut-next=null;void input()dct *dct;dct *dct_1;dct *dct_2;coct *coct;coct *coct_1;chct *chct;chct *chct_1;lut *lut;lut *lut_1;char namename_num;int a;while(1)a=0;puts(n+n);printf(請(qǐng)輸入設(shè)備號(hào):);scanf(%s,name);if(!strcmp(name,-1)break;dct_2=main_dct;dct_1=main_dct-next;while(
14、dct_1!=null)if(!strcmp(dct_1-name,name)printf(n該設(shè)備已存在,請(qǐng)重新輸入:);scanf(%s,name);dct_1=main_dct-next;dct_2=main_dct;continue;/if(dct_1-next!=null)dct_1=dct_1-next;dct_2=dct_2-next;/if(dct_1-next=null)/break;if(dct_1=null)dct_1=dct_2;dct=(dct *)malloc(sizeof(dct);if(dct_1=null)dct_1=main_dct;dct_1-next=d
15、ct;dct-next=null;strcpy(dct-name,name);dct-adr=(int)&dct;dct-process_head=null;dct-process_tail=null;dct-repeat=5;dct-state=0;strcpy(dct-type,輸入設(shè)備);printf(n請(qǐng)輸入控制器號(hào):);scanf(%s,name);coct_1=main_coct-next;while(coct_1!=null)if(!strcmp(coct_1-name,name)dct-coct=coct_1;coct=coct_1;a=1;break;/if(coct_1-n
16、ext!=null)coct_1=coct_1-next;/if(coct_1-next=null)/break;if(coct_1=null)coct=(coct *)malloc(sizeof(coct);dct-coct=coct;strcpy(coct-name,name);coct-dct_head=null;coct-dct_tail=null;coct-next=null;coct-state=0;coct_1=main_coct;while(coct_1-next!=null)coct_1=coct_1-next;coct_1-next=coct;if(a=1)puts( 控制
17、器存在,不能指定通道。輸入任意鍵進(jìn)行下一設(shè)備的設(shè)置!);getch();continue;printf(n請(qǐng)輸入通道號(hào):);scanf(%s,name);chct_1=main_chct-next;while(chct_1!=null)if(strcmp(chct_1-name,name)coct-chct=chct_1;chct=chct_1;break;/if(chct_1-next!=null)chct_1=chct_1-next;/if(chct_1-next=null)/break;if(chct_1=null)chct=(chct*)malloc(sizeof(chct);coct
18、-chct=chct;strcpy(chct-name,name);chct-coct_tail=null;chct-next=null;chct-coct_head=null;chct-state=0;chct_1=main_chct;while(chct_1-next!=null)chct_1=chct_1-next;chct_1-next=chct;puts( 為各設(shè)備確定邏輯設(shè)備名!n);dct=main_dct-next;while(dct!=null)printf( 請(qǐng)輸入設(shè)備號(hào)為%s的邏輯設(shè)備名:,dct-name);scanf(%s,name);lut=main_lut-nex
19、t;lut_1=main_lut;while(lut!=null)if(!strcmp(lut-name,name)printf( n 該設(shè)備名已近存在,請(qǐng)重新輸入!n);printf( 請(qǐng)輸入設(shè)備號(hào)為%s的邏輯設(shè)備名:,dct-name);scanf(%s,name);lut=main_lut-next;lut_1=main_lut;break;lut=lut-next;lut_1=lut_1-next;lut=lut_1;lut_1=(lut *)malloc(sizeof(lut);lut-next=lut_1;strcpy(lut_1-name,name);strcpy(lut_1-d
20、ct_name,dct-name);lut_1-next=null;dct=dct-next;void print()dct *dct;chct *chct;coct *coct;process *process;dct_list *dct_list;coct_list *coct_list;lut *lut;dct=main_dct-next;puts(nnnnnnnnnnnnnnnnnnnnnnnnn);puts(-);puts(n dct表n);puts(-);puts(|_設(shè)備標(biāo)志符_| |_設(shè)備類型 _| |_設(shè)備地址_| |_控制表指針_| |_重復(fù)次數(shù) _| |_ 狀態(tài) _|);
21、while(dct!=null)printf(n|%10s |%10s |%10d |%10s |%10d |%10d |,dct-name,dct-type,dct-adr,dct-coct-name,dct-repeat,dct-state);if(dct-process_tail=null)printf(nn 設(shè)備%s 等待隊(duì)列為空n,dct-name);if(dct-process_tail!=null)printf(nn 設(shè)備%s的進(jìn)程等待隊(duì)列的進(jìn)程號(hào)為:n,dct-name);process=dct-process_head;while(process!=null)/printf(
22、 |_ %10s _|_ %10d _| ,process-name,process-num);printf( |_ %10s _| ,process-name);process=process-next;dct=dct-next;puts(n);puts(-);puts(n coct表n);puts(-);puts(|_ 控制器名稱 _| |_ 控制器狀態(tài) _| |_ 對(duì)應(yīng)通道名稱 _|);coct=main_coct-next;while(coct!=null)printf(n|%10s |%10d |%10s |,coct-name,coct-state,coct-chct-name);
23、if(coct-dct_tail=null)printf(nn 控制器%s等待隊(duì)列為空!n,coct-name);if(coct-dct_tail!=null)dct_list=coct-dct_head;printf(nn 控制器%s的等待隊(duì)列的設(shè)備號(hào)是:n,coct-name);while(dct_list!=null)printf( |_ %10s _| ,dct_list-name);dct_list=dct_list-next;coct=coct-next;puts(n);puts(-);puts(n chct表n);puts(-);puts(|_ 通道名稱 _| |_ 通道狀態(tài) _
24、| );chct=main_chct-next;while(chct!=null)printf(n| %10s | %10d |n,chct-name,chct-state);if(chct-coct_tail=null)printf(nn 通道%s的等待隊(duì)列為空!,chct-name);if(chct-coct_tail!=null)coct_list=chct-coct_head;printf(nn 通道%s的等待隊(duì)列是:n,chct-name);while(coct_list!=null)printf( |_ %10s _|,coct_list-name);coct_list=coct_
25、list-next;chct=chct-next;puts(n);puts(-);puts(n lut表n);puts(-);lut=main_lut-next;printf( |_ 邏輯設(shè)備名_| |_ 物理設(shè)備名_|);while(lut!=null)printf(n |_ %10s _| | %10s _|,lut-name,lut-dct_name);lut=lut-next;void free_main()dct *dct;dct *dct1;coct *coct;coct *coct1;chct *chct;chct *chct1;lut *lut;lut *lut1;dct_li
26、st *dct_list1;dct_list *dct_list2;coct_list *coct_list1;coct_list *coct_list2;process *process1;process *process2;dct=main_dct-next;while(dct!=null)dct1=dct-next;process1=dct-process_head;while(process1!=null)process2=process1-next;free(process1);process1=process2;free(dct);dct=dct1;coct=main_coct-n
27、ext;while(coct!=null)coct1=coct-next;dct_list1=coct-dct_head;while(dct_list1!=null)dct_list2=dct_list1-next;free(dct_list1);dct_list1=dct_list2;free(coct);coct=coct1;chct=main_chct-next;while(chct!=null)chct1=chct-next;coct_list1=chct-coct_head;while(coct_list1!=null)coct_list2=coct_list1-next;free(
28、coct_list1);coct_list1=coct_list2;free(chct);chct=chct1;lut=main_lut-next;while(lut!=null)lut1=lut-next;free(lut);lut=lut1;free(main_dct);free(main_coct);free(main_chct);free(main_lut);void add_dct_list(coct *coct1,char *dct_name);void add_coct_list(chct *chct1,char *coct_name);void add_process()cha
29、r process_namename_num;char lut_namename_num;char dct_namename_num;lut *lut;dct *dct;coct *coct;chct *chct;process *process;puts(nnnnnnnnnnnnnnnnnnnnnnnnnn);puts();puts();puts( 輸入進(jìn)程信息 );puts(nnn);puts( 如果進(jìn)程名為-1,將切換到進(jìn)程運(yùn)行狀態(tài)!);while(1)printf(nnn 請(qǐng)輸入進(jìn)程名:);scanf(%s,process_name);if(!strcmp(process_name,-
30、1)break;printf( 請(qǐng)輸入邏輯設(shè)備名:);scanf(%s,lut_name);puts(_);lut=main_lut-next;while(lut!=null)if(!strcmp(lut-name,lut_name)strcpy(dct_name,lut-dct_name);break;lut=lut-next;if(lut=null)printf(n 沒(méi)有找到該設(shè)備,請(qǐng)確認(rèn)該設(shè)備正確安裝!n);if(lut!=null)dct=main_dct-next;while(dct!=null)if(!strcmp(dct-name,dct_name)if(dct-process_
31、head!=null)process=(process *)malloc(sizeof(process);dct-process_tail-next=process;dct-process_tail=process;if(dct-state=1)printf(n 設(shè)備正占用著,進(jìn)程進(jìn)入等待隊(duì)列!,dct-name);add_dct_list(dct-coct,dct-name);if(dct-state=0)printf(n 設(shè)備%s空閑,能使用!-設(shè)備成功分配,dct-name);add_dct_list(dct-coct,dct-name);dct-state=1;process-next
32、=null;strcpy(process-name,process_name);if(dct-process_head=null)process=(process *)malloc(sizeof(process);dct-process_head=process;dct-process_tail=process;if(dct-state=1)printf(n %s設(shè)備正占用著,進(jìn)程進(jìn)入等待隊(duì)列!,dct-name);add_dct_list(dct-coct,dct-name);if(dct-state=0)printf(n 設(shè)備%s空閑,能使用!-設(shè)備成功分配,dct-name);add_d
33、ct_list(dct-coct,dct-name);dct-state=1;process-next=null;strcpy(process-name,process_name);dct=dct-next;void add_dct_list(coct *coct1,char *dct_name)coct *coct;dct_list *dct_list;coct=coct1;if(coct-state=1)printf(n 控制器%s被占用著不能分配!將進(jìn)入等待隊(duì)列中!,coct-name);dct_list=(dct_list *)malloc(sizeof(dct_list);coct-
34、dct_tail-next=dct_list;coct-dct_tail=dct_list;dct_list-next=null;strcpy(dct_list-name,dct_name);add_coct_list(coct-chct,coct-name);if(coct-state=0)printf(n 控制器%s空閑,能分配使用!-控制器成功分配,coct-name);coct-state=1;dct_list=(dct_list *)malloc(sizeof(dct_list);coct-dct_head=dct_list;coct-dct_tail=dct_list;dct_li
35、st-next=null;strcpy(dct_list-name,dct_name);add_coct_list(coct-chct,coct-name);void add_coct_list(chct *chct1,char *coct_name)chct *chct;coct_list *coct_list;chct=chct1;if(chct-state=1)printf(n 通道%s正在使用,控制器進(jìn)入等待對(duì)列中!,chct-name);coct_list=(coct_list *)malloc(sizeof(coct_list);chct-coct_tail-next=coct_l
36、ist;chct-coct_tail=coct_list;coct_list-next=null;strcpy(coct_list-name,coct_name);if(chct-state=0)printf(n 通道%s成功分配,開(kāi)始運(yùn)行該程序!- 通道成功分配,chct-name);chct-state=1;coct_list=(coct_list *)malloc(sizeof(coct_list);chct-coct_head=coct_list;chct-coct_tail=coct_list;coct_list-next=null;strcpy(coct_list-name,coc
37、t_name);void process_run_coct(char *coct_name);void process_run(char *chct_name)chct *chct;coct_list *coct_list;coct *coct;dct_list *dct_list;dct *dct;chct=main_chct-next;while(chct!=null)if(!strcmp(chct-name,chct_name)break;chct=chct-next;if(chct=null)printf(nn 沒(méi)有通道!,chct-name);return ;if(chct-coct
38、_head=null)printf(n 通道%s處于空閑狀態(tài),chct-name);return;if(chct-coct_head=chct-coct_tail)coct_list=chct-coct_head;coct_list-next=null;chct-coct_head=null;chct-coct_tail=null;chct-state=0;if(chct-coct_head!=chct-coct_tail)coct_list=chct-coct_head;chct-coct_head=coct_list-next;coct_list-next=null;process_run_coct(coct_list-name);free(coct_list);void process_run_process(char *dct_name);void process_run_coct(char *coct_name)coct *coct;dct_list *dct_list;coct=main_coct-next;while(coct!=null)if(!strcmp(coct-name,coct_name)break;coct=coct-next;if(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程居間合同范本
- 上海供貨服裝合同范例
- 廚師績(jī)效合同范本
- 合同范例作廢文本
- 代課教師聘用合同范例
- 合同范本打賭
- 廠區(qū)勞務(wù)合同范例
- 合同范本修訂調(diào)研方案
- 北京官方合同范本
- 報(bào)社發(fā)布廣告合同范本
- 2023年中國(guó)鐵路南寧局招聘筆試參考題庫(kù)附帶答案詳解
- 某鐵路注漿處理工藝性試驗(yàn)方案
- GB/T 12265-2021機(jī)械安全防止人體部位擠壓的最小間距
- GB 8537-2018食品安全國(guó)家標(biāo)準(zhǔn)飲用天然礦泉水
- GB 31247-2014電纜及光纜燃燒性能分級(jí)
- 婚禮開(kāi)場(chǎng)白主持詞15篇
- 部編人教版道德與法治五年級(jí)下冊(cè)全冊(cè)課時(shí)練習(xí)講解課件
- 識(shí)讀齒輪精測(cè)報(bào)告課件
- 《農(nóng)村土地承包法》課件
- 廉政鑒定書(院內(nèi)廉政意見(jiàn)書)
- 《潘姓源于固始,是不爭(zhēng)的史實(shí)》的考辨
評(píng)論
0/150
提交評(píng)論