




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第五章設(shè)備管理25.1引言
有關(guān)外設(shè)的驅(qū)動(dòng)、控制、分配等技術(shù)問題都統(tǒng)一由設(shè)備管理程序負(fù)責(zé)。
5.1.1設(shè)備的概念和分類 (1)按功能分類,可以分為輸入設(shè)備、輸出設(shè)備、存儲(chǔ)設(shè)備、供電設(shè)備、網(wǎng)絡(luò)設(shè)備等。(2)從設(shè)備的數(shù)據(jù)組織方式分類,可以分為塊設(shè)備和字符設(shè)備。(3)從設(shè)備的管理模式分類,可以分為物理設(shè)備和邏輯設(shè)備。(4)從設(shè)備的資源屬性分類,可以分為獨(dú)占設(shè)備、共享設(shè)備和虛擬設(shè)備。35.1.2I/O設(shè)備控制與驅(qū)動(dòng)I/O設(shè)備的控制和驅(qū)動(dòng)技術(shù)包括了硬件控制驅(qū)動(dòng)技術(shù)和驅(qū)動(dòng)軟件。前者是I/O設(shè)備廠商設(shè)計(jì)建立的與設(shè)備密切相關(guān)的技術(shù)。后者涉及系統(tǒng)所有I/O處理的軟件。I/O驅(qū)動(dòng)軟件是操作系統(tǒng)的一部分。隨著操作系統(tǒng)的發(fā)展,使I/O驅(qū)動(dòng)軟件成為一種帶有標(biāo)準(zhǔn)接口的可選型的軟件,操作系統(tǒng)內(nèi)核中只保留與設(shè)備無關(guān)的那部分軟件,而將與設(shè)備有關(guān)的驅(qū)動(dòng)軟件作為一種可裝卸的程序,可以按照系統(tǒng)配置的需求進(jìn)行配置。操作系統(tǒng)中的I/O驅(qū)動(dòng)軟件一般分為幾個(gè)層次,如中斷處理程序、設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)I/O原語和用戶級(jí)軟件。55.2操作系統(tǒng)與中斷處理5.2.1中斷的基本概念中斷請(qǐng)求(硬件)中斷響應(yīng)(硬件)查找中斷源、保護(hù)現(xiàn)場(軟、硬件)系統(tǒng)繼續(xù)運(yùn)行中斷處理子程序(軟件)中斷返回、恢復(fù)現(xiàn)場(軟件)65.2.2中斷的類型中斷機(jī)構(gòu)處理外部設(shè)備的I/O中斷。陷入機(jī)構(gòu)處理指令的陷入(自陷)和由于軟、硬件故障或錯(cuò)誤造成的陷入。系統(tǒng)調(diào)用是UNIX操作系統(tǒng)面向在用戶的程序的界面。在匯編級(jí)上,系統(tǒng)調(diào)用使用trap指令。I/O中斷時(shí)鐘中斷系統(tǒng)請(qǐng)求中斷報(bào)警中斷程序錯(cuò)誤中斷機(jī)器錯(cuò)誤中斷7UNIX中的系統(tǒng)調(diào)用與進(jìn)程管理和控制有關(guān)的系統(tǒng)調(diào)用
fork、exit、wait、signal、kill。semget、semop、semctl。與文件系統(tǒng)有關(guān)的系統(tǒng)調(diào)用
creat、open、close、read、write。遠(yuǎn)程進(jìn)程通信
socket、connect其它系統(tǒng)調(diào)用times95.2.4中斷處理程序和驅(qū)動(dòng)程序UNIX把設(shè)備作為一種虛擬的文件對(duì)待,每個(gè)設(shè)備有一個(gè)象文件名那樣的名字,可以對(duì)它象一個(gè)文件那樣存取在UNIX系統(tǒng)中,將設(shè)備分成兩類:塊設(shè)備和字符設(shè)備。核心與驅(qū)動(dòng)程序的接口是由塊設(shè)備開關(guān)表和字符設(shè)備開關(guān)表描述的105.2.5中斷的返回與恢復(fù)UNIX的中斷處理都是在核心態(tài)下進(jìn)行的。如果中斷前處理機(jī)狀態(tài)為核心態(tài),則在執(zhí)行完設(shè)備處理子程序后就恢復(fù)現(xiàn)場,然后用中斷返回指令回到中斷前狀態(tài),繼續(xù)執(zhí)行被中斷的操作系統(tǒng)程序。如果中斷前為用戶態(tài),則在執(zhí)行完設(shè)備處理子程序后,先要檢查標(biāo)志runrun是否設(shè)置。115.3操作系統(tǒng)與時(shí)鐘系統(tǒng)在計(jì)算機(jī)系統(tǒng)中可分為三類時(shí)鐘:系統(tǒng)時(shí)鐘(systemclock)、日歷時(shí)鐘(timeofdayclock)實(shí)時(shí)時(shí)鐘(realtimeclock)5.3.1時(shí)鐘的概念系統(tǒng)時(shí)鐘主要用于控制系統(tǒng)處理器執(zhí)行指令的速率。日歷時(shí)鐘產(chǎn)生一個(gè)精確的時(shí)間計(jì)數(shù),程序?qū)Υ诉M(jìn)行轉(zhuǎn)換,給出與日歷相符的日期和時(shí)間。實(shí)時(shí)時(shí)鐘每秒提供若干個(gè)時(shí)鐘中斷,提醒處理器有重要的事情要做。135.4操作系統(tǒng)對(duì)I/O的控制5.4.1I/O設(shè)備的資源分配I/O地址進(jìn)行正確的I/O地址設(shè)置I/O中斷請(qǐng)求爭用剩余的中斷請(qǐng)求號(hào),也會(huì)產(chǎn)生沖突。DMA數(shù)據(jù)傳輸通道對(duì)爭用同一個(gè)DMA通道的I/O設(shè)備需要進(jìn)行協(xié)調(diào)和重新配置。I/O緩沖區(qū)這個(gè)系統(tǒng)資源也是I/O設(shè)備爭用的。145.4.2I/O通道技術(shù)I/O通道是一種硬件設(shè)施,帶有專用處理器的、有很強(qiáng)I/O處理功能的智能部件??梢元?dú)立地完成系統(tǒng)處理器交付的I/O操作任務(wù),通道具有自己專門的指令集,即通道指令。通道執(zhí)行來自處理器的通道程序,完成后只需向系統(tǒng)處理器發(fā)出中斷,請(qǐng)求結(jié)束。字節(jié)多路通道主要用于連接大量低、中速、以字節(jié)作為傳輸單位的I/O設(shè)備。選擇通道主要用以支持高速設(shè)備(如磁盤),每次只對(duì)一個(gè)設(shè)備進(jìn)行數(shù)據(jù)傳輸。成組多路通道以分時(shí)方式同時(shí)執(zhí)行幾道通道程序,每條通道指令可以傳送一組數(shù)據(jù),155.4.3I/O緩沖技術(shù)提高中央處理器與外設(shè)的并行程度可以采用硬件緩沖和軟件緩沖兩種方式軟件緩沖是借助操作系統(tǒng)的管理,采用內(nèi)存中的一個(gè)或者多個(gè)區(qū)域作為緩沖區(qū)。緩沖區(qū)的數(shù)量可根據(jù)不同的系統(tǒng)和操作來確定,常用的緩沖技術(shù)有三種:雙緩沖、環(huán)形緩沖和緩沖池。17設(shè)備讀read抽象操作
read(dvcrp,buf,size)intdvcrp,size; /*設(shè)備標(biāo)識(shí)符、數(shù)據(jù)塊大小*/char*buf; /*緩沖區(qū)指針*/{ structdevtab*devptr;/*指向設(shè)備表的指針*/if(isbaddev(dvcrp))//確認(rèn)設(shè)備標(biāo)識(shí)符是否有效
return(SYSERR);/*無效,系統(tǒng)返回出錯(cuò)*/devptr=&dct[dvcrp];/*有效,找到對(duì)應(yīng)設(shè)備表項(xiàng)*/return((*devptrdvread)(devptr,buf,size)) /*將參數(shù)傳向設(shè)備驅(qū)動(dòng)程序并返回*/}185.5.2設(shè)備開關(guān)表針對(duì)各類設(shè)備不同的物理特性,系統(tǒng)為它們各自設(shè)置了一套子程序,它們包括打開、關(guān)閉和啟動(dòng)子程序。系統(tǒng)為每類設(shè)備又設(shè)置了一數(shù)據(jù)結(jié)構(gòu),存放這些程序的入口地址,該數(shù)據(jù)結(jié)構(gòu)稱為設(shè)備開關(guān)。195.6磁盤的調(diào)度5.6.1物理特性磁盤一般用于文件存儲(chǔ),盤上信息的地址是多重編址的,包括驅(qū)動(dòng)器號(hào)、面號(hào)、道號(hào)、扇區(qū)號(hào)。存取盤塊中信息的時(shí)間:尋道時(shí)間100ms等待時(shí)間10ms傳送時(shí)間1ms215.6.2磁盤調(diào)度算法(續(xù))掃描法(SCAN和C-SCAN)225.7UNIX系統(tǒng)V的設(shè)備管理
1.緩沖控制塊buf在系統(tǒng)初啟時(shí),核心根據(jù)內(nèi)存大小和系統(tǒng)性能要求分配若干緩沖區(qū)。一個(gè)緩沖區(qū)由兩部分組成:存放數(shù)據(jù)的內(nèi)存區(qū)(一般稱為緩沖區(qū))和一個(gè)緩沖控制塊。緩沖區(qū)和緩沖控制塊是一一對(duì)應(yīng)的。系統(tǒng)通過緩沖控制塊實(shí)現(xiàn)對(duì)緩沖區(qū)的管理。5.7.1UNIX塊設(shè)備管理的主要數(shù)據(jù)結(jié)構(gòu)
23 structbuf { int b_flags; /*緩沖區(qū)標(biāo)志*/ structbuf*b_forw; /*設(shè)備隊(duì)列前向指針*/ structbuf*b_back; /*設(shè)備隊(duì)列后向指針*/ structbuf*av_forw; /*自由隊(duì)列前向指針*/ structbuf*av_back; /*自由隊(duì)列后向指針*/ dev_t b_dev; /*邏輯設(shè)備號(hào)*/ unsignedb_bcount; /*傳送數(shù)據(jù)字節(jié)數(shù)*/ union{ caddr_t b_addr;/*緩沖區(qū)內(nèi)存首地址*/ structfilsys*b_filsys; /*超級(jí)塊*/ }b_un; daddr_tb_blkno; /*在磁盤上數(shù)據(jù)的塊號(hào)*/ }buf[NBUF];252.塊設(shè)備表
structiobuf { intb_flags; /*該設(shè)備隊(duì)列的狀況標(biāo)志*/ structbuf*b_forw;/*指向本設(shè)備的第一個(gè)緩沖區(qū)*/ structbuf*b_back;//指向本設(shè)備的最后一個(gè)緩沖區(qū)
structbuf*b_actf;/*指向本設(shè)備I/O請(qǐng)求隊(duì)列中第一個(gè)緩沖區(qū)*/ structbuf*b_actl;/*指向本設(shè)備I/O請(qǐng)求隊(duì)列中最后一個(gè)緩沖區(qū)*/ dev_tb_dev; /*設(shè)備名*/ charb_active;//設(shè)備正在執(zhí)行一個(gè)I/O請(qǐng)求的標(biāo)志
chatb_errcnt; /*出錯(cuò)計(jì)數(shù)*/ };263.塊設(shè)備開關(guān)表存放各類塊設(shè)備管理程序的入口地址
structbdevsw { int(*d_open)(); /*打開函數(shù)入口*/ int(*d_close)(); /*關(guān)閉函數(shù)入口*/ int(*d_strategy)(); /*啟動(dòng)函數(shù)入口*/ int(*d_print)(); /*打印函數(shù)入口*/ };
設(shè)備表和設(shè)備開關(guān)表集中了與設(shè)備有關(guān)的特性及其管理、使用的信息,也體現(xiàn)了UNIX中把設(shè)備的物理特性和使用情況與設(shè)備管理的基本方式分隔開來的主要思想。29(2)設(shè)備緩沖區(qū)隊(duì)列設(shè)備緩沖區(qū)隊(duì)列連接所有各類設(shè)備使用過的緩沖區(qū),這也是一個(gè)雙向隊(duì)列,buf中的b_forw和b_back分別為該隊(duì)列的前指針和后指針,頭部為hbuf,共64個(gè)隊(duì)列。如圖5-10所示。一個(gè)緩沖區(qū)被分配用于讀、寫某個(gè)設(shè)備的字符塊時(shí),其相應(yīng)的buf就進(jìn)入該設(shè)備的設(shè)備buf隊(duì)列,并一直保留在該設(shè)備buf隊(duì)列中,除非被移作它用。系統(tǒng)V與第六版有所不同,不是每個(gè)塊設(shè)備一個(gè)緩沖隊(duì)列,同一個(gè)塊設(shè)備的緩沖區(qū)可以分布在不同的散列隊(duì)列,不同設(shè)備的緩沖分布均勻,加快緩沖區(qū)的搜索速度。30hbufbuf[…]buf[…]buf[…]…………b_forwb_forwb_forwb_forwb_backb_backb_backb_back…………圖5-10設(shè)備buf隊(duì)列
31(3)空設(shè)備隊(duì)列(NODEV隊(duì)列)NODEV隊(duì)列是一個(gè)特殊的設(shè)備buf隊(duì)列。當(dāng)系統(tǒng)需要緩存,但它不與特定的設(shè)備字符塊相關(guān)聯(lián)時(shí),將分配到的緩存控制塊buf送入NODEV隊(duì)列。其隊(duì)列控制塊也是bfreelist,用的指針是b_forw和b_back。在UNIX中有兩種情況將buf送入NODEV隊(duì)列。一種是在進(jìn)程執(zhí)行一個(gè)目標(biāo)程序的開始階段,它用緩存存放傳向該目標(biāo)程序的參數(shù);另一種情況是用緩存存放文件系統(tǒng)的資源管理塊。在系統(tǒng)初啟時(shí),所有空閑緩沖區(qū)的buf既在自由buf隊(duì)列,又在NODEV的設(shè)備buf隊(duì)列中。32(4)設(shè)備I/O請(qǐng)求隊(duì)列每個(gè)塊設(shè)備有一個(gè)設(shè)備I/O請(qǐng)求隊(duì)列,單向連接,頭部為iobuf,b_actf和b_actl分別指向隊(duì)首和隊(duì)尾。四個(gè)隊(duì)列所屬緩沖區(qū)之間的關(guān)系總結(jié)
(1)任何一個(gè)緩沖區(qū)在穩(wěn)定的狀態(tài)下,同時(shí)屬于二個(gè)隊(duì)列。
(2)在自由buf隊(duì)列中緩沖區(qū)可能同時(shí)屬于NODEV隊(duì)列(未分配給指定設(shè)備),也可能屬于設(shè)備buf隊(duì)列(已經(jīng)分配給某設(shè)備用過,因I/O結(jié)束而釋放)。
(3)在設(shè)備buf隊(duì)列中的緩沖區(qū),可能掛在自由buf隊(duì)列(已用過被釋放),也可能掛在設(shè)備I/O請(qǐng)求隊(duì)列(正在使用)。
(4)在NODEV隊(duì)列中的緩沖區(qū)如已用過被釋放,肯定在自由buf隊(duì)列中。
(5)在設(shè)備I/O請(qǐng)求隊(duì)列中的緩沖區(qū)則肯定屬于設(shè)備buf隊(duì)列。332.緩沖區(qū)管理算法1.
一個(gè)緩存剛分配用于讀寫某一塊設(shè)備,buf的b_flags含有B_BUSY標(biāo)志。它一定位于相應(yīng)設(shè)備buf隊(duì)列,不在自由隊(duì)列。
2.
一旦讀寫完成,就釋放緩存,清B_BUSY標(biāo)志。送入自由隊(duì)列尾,但仍留在原設(shè)備隊(duì)列。
3.特點(diǎn)和好處:一個(gè)緩存既在設(shè)備隊(duì)列,又在自由隊(duì)列,只要還要重復(fù)使用原設(shè)備隊(duì)列中該緩存內(nèi)容,就只要簡單地將其從自由隊(duì)列抽出即可,避免了重復(fù)I/O。有必要可將緩存重新分配它用,將它從自由隊(duì)列首和原設(shè)備隊(duì)列同時(shí)抽出,送入新的設(shè)備隊(duì)列。操作完成后仍留在新的設(shè)備隊(duì)列并送入自由隊(duì)列。344.為使一個(gè)已釋放地緩存盡可能長地保持原先內(nèi)容,以增加重復(fù)使用可能,將其送入自由隊(duì)列尾,分配作它用緩存從自由隊(duì)列首?。‵IFO)。
5.當(dāng)一個(gè)buf在自由隊(duì)列中移動(dòng)時(shí),只要原設(shè)備隊(duì)列又重新使用它,立即將其從自由隊(duì)列中間抽取,使用完畢,再次送入自由隊(duì)列尾(LRU算法)。
6.對(duì)于寫,如一塊未寫滿,在b_flags中設(shè)置B_DELWRI標(biāo)志,推遲寫,再清B_BUSY,釋放至自由隊(duì)列尾。
7.當(dāng)設(shè)置B_DELWRI標(biāo)志的緩存排到自由隊(duì)列首時(shí),不能立即淘汰,它作重新分配處理,而是提出I/O,將其內(nèi)容復(fù)制到塊設(shè)備后,再次釋放到自由隊(duì)列尾(也有釋放到自由隊(duì)列首),也清B_DELWRI標(biāo)志。35…………b_backb_backb_backb_backb_forwb_forwb_forwb_forw…………buf[…]buf[…]buf[…]hbuf…………av_backav_backav_backav_backav_forwav_forwav_forwav_forw…………buf[…]buf[…]buf[…]bfreelist自由隊(duì)列設(shè)備隊(duì)列363.緩沖區(qū)的分配和釋放
getblk(dev,blkno){while(未找到相應(yīng)buf){ if(盤塊在設(shè)備buf隊(duì)列中){ if(buf忙){ //b_flags&B_BUSY sleep(buf成為空閑);//B_WANTED continue;/*回到while循環(huán)*/ }
標(biāo)記buf忙; 從自由buf隊(duì)列中移走該buf; return(buf); }else { /*盤塊不在設(shè)備buf隊(duì)列中*/ if(自由隊(duì)列中已無buf){//bfreelist& sleep(任一buf成為空閑);//B_WANTED continue; /*回到while循環(huán)*/ }37
從自由隊(duì)列中移走該buf;
if(buf標(biāo)志為“延遲寫”){//B_DELWRI
異步寫buf到相應(yīng)設(shè)備上;
continue; /*回到while循環(huán)*/ }
從原來的設(shè)備buf隊(duì)列中移走該buf;
/*找到空閑的buf*/
把它放在新的設(shè)備buf隊(duì)列中; return(buf); } }}38
brelse(bp) {
喚醒所有等待自由隊(duì)列成為“非空”的進(jìn)程; 喚醒所有等待本buf成為空閑的進(jìn)程; 提升處理機(jī)執(zhí)行級(jí)別,屏蔽中斷;
if(buf內(nèi)容有效且不是過時(shí)的)
把本buf放入自由隊(duì)列末尾; /*以備 將來使用*/ else /*如偶爾遇到出錯(cuò)*/
把本buf放入自由隊(duì)列的開頭; /*以后很少使用它*/
降低處理機(jī)執(zhí)行級(jí)別,開放中斷; 解除封鎖(buf); }395.7.3塊設(shè)備管理
bread(dev,blkno) {
為邏輯塊找一個(gè)緩沖區(qū)(getblk);
if(緩沖區(qū)數(shù)據(jù)有效) return(buf);
啟動(dòng)磁盤讀;
sleep(盤塊讀完);/*等待盤I/O完成中斷*/ return(buf); }40預(yù)讀盤塊程序breada當(dāng)一個(gè)進(jìn)程順序讀取文件時(shí),為加快它的前進(jìn)速度,提高CPU和塊設(shè)備工作的并行程度核心檢查第一塊是否在緩沖區(qū)中,如不在,則調(diào)用磁盤驅(qū)動(dòng)程序讀該塊。如第二塊不在緩沖區(qū)中,核心指示盤驅(qū)動(dòng)程序異步讀它。然后進(jìn)程睡眠,等待第一塊I/O完成。該進(jìn)程被喚醒后就返回第一塊的buf,而不管第二塊是否讀完。以后,當(dāng)?shù)诙K讀完后,產(chǎn)生盤I/O中斷,由中斷處理程序識(shí)別異步讀完成,并釋放相應(yīng)的buf。415.8設(shè)備分配
1.設(shè)備分配方式靜態(tài)分配作業(yè)運(yùn)行之前由系統(tǒng)一次分配滿足需要的全部設(shè)備動(dòng)態(tài)分配在進(jìn)程運(yùn)行的過程中進(jìn)行分配的,當(dāng)進(jìn)程需要使用設(shè)備時(shí),系統(tǒng)按一定的分配策略給進(jìn)程分配所需設(shè)備,一旦使用完畢立即釋放。
422.設(shè)備分配的原則先請(qǐng)求先服務(wù)和按請(qǐng)求I/O的進(jìn)程的優(yōu)先級(jí)決定。要使用設(shè)備時(shí)必須提供進(jìn)行I/O操作的有關(guān)信息,指出執(zhí)行I/O的邏輯設(shè)備名(如設(shè)備號(hào))、操作類型、傳送數(shù)據(jù)的數(shù)目、信息源或目的地址等。存放進(jìn)行I/O操作的信息的結(jié)構(gòu)稱為I/O請(qǐng)求塊。如在UNIX系統(tǒng)中,系統(tǒng)的I/O請(qǐng)求塊的內(nèi)容是包含在緩沖區(qū)控制塊buf中。在請(qǐng)求I/O時(shí),首先請(qǐng)求分配緩沖區(qū),然后把與操作有關(guān)的信息寫到buf中,并把這個(gè)buf掛到請(qǐng)求設(shè)備的I/O請(qǐng)求隊(duì)列中去如圖5-13所示。43b_actfb_actlav_forw
av_forw
av_forw
iobufbuf[…]
buf[…]
swbuf
圖5-13設(shè)備I/O請(qǐng)求隊(duì)列
445.10Solaris的I/O子系統(tǒng)
內(nèi)核為應(yīng)用程序提供了一組系統(tǒng)調(diào)用,其中某些系統(tǒng)調(diào)用將調(diào)用設(shè)備驅(qū)動(dòng)程序執(zhí)行I/O操作。在Solaris操作系統(tǒng)中,設(shè)備驅(qū)動(dòng)程序(devicedriver)是可加載的內(nèi)核模塊,負(fù)責(zé)管理I/O設(shè)備,并且使操作系統(tǒng)的其余部分與設(shè)備硬件隔離開來。Solaris的設(shè)計(jì)也遵循了UNIX系統(tǒng)理念。把設(shè)備看成文件,可以將設(shè)備與文件統(tǒng)一管理,例如,采用統(tǒng)一的命名方式和統(tǒng)一的權(quán)限管理方式,這樣可以簡化設(shè)備管理過程。在塊設(shè)備驅(qū)動(dòng)程序和字符設(shè)備驅(qū)動(dòng)程序之上都有一層文件系統(tǒng),這體現(xiàn)了將設(shè)備與文件統(tǒng)一管理的設(shè)計(jì)思想。45對(duì)干不同的設(shè)備,其文件系統(tǒng)層的“厚度”是不同的。對(duì)于磁盤這類結(jié)構(gòu)性很強(qiáng)、操作很復(fù)雜的設(shè)備,其文件系統(tǒng)很“厚”,這是因?yàn)橄到y(tǒng)中存在著兩層抽象:一層抽象是將柱面、磁道、扇區(qū)表示的磁盤物理空間抽象成由數(shù)據(jù)塊組成的線性空間,另一層抽象是將數(shù)據(jù)塊組織成文件。下一層抽象由磁盤設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn),上一層抽象由文件系
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度設(shè)備安裝安全協(xié)議及設(shè)備安裝驗(yàn)收證書
- 二零二五年度房地產(chǎn)租賃稅務(wù)籌劃與合同管理服務(wù)協(xié)議
- 二零二五年度住宅及地下室使用權(quán)租賃合同
- 2025年度智能化綠植養(yǎng)護(hù)服務(wù)合同協(xié)議書模板
- 二零二五年度珠寶店電子商務(wù)平臺(tái)合作開發(fā)合同
- 二零二五年度企業(yè)稅收籌劃審計(jì)委托合同
- 二零二五年度古裝劇編劇聘用合同
- 二零二五年度海參干貨質(zhì)量檢測與認(rèn)證合同
- 2025年度生態(tài)浴室租賃經(jīng)營合同
- 2025年度汽車經(jīng)銷商汽車按揭貸款及售后服務(wù)協(xié)議
- FMEA第五版表格(實(shí)例)
- 【講座】情境性試題:基于《中國高考評(píng)價(jià)體系》的高考語文命題研究
- 環(huán)??己嗽嚲?8285(含答案)
- SMED培訓(xùn)材料-快速換模
- HG20592-2009法蘭(PL)法蘭蓋(BL)精加工尺寸
- 叉車蓄電池容量與鐵箱規(guī)格表
- 風(fēng)管、水管支架估算表
- 淺談小學(xué)低年級(jí)數(shù)學(xué)計(jì)算課堂教學(xué)的有效策略
- scratch趣味編程社團(tuán)活動(dòng)方案活動(dòng)計(jì)劃
- 如何從事完美事業(yè)
- 本科教學(xué)工作審核評(píng)估匯報(bào)PPT課件
評(píng)論
0/150
提交評(píng)論