操作系統(tǒng)課程設(shè)計(jì)報(bào)告格式_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告格式_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告格式_第3頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告格式_第4頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告格式_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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è)計(jì)報(bào)告江蘇大學(xué)計(jì)算機(jī)學(xué)院課程設(shè)計(jì)報(bào)告課程名稱操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)學(xué)期2010至2011學(xué)年.第 1學(xué)期學(xué)生姓名周勇專(zhuān)業(yè)班級(jí)計(jì)算機(jī)0801學(xué) 號(hào)學(xué)80602049指導(dǎo)教師詹永照開(kāi)課系計(jì)算機(jī)科學(xué)系操作系統(tǒng)課程組制操作系統(tǒng)課程設(shè)計(jì)報(bào)告實(shí)驗(yàn)題目:Linux系統(tǒng)管理實(shí)踐與 設(shè)計(jì)時(shí)間:2010-12-27 至進(jìn)程控制、進(jìn)程通信實(shí)現(xiàn)2011-01-02一、實(shí)驗(yàn)?zāi)康呐c要求1、 掌握基本的同步與互斥算法。2、 學(xué)習(xí)使用Linux中基本的同步對(duì)象,掌握相關(guān)函數(shù)的使用方法。3、 了解Linux中多進(jìn)程的并發(fā)執(zhí)行機(jī)制,實(shí)現(xiàn)進(jìn)程的同步與互斥。4、 查閱相關(guān)資料。5、 熟悉各種命令、系統(tǒng)調(diào)用與實(shí)用

2、程序。6、 按給定功能設(shè)計(jì)相關(guān)程序。7、 撰寫(xiě)課程設(shè)計(jì)報(bào)告。二、實(shí)驗(yàn)內(nèi)容桌上有一只盤(pán)子,盤(pán)子只能放5只水果,每次只能放一只水果或取出一只水果。爸爸專(zhuān)放蘋(píng)果,媽媽專(zhuān)放橘子,兒子專(zhuān)等吃盤(pán)子中的橘子,女兒專(zhuān)等吃盤(pán)子 中的蘋(píng)果。分別用P, V操作實(shí)現(xiàn)他們的協(xié)作行為。三、實(shí)驗(yàn)設(shè)備與環(huán)境實(shí)驗(yàn)設(shè)備:虛擬機(jī)運(yùn)行平臺(tái):Linux語(yǔ)言:c四、 設(shè)計(jì)正文(包括分析與設(shè)計(jì)思路、各模塊流程圖以及帶注釋的主要算法源碼)設(shè)計(jì)思路:設(shè)計(jì)4個(gè)進(jìn)程,分別是父親進(jìn)程,母親進(jìn)程,兒子進(jìn)程, 女兒進(jìn)程。設(shè)置一個(gè)緩沖區(qū),用來(lái)放水果,長(zhǎng)度為5.所以設(shè)置一個(gè)公有信號(hào)量 mutex ,以限制他們對(duì)緩沖區(qū)的放和取,初值為1.另外設(shè)置私有信號(hào) S

3、2,S1.以控制兒子是否可以取橘子吃,女兒是否可以取蘋(píng)果吃。初值 都為0.還要設(shè)置一個(gè)信號(hào)量empty ,控制父親跟母親之間的同步, 初值為5。表示現(xiàn)在緩沖區(qū)有5個(gè)空位可以放。各模塊流程圖:將進(jìn)程插入到等待信號(hào)量 mutex的進(jìn)程隊(duì)列中。并且阻 塞該進(jìn)程。n-1兒子吃一個(gè)橘子執(zhí)行 V(semid_mutex),允許父母放水果,女兒取蘋(píng)果。帶注釋的主要算法源碼:I.Conntrol.c#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#inc

