操作系統(tǒng)原理講義 第八章.ppt_第1頁
操作系統(tǒng)原理講義 第八章.ppt_第2頁
操作系統(tǒng)原理講義 第八章.ppt_第3頁
操作系統(tǒng)原理講義 第八章.ppt_第4頁
操作系統(tǒng)原理講義 第八章.ppt_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,2,第八章 I/O管理,3,第八章 輸入輸出管理,8.1 I/O 管理的概念 8.1.1 引言 計算機外部設(shè)備 在計算機系統(tǒng)中除CPU和內(nèi)存儲外所有的設(shè)備和裝置稱為計算機外部設(shè)備(外圍設(shè)備、I/O設(shè)備)。,4,8.1 I/O管理的概念,存儲設(shè)備:用來存放各種信息的設(shè)備稱為存儲設(shè)備,例如,軟盤、硬盤、光盤和磁帶等; I/O設(shè)備:用來向計算機輸入和輸出信息的設(shè)備,如鍵盤、鼠標(biāo)、顯示器、打印機等。 在現(xiàn)代計算機系統(tǒng)中有些設(shè)備既可以做存儲設(shè)備,也可以做I/O設(shè)備,例如,軟盤、硬盤等。 I/O管理就是設(shè)備管理,它是操作系統(tǒng)的一個重要的組成部分,負(fù)責(zé)管理系統(tǒng)中所有的外部設(shè)備。,5,8.1 I/O管理的

2、概念,計算機外部設(shè)備種類繁多,特性各異。 主要表現(xiàn)在以下幾個方面: 1.速度 不同的外部設(shè)備的傳輸速度的差別相當(dāng)大,如鍵盤的傳輸速度不過幾十,上百個字符,而磁盤的傳輸速度則是60萬字節(jié)/每秒。 2.傳輸單位 有的設(shè)備的傳輸單位是字節(jié),如鍵盤、打印機、顯示器; 有的傳輸單位是字符塊,如軟盤、硬盤、磁帶等; 有的傳輸單位是位,如個人計算機中的Serial Port(s) COM1、COM2,6,8.1 I/O管理的概念,3.容許的操作(操作特性) 設(shè)備完成的操作種類各不相同,如打印機只允許寫操作,鍵盤只能做讀操作,而磁盤既可讀,也可寫。 4.出錯條件 不同的設(shè)備,其出錯條件也不相同,即數(shù)據(jù)傳輸失敗

3、的原因各種各樣,如打印機有缺紙錯,磁盤I/O有奇偶校驗錯等。,7,8.1.2 設(shè)計目標(biāo),1.字符代碼的獨立性 現(xiàn)在使用的ASCII碼(美國信息交換標(biāo)準(zhǔn)碼) 2.設(shè)備獨立性 3.效率 4.設(shè)備處理的一致性,8,8.1.3 I/O管理功能,1.狀態(tài)跟蹤 設(shè)備控制塊是存放設(shè)備管理和控制信息的數(shù)據(jù)結(jié)構(gòu)。 系統(tǒng)要掌握設(shè)備的狀態(tài)。 2.設(shè)備存取 實現(xiàn)對設(shè)備的存取操作。,3.設(shè)備分配 在多用戶的環(huán)境下,負(fù)責(zé)設(shè)備的分配和回收。 4.設(shè)備控制 設(shè)備控制包括設(shè)備的驅(qū)動、完成和故障中斷處理。,9,8.1.4 設(shè)備獨立性,一、設(shè)備獨立性的概念 設(shè)備獨立性是指用戶在編程序時所使用的設(shè)備與實際 設(shè)備無關(guān)。 兩類設(shè)備獨立性

