操作系統(tǒng)第十三章_第1頁
操作系統(tǒng)第十三章_第2頁
操作系統(tǒng)第十三章_第3頁
操作系統(tǒng)第十三章_第4頁
操作系統(tǒng)第十三章_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Chapter 13: I/O SystemsChapter 13: I/O SystemsI/O HardwareApplication I/O InterfaceKernel I/O SubsystemTransforming I/O Requests to Hardware OperationsStreamsPerformanceObjectivesExplore the structure of an operating systems I/O subsystemDiscuss the principles of I/O hardware and its complexityProvi

2、de details of the performance aspects of I/O hardware and softwareComputer Organization計算機(jī)體系結(jié)構(gòu)CPU磁盤適配器USB適配器圖形適配器內(nèi)存操作系統(tǒng)如何管理設(shè)備的呢?CPU與內(nèi)存已經(jīng)講過I/O HardwareIncredible variety of I/O devices 多樣性Common conceptsPort 端口Bus (daisy chain or shared direct access)總線Controller (host adapter)控制器(主機(jī)適配器):控制器提供了一組部件,操

3、作系統(tǒng)的設(shè)備驅(qū)動程序通過與這些部件交互來管理設(shè)備。雖然每個控制器的細(xì)節(jié)不同,但是為程序員提供通用的接口來做I/O操作。A Typical PC Bus StructureHow does the CPU operates on Devices?CPU Controls devices via Device Controllers (CPU通過設(shè)備控制器來訪問設(shè)備)CPU與設(shè)備控制器的關(guān)系如圖IO控制器I/O設(shè)備編址方式The System Software(aka. OS) controls the devices by read/write registers in the device c

4、ontroller (系統(tǒng)通過I/O控制器中的寄存器來控制I/O設(shè)備)The unique address of a register in the device controller, is called “I/O address” (I/O寄存器具有唯一的地址,該地址被稱為I/O端口地址)I/O addressing schemeI/O設(shè)備編址方式Independent I/O addressing (I/O獨(dú)立編址)IO獨(dú)立編址 設(shè)備有獨(dú)立的地址 通過IO專用指令(in , out)訪問端口 如 out 0 x21, AL = 把端口0 x21的內(nèi)容輸出到ALMemory mapping

5、 I/O addressing (內(nèi)存映射編址)把IO端口映射到內(nèi)存的地址范圍內(nèi)通過內(nèi)存訪問指令訪問寄存器例如:把I/O端口0 x21映射到內(nèi)存地址0 x21,那么從該端口輸出的操作可以表示為mov AL, 0 x21Device I/O Port Locations on PCs (partial)Example of Memory-mapped I/OIO內(nèi)存映射編址方式示例把用于顯示器的內(nèi)部顯存映射到物理內(nèi)存地址空間0 x8000F000 0 x8000FFF之后,可以直接將要輸出的內(nèi)容寫入到這部分內(nèi)存,就可以完成數(shù)據(jù)的顯示輸出物理內(nèi)存空間數(shù)據(jù)傳送控制方式輪詢中斷控制方式DMA方式通道方

6、式一種循環(huán)I/O測試方式,通過執(zhí)行I/O測試指令測試設(shè)備忙/閑標(biāo)志以確定是否進(jìn)行數(shù)據(jù)傳輸。高速CPU和慢速I/O設(shè)備矛盾突出,CPU浪費(fèi)嚴(yán)重,一般出現(xiàn)在早期計算機(jī)或者現(xiàn)在微機(jī)系統(tǒng)中。當(dāng)I/O操作正?;虍惓=Y(jié)束時中斷CPU,從而實(shí)現(xiàn)了I/O設(shè)備和CPU間一定程度的并行操作,改善了CPU的利用率,適用于字符設(shè)備的I/O。在外圍設(shè)備和內(nèi)存之間開辟直接的數(shù)據(jù)交換通道進(jìn)行數(shù)據(jù)傳輸,適用于塊設(shè)備的I/O。使用通道來控制內(nèi)存或CPU和外圍設(shè)備之間的數(shù)據(jù)傳輸。大大提高了CPU和外設(shè)之間的并行能力,可把種類繁多,物理特性各異的外設(shè)以標(biāo)準(zhǔn)的接口方式連接到系統(tǒng)中。Polling輪詢適用于外設(shè)并不總是準(zhǔn)備好,而且對傳

