windows思考題答案_第1頁
windows思考題答案_第2頁
windows思考題答案_第3頁
windows思考題答案_第4頁
windows思考題答案_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、進程與線程1 在對進程或線程做壓力測試時,測試結(jié)果有什么差別,為什么會有這種差別?進行壓力測試時,會造成系統(tǒng)的死機;(1) 創(chuàng)建多個進程時很容易導(dǎo)致系統(tǒng)崩潰(2) 在一個進行中創(chuàng)建多個線程時,系統(tǒng)崩潰程度比前者低因為線程是共享進程中的資源的,線程間的通訊要比進程與進程間的通訊簡單,從而前者易死機2 在對進程創(chuàng)建進行計時的過程中,有幾種計時方法,哪種比較合理?(1) 調(diào)用GetTickCount();(2) 調(diào)用Ctime();(3) 調(diào)用GetSystemDate();采用Ctime()較好,因為它取到了毫秒級的時間,方便時間上的統(tǒng)計;3 在不同系統(tǒng)負荷下的結(jié)果分別有什么區(qū)別,造成該差別的

2、原因是什么?(1) 當(dāng)系統(tǒng)負荷較低時,創(chuàng)建的進程能運行,進程間的通訊也順利進行;(2) 當(dāng)系統(tǒng)負荷重時,很容易造成系統(tǒng)的崩潰,進程間的通訊效率明顯下降;在不同的系統(tǒng)負荷下,結(jié)果具有不可知性,由于CPU中當(dāng)前運行的進程、線程數(shù)不同及它的不確定性,導(dǎo)致出不同的測試結(jié)果;線程可以減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、退出和調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)度線程的創(chuàng)建時間比進程短線程的終止時間比進程短同進程內(nèi)的線程切換時間比進程短由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通過內(nèi)核的通信原因:搶占系統(tǒng)的資源4 進程與線程的概念是什么,在實現(xiàn)上有何種差別?這種差別會帶來何種影響

3、?進程是具有獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配和調(diào)度的獨立單位u 線程的優(yōu)點 減小并發(fā)執(zhí)行的時間和空間開銷(線程的創(chuàng)建、退出和調(diào)度),因此容許在系統(tǒng)中建立更多的線程來提高并發(fā)度 線程的創(chuàng)建時間比進程短 線程的終止時間比進程短 同進程內(nèi)的線程切換時間比進程短 由于同進程內(nèi)線程間共享內(nèi)存和文件資源,可直接進行不通過內(nèi)核的通信5 在創(chuàng)建進程或線程的過程中系統(tǒng)需要做那些特殊處理(比如對調(diào)度和中斷的處理),為什么?創(chuàng)建進程或線程時,系統(tǒng)由用戶態(tài)轉(zhuǎn)入核心態(tài);中斷時保護現(xiàn)場IC寄存器的值,為了將來的恢復(fù).CPU調(diào)度、進程切換通過系統(tǒng)調(diào)用Create函數(shù)創(chuàng)建進程或線程的過程中,

4、系統(tǒng)需要像其他系統(tǒng)調(diào)用一樣由用戶態(tài)切入核心態(tài),這個步驟由中斷實現(xiàn),并通過系統(tǒng)服務(wù)調(diào)度表找到相應(yīng)的創(chuàng)建函數(shù)。這樣做的目的是為了在內(nèi)核中產(chǎn)生相應(yīng)的進程或線程對象和一些內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。6 進程和線程啟動后進入睡眠狀態(tài)或者死循環(huán),這兩種情況對結(jié)果分別有什么影響?進入睡眠狀態(tài):系統(tǒng)相對穩(wěn)定,不占用系統(tǒng)資源;進入死循環(huán)狀態(tài):造成系統(tǒng)崩潰7 賦予不同的優(yōu)先級對測試結(jié)果會有什么影響?創(chuàng)建時間的不一致性;創(chuàng)建效率的高低8 系統(tǒng)負載的不同會對測試結(jié)果有什么影響? 當(dāng)系統(tǒng)負荷較低時,創(chuàng)建的進程能運行,進程間的通訊也順利進行;當(dāng)系統(tǒng)負荷重時,很容易造成系統(tǒng)的崩潰,進程間的通訊效率明顯下降9 該實驗中用到的重要函數(shù)及其

5、參數(shù),名稱及含義。 CreateProcess()函數(shù)用于創(chuàng)建新進程及其主線程,以執(zhí)行指定的程序u ExitProcess()或TerminateProcess(),則進程包含的線程全部終止u ExitProcess()終止一個進程和它的所有線程;它的終止操作是完整的,包括關(guān)閉所有對象句柄、它的所有線程等u TerminateProcess()終止指定的進程和它的所有線程;它的終止操作是不完整的(如:不向相關(guān)DLL通報關(guān)閉情況),通常只用于異常情況下對進程的終止u CreateThread()函數(shù)在調(diào)用進程的地址空間上創(chuàng)建一個線程,以執(zhí)行指定的函數(shù);返回值為所創(chuàng)建線程的句柄u ExitThre

6、ad()函數(shù)用于結(jié)束本線程u SuspendThread()函數(shù)用于掛起指定的線程u ResumeThread()函數(shù)遞減指定線程的掛起計數(shù),掛起計數(shù)為0時,線程恢復(fù)執(zhí)行二、多線程快速排序 1對數(shù)據(jù)分割的均勻程度對排序的時間有何影響,為什么會有這種影響?(1)數(shù)據(jù)分割均勻時,排序效率較高,歷時較短;(2)數(shù)據(jù)分割不均勻時,排序效率不高,歷時較長;原因:分割不均勻時,文件間的交換頻繁,換進換出內(nèi)存頻繁,從而嚴(yán)重影響系統(tǒng)效率。2分解到每個線程的排序算法不應(yīng)采用快速排序算法,為什么?快速排序算法對數(shù)據(jù)量很大的時候才有效,而在線程處理的數(shù)據(jù)量相對來說比較小,從而效率不明顯.3如何通過數(shù)據(jù)量和邊界條件來