4、: 1. 一個程序應(yīng)獨立于分配給它的某類設(shè)備的具體設(shè)備。即在用戶程序中只指明I/O使用的設(shè)備類型即可。如在系統(tǒng)中配備了兩臺打印機,用戶要打印時只要告訴系統(tǒng)要將信息送到打印機即可。 2. 程序要盡可能地與它使用的設(shè)備類型無關(guān)。即在用戶程序中只要指出要輸入或輸出信息,至如信息I/O使用的設(shè)備不需用戶指明。,10,8.1.4 設(shè)備獨立性,二、設(shè)備獨立性的實現(xiàn) 在UNIX系統(tǒng)中,把設(shè)備與文件統(tǒng)一處理,這比前兩種設(shè)備獨立性又算了一步,對于用戶來說,就沒有設(shè)備的概念。,11,8.1.4 設(shè)備獨立性,三、設(shè)備獨立性的優(yōu)點 1.方便用戶編程 2.使用程序運行不受具體的機器環(huán)境的限制,如UNIX系統(tǒng)環(huán)境下,系統(tǒng)

5、提供標(biāo)準(zhǔn)輸入和輸出,在用戶程序中的輸入輸出都使用這兩個標(biāo)準(zhǔn)的I/O,實際運行時,根據(jù)具體情況而定。 如果配備打印機,則將輸出信息送到打印機打印,如果沒有配備打印機,就把輸出重向到某個指定文件,把要打印的信息送到該文件中。 3.便于程序移植,12,8.1.5 設(shè)備控制塊,一、設(shè)備控制塊 設(shè)備控制塊是設(shè)備管理的數(shù)據(jù)結(jié)構(gòu),用來存放設(shè)備的管理和控制信息,每類設(shè)備有一個設(shè)備控制塊。,13,8.1.5 設(shè)備控制塊,二、設(shè)備轉(zhuǎn)換表(設(shè)備開關(guān)表) 設(shè)備開關(guān)表存放設(shè)備驅(qū)動和控制程序人口地址。,14,8.1.5 設(shè)備控制塊,15,8.1.5 設(shè)備控制塊,16,8.2 緩沖技術(shù) 8.2.1 概述,CPU與各種外部設(shè)

6、備的速度上的差異很大,設(shè)備與設(shè)備之間的速度的差異也很大。 系統(tǒng)有時會產(chǎn)生大量的數(shù)據(jù)需要I/O,有時又會很長時間沒有I/O。造成I/O負(fù)荷的不均勻 要解決這兩個方面的問題就要引入緩沖的概念。 緩沖是用來在兩種不同速度的設(shè)備之間傳輸信息時平滑傳輸過程的常用手段。教材上的定義 緩沖技術(shù)是用來匹配CPU與設(shè)備之間速度差異和負(fù)荷的不均勻。 常用的緩沖技術(shù)有三種:雙緩沖、環(huán)形緩沖、緩沖池,17,8.2.2 雙緩沖,系統(tǒng)設(shè)置兩個緩沖區(qū),BUF1和BUF2,各進(jìn)程使用這兩個緩沖區(qū)。這種緩沖技術(shù)是最簡單的,用于低頻度活動號I/O。 工作過程:首先輸入將數(shù)據(jù)送入BUF1,然后,申請BUF2,在向BUF2輸入數(shù)據(jù)的

7、同時,輸出進(jìn)程可從BUF1中取數(shù)據(jù)。同理,向BUF1輸入與從BUF2中取數(shù)據(jù)可以并行。 教材p193圖8.2是雙緩沖技術(shù)應(yīng)用的策略圖。,18,8.2.3 環(huán)形緩沖,在系統(tǒng)中設(shè)置若干緩沖區(qū),并把這些緩沖區(qū)鏈接起來,這樣若干個緩沖區(qū)就形成了一個環(huán),故稱環(huán)形緩沖區(qū)。,19,8.2.3 環(huán)形緩沖,環(huán)形緩沖技術(shù)使用 設(shè)置一個輸入指針in、一個輸出指針out、開始指針strat。系統(tǒng)初始時,strat=in=out。 輸入時,要判斷in是否與out相等,若相等,則要等待。否則,將信息送入in指向的緩沖區(qū),填滿后,將緩沖區(qū)中的指向下一個緩沖區(qū)的指針next置in,如此類推。 輸出時,首先判斷out=in,若