7、送速率、傳送效率要求不高的場合。CPU在與外設(shè)交換數(shù)據(jù)前必須詢問外設(shè)狀態(tài) “你準(zhǔn)備好沒有?”對外設(shè)的要求:應(yīng)提供設(shè)備狀態(tài)信息command-ready busyErrorBusy-wait cycle to wait for I/O from device 忙等待輪詢由用戶進(jìn)程來直接控制內(nèi)存或CPU和外圍設(shè)備之間的信息傳送??刂普呤怯脩暨M(jìn)程CPU直接與I/O設(shè)備(設(shè)備控制器)進(jìn)行通信,負(fù)責(zé)將用戶數(shù)據(jù)傳送到I/O端口用戶程序通過系統(tǒng)調(diào)用來使用I/O設(shè)備CPU和外設(shè)速度上的差異,使得要保持CPU和外設(shè)之間的同步,CPU必須知道外設(shè)當(dāng)前的傳輸情況CPU需要不斷查詢I/O設(shè)備的端口狀態(tài),性能較低輪詢(

8、輸出)(1)主機(jī)不斷的讀取控制器中標(biāo)志設(shè)備工作狀態(tài)的“忙”觸發(fā)器,直到該位為0(2)主機(jī)設(shè)置命令寄存器中的寫位,并向數(shù)據(jù)輸出寄存器中寫入一個字節(jié)(3)主機(jī)將“就緒”觸發(fā)器設(shè)置為“1”;(4)控制器注意到命令就緒位已被設(shè)置,則設(shè)置忙位為”1”(5)控制器讀取命令寄存器,看到寫命令,從數(shù)據(jù)輸出寄存器中取出一個字節(jié),啟動設(shè)備進(jìn)行I/O操作;(6)控制器清除就緒位,清除狀態(tài)寄存器的故障位,清除忙位。控制公用寄存器忙就緒數(shù)據(jù)緩沖寄存器設(shè)備選擇動作開始動作結(jié)束輸入數(shù)據(jù)CPU接口設(shè)備123456程序直接控制方式的控制流程程序直接控制方式優(yōu)點(diǎn)控制簡單,CPU和外設(shè)的操作可以通過狀態(tài)信息得到同步硬件結(jié)構(gòu)簡單缺點(diǎn)

9、CPU的利用率低下;CPU和外設(shè)速度上的差異導(dǎo)致CPU大量時間處于等待和空閑狀態(tài);尤其在多進(jìn)程并發(fā)環(huán)境下。不能實(shí)現(xiàn)設(shè)備間的并行工作;因?yàn)镃PU在一段時間內(nèi)只能和一臺外圍設(shè)備交換數(shù)據(jù)信息。數(shù)據(jù)傳輸完全在CPU的控制之下,對外部出現(xiàn)的異常事件無實(shí)時響應(yīng)能力。適用范圍:早期計算機(jī)系統(tǒng),外圍設(shè)備比較少的系統(tǒng)。如單片機(jī)系統(tǒng)。Interrupts中斷中斷方式目的減少程序直接控制方式中CPU等待時間提高系統(tǒng)的并行工作程度條件要求CPU與設(shè)備(控制器)之間由相應(yīng)的中斷請求線;CPU Interrupt-request line triggered by I/O device I/O設(shè)備觸發(fā)中斷請求線設(shè)備控制器