7、控制參與排序的線程數(shù)?每個進程(線程)處理的數(shù)據(jù)小于1000以后不再分割(控制產(chǎn)生的進程在20個左右)可以利用一些技巧使分割盡可能均勻4在多線程協(xié)同工作的過程中,進程之間有幾種辦法實現(xiàn)通信?各有什么特點?u 同步互斥問題u 信號量及P、V操作u 進程間高級通信(1)進程的同步:synchronism指系統(tǒng)中多個進程中發(fā)生的事件存在某種時序關(guān)系,需要相互合作,共同完成一項任務(wù)。具體說,一個進程運行到某一點時要求另一伙伴進程為它提供消息,在未獲得消息之前,該進程處于等待狀態(tài),獲得消息后被喚醒進入就緒態(tài),由于各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關(guān)系為進

8、程的互斥(2)以上介紹的各種算法都存在問題,它們是平等進程間的一種協(xié)商機制,需要一個地位高于進程的管理者來解決公有資源的使用問題操作系統(tǒng)可從進程管理者的角度來處理互斥的問題,信號量就是操作系統(tǒng)提供的管理公有資源的有效手段(3)共享內(nèi)存: 相互通信的進程間設(shè)有公共內(nèi)存,一組進程向該公共內(nèi)存中寫,另一組進程從公共內(nèi)存中讀,通過這種方式實現(xiàn)兩組進程間的信息交換(4)消息傳遞:系統(tǒng)為進程提供了兩個高級通訊原語send和receive(5)消息傳遞模式:u 消息緩沖 在內(nèi)存中開設(shè)緩沖區(qū),發(fā)送進程將消息送入緩沖區(qū),接收進程接收傳遞來的緩沖區(qū)u 信箱通信(6)共享文件模式:管道通信(7)內(nèi)存映射機制u 共享

9、存儲區(qū)(shared memory)可用于進程間的大數(shù)據(jù)量通信u 進行通信的各進程可以任意讀寫共享存儲區(qū),也可在共享存儲區(qū)上 使用任意數(shù)據(jù)結(jié)構(gòu)u 在使用共享存儲區(qū)時,需要進程互斥和同步機制的輔助來確保數(shù)據(jù) 一致性u Windows 2000/XP采用文件映射(file mapping)機制來實現(xiàn)共享存儲區(qū),用戶進程可以將整個文件映射為進程虛擬地址空間的一部分來加以訪問5在windows中,內(nèi)存映射文件是如何使用的(步驟)。u CreateFileMapping為指定文件創(chuàng)建一個文件映射對象,返回對象指 針u OpenFileMapping打開一個命名的文件映射對象,返回對象指針u MapVie

10、wOfFile把文件映射到本進程的地址空間,返回映射地址空 間的首地址u FlushViewOfFile可把映射地址空間的內(nèi)容寫到物理文件中u UnmapViewOfFile拆除文件映射與本進程地址空間間映射關(guān)系u CloseHandle可關(guān)閉文件映射對象。當(dāng)完成文件到進程地址空間的映射后,就可利用首地址進行讀寫6 建立內(nèi)存映射文件的過程中使用的命令OpenFileMapping需要哪些參數(shù),表達什么含義?HANDLE OpenFileMapping( DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName);dwDesiredAc

11、cess in Access to the file mapping object. This access is checked against any security descriptor on the target file mapping object. For a list of values,bInheritHandle in If this parameter is TRUE, the new process inherits the handle. Otherwise, it does not. lpName in Pointer to a string that names

12、 the file mapping object to be opened. If there is an open handle to a file mapping object by this name and the security descriptor on the mapping object does not conflict with the dwDesiredAccess parameter, the open operation succeeds7 進程和線程在處理數(shù)據(jù)通信上有何差別,為什么會有這種差別?線程可以共享進程中的資源。效率較高8 用多進程實現(xiàn)和用多線程實現(xiàn)有哪些

13、不同,產(chǎn)生這些不同的原因是什么?每一次運行結(jié)果都有很大的不確定性,雖然原則上線程因為各個之間共享系統(tǒng)的資源,他們只是cpu的調(diào)度單位,而進程不但是cpu的調(diào)度單位還是各種資源的分配單位.好像線程應(yīng)該大大快于進程的排序速度,可從結(jié)果可以看出就本題來說兩者都相差不是太大.原因可能是在數(shù)量不是很大且交換數(shù)據(jù)不是非常頻繁的情況下,線程的優(yōu)勢沒有得到充分的發(fā)揮9 本實驗用到的重要函數(shù)及其參數(shù),名稱及含義。(1)CreateProcess( NULL, / No module name (use command line). "MyChildProcess", / Command li

14、ne. NULL, / Process handle not inheritable. NULL, / Thread handle not inheritable. FALSE, / Set handle inheritance to FALSE. 0, / No creation flags. NULL, / Use parent's environment block. NULL, / Use parent's starting directory. &si, / Pointer to STARTUPINFO structure. &pi ) / Point

15、er to PROCESS_INFORMATION structure. ) (2) = CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)(QuickSort), &thread_infoi,0,&thread_ID);(3) = CreateFile("quicksort1.dat", GENERIC_WRITE, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);(4) CreateFileMapping(hFile, NU

16、LL, PAGE_READWRITE, 0, 128, "Mu_texRunning"); if(hMap=NULL) (5)ViewOfFile(hMap,FILE_MAP_WRITE,0,0,0)(6) UnmapViewofFile(lpMem);(7)CloseHandle(hMap);三、船閘問題1實現(xiàn)互斥的過程中,哪個對象效率比較高?為什么?Semaphore east=1 /向東方向(同步對象)初始方向為向東臨界區(qū)效率比較高,因為它不需要切換到內(nèi)核執(zhí)行臨界段的效率較高,因為除了臨界段是個結(jié)構(gòu)體之外,其他互斥對象都是內(nèi)核對象,因此,產(chǎn)生這樣的對象消耗資源比較多2