8、相等,則等待(意味著系統(tǒng)中沒有數(shù)據(jù)可取)。否則,取出緩沖區(qū)中的信息,將緩沖區(qū)中的next置out;,20,8.2.4 緩沖池,系統(tǒng)設(shè)置多個緩沖區(qū),形成一個緩沖池。這個池中的緩沖區(qū)為系統(tǒng)中所有的進(jìn)程共享使用。例如,UNIX系統(tǒng)中,在塊設(shè)備管理中設(shè)置了一個15個緩沖區(qū)組成的緩沖池。 為了管理這些緩沖區(qū),建立了以下數(shù)據(jù)結(jié)構(gòu),21,8.3 設(shè)備分配8.3.1 分配原則,一、靜態(tài)分配和動態(tài)分配 1、靜態(tài)分配 當(dāng)一個作業(yè)(或進(jìn)程)運行時,根據(jù)作業(yè)要求的設(shè)備,系統(tǒng)如果能滿足,則將其要求的設(shè)備全部分配給它,然后開始運行,運行完成釋放其占用的所有設(shè)備。 這種分配方式的優(yōu)點是系統(tǒng)絕不會出現(xiàn)死鎖,缺點是設(shè)備利用率太

9、低。,2、動態(tài)分配 這種分配方法是在作業(yè)(或進(jìn)程)運行的過程中,需要使用設(shè)備時,就向系統(tǒng)申請,系統(tǒng)根據(jù)某種分配原則進(jìn)行分配。 這種方法的優(yōu)點是設(shè)備的利用率高,缺點是系統(tǒng)有出現(xiàn)死鎖的可能。,22,8.3 設(shè)備分配8.3.1 分配原則,二、設(shè)備分配算法 1、先來先服務(wù)算法 2、優(yōu)先級高者優(yōu)先 三、設(shè)備分配的安全性 對于共享設(shè)備,不論采用靜態(tài)分配還是采用動態(tài)分配都不會出現(xiàn)死鎖。 對于獨占設(shè)備,采用動態(tài)分配有可能造成死鎖。 獨享分配、共享分配、虛擬分配,23,8.4 I/O控制8.4.1 I/O控制方式,一、循環(huán)測試I/O方式 早期的設(shè)備控制方式采用。 二、I/O中斷方式 為了提高CPU和設(shè)備的利用率

10、,就應(yīng)使CPU與設(shè)備并行工作,采用I/O中斷方式。采用這種方式要求控制寄存器中有一個中斷位。,24,8.4 I/O控制8.4.1 I/O控制方式,在I/O中斷方式下,數(shù)據(jù)的輸入(或輸出)步驟如下: 設(shè)備驅(qū)動程序工作: 1、要求輸入數(shù)據(jù)的進(jìn)程把一個啟動命令和允許中斷位“1”寫入相應(yīng)設(shè)備的控制狀態(tài)寄存器中,從而啟動了該設(shè)備; 2、該進(jìn)程因等待輸入的完成進(jìn)入睡眠狀態(tài)。 3、當(dāng)輸入完成后,輸入設(shè)備向CPU發(fā)出完成中斷請求信號;,25,8.4 I/O控制8.4.1 I/O控制方式,設(shè)備中斷處理程序工作: 4、處理機響應(yīng)中斷,處理該中斷,并喚醒等待輸入完成的進(jìn)程; 5、在以后的某個時期,該程序被調(diào)度到后,

11、繼續(xù)運行。 這種方式的優(yōu)點是大大地提高了CPU的利用效率,缺點是每次I/O都要CPU的干預(yù),如果系統(tǒng)中配備了多臺(套)設(shè)備時,CPU的利用率也會降低。解決的方法是采用通道技術(shù)。,26,8.4 I/O控制8.4.1 I/O控制方式,通道:是計算機系統(tǒng)中專門用于I/O的處理機。 在大、中、小型計算機中一般稱為通道,結(jié)構(gòu)如圖所示。 在個人計算機系統(tǒng)中采用微通道,就是教材中所講的DMA。,27,8.4.2 I/O控制功能,8.4.2 I/O控制功能 控制設(shè)備I/O工作的核心模塊通常稱為設(shè)備驅(qū)動程序。它包括三個方面的功能: 1.解釋用戶I/O命令 2.設(shè)備驅(qū)動 3.中斷處理,28,8.4.2 I/O控制