10、中:中斷請求觸發(fā)器,中斷屏蔽觸發(fā)器Maskable to ignore or delay some interrupts 可屏蔽性中斷CPU的PSW寄存器中:中斷允許位中斷的響應(yīng)CPU何時響應(yīng)中斷?如何響應(yīng)?中斷技術(shù)禁止中斷在有些情況下,盡管產(chǎn)生了中斷源和發(fā)出了中斷請求,但CPU內(nèi)部的處理機(jī)狀態(tài)字PSW的中斷允許位已被清除,從而不允許CPU響應(yīng)中斷。CPU禁止中斷后只有等到PSW的中斷允許位被重新設(shè)置后才能接收中斷。禁止中斷也稱為關(guān)中斷。PSW的中斷允許位的設(shè)置也被稱為開中斷。中斷請求、關(guān)中斷、開中斷等都由硬件實(shí)現(xiàn)。開中斷和關(guān)中斷是為了保證某些程序執(zhí)行的原子性。中斷技術(shù)中斷屏蔽在中斷請求產(chǎn)生之

11、后,系統(tǒng)用軟件方式有選擇地封鎖部分中斷而允許其余部分的中斷仍能得到響應(yīng)。中斷屏蔽是通過每一類中斷源設(shè)置一個中斷屏蔽觸發(fā)器來屏蔽它們的中斷請求而實(shí)現(xiàn)的。有些中斷請求是不能屏蔽甚至不能禁止的,也就是說,這些中斷具有最高優(yōu)先級。不管CPU是否是關(guān)中斷的,只要這些中斷請求一旦提出,CPU必須立即響應(yīng)。例如,電源掉電事件所引起的中斷就是不可禁止和屏蔽中斷。中斷的分類與優(yōu)先級根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一般對中斷進(jìn)行分類并對不同的中斷賦予不同的處理優(yōu)先級,以便在不同的中斷同時發(fā)生時,按輕重緩急進(jìn)行處理。根據(jù)中斷源產(chǎn)生的條件,可把中斷分為外中斷和內(nèi)中斷。外中斷是指來自處理機(jī)和內(nèi)存外部的中斷,外中斷在狹

12、義上一般被稱為中斷。內(nèi)中斷主要指在處理機(jī)和內(nèi)存內(nèi)部產(chǎn)生的中斷。內(nèi)中斷一般稱為陷阱(trap)。中斷的分類與優(yōu)先級為了禁止中斷或屏蔽中斷,CPU的處理機(jī)狀態(tài)字PSW中也設(shè)置有相應(yīng)的優(yōu)先級。如果中斷源的優(yōu)先級高于PSW的優(yōu)先級,則CPU響應(yīng)該中斷源的中斷請求,反之,CPU屏蔽該中斷源的中斷請求。各中斷源的優(yōu)先級在系統(tǒng)設(shè)計時給定,在系統(tǒng)運(yùn)行時是固定的。而處理機(jī)的優(yōu)先級則根據(jù)執(zhí)行情況由系統(tǒng)程序動態(tài)設(shè)定。Intel Pentium CPU 中斷 0除出錯 1調(diào)試異常 5邊界范圍異常 6非法操作碼 7設(shè)備不可用 8兩次出錯12堆棧出錯13通用保護(hù)14頁出錯16浮點(diǎn)錯誤.=32可屏蔽中斷非(不可)屏蔽中斷向

13、量號(可以被 CPU 屏蔽的中斷)中斷和陷阱的區(qū)別陷阱通常由處理機(jī)正在執(zhí)行的現(xiàn)行指令引起,而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起的。陷阱處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,而中斷處理程序提供的服務(wù)則不是為了當(dāng)前進(jìn)程的。CPU在執(zhí)行完一條指令之后,下一條指令開始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)陷阱。例如執(zhí)行指令非法時,盡管被執(zhí)行的非法指令不能執(zhí)行結(jié)束,但CPU仍可對其進(jìn)行處理。在有的系統(tǒng)中,陷阱處理程序被規(guī)定在各自的進(jìn)程上下文中執(zhí)行,而中斷處理程序則在系統(tǒng)上下文中執(zhí)行。中斷方式的傳送結(jié)構(gòu)進(jìn)程需要數(shù)據(jù)時,通過CPU發(fā)出”start”指令啟動外圍設(shè)備準(zhǔn)備數(shù)據(jù);同時將控制狀態(tài)寄存器中斷允許位打