17、船閘的級數(shù)對結(jié)果有什么樣的影響,什么原因造成的? semaphore doorN /各級船閘(互斥對象)當(dāng)N越大時,則互斥通過船閘越困難,效率越低船閘的級數(shù)過多可能會引起饑餓問題,因為級數(shù)過多,一方通過的時間將會很長,這樣另一方長時間不能通過而只能等待,這樣就造成了饑餓問題。3如果用事件來實現(xiàn)同步操作,應(yīng)該怎么做?用SendMessage()或PostMessage()進行發(fā)消息,當(dāng)向東方向船支通過船閘時,則對向西方向的等待般支發(fā)送一個消息,表示其可以通過船閘簡單的講,首先Create一個Event對象,同步線程睡在wait函數(shù)上等待目標(biāo)線程觸發(fā)事件的發(fā)生,當(dāng)目標(biāo)線程處理完自己的任務(wù)后,調(diào)用S

18、etEvent,觸發(fā)事件,這樣同步線程被喚醒而開始工作。最后Close。4在該問題中存在哪些同步問題,哪些互斥問題?(1)同步:Semaphore east=1 /向東方向(同步對象)Semaphore west=1 /向西方向(同步對象)(2)互斥:semaphore doorN /各級船閘(互斥對象)互斥問題:每個時刻只能有一艘船通過一個船閘同步對象:同一時刻只能有同一個方向的船只通過船閘,當(dāng)同一個方向所有船只通過后,應(yīng)通知相反方向的船只通航5在該問題中,兩個方向的優(yōu)先級是相等的,如果優(yōu)先級不同,需要加入什么樣的控制當(dāng)兩個方向的優(yōu)先級不同時,則分以下兩種情況:(1)向東方向優(yōu)先(2)向西方

19、向優(yōu)先假定反面船只優(yōu)先,可以象寫者優(yōu)先程序一樣,再增加一個臨界區(qū),第一只反面船只到來時就申請這個臨界區(qū)的所有權(quán),直到所有反面船只都通過了才釋放這個臨界區(qū);而正面船只必須每一只船只都要申請這個臨界區(qū)的所有權(quán),如果發(fā)現(xiàn)有反面船只在這個臨界區(qū)等待,那這只正面船就必須等待反面船只釋放這個臨界區(qū),而后面到來的正面船只由于前面那只正面船未釋放互斥對象mutex而都在mutex隊列等待,這樣就可以實現(xiàn)反面船只優(yōu)先通過了。6船閘級數(shù)很多時,可能會產(chǎn)生饑餓問題,請?zhí)岢鲆环N解決饑餓的方案。每通過一級船閘后,放開鎖權(quán)限,讓另一方向船支通過此船閘可以限制每方每次允許通過的最多船只數(shù),比如每方每次最多允許通過10只船,

20、那么可以加一條判斷語句,判斷當(dāng)船只數(shù)到達10的時候就釋放臨界區(qū),然后把船只數(shù)清零。7何謂死鎖,死鎖產(chǎn)生的原因,預(yù)防或消除的方法。死鎖:是各方循環(huán)等待各方占用的資源情況;原因:互相占用對方想用的資源,但又不放開自己占據(jù)的資源。預(yù)防:防止造成死鎖的四個必要條件;消除:避免及采取相關(guān)算法(如銀行家算法。) 兩個或多個進程無休止的等待發(fā)生一個事件,而這個事件只能由等待中的某個進程引發(fā),當(dāng)達到這樣的一個狀態(tài)時,我們稱這些進程被死鎖。產(chǎn)生原因:在系統(tǒng)中,如果如下四個條件同時成立,那么死鎖能夠發(fā)生: 1). 互斥條件:必須至少有一個資源以非共享的方式被進程持有;更確切的說, 同時只有一個進程可以使用該資源。

21、如果另一個進程請求這個資源,那么該進程必須等待這個資源被釋放。 2). 持有并等待條件:進程必須持有至少一個資源且等待獲取另外的當(dāng)前被其它進程持有的資源。 3). 不可搶占條件:不可以搶占資源;也就是說,資源的釋放只可以是由持有它的進程完成工作后自動釋放。 4). 循環(huán)等待條件:對一組等待進程P0, P1, , Pn來說,必須:P0等待P1持有的資源,P1等待P2持有的資源,Pn-1等待Pn持有的資源,而Pn等待P0持有的資源。預(yù)防:只有四個必要條件同時成立才會發(fā)生死鎖。只要確保其中的一個條件不會成立,我們就可以預(yù)防死鎖。讓我們逐個測試這四個必要條件來詳細說明這中方法?;コ鈼l件:必須確保對不可

22、共享資源(nonsharable resource)的互斥條件。例如,多個進程不可以共享一臺打印機。換句話說,可共享資源(sharable resource)不要求互斥訪問,這樣,可共享資源也不會包含在死鎖中。只讀文件是一個非常好的可共享資源的例子。如果同時有多個進程試圖打開同一個只讀文件,那么它們同時被獲準(zhǔn)訪問這個文件。進程從不需要等待可共享資源。然而,我們通常難以通過阻止互斥條件來預(yù)防死鎖:有些資源本來就是不可共享的。持有和等待條件:為了確保系統(tǒng)中不會發(fā)生持有和等待條件,我們必須確保:不論進程何時請求資源,它都不可以持有其它任何資源。不可搶占條件:第三個必要條件是不可搶占已經(jīng)分配給進程的資

23、源。為了確保這個條件不會成立,我們可以采用如下的協(xié)議。如果一個進程持有一些資源并請求另外的資源,而不能夠立刻獲取所請求的資源(也就是說,這個進程必須等待),那么當(dāng)前持有的所有資源被搶占。換句話說,這些資源隱含的被釋放了。被搶占的資源被添加到這個進程所等待的資源列表。只有當(dāng)這個進程可以重新獲取它的舊資源和所請求的新資源時,它才可以重新開始運行。循環(huán)等待條件:循環(huán)等待條件是死鎖的第四個也是最后一個條件。確保這個條件不會成立的一種方法是對所有的資源類型進行總的排序,并要求進程以遞增的順序請求資源。消除方法:當(dāng)確定系統(tǒng)中存在死鎖時,可以有多種選擇。可以通知操作員死鎖發(fā)生,讓操作員手工解除死鎖。也可以使