4、lude <sys/shm.h>#include <sys/sem.h>#include <errno.h>#include <string.h>#define SHMKEY 9075 /*共享存儲(chǔ)區(qū)的鍵*/#define SEMKEY_EMPTY 9085#define SEMKEY_S1 9086#define SEMKEY_S2 9087#define SEMKEY_MUTEX 9088* 信號(hào)量數(shù)組的鍵 */#define BUFF_LEN 5 /*緩沖區(qū)可以存放個(gè)水果 */#define FRUIT_LEN 12 /*水果用字符串代替*

5、/void set_sembuf_struct( struct sembuf *sem, int semnum, int semop, int semflg)/*設(shè)置信號(hào)量結(jié)構(gòu)*/sem->sem_num=semnum;sem->sem_op=semop;sem->sem_flg=semflg;main()char *addr, end;int shmid;unsigned char in;int semid_empty, semid_s1,semid_s2, semid_mutex; /*信號(hào)量id*/struct sembuf sem_tmp;/*開(kāi)辟共享存儲(chǔ)區(qū)*/if

6、(shmid = shmget(SHMKEY, BUFF_LEN * FRUIT_LEN, 0777|IPC_CREAT|IPC_EXCL) = -1) if (errno = EEXIST)printf("The Buffer Has Existed!n");printf( "Do You Want To Delete The Buffer(Y = yes)?n=:");scanf("%c”, &end);if (end = 'y' | end ='Y')/*共享存儲(chǔ)區(qū)、信號(hào)量并不隨程序的結(jié)束而被刪除,

7、如果我們沒(méi)刪除的話,可以用ipcs命令查看,用ipcrm刪除*/*釋放緩沖區(qū)*/shmid = shmget(SHMKEY, BUFF_LEN * FRUIT_LEN, 0777);if (shmctl(shmid,IPC_RMID,0) < 0)perror( "shmctl:");/*同時(shí)釋放信號(hào)量*/semid_mutex = semget(SEMKEY_MUTEX,1,0777);semid_empty = semget(SEMKEY_EMPTY,1,0777);semid_s1 = semget(SEMKEY_S1,1,0777);semid_s2 = se

8、mget(SEMKEY_S2,1,0777);semctl(semid_mutex,0,IPC_RMID);semctl(semid_empty,0,IPC_RMID);semctl(semid_s1,0,IPC_RMID);semctl(semid_s2,0,IPC_RMID);elseprintf( "Fail To Create Buffer!n" );return -1;addr = ( char *)shmat(shmid, 0, 0);/* 連接緩沖區(qū) */memset(addr, 0, BUFF_LEN * FRUIT_LEN);shmdt(addr); /*

9、 離開(kāi)緩沖區(qū) */*創(chuàng)建信號(hào)量:1個(gè)用于對(duì)緩沖區(qū)互斥,3個(gè)用于父親、母親、兒子、女兒同步 */if (semid_mutex = semget(SEMKEY_MUTEX,1,0777|IPC_CREAT|IPC_EXCL)=-1)if (errno = EEXIST)printf("The SEMKEY_MUTEX Has Existed!n");elseprintf("Fail To Create SEMKEY_MUTEX!n");return -1;if (semid_s1 = semget(SEMKEY_S1,1, 0777|IPC_CREAT|I

10、PC_EXCL)=-1)if (errno = EEXIST)printf( "The SEMKEY_S1 Has Existed!n"); elseprintf( "Fail To Create SEMKEY_S1!n" );return -1;if (semid_s2 = semget(SEMKEY_S2,1, 0777|IPC_CREAT|IPC_EXCL)=-1)if (errno = EEXIST)printf( "The SEMKEY_S2 Has Existed!n"); elseprintf( "Fail T

11、o Create SEMKEY_S2!n" );return -1;if (semid_empty = semget(SEMKEY_EMPTY,1,0777|IPC_CREAT|IPC_EXCL)=-1) if (errno = EEXIST)printf("The SEM_EMPTY Has Existed!n");elseprintf("Fail To Create SEM_EMPTY!n");return -1;/*給信號(hào)量賦初值*/set_sembuf_struct(&sem_tmp, 0, BUFF_LEN, 0); /*BU

12、FF_LEN*/ semop(semid_empty, &sem_tmp,1);set_sembuf_struct(&sem_tmp, 0, 0, 0);/*0*/semop(semid_s1, &sem_tmp,1);set_sembuf_struct(&sem_tmp, 0, 0, 0);/*0*/semop(semid_s2, &sem_tmp,1);set_sembuf_struct(&sem_tmp, 0, 1,0);/*1*/semop(semid_mutex, &sem_tmp,1);return 0;2.Father.c/

13、*下面的p,v是對(duì)系統(tǒng)調(diào)用的簡(jiǎn)單封裝 */int P( int semid)struct sembuf p_buf;p_buf.sem_num = 0;p_buf.sem_op = -1;p_buf.sem_flg = 0;if (semop(semid, &p_buf, 1)=-1) /*semop參見(jiàn)課件 ppt*/ perror ( "p (semid) falsed" ); exit (1); elsereturn (0);int V( int semid)struct sembuf v_buf; /*struct sembuf參見(jiàn)課件 ppt*/v_buf

14、.sem_num = 0;v_buf.sem_op = 1;v_buf.sem_flg = 0;if (semop(semid, &v_buf, 1)=-1) perror (" v (semid) failed" );exit (1); elsereturn (0);main()char *p_buffer; /*共享存儲(chǔ)區(qū)地址*/unsigned char in; /*生產(chǎn)者存放產(chǎn)品的指針:它的值存放在全局緩沖區(qū)第一個(gè)字節(jié)*/int shmid; /*共享存儲(chǔ)區(qū)id*/int semid_empty, semid_s1,semid_s2, semid_mutex

15、; /*信號(hào)量集合id*/shmid = shmget(SHMKEY, BUFF_LEN *FRUIT_LEN, 0777);/* 連接共享存儲(chǔ)區(qū):2 存放 in,out 的值 */p_buffer = ( char *)shmat(shmid, 0, 0);/* 取共享存儲(chǔ)區(qū)地址 */semid_mutex = semget(SEMKEY_MUTEX,1,0777);/* 獲取全局信號(hào)量 id*/semid_empty = semget(SEMKEY_EMPTY,1,0777);semid_s1 = semget(SEMKEY_S1,1,0777);semid_s2 = semget(SEM

16、KEY_S2,1,0777);/*進(jìn)入臨界區(qū)*/P(semid_empty); /*對(duì)私有信號(hào)量作嗨作*/P(semid_mutex); /*對(duì)公有信號(hào)量作嗨作*/*二者順序不能換*/in = ( unsignedchar )(*p_buffer);int j=0;for (j=0;j<5;j+)if (*(p_buffer + in * FRUIT_LEN)!="apple" )&&(*(p_buffer + in * FRUIT_LEN)!="orange" )printf("father put a apple!n&

17、quot;);"apple"*(p_buffer + in * FRUIT_LEN)=break;in = (in + 1) % BUFF_LEN;shmdt(p_buffer); /* 離開(kāi)緩沖區(qū) */*離開(kāi)臨界區(qū)*/V(semid_s1);V(semid_mutex);3.Mother.c/*下面的p,v是對(duì)系統(tǒng)調(diào)用的簡(jiǎn)單封裝 */ int P( int semid)struct sembuf p_buf;p_buf.sem_num = 0;p_buf.sem_op = -1;p_buf.sem_flg = 0;if (semop(semid, &p_buf,

18、1)=-1)/*semop參見(jiàn)課件 ppt*/perror ( "p (semid) falsed" );exit (1); elsereturn (0);int V( int semid) struct sembuf v_buf; /*struct sembuf 參見(jiàn)課件 ppt*/v_buf.sem_num = 0;v_buf.sem_op = 1;v_buf.sem_flg = 0;if (semop(semid, &v buf, 1)=-1)perror (" v (semid) failed" );exit (1);elsereturn

19、 (0);main()char *p_buffer; /*共享存儲(chǔ)區(qū)地址*/unsigned char in; /*生產(chǎn)者存放產(chǎn)品的指針:它的值存放在全局緩沖區(qū)第一個(gè)字節(jié)*/int shmid; /*共享存儲(chǔ)區(qū)id*/int semid_empty, semid_s1,semid_s2, semid_mutex; /*信號(hào)量集合id*/shmid = shmget(SHMKEY, BUFF_LEN * FRUIT_LEN, 0777);/* 連接共享存儲(chǔ)區(qū):2 存放 in,out 的值 */p_buffer = ( char *)shmat(shmid, 0, 0);/* 取共享存儲(chǔ)區(qū)地址 *

20、/semid_mutex = semget(SEMKEY_MUTEX,1,0777);/* 獲取全局信號(hào)量 id*/semid_empty = semget(SEMKEY_EMPTY,1,0777);semid_s1 = semget(SEMKEY_S1,1,0777);semid_s2 = semget(SEMKEY_S2,1,0777);/*進(jìn)入臨界區(qū)*/P(semid_empty); /*對(duì)私有信號(hào)量作嗨作*/P(semid_mutex); /*對(duì)公有信號(hào)量作嗨作*/*二者順序不能換*/in = ( unsigned char )(*p_buffer);int j=0;for (j=0;

21、j<5;j+)if (*(p_buffer + in * FRUIT_LEN)!= "apple" )&&(*(p_buffer + in * FRUIT_LEN)!= "orange" ) printf( "mother put a orange!n" );*(p_buffer + in * FRUIT_LEN)="orange"break;in = (in + 1) % BUFF_LEN;shmdt(p_buffer); /* 離開(kāi)緩沖區(qū) */*離開(kāi)臨界區(qū)*/V(semid_s2);V(s

22、emid_mutex);4.Son.c/*下面的P,V是對(duì)系統(tǒng)調(diào)用的簡(jiǎn)單封裝 */int P( int semid)struct sembuf p_buf;p_buf.sem_num = 0;p_buf.sem_op = -1;p_buf.sem_flg = 0;if (semop(semid, &p_buf, 1)=-1)/*semop參見(jiàn)課件 ppt*/perror ( "p (semid) falsed" );exit (1);elsereturn (0);int V( int semid)struct sembuf v_buf; /*struct sembu

23、f參見(jiàn)課件 ppt*/v_buf.sem_num = 0;v_buf.sem_op = 1;v_buf.sem_flg = 0;if (semop(semid, &v_buf, 1)=-1)perror (" v (semid) failed" );exit (1);elsereturn (0);main()char *p_buffer; /*共享存儲(chǔ)區(qū)地址*/unsigned char in; /*生產(chǎn)者存放產(chǎn)品的指針:它的值存放在全局緩沖區(qū)第一個(gè)字節(jié)*/int shmid; /*共享存儲(chǔ)區(qū)id*/int semid_empty, semid_s1,semid_s

24、2, semid_mutex; /*信號(hào)量集合id*/shmid = shmget(SHMKEY, BUFF_LEN * FRUIT_LEN, 0777);/* 連接共享存儲(chǔ)區(qū):2 存放 in,out 的值 */p_buffer = ( char *)shmat(shmid, 0, 0);/* 取共享存儲(chǔ)區(qū)地址 */semid_mutex = semget(SEMKEY_MUTEX,1,0777);/* 獲取全局信號(hào)量 id*/semid_empty = semget(SEMKEY_EMPTY,1,0777);semid s1 = semget(SEMKEY S1,1,0777);semid_

25、s2 = semget(SEMKEY_S2,1,0777);/*進(jìn)入臨界區(qū)*/P(semid_s2); /*對(duì)私有信號(hào)量作P操作*/P(semid_mutex); /*對(duì)公有信號(hào)量作嗨作*/*二者順序不能換*/in = ( unsigned char )(*p_buffer);int j=0;printf( "son get a orange!n" );for (j=0;j<5;j+)if (*(p_buffer + in * FRUIT_LEN)= "orange" )*(p_buffer + in * FRUIT_LEN)='0 ;br

26、eak;in = (in + 1) % BUFF_LEN;shmdt(p_buffer); /* 離開(kāi)緩沖區(qū) */*離開(kāi)臨界區(qū)*/V(semid_empty);V(semid_mutex);5.Daughter.c/*下面的p,v是對(duì)系統(tǒng)調(diào)用的簡(jiǎn)單封裝 */ int P( int semid)struct sembuf p_buf;p_buf.sem_num = 0;p_buf.sem_op = -1;p_buf.sem_flg = 0;if (semop(semid, &p_buf, 1)=-1)/*semop參見(jiàn)課件 ppt*/perror ( "p (semid) fa

27、lsed" );exit (1); else return (0);int V( int semid) struct sembuf v_buf; /*struct sembuf 參見(jiàn)課件 ppt*/v buf.sem num = 0;v_buf.sem_op = 1;v_buf.sem_flg = 0;if (semop(semid, &v_buf, 1)=-1)perror (" v (semid) failed" );exit (1);elsereturn (0);main()char *p_buffer; /*共享存儲(chǔ)區(qū)地址*/unsigned ch

28、ar in; /*生產(chǎn)者存放產(chǎn)品的指針:它的值存放在全局緩沖區(qū)第一個(gè)字節(jié)*/int shmid; /*共享存儲(chǔ)區(qū)id*/int semid_empty, semid_s1,semid_s2, semid_mutex; /*信號(hào)量集合id*/shmid = shmget(SHMKEY, BUFF_LEN * FRUIT_LEN, 0777);/* 連接共享存儲(chǔ)區(qū):2 存放 in,out 的值 */p_buffer = ( char *)shmat(shmid, 0, 0);/* 取共享存儲(chǔ)區(qū)地址 */semid_mutex = semget(SEMKEY_MUTEX,1,0777);/* 獲取全

29、局信號(hào)量 id*/semid_empty = semget(SEMKEY_EMPTY,1,0777);semid_s1 = semget(SEMKEY_S1,1,0777);semid_s2 = semget(SEMKEY_S2,1,0777);/*進(jìn)入臨界區(qū)*/P(semid_s1); /*對(duì)私有信號(hào)量作P操作*/P(semid_mutex); /*對(duì)公有信號(hào)量作嗨作*/*二者順序不能換*/in = ( unsigned char )(*p_buffer);int j=0;printf( "daughter get a apple!n" );for (j=0;j<5

30、;j+)if (*(p_buffer + in * FRUIT_LEN)= "apple")*(p_buffer + in * FRUIT_LEN)='0'break;in = (in + 1) % BUFF_LEN;shmdt(p_buffer); /* 離開(kāi)緩沖區(qū) */*離開(kāi)臨界區(qū)*/V(semid_empty);V(semid_mutex);五、實(shí)驗(yàn)結(jié)果及分析放入了 5個(gè)水果,在執(zhí)行父親進(jìn)程,則該進(jìn)程被阻塞pu 1 an o ng 醒! j uo itwiijca I ho s t pu t an o ra ne!rcQi locij ihus t p

31、ut an o rungc !:roGtJocji I boit pul an orange!rootlQca thoit pu I ait upp 也!rnnl'lacja Ihos t put an pp Ie!roollocaIhos t1k-u she). /mke shejfr . /inkt1 shclfr . / inUshel* Jke shej- . / fkeshe# ,/f此時(shí)執(zhí)行兒子進(jìn)程,吃掉一個(gè)橘子,緩沖區(qū)空位增 1 ,喚醒了等rooLlocalho tReshe JS,/mput j n orjngc! rauIhoi tke 號(hào)he#./mput 3n o

32、r anjje ! ronilDcallwitk呼阜h。 K,/mput xn ur jne ! rum 初口ra Iho s tkt? she #Jfput 3n app1e!rooilDcallkoitkptheKVfput nn uppl。!too Hjfloca Iho s tku? zhe 月put an app 1 e ! rooilDcalhoi tkeRheta【an o range !root hjlnia Ihout kcshe 1 c-a t an orange Jroo L doca lho;t I k-e 5he 1 Jt ea t an orangp!root Io

33、cj IhiH i k she# t mi orjugeJI ruo L d f)ca Iho l kEsticJ*待中的父親進(jìn)程,此時(shí)父親可以放入一個(gè)橘子此時(shí)橘子被吃完,再執(zhí)行兒子進(jìn)程,則被阻塞roatloca Ibos L le sheA ea t a n DTEiiif !I rooi Inca 1 keshe-i cal j» oth】曲!I r oot lufu Ihos e k<? th?l es i an DTanjje !IrootlocaIhosI kfshel#執(zhí)行一次母親進(jìn)程,放入一個(gè)橘子,來(lái)喚醒兒子進(jìn)程,此時(shí)剛才的兒 子進(jìn)程執(zhí)行,吃掉一個(gè)橘子。1,a j

34、 - n. >« ri* i-r n-a r- i (rou L iluca lhu* t pul an 口rang史! root loca Eho s tpul an orange!tool :|1)l()c:h Iho s t pul an ornfigeII rou L :luca Ihu s t pu L an crangc1 rnot loca the s tke J在ke shejjtkt? the Iff./tn_ f 工 n a as a - u -rou l<'luca Ihum t eat an orange!roo i i'll oc

35、a I ho s t e-a t an orange!roo Ihos t cj t un oi jjic !TOO t$l oc>Ihos te3 t an orange !rao t loca Ihos tke !ihe #ke d h£ 8緩沖區(qū)滿,執(zhí)行母親進(jìn)程,被阻塞ron |-!ii|cea Jkn s t pii t oil jpp I c !rod l'lcca Itio s I pu i an orange J roallocaIho s t版 qli&H , /-c kt?g* ./(keshe( ,/fko he 5 .kc* she Jrn

36、 put oil orange 1roi* I 如lufH Iku e L ko 5ihr 3. J inpu1 an oranger<*(jrlccaJtiosi ku3hr】* ,/m執(zhí)行兒子進(jìn)程,吃掉一個(gè)橘子,此時(shí)喚醒剛才的母親進(jìn)程,放入一個(gè)橘子 jU !ti Md 1 1 j u uc t9 l r j 1 j 1./ i hi . j er J * tv e >1 :-:y文件舊涮隼E> S<V) 終端切立1 rocl®lcca Ihosl ke shefl . / cI rool'jaca Ihos l rao t # cdl /Iiojt

37、eroollncaIhosi keshet Jf| ronlluca thos 1 hniif fl cd shengput an appIe 1roatloca 1 tios 1 shengj# cd ke sheroc lIoca Jhos t keshr 1# JirGQtJocallwst kshe./$put an jpple!ca( an orange truol,LocaItiusl k士北電占./inroQtlacaltws kcshel#put ail urdJie !roo llcca Ihos l ke 5hefl Jmput wn orange!roa i-laca I

38、hos I ke she 1 fl Jrnput 3n orange!ron lloea Ihojn kcsheJt */mput an orange!(rouIhus L ke sh«M 口女兒吃完了蘋(píng)果,在執(zhí)行女兒進(jìn)程,則被阻塞ea I Jit appIf roa t JL'icca 1 tioi I ke stie #d i an appIe!root Jhos; i keshe 1 Jt ./d ea L dlt app I e !I roo t ?-'! vca I tios i ke btie R .,d ea I ait app If!rao t Itiosi i kc s tic U ./d執(zhí)行父親進(jìn)程,增加一個(gè)蘋(píng)果,喚醒剛才等待中的女兒進(jìn)程,女兒吃掉一個(gè)蘋(píng)果pul an orangel| I :?! L "Eoi-J I hi) s tpit I an a pp le!f rcja t Aloca IhQs i ke J fput 3m afpIe!rootloca Ibosi kejhe# Jf pti I _tji a pp le J( foo t Inca Ihfis i ke shelpu I an a

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論