14、開,使得中斷程序可以被調(diào)用執(zhí)行。進(jìn)程發(fā)出指令啟動設(shè)備后,該進(jìn)程放棄CPU,等待輸入完成;進(jìn)程調(diào)度程序可以調(diào)度其他就緒進(jìn)程使用CPU。輸入完成時,I/O控制器聽過中斷請求線向CPU發(fā)出中斷,CPU收到后轉(zhuǎn)向預(yù)先設(shè)計好的中斷處理程序?qū)?shù)據(jù)進(jìn)行相應(yīng)處理。在以后的某個時刻,進(jìn)程調(diào)度程序選中提出請求并得到數(shù)據(jù)的進(jìn)程,該進(jìn)程從約定的內(nèi)存特定單元取出數(shù)據(jù)繼續(xù)工作。中斷控制方式的處理過程當(dāng)CPU發(fā)出啟動設(shè)備和允許中斷指令后,并沒有象程序直接控制方式一樣循環(huán)檢測狀態(tài)控制寄存器的狀態(tài)位,而是調(diào)度其他進(jìn)程執(zhí)行;當(dāng)設(shè)備數(shù)據(jù)送入緩沖寄存器并發(fā)出中斷信號后,CPU才進(jìn)行中斷處理。CPU在執(zhí)行其他進(jìn)程時,也可以啟動其他設(shè)備

15、工作,從而做到設(shè)備之間的并行操作以及設(shè)備和CPU間的并行操作。中斷控制方式優(yōu)點(diǎn)能夠支持多道程序和設(shè)備的并行操作,CPU的利用率大大提高;具有實(shí)時響應(yīng)能力,可應(yīng)用于實(shí)時控制場合。缺點(diǎn)控制器數(shù)據(jù)緩沖寄存器較小,完成一次I/O可能要多次中斷驅(qū)動,發(fā)生中斷次數(shù)較多;設(shè)備間并行操作,由于中斷次數(shù)的急劇增加而造成CPU無法響應(yīng)中斷和出現(xiàn)數(shù)據(jù)丟失現(xiàn)象;對各種高速外圍設(shè)備,或希望成組數(shù)據(jù)交換時一方面高速的外設(shè)由于中斷方式可能來不及響應(yīng)而丟失數(shù)據(jù);另一方面成組數(shù)據(jù)交換多次地通過中斷進(jìn)行,也顯得速度太慢。中斷驅(qū)動方式僅適合于中、慢速設(shè)備。對于大批量成組數(shù)據(jù)交換,可以利用DMA和通道方式。Intel Pentium

16、 Processor Event-Vector TableDirect Memory Access直接內(nèi)存訪問Used to avoid programmed I/O for large data movement避免用PIO增大CPU的負(fù)擔(dān),將一部分任務(wù)下降給一個專用處理器 Requires DMA controller DMA控制器Bypasses CPU to transfer data directly between I/O device and memory 無需CPU的幫助,直接在I/O設(shè)備和內(nèi)存之間轉(zhuǎn)移數(shù)據(jù) 為了實(shí)現(xiàn)在主機(jī)與控制器之間成塊數(shù)據(jù)的直接交換, 必須在DMA控制器中設(shè)

17、置如下四類寄存器: (1) 控制狀態(tài)寄存器CR。用于接收從CPU發(fā)來的I/O命令或有關(guān)控制信息, 或設(shè)備的狀態(tài)。 (2) 內(nèi)存地址寄存器MAR。在輸入時,它存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始目標(biāo)地址;在輸出時,它存放由內(nèi)存到設(shè)備的內(nèi)存源地址。 (3) 數(shù)據(jù)寄存器DR。用于暫存從設(shè)備到內(nèi)存,或從內(nèi)存到設(shè)備的數(shù)據(jù)。 (4) 數(shù)據(jù)計數(shù)器DC。 存放本次CPU要讀或?qū)懙淖?節(jié))數(shù)。 Six Step Process to Perform DMA TransferDMA方式的數(shù)據(jù)傳送處理過程區(qū)別:中斷方式時是在數(shù)據(jù)緩沖寄存器滿之后發(fā)出中斷要求CPU進(jìn)行中斷處理,而DMA方式則是在所要求傳送的數(shù)據(jù)塊全部結(jié)束