24、系統(tǒng)自動從死鎖中恢復(fù)。有兩種解除死鎖的方法。一種方法是簡單的異常終止(abort)一個或多個進程來打斷這個循環(huán)等待。另一種方法是從一個或多個死鎖的進程中搶占資源。8何謂饑餓,請說出饑餓產(chǎn)生的原因,以及確保進程盡可能公平獲得資源的方法饑餓:是指一方總不能分配到資源,總處于等待狀態(tài);原因:算法不正確排除方法:采用正確的算法或預(yù)分配方法9通用操作系統(tǒng)主要包括幾種進程間通信的機制,各側(cè)重解決哪類問題?u 同步互斥問題u 信號量及P、V操作u 進程間高級通信(1)進程的同步:synchronism指系統(tǒng)中多個進程中發(fā)生的事件存在某種時序關(guān)系,需要相互合作,共同完成一項任務(wù)。具體說,一個進程運行到某一點時

25、要求另一伙伴進程為它提供消息,在未獲得消息之前,該進程處于等待狀態(tài),獲得消息后被喚醒進入就緒態(tài),由于各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關(guān)系為進程的互斥(2)以上介紹的各種算法都存在問題,它們是平等進程間的一種協(xié)商機制,需要一個地位高于進程的管理者來解決公有資源的使用問題操作系統(tǒng)可從進程管理者的角度來處理互斥的問題,信號量就是操作系統(tǒng)提供的管理公有資源的有效手段(3)共享內(nèi)存: 相互通信的進程間設(shè)有公共內(nèi)存,一組進程向該公共內(nèi)存中寫,另一組進程從公共內(nèi)存中讀,通過這種方式實現(xiàn)兩組進程間的信息交換(4)消息傳遞:系統(tǒng)為進程提供了兩個高級通訊原語se

26、nd和receive(5)消息傳遞模式:u 消息緩沖 在內(nèi)存中開設(shè)緩沖區(qū),發(fā)送進程將消息送入緩沖區(qū),接收進程接收傳遞來的緩沖區(qū)u 信箱通信(6)共享文件模式:管道通信(7)內(nèi)存映射機制u 共享存儲區(qū)(shared memory)可用于進程間的大數(shù)據(jù)量通信u 進行通信的各進程可以任意讀寫共享存儲區(qū),也可在共享存儲區(qū)上使用任意數(shù)據(jù)結(jié)構(gòu)u 在使用共享存儲區(qū)時,需要進程互斥和同步機制的輔助來確保數(shù)據(jù)一致性u Windows 2000/XP采用文件映射(file mapping)機制來實現(xiàn)共享存儲區(qū),用戶進程可以將整個文件映射為進程虛擬地址空間的一部分來加以訪問10幾種主要的進程通信機制需要進程調(diào)度提供

27、哪些支持,這些支持解決什么問題? (1)切換進程上下文(2)由用戶態(tài)轉(zhuǎn)入系統(tǒng)態(tài)11本實驗用到的重要函數(shù)及其參數(shù),名稱與含義。(1) OpenMutex(MUTEX_ALL_ACCESS,FALSE,"mutex_for_ship_toeast_count")(2) EnterCriticalSection(&east);(3) ReleaseMutex(h_Mutex)(4) WaitForSingleObject(h_Mutex,-1)(5)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(TO_EAST),&thr

28、ead_infoi,0,&thread_ID);四、讀者寫者問題 1該問題同船閘問題的主要區(qū)別,從并發(fā)程度,同步過程的優(yōu)先級等發(fā)面考慮,并指出解決方法的不同。區(qū)別:讀者寫者問題區(qū)分兩種情況(讀者優(yōu)先和寫者優(yōu)先),但船閘問題卻是單一情況;并發(fā)程度、同步過程的優(yōu)先級不一樣,讀者寫者問題要比船閘問題復(fù)雜2請給出一種解決饑餓問題的方案。第一類讀者寫者問題的解法讀者: while (true) P(mutex); readcount +; if (readcount=1) P (w); V(mutex); 讀 P(mutex); readcount -; if (readcount=0) V(w

29、); V(mutex); ;寫者: while (true) P(w); 寫 V(w); ; 規(guī)定每一次讀或者寫操作的最長時間,到達了最長時間就要判斷是否有寫者或者讀者在等待,如果有就釋放臨界區(qū)的所有權(quán),并把讀者或者寫者的數(shù)目清零。3若修改問題約束,不允許并發(fā)讀,允許并發(fā)寫,需要如何修改同步機制?寫者優(yōu)先,控制讀者的進入,只有當(dāng)寫者不寫、并且無寫者再次想進入的時候才允許讀者進入4了解Win32 API中定義的IPC函數(shù),說明比較說明涉及到的幾種同步對象。你猜測哪一種操作速度比較快,證實你的想法,并給出一個合理的解釋。(1)Critical Section 互斥量,臨界區(qū),事件,信號量。臨界區(qū)更

30、快,原因見3.1(2)事件(3)SIGNAL5線程在實現(xiàn)同步的時候,主要有那些同步對象,這些同步對象各有什么特點?同步對象:會個讀、寫者線程,有的對象是允許并發(fā)進行的,而有的對象是不允許并發(fā)操作的 互斥對象、信號量對象和事件對象 互斥對象(Mutex)就是互斥信號量,在一個時刻只能被一個線程使用 信號量對象(Semaphore)就是資源信號量,取值的取值在0到指定最大值之間,用于限制并發(fā)訪問的線程數(shù) 事件對象(Event)相當(dāng)于“觸發(fā)器”,可用于通知一個或多個線程某事件的出現(xiàn) Critical Section對象:只能在同一進程內(nèi)使用的臨界區(qū),同一進程內(nèi)各線程對它的訪問是互斥進行的。6本實驗出