12、功能,不論是哪種設(shè)備驅(qū)動程序,它的功能是相同的, 接受用戶的I/O請求命令,并把用戶的請求轉(zhuǎn)換成I/O請求塊,掛到相應(yīng)設(shè)備的I/O請求隊列。 每類設(shè)備有一個I/O請求隊列,在系統(tǒng)初始化時,將系統(tǒng)中所有設(shè)備的I/O請求隊列置為空。 在系統(tǒng)初啟時,系統(tǒng)為每類設(shè)備創(chuàng)建一個進(jìn)程,執(zhí)行程序就是該設(shè)備的設(shè)備驅(qū)動程序。由于系統(tǒng)初啟時,相應(yīng)的I/O請求隊列為空,則在該隊列上睡眠。,29,8.4.2 I/O控制功能,一旦有I/O請求塊掛入,喚醒該設(shè)備驅(qū)動進(jìn)程。它被調(diào)度到時,從隊列中取出一個I/O請求塊,并按該塊的內(nèi)容執(zhí)行一次I/O操作,發(fā)出I/O完成(或出錯)中斷信號。然后,檢查請求隊,若為空,則進(jìn)入睡眠狀態(tài),

13、否則,取下一個請求塊。,30,8.5 unix系統(tǒng)設(shè)備管理,兩種設(shè)備類型 1.塊設(shè)備 以字符塊(一般情況下是512字節(jié))為基本I/o單位的設(shè)備稱為塊設(shè)備,如磁盤、磁帶、光盤等; 2.字符設(shè)備 以字符為基本I/O單位的設(shè)備稱為字符設(shè)備。,31,8.5 UNIX系統(tǒng)的設(shè)備管理,8.5.1 UNIX系統(tǒng)設(shè)備管理的特點 1.外部設(shè)備看作文件,由文件系統(tǒng)統(tǒng)一處理; 2.系統(tǒng)設(shè)備配置改變靈活、方便; 3.有效地使用了塊設(shè)備緩沖技術(shù),大大地提高了塊設(shè)備存取操作的速度。,32,8.5.2 UNIX設(shè)備驅(qū)動程序接口,33,8.5.3 設(shè)備管理數(shù)據(jù)結(jié)構(gòu),1.主設(shè)備號和次設(shè)備號 在系統(tǒng)內(nèi)部使用的設(shè)備名稱為設(shè)備號。它

14、由兩個部分組成,主設(shè)備號和次設(shè)備號。 主設(shè)備號:設(shè)備的類型編號; 次設(shè)備號:同類設(shè)備的設(shè)備臺號。,34,8.5.3 設(shè)備管理數(shù)據(jù)結(jié)構(gòu),2.設(shè)備開關(guān)表(塊設(shè)備) Struct bdevsw int (*d_open)(); int (*d_close)(); int (*d_strategy)(); int *d_tab; bdevsw ;,字符設(shè)備開關(guān)表 struct cdevsw int (*d_open)(); int (*d_close)(); int (*d_read)(); int (*d_write)(); int (*d_sgtty)(); cdevsw;,35,8.5.3 設(shè)備

15、管理數(shù)據(jù)結(jié)構(gòu),3.塊設(shè)備表 Struct devtal char d_active; /* 執(zhí)行一個I/O請求的標(biāo)志 */ char d_errcnt; /* 出錯計數(shù)器 */ struct buf *b_forw; /* 設(shè)備緩沖隊列前指針 */ struct buf *b_back; /* 設(shè)備緩沖隊列后指針 */ struct buf *b_actf; /* I/O請求隊列頭指針 */ struct buf *b_actl; /* I/O請求隊列尾指針 */ ,36,8.5.3 設(shè)備管理數(shù)據(jù)結(jié)構(gòu)4.設(shè)備管理數(shù)據(jù)結(jié)構(gòu)的關(guān)系,37,8.5.4 緩沖區(qū)管理一、緩沖區(qū)結(jié)構(gòu),在UNIX系統(tǒng)中采用緩