18、時要求CPU中斷處理,大大減少CPU進(jìn)行中斷處理的次數(shù)。區(qū)別:中斷方式的數(shù)據(jù)傳送是在中斷處理時由CPU控制完成的,DMA方式是在DMA控制器的控制下不經(jīng)過CPU控制完成的,這就排除了并行操作設(shè)備過多時CPU來不及處理或速度不匹配而造成數(shù)據(jù)丟失等現(xiàn)象DMA控制方式優(yōu)點(diǎn)數(shù)據(jù)在內(nèi)存和設(shè)備之間直接傳送,CPU不干預(yù)。數(shù)據(jù)的傳輸控制完全由DMA控制器完成,速度快,適合高速成組數(shù)據(jù)傳輸。 數(shù)據(jù)塊在傳輸過程中,CPU與外設(shè)并行工作,比中斷控制方式的并行性高。Application I/O Interface I/O應(yīng)用接口I/O system calls encapsulate device behavio

19、rs in generic classes Device-driver layer hides differences among I/O controllers from kernel 設(shè)備驅(qū)動程序屏蔽了不同I/O設(shè)備的硬件差異Devices vary in many dimensionsCharacter-stream or block 字符流設(shè)備/塊設(shè)備Sequential or random-access 順序或隨機(jī)訪問Sharable or dedicated 共享或?qū)S肧peed of operation 操作速度read-write, read only, or write on

20、ly 讀寫、只讀、只寫I/O子系統(tǒng)操作系統(tǒng)I/O硬件管理I/O軟件管理上層用戶程序(應(yīng)用層)設(shè)備控制器命令寄存器DMA底層硬件設(shè)備(物理層)中斷處理程序設(shè)備驅(qū)動程序設(shè)備無關(guān)程序用戶進(jìn)程A Kernel I/O StructureCharacteristics of I/O DevicesBlock and Character Devices塊與字符設(shè)備Block devices include disk drives 塊設(shè)備包括磁盤驅(qū)動器Commands include read, write, seek 命令Raw I/O or file-system access 原始I/O或文件系統(tǒng)訪問

21、Memory-mapped file access possible 內(nèi)存映射文件訪問Character devices include keyboards, mice, serial ports 字符設(shè)備包括鍵盤、鼠標(biāo)、串行接口Commands include get, put 命令Libraries layered on top allow line editing 構(gòu)造庫以提供具有緩沖和編輯功能的按行訪問Network Devices 網(wǎng)絡(luò)設(shè)備Varying enough from block and character to have own interface 不同的接口Unix a

22、nd Windows NT/9x/2000 include socket interface Separates network protocol from network operationIncludes select functionalityApproaches vary widely (pipes, FIFOs, streams, queues, mailboxes)Clocks and Timers時鐘與定時器Provide current time, elapsed time, timer提供當(dāng)前時間、已逝去時間、定時器Programmable interval timer us

23、ed for timings, periodic interrupts 可編程間隔定時器用來設(shè)置定時器ioctl (on UNIX) covers odd aspects of I/O such as clocks and timers Blocking and Nonblocking I/O阻塞和非阻塞I/OBlocking - process suspended until I/O completed 進(jìn)程阻塞直到I/O完成Easy to use and understandInsufficient for some needsNonblocking - I/O call returns

24、as much as available User interface, data copy (buffered I/O)Implemented via multi-threadingReturns quickly with count of bytes read or writtenAsynchronous - process runs while I/O executes異步:當(dāng)I/O執(zhí)行時進(jìn)程繼續(xù)執(zhí)行Difficult to useI/O subsystem signals process when I/O completedTwo I/O MethodsSynchronousAsync