31、現(xiàn)的函數(shù)及其參數(shù),名稱與含義。五、內(nèi)存問題 1 物理頁面的三種狀態(tài)free , reserved, commit的含義。Free:自由狀態(tài);Reserved:保存狀態(tài);Commit:提交狀態(tài);空閑頁面是指那些可以保留或提交的可用頁面保留頁面是邏輯頁面已分配但沒有分配物理存儲的頁面提交頁面是物理存儲(在內(nèi)存中或磁盤上)已被分配的頁面2 VirtualAlloc存在哪兩種主要的調(diào)用方式,各實現(xiàn)什么功能?MEM_COMMIT:在內(nèi)存或磁盤頁面文件中分配物理存儲空間。MEM_RESERVE:保留進程的虛擬地址空間,而不分配物理空間。3 VirtualFree存在幾種主要的調(diào)用方式,各實現(xiàn)什么功能?ME

32、M_DECOMMIT:注銷提交頁面,即釋放物理內(nèi)存空間,但在虛擬地址空間依然保留。MEM_RELEASE:釋放備用頁面,即將物理存儲和虛擬地址空間全部釋放內(nèi)4內(nèi)存映射文件可以用來解決哪些問題,如何使用?采用文件映射(file mapping)機制來實現(xiàn)共享存儲區(qū),用戶進程可以將整個文件映射為進程虛擬地址空間的一部分來加以訪問解決如下問題:§ 加載和執(zhí)行.exe和dll文件,這可以節(jié)省頁文件空間和應(yīng)用程序啟動所需的時間;§ 訪問磁盤上的數(shù)據(jù)文件,這可以減少文件I/O,并且不必對文件進行緩存;§ 實現(xiàn)多個進程間的數(shù)據(jù)共享1) 創(chuàng)建或打開一個文件對象,該對象用于標(biāo)識磁盤

33、上想用作內(nèi)存映射文件的文件。2) 創(chuàng)建一個文件映射對象,告訴系統(tǒng)該文件的大小和打算如何訪問該文件。3) 讓系統(tǒng)將文件映射對象的全部或一部分映射到進程地址空間中步驟1:創(chuàng)建或打開文件步驟2:創(chuàng)建一個文件映射對象步驟3:將文件數(shù)據(jù)映射到進程的地址空間步驟4:從進程的地址空間中撤消文件數(shù)據(jù)的映像4 分析不同參數(shù)的設(shè)置對內(nèi)存分配的結(jié)果影響。將VirtualAlloc函數(shù)的參數(shù)ftAllocationType改為MEM_RESET則減少了dwAvailVirtual(在用戶狀態(tài)下虛擬地址空間中的未保留與未提交的存儲空間)。將VirtualAlloc函數(shù)的參數(shù)ftAllocationType改為MEM_T

34、OP_DOWN不改變?nèi)魏谓Y(jié)果。將flProtect參數(shù)若改為PAGE_GUARD,則操作因為受到保護而結(jié)果不發(fā)生任何變化。將flProtect參數(shù)若改為PAGE_NOCACHE,則操作的結(jié)果同樣不發(fā)生任何變化。5 如果調(diào)換分配,回收,內(nèi)存復(fù)位,加鎖,解鎖,提交,回收的次序,會有什么變化,并分析原因。如果把提交操作放在保留操作前面,則程序不能進行,也就是說,提交的必須是保留頁面。如果把釋放操作放在回收操作前面,則釋放操作會出錯,而且可能減少dwAvailPhys。如果把解鎖操作放在鎖操作前面,則解鎖操作會出錯,對結(jié)果不發(fā)生任何改變。6 在多數(shù)通用操作系統(tǒng)中,內(nèi)存管理分為哪三個層次,分別實現(xiàn)什么功

35、能?(1) 內(nèi)存管理器(2) 地址轉(zhuǎn)換機制(3) 物理內(nèi)存管理7 虛擬存儲有什么優(yōu)越性?在進程開始運行之前,不是裝入全部頁面,而是裝入一個或零個頁面,之后根據(jù)進程運行的需要,動態(tài)裝入其它頁面;當(dāng)內(nèi)存空間已滿,而又需要裝入新的頁面時,則根據(jù)某種算法淘汰某個頁面,以便裝入新的頁面使用戶感覺不到內(nèi)存的“限制”,好象可以“無限”擴充一樣。8 引入線性地址在操作,管理,劃分,保護等方面帶來了什么好處與開銷?加快速度9 為什么需要引入多級頁表,引入多級頁表有什么好處,帶了了什么開銷?可以更大的擴展尋址,帶來尋址開銷。線性地址是邏輯地址和物理地址變換之間的中間層。邏輯地址是段中偏移量,加上相應(yīng)的段基址就成為

36、線性地址,如果不采用分頁機制,則此線性地址就是物理地址;如果啟用分頁機制則還需通過兩級頁表轉(zhuǎn)換為物理地址。對每個進程而言,好像自己擁有獨立的4G線性地址空間,有效的保護了進程內(nèi)的數(shù)據(jù),但同時也增加了地址轉(zhuǎn)換所帶來的開銷。10 多數(shù)操作系統(tǒng)中,把內(nèi)存劃分為系統(tǒng)區(qū)和用戶區(qū),為什么要進行這種劃分,需要什么硬件支持?出于安全性考慮,CR311 物理存儲提交的不同方法,比較各自的優(yōu)缺點。略?12 本實驗中用到的主要函數(shù)及其參數(shù),名稱及含義。六、 高速文件訪問問題1 在文件系統(tǒng)層次提高訪問效率的方法有那些,各自的思想和實現(xiàn)。(1) 緩沖方式:假設(shè)一個進程讀了文件的第一個字節(jié),它常常會按照順序讀第二個第三個

37、字節(jié),一直到讀出所有的字節(jié)。利用這個原理可以進行“預(yù)取“,也就是說,在進程沒請求讀磁盤之前就先把文件讀出來并放到時高速緩存中。 文件緩存:預(yù)讀取。每次讀取的塊大小;緩沖區(qū)大??;替換方式寫回。寫回時機選擇;一致性問題n 類似處理器cache的思想n 局部性原則的思想n 區(qū)別n 只涉及空間局部性n 處理器cache對程序員不可見n 文件cache需要顯式地由程序員控制n 所在層次不同,file cache是在內(nèi)存中為文件做緩沖實現(xiàn):表示用的標(biāo)志位是FILE_FLAG_SEQUENTIAL_SCAN(2) 異步方式:是一種改變指令執(zhí)行順序的機制,它通過設(shè)置打開文件的一個標(biāo)志位來使進程不等待讀寫文件操