16、沖池的緩沖技術(shù),系統(tǒng)中設(shè)置一個有15個緩沖區(qū)的緩沖池。每個緩沖區(qū)占514個字節(jié),其中512個字節(jié)用來存放數(shù)據(jù),2個字節(jié)用作校驗用。 為了管理緩沖區(qū),系統(tǒng)還設(shè)置了一個數(shù)據(jù)結(jié)構(gòu),稱為緩沖區(qū)首部,其結(jié)構(gòu)如下:,38,8.5.4 緩沖區(qū)管理一、緩沖區(qū)結(jié)構(gòu),Struct buf int b_flags; /* 標(biāo)志 */ struct buf *b_forw; /* 設(shè)備緩沖隊列前指針 */ struct buf *b_back; /* 設(shè)備緩沖隊列后指針 */ struct buf *av_forw; /* 空閑緩沖隊列前指針 */ struct buf *ac_back; /* 空閑緩沖隊列后指針

17、*/ int b_dev; /* 設(shè)備號 */ int b_wcount; /* 請求傳送的字節(jié)數(shù) */ char *b_addr; /* 緩沖區(qū)的首地址 */ char *b_blkno; /* 設(shè)備的物理塊號 */ char b_error; /* 出錯信息 */ char *b_resid; /* 出錯時尚末傳送的剩余字?jǐn)?shù) */ bufNBUF;,39,8.5.4 緩沖區(qū)管理一、緩沖區(qū)結(jié)構(gòu),b_flags包括: B_WRITE 寫(將信息寫到磁盤上去) B_READ 讀(從磁盤上讀取信息到緩沖區(qū)中) B_DONE I/O操作結(jié)束 B_ERROR 因I/O出錯而中止 B_BUSY 相應(yīng)的緩

18、沖區(qū)正在使用中 B_WANTED 有進(jìn)程正在等待使用該buf,清B_BUSY 時要喚 醒這種進(jìn)程 B_ASYNC 異步I/O標(biāo)志 B_DELWRI 延遲寫,在相應(yīng)緩存移作它用時,要將緩存中 的內(nèi)容寫到相應(yīng)的磁盤塊中。,40,8.5.4 緩沖區(qū)管理二、自由緩沖隊列和設(shè)備緩沖隊列,1.空閑緩沖區(qū)隊列 當(dāng)系統(tǒng)中某個進(jìn)程釋放緩沖區(qū)時,將釋放的緩沖區(qū)的buf掛到該隊列的隊尾。分配緩沖區(qū)是從該隊列隊首取出一個buf,分配給申請者。,41,8.5.4 緩沖區(qū)管理二、自由緩沖隊列和設(shè)備緩沖隊列,2.設(shè)備緩沖區(qū)隊列 當(dāng)某個設(shè)備使用緩沖區(qū)時,將該緩沖區(qū)的buf掛入到相應(yīng)的設(shè)備緩沖隊列,并且一直保留在該隊列中,直至

19、該緩沖區(qū)分配給其它設(shè)備為止。這種處理的目的是讓緩沖區(qū)中的信息盡可能長時間地保留在緩沖區(qū)中,以便以后重用。,42,8.5.4 緩沖區(qū)管理二、自由緩沖隊列和設(shè)備緩沖隊列,43,三、緩沖區(qū)管理算法,44,三、緩沖區(qū)管理算法,1.讀操作的過程 以讀的磁盤塊號和設(shè)備號找到相應(yīng)的設(shè)備緩沖隊列; 若已讀過(緩沖區(qū)中仍保存已讀的磁盤塊),則把緩沖區(qū)的內(nèi)容復(fù)制到用戶指定的內(nèi)存中;(假讀) 若相應(yīng)設(shè)備緩沖隊列中無,說明沒有讀過,則申請一個空閑緩沖區(qū),作讀磁盤塊的操作,然后,把讀入緩沖區(qū)中的內(nèi)存復(fù)制到用戶指定的內(nèi)存區(qū)中;(真讀) 釋放緩沖區(qū),把釋放的緩沖區(qū)掛到空閑緩沖區(qū)隊列的尾部。,45,三、緩沖區(qū)管理算法,2.寫