25、hronous緩沖的引入 引入緩沖的必要性 引入緩沖的一個例子是網(wǎng)絡(luò)通信:中斷方式,如果從遠(yuǎn)地終端發(fā)來數(shù)據(jù)(串行)僅用1個bit緩沖來接收,則必須在每收到一位數(shù)據(jù)時便中斷CPU一次。對于速率為9.6 kb/s 數(shù)據(jù)通信來說,意味著中斷CPU的頻率也為9.6k次。Kernel I/O SubsystemCaching - fast memory holding copy of dataAlways just a copyKey to performanceSpooling - hold output for a deviceIf device can serve only one request

26、 at a time i.e., Printing虛擬設(shè)備思想:在獨(dú)占型設(shè)備和內(nèi)存之間增加一層軟件,構(gòu)成一個共享型設(shè)備。利用共享設(shè)備的某一區(qū)域去改造獨(dú)占設(shè)備。虛擬設(shè)備的實(shí)例:spooling為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾而引入了脫機(jī)輸入、 脫機(jī)輸出技術(shù)。 該技術(shù)是利用專門的外圍控制機(jī), 將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;或者相反。事實(shí)上, 當(dāng)系統(tǒng)中引入了多道程序技術(shù)后,完全可以利用其中的一道程序,來模擬脫機(jī)輸入時的外圍控制機(jī)功能,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;再用另一道程序來模擬脫機(jī)輸出時外圍控制機(jī)的功能,把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上。這樣,便可在主機(jī)

27、的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、 輸出功能。 此時的外圍操作與CPU對數(shù)據(jù)的處理同時進(jìn)行, 我們把這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時外圍操作稱為SPOOLing(Simultaneaus Periphernal Operating On-Line),或稱為假脫機(jī)操作。 共享打印機(jī) 共享打印機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。 當(dāng)用戶進(jìn)程請求打印輸出時, SPOOLing系統(tǒng)同意為它打印輸出, 但并不真正立即把打印機(jī)分配給該用戶進(jìn)程, 而只為它做兩件事: 由輸出進(jìn)程在輸出井中為之申請一個空閑磁盤塊區(qū), 并將要打印的數(shù)據(jù)送入其中; 輸出進(jìn)程再為用戶進(jìn)程申請一張空白的用戶請求打印表,并將用戶的打印要求填

28、入其中, 再將該表掛到請求打印隊(duì)列上。 I/O ProtectionUser process may accidentally or purposefully attempt to disrupt normal operation via illegal I/O instructionsAll I/O instructions defined to be privilegedI/O must be performed via system callsMemory-mapped and I/O port memory locations must be protected tooUse of a

29、 System Call to Perform I/OKernel Data StructuresKernel keeps state info for I/O components, including open file tables, network connections, character device stateMany, many complex data structures to track buffers, memory allocation, “dirty” blocksSome use object-oriented methods and message passi

30、ng to implement I/OUNIX I/O Kernel StructureI/O Requests to Hardware OperationsConsider reading a file from disk for a process: Determine device holding file Translate name to device representationPhysically read data from disk into bufferMake data available to requesting processReturn control to pr

31、ocessLife Cycle of An I/O RequestSTREAMSSTREAM a full-duplex communication channel between a user-level process and a device in Unix System V and beyondA STREAM consists of:- STREAM head interfaces with the user process- driver end interfaces with the device- zero or more STREAM modules between them

32、.Each module contains a read queue and a write queueMessage passing is used to communicate between queuesThe STREAMS StructurePerformanceI/O a major factor in system performance:Demands CPU to execute device driver, kernel I/O codeContext switches due to interruptsData copyingNetwork traffic especially stressfulIntercomputer CommunicationsImproving PerformanceReduce number of context switchesReduce data copying Reduce interrupts by using large transfers, smart controllers, polling Use DMABalance CPU, memory, bus, and I/O performance for highest

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論