38、作而繼續(xù)執(zhí)行。當(dāng)后續(xù)指令必須用到磁盤訪問的結(jié)果數(shù)據(jù)時,它再通過一條WAIT指令進行等待。這樣,在訪盤指令和等待指令之間的指令就可以與磁盤訪問同時進行了,從而大大加快了系統(tǒng)的整體速度。不再等待磁盤操作的完成使處理器和I/O并發(fā)工作n 基本思想:填充I/O操作間等待的CPU時間實現(xiàn):表示用的標(biāo)志位是FILE_FLAG_OVERLAPPED2 對Q1(讀寫比例參數(shù))和Q2(操作相關(guān)概率)分別作定時和定次數(shù)測試,對每種模式產(chǎn)生的結(jié)果進行分析Q1:修改調(diào)用10次,可調(diào)用20次30次;Q2:涉及到多種操作,不僅僅為五種操作可適當(dāng)增加其他操作,如除、MOD(取模)等,使其操作概論分布均勻3 適當(dāng)變換Q1,Q

39、2的值,它們會對結(jié)果產(chǎn)生什么影響?略?4 了解Linux的文件緩沖機制,說明在常規(guī)的ext2文件系統(tǒng)以及某種日志文件系統(tǒng)例如ext3/jfs/raiserFS中緩沖機制有什么不同。ext2 文件系統(tǒng)的安全性還是不錯的, 一般非正常關(guān)機造成的 錯誤都可以修復(fù), 除非在讀寫磁盤的時候非正常關(guān)機. 由于 Linux 采用了 先進緩沖機制和多任務(wù)機制, 在向磁盤些 數(shù)據(jù)的時候,都是先寫到緩沖區(qū)中,軟盤也不例外. 等緩沖區(qū)存滿后 再往硬盤上寫.但這樣就容易造成問題, 因為緩沖

40、區(qū)中總會有數(shù)據(jù), 一旦非正常關(guān)機, 將造成數(shù)據(jù)丟失. 為此, 特地有一個后臺執(zhí)行的 程序,沒隔一段時間就清空一次緩沖區(qū), 以防出現(xiàn)問題. 當(dāng)然,如果 非常湊巧, 在緩沖區(qū)被清空之前斷電了, 文件系統(tǒng)很有可能就被破壞了. ext2 文件系統(tǒng)被設(shè)計成盡量 少產(chǎn)生文件不連續(xù)存放的問題無論是FAT32, EXT2 或者是NTFS,都是基于樹結(jié)構(gòu)的日志文件系統(tǒng):(ext3/reiserfs)ReiserFS 整體來說是個相當(dāng)不錯的系統(tǒng),它處理小型文件(少于4kb)時效能會比e

41、xt2和ext3 來的好/Ext2: 是 GNU/Linux 系統(tǒng)中標(biāo)準(zhǔn)的文件系統(tǒng),其特點為存取文件的性能極好,對于中小型的文件更顯示出優(yōu)勢,這主要得利于其簇快取層的優(yōu)良設(shè)計。其單一文件大小與文件系統(tǒng)本身的容量上限與文件系統(tǒng)本身的簇大小有關(guān),在一般常見的 x86 電腦系統(tǒng)中,簇最大為 4KB, 則單一文件大小上限為 2048GB, 而文件系統(tǒng)的容量上限為 16384GB。但由于目前核心 2.4 所能使用的單一分割區(qū)最大只有 2048GB,因此實際上能使用的文件系統(tǒng)容量最多也只有 2048GB。 Ext3: 顧名思義,它就是 ext2 的下一代,也就是在保有目前 ext2 的格式之下再加上日志功

42、能。目前它離實用階段還有一段距離,也許在下一版的核心就可以上路了。 ext3是一種日志式文件系統(tǒng)。日志式文件系統(tǒng)的優(yōu)越性在于:由于文件系統(tǒng)都有快取層參與運作,如不使用時必須將文件系統(tǒng)卸下,以便將快取層的資料寫回磁盤中。因此每當(dāng)系統(tǒng)要關(guān)機時,必須將其所有的文件系統(tǒng)全部卸下后才能進行關(guān)機。 如果在文件系統(tǒng)尚未卸下前就關(guān)機 (如停電) 時,下次重開機后會造成文件系統(tǒng)的資料不一致,故這時必須做文件系統(tǒng)的重整工作,將不一致與錯誤的地方修復(fù)。然而,此一重整的工作是相當(dāng)耗時的,特別是容量大的文件系統(tǒng),而且也不能百分之百保證所有的資料都不會流失。故這在大型的伺服器上可能會造成問題。 為了克服此問題,業(yè)界經(jīng)長久

43、的開發(fā),而完成了所謂日志式文件系統(tǒng) (Journal File System) 。此類文件系統(tǒng)最大的特色是,它會將整個磁盤的寫入動作完整記錄在磁盤的某個區(qū)域上,以便有需要時可以回朔追蹤。由于資料的寫入動作包含許多的細節(jié),像是改變文件標(biāo)頭資料、搜尋磁盤可寫入空間、一個個寫入資料區(qū)段等等,每一個細節(jié)進行到一半若被中斷,就會造成文件系統(tǒng)的不一致,因而需要重整。然而,在日志式文件系統(tǒng)中,由于詳細紀(jì)錄了每個細節(jié),故當(dāng)在某個過程中被中斷時,系統(tǒng)可以根據(jù)這些記錄直接回朔并重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度相當(dāng)快,幾乎不需要花時間。5 高速文件訪問的三種主要模式有什么主要區(qū)別,適