20、操作 以用戶申請的寫的磁盤塊號和設(shè)備號查相應(yīng)設(shè)備的緩沖隊列; 找到相應(yīng)的塊(原來寫過),則將該緩沖區(qū)從空閑緩沖隊列中摘出,將指定內(nèi)存的內(nèi)容寫到緩沖區(qū)中; 若寫滿緩沖區(qū),則將該緩沖區(qū)的內(nèi)容寫到磁盤中去,然后,釋放緩沖區(qū), 若沒有寫滿一個緩沖區(qū),則將緩沖區(qū)置為延遲寫標(biāo)志,并釋放該緩沖區(qū)。 則沒有找到,則申請一個空閑的緩沖區(qū),操作同前。,46,四、緩沖隊列的初始狀態(tài),緩沖區(qū)管理的初始化: 1.空閑緩沖區(qū)隊列 2.設(shè)備緩沖隊列,每類設(shè)備都有一個設(shè)備緩沖區(qū)隊列。 按UNIX系統(tǒng)的規(guī)定,每個空閑緩沖區(qū)同時要存在于兩個隊列中,空閑緩沖隊列和某個設(shè)備緩沖隊列(也有的系統(tǒng)在實現(xiàn)時,不設(shè)設(shè)備緩沖隊列,而是設(shè)置一個

21、全系統(tǒng)的設(shè)備緩沖的散列)。 為了保證上述規(guī)定,在系統(tǒng)初啟時,系統(tǒng)設(shè)置了一個特別設(shè)備,NODEV。,47,四、緩沖隊列的初始狀態(tài),48,五、緩沖區(qū)分配與釋放,緩沖區(qū)的分配總是先查相應(yīng)的設(shè)備緩沖隊列,若存在于設(shè)備緩沖隊列中,說明該緩沖區(qū)中的內(nèi)容已經(jīng)有用戶使用過,可重復(fù)使用,減少物理讀、寫磁盤的物理操作,加快I/O的速度。 釋放一個緩沖區(qū)時,把釋放的緩沖區(qū)首部插入空閑緩沖隊列的尾部,仍然留在相應(yīng)的設(shè)備緩沖隊列中。 緩沖區(qū)的分配和釋放有五種情況。,49,五、緩沖區(qū)分配與釋放,1.用戶申請讀(或?qū)懀┑膲K在某個設(shè)備緩沖隊列中(散列中),且該緩沖區(qū)空閑。 把buf中的b_flags置為“忙”,并將該緩沖首部從空閑緩沖隊列中摘出。 使用緩沖區(qū)中的信息: 用戶要求讀:則把緩沖區(qū)中的內(nèi)容復(fù)制到用戶指定的內(nèi)存中;釋放該緩沖區(qū),即將其buf 掛到空閑緩沖隊列尾; 用戶要求寫:則把用戶指定的內(nèi)容寫到緩沖區(qū)中,緩沖區(qū)滿,則把其內(nèi)容寫到磁盤上,然后釋放;沒有寫滿,則把b_flags置延遲寫,釋放該磁盤塊。,50,五、緩沖區(qū)分配與釋放,2.設(shè)備緩沖隊列中沒有找到申請的塊,因此,要為申請者分配一個空閑的緩沖區(qū)。 從空閑緩沖隊列的隊首取出一個空閑的緩沖區(qū),并且,b_flags中“延遲寫” 的標(biāo)志沒有置上。 把該緩沖區(qū)的buf從原設(shè)備緩沖隊列中移人申請的設(shè)備緩

溫馨提示

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

評論

0/150

提交評論