44、用于什么場合?(1) 無緩沖方式:表示用的標(biāo)志位是FILE_FLAG_NO_BUFFERING(2) 緩沖方式:表示用的標(biāo)志位是FILE_FLAG_SEQUENTIAL_SCAN(3) 異步方式:表示用的標(biāo)志位是FILE_FLAG_OVERLAPPED場合:6 在實驗過程中,讀寫比例參數(shù)Q1和操作相關(guān)概率Q2的含義,對實驗結(jié)果的影響?略7 數(shù)據(jù)緩沖模式的提出是基于什么出發(fā)點提出的,對解決問題有什么效果?“預(yù)取“假設(shè)一個進程讀了文件的第一個字節(jié),它通常會按照順序繼續(xù)讀第二個字節(jié),一直到讀完,所以可以“預(yù)取”。大大加速了訪問磁盤的速度。也保持了文件內(nèi)容的一致性。8 異步傳輸模式的提出是基于何種出發(fā)

45、點的提出的,對解決問題的效果? “指令執(zhí)行順序“的不依賴性填充I/O操作間等待的CPU時間9 數(shù)據(jù)緩沖模式與處理器cache的思想有何異同?文件高速緩存:有一“事后寫”機制,保證了文件內(nèi)容的一致性;cache:僅是為了匹配外設(shè)與CPU之間的速度問題;10 數(shù)據(jù)緩沖模式中如何處理同步和一致性問題。(1) 日志(2) “事后寫”將數(shù)據(jù)從磁盤讀入共享內(nèi)存緩沖區(qū),稱為數(shù)據(jù)緩沖。當(dāng)數(shù)據(jù)庫服務(wù)器需要取數(shù)據(jù)時,它必須先找到數(shù)據(jù)所在的頁。在找到頁后,把該頁從磁盤讀進共享內(nèi)存緩沖池緩沖區(qū),當(dāng)該頁在緩沖池中后,任何其他用戶可以讀取或修改該頁的內(nèi)容,而不必從磁盤中讀入,也就是說,共享內(nèi)存緩沖池中的頁為所有服務(wù)進程共

46、享。當(dāng)頁第一次進共享內(nèi)存時,它與磁盤的內(nèi)容一樣。當(dāng)該頁中的任何數(shù)據(jù)修改時,內(nèi)存與磁盤不一致,如果修改的頁刷到磁盤之前,發(fā)生了故障,數(shù)據(jù)的完整性就會受到損害,物理日志即負責(zé)處理這個問題。由系統(tǒng)的cache manager來實現(xiàn)對緩存的控制a) 讀取數(shù)據(jù)的時候的prefetchb) 定期地更新磁盤上的內(nèi)容使其與cache一致c) 在cache滿的情況下,根據(jù)LRU原則清除緩存的內(nèi)容Write-back機制d) 在用戶要對磁盤寫數(shù)據(jù)時,只更改cache中的內(nèi)容,由cache manager來決定何時將更新反應(yīng)到磁盤11.為解決異步傳輸問題,需要對訪問控制做什么樣的修改,這樣做的意義是什么?它通過設(shè)置

47、打開文件的一個標(biāo)志位來使進程不等待讀寫文件操作而繼續(xù)執(zhí)行。當(dāng)后續(xù)指令必須用到磁盤訪問的結(jié)果數(shù)據(jù)時,它再通過一條WAIT指令進行等待。這樣,在訪盤指令和等待指令之間的指令就可以與磁盤訪問同時進行了,從而大大加快了系統(tǒng)的整體速度。12 本實驗用到的重要函數(shù)及其參數(shù),名稱與含義。(1) void filter_nobuffer(char*source,char*sink,void(*func)(char*addr); /無緩沖模式(2) void filter_sequen(char*source,char*sink,void(*func)(char*addr); /高速緩沖模式(3) void f

48、ilter_overlp(char*source,char*sink,void(*func)(char*addr); /異步模式(4) GetTickCount() /獲得系統(tǒng)當(dāng)前時間(5) CreateFile(LPCTSTR LPFILENAME,DWORD DWDESIREDACCESS,DWORD DWSHAREMODE,LPSECURITY_ATTRIBUTES LPSECURITYATTRIBUTES,DWORD DWCREATIONDISPOSITION,DWORD DWFLAGSANDATTRIBUTES,HANDLE HTEMPLATEDFILE)獲得在第一個參數(shù)中指定的文件

49、句柄(6) ReadFile(HANDLE HFILE,LPVOID LPBUFFER,DWORD NMUMBEROFBYTESTOREAD,LPDWORD LPNUMBEROFBYTESREAD,LPOVERLAPPED LPOVERLAPPED)和WriteFile(HANDLE HFILE,LPCVOID LPBUFFER,DWORD NUMBEROFBYTESTOWRITE,LPDWORD LPNUMBEROFBYTESWRITTEN,LPOVERLAPPED LPOVERLAPPED);(7) GetoverlappedResult(HANDLE HFILE,LPOVERLAPPED

50、 LPOVERLAPPED,LPDWORD LPNUMBEROFBYTESTRANSFERRED,BOOL BWAIT):返回在指定文件、命名管道或通信設(shè)備上重疊操作的結(jié)果CreateFile 七、NDIS問題1NDIS體系如何支持多種類型的網(wǎng)絡(luò)?Microsoft網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范(NDIS)的設(shè)計目的是通過將不同的協(xié)議從網(wǎng)絡(luò)接口卡上拆除,使得用戶可以訪問不同的協(xié)議。NDIS程序庫(NDIS.sys)提供了一個面向NIC驅(qū)動程序的完全抽象的接口,網(wǎng)卡驅(qū)動程序與協(xié)議層驅(qū)動程序及操作系統(tǒng)通過這個接口進行通信通過一系列的導(dǎo)出函數(shù),支持多種類型的網(wǎng)絡(luò).2NDIS包括(小端口驅(qū)動程序)、(中間層驅(qū)動

51、程序)和(協(xié)議驅(qū)動程序),它們各有什么分工?如何配合工作?(1)NDIS小端口驅(qū)動程序(也稱為小端口NIC驅(qū)動程序)有兩種基本功能:a、管理一個網(wǎng)絡(luò)接口卡(NIC),包括通過NIC發(fā)送和接收數(shù)據(jù)b、與高級驅(qū)動程序接口,例如和中間驅(qū)動程序和傳輸協(xié)議驅(qū)動程序NDIS庫導(dǎo)出了一組函數(shù)(NdisXXX 函數(shù)) ,這些函數(shù)封裝了所有的操作系統(tǒng)功能由小端口驅(qū)動程序調(diào)用小端口驅(qū)動程序必須導(dǎo)出一組函數(shù)入口點 (MiniportXxx函數(shù))由NDIS調(diào)用小端口驅(qū)動程序與NDIS以及高層驅(qū)動程序間的交互:發(fā)送 傳輸驅(qū)動程序調(diào)用一個NdisXxx 函數(shù). NDIS通過調(diào)用適當(dāng)?shù)腗iniportXxx函數(shù)將數(shù)據(jù)包傳送

52、給小端口驅(qū)動程序. 小端口驅(qū)動程序通過調(diào)用適當(dāng)?shù)腘disXxx函數(shù)將數(shù)據(jù)包轉(zhuǎn)發(fā)給NIC小端口驅(qū)動程序與NDIS以及高層驅(qū)動程序間的交互:接收 NIC 發(fā)出一個硬件中斷. NDIS調(diào)用 MiniportXxx函數(shù) 小端口驅(qū)動程序從NIC 接收數(shù)據(jù),然后通過調(diào)用NdisXxx 函數(shù)向綁定的上層驅(qū)動程序表明接收的數(shù)據(jù)包的存在(2)中間驅(qū)動程序是那種典型的處于小端口驅(qū)動程序和傳輸協(xié)議驅(qū)動程序之間的驅(qū)動程序。由于它處于驅(qū)動程序?qū)蛹壍闹虚g位置,所以中間驅(qū)動程序必須和上面的協(xié)議驅(qū)動程序和下面的小端口驅(qū)動程序都通訊 在其下邊界,導(dǎo)出協(xié)議入口點 (ProtocolXxx 函數(shù)) 在其上邊界,導(dǎo)出小端口入口點 (

53、MiniportXxx函數(shù))中間驅(qū)動程序典型的用途:過濾網(wǎng)絡(luò)數(shù)據(jù)包過濾器中間驅(qū)動程序在多個網(wǎng)卡間平衡數(shù)據(jù)包的傳輸Mux中間驅(qū)動程序(3)協(xié)議驅(qū)動程序位于NDIS驅(qū)動程序的最高層,它通過中間驅(qū)動程序或直接與小端口驅(qū)動程序打交道,并向下導(dǎo)出一組ProtocolXxx函數(shù)。通常在實現(xiàn)傳輸協(xié)議棧 (例如TCP/IP, IPX)的傳輸驅(qū)動程序中作為最低層在上邊界,協(xié)議驅(qū)動程序與協(xié)議棧中的高層驅(qū)動程序的接口是私有的.協(xié)議驅(qū)動程序通過NDIS完成向小端口驅(qū)動程序或中間驅(qū)動程序的綁定,并使用它們收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包3NDIS協(xié)議驅(qū)動設(shè)計的思想。(1)網(wǎng)絡(luò)上截獲數(shù)據(jù)包的思想自然的設(shè)計思想是每當(dāng)上層應(yīng)用程序請求讀取數(shù)據(jù)

54、時,就為該請求生成一個相應(yīng)的IRP,并將此IRP置于一個讀取等待隊列之中。當(dāng)NIC從網(wǎng)絡(luò)上接收到數(shù)據(jù)包時,由NDIS負責(zé)調(diào)用相應(yīng)的接收函數(shù)。接收函數(shù)從讀取等待隊列的首部取出一個IRP,并將從網(wǎng)絡(luò)上接收到的數(shù)據(jù)拷貝到由該IRP所指定的緩沖區(qū)中。至此,上層應(yīng)用程序便成功接收到了它所需要的數(shù)據(jù)。 這種接收方式的天生缺陷就是丟包。如果上層應(yīng)用程序一直沒有讀取數(shù)據(jù)的請求,那么NIC從網(wǎng)絡(luò)上接收到的數(shù)據(jù)就會直接被丟棄。 (2)解決丟包的策略本程序的設(shè)計思路是協(xié)議驅(qū)動程序負責(zé)維護一個接收緩沖區(qū),該緩沖區(qū)以隊列的形式組織。當(dāng)NIC通知NDIS已從網(wǎng)絡(luò)上接收到數(shù)據(jù)包時,可以先將這些數(shù)據(jù)緩存起來。當(dāng)上層應(yīng)用程序需

55、要讀取數(shù)據(jù)時,該讀操作的數(shù)據(jù)源不是直接從網(wǎng)絡(luò)得到,而是經(jīng)過有效管理的存放著數(shù)據(jù)的緩沖區(qū)。這樣,丟包的問題便得以解決。當(dāng)然,如果上層應(yīng)用程序還是一直沒有讀取數(shù)據(jù)的請求,或者上層應(yīng)用程序處理數(shù)據(jù)的速度低于NIC從網(wǎng)絡(luò)上接收數(shù)據(jù)的速度,再或者網(wǎng)絡(luò)出現(xiàn)峰值流量時,緩沖區(qū)自然會逐漸被填滿,最終還是會出現(xiàn)丟包的情況。但是在正常情況下,這種增設(shè)緩沖的方法已經(jīng)足以避免丟包情況的發(fā)生了。 4NDIS提供了哪幾層接口?NDIS提供了四層軟件接口:傳輸驅(qū)動程序上邊界接口;傳輸驅(qū)動程序下邊界接口;網(wǎng)絡(luò)接口卡上邊界接口;網(wǎng)絡(luò)接口卡下邊界接口;5如何解決丟包問題?負責(zé)維護一個接收緩沖區(qū),該緩沖區(qū)以隊列的形式組織。當(dāng)NIC通知NDIS已從網(wǎng)絡(luò)上接收到數(shù)據(jù)包時,可以先將這些數(shù)據(jù)緩存起來。當(dāng)上層應(yīng)用程序需要讀取數(shù)據(jù)時,該讀操作的數(shù)據(jù)源不是直接從網(wǎng)絡(luò)得到,而是經(jīng)過有效管理的

溫馨提示

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

評論

0/150

提交評論