計(jì)算機(jī)2024-2025學(xué)年第一學(xué)期-《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
計(jì)算機(jī)2024-2025學(xué)年第一學(xué)期-《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
計(jì)算機(jī)2024-2025學(xué)年第一學(xué)期-《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
計(jì)算機(jī)2024-2025學(xué)年第一學(xué)期-《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
計(jì)算機(jī)2024-2025學(xué)年第一學(xué)期-《計(jì)算機(jī)操作系統(tǒng)》實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《計(jì)算機(jī)操作系統(tǒng)》

試驗(yàn)指導(dǎo)書(shū)

(適合于計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè))

湖南工業(yè)高校計(jì)算機(jī)與通信學(xué)院

二00九年十月

刖百

計(jì)算機(jī)操作系統(tǒng)是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的主要專(zhuān)業(yè)基礎(chǔ)課程,其實(shí)踐性、應(yīng)用性很強(qiáng)。實(shí)踐

教學(xué)環(huán)節(jié)是必不行少的一個(gè)重要環(huán)節(jié)。計(jì)算機(jī)操作系統(tǒng)的試驗(yàn)?zāi)康氖羌由顚?duì)理論教學(xué)內(nèi)容的理解和

駕馭,便學(xué)牛較系統(tǒng)地駕馭操作系統(tǒng)的基本原理,加深對(duì)操作系統(tǒng)基本方法的理解,加深對(duì)課堂學(xué)

間的理解,為學(xué)生綜合運(yùn)用所學(xué)學(xué)問(wèn),在Linux環(huán)境下調(diào)用一些常用的函數(shù)編寫(xiě)功能較笥潔的程序

來(lái)實(shí)現(xiàn)操作系統(tǒng)的基本方法、并在實(shí)踐應(yīng)用方面打下肯定基礎(chǔ)。要求學(xué)生在試驗(yàn)指導(dǎo)老師的幫助下

自行完成各個(gè)操作環(huán)節(jié),并能實(shí)現(xiàn)且達(dá)到舉一反三的目的,完成一個(gè)試驗(yàn)解決一類(lèi)問(wèn)題。要求學(xué)生

能夠全面、深化理解和嫻熱駕馭所學(xué)內(nèi)容,并能夠用其分析、設(shè)計(jì)和解答類(lèi)似問(wèn)題:對(duì)?比能夠較好

地理解和駕馭,并且能夠進(jìn)行簡(jiǎn)潔分析和推斷;能夠嫻熟運(yùn)用Linux用戶(hù)界面;駕馭操作系統(tǒng)中進(jìn)

程的概念和限制方法:了解進(jìn)程的并發(fā),進(jìn)程之間的通信方式,了解虛擬存儲(chǔ)管理的基本思想。同

時(shí)培育學(xué)生進(jìn)行分析問(wèn)題、解決問(wèn)題的實(shí)力:培育學(xué)生完成試驗(yàn)分析、試驗(yàn)方法、試驗(yàn)操作與測(cè)試、

試驗(yàn)過(guò)程的視察、理解和歸納實(shí)力。

為了收到良好的試驗(yàn)效果,編寫(xiě)了這本試驗(yàn)指導(dǎo)書(shū)。在指導(dǎo)書(shū)中,每一個(gè)試驗(yàn)均依據(jù)該課程試

驗(yàn)大綱的要求編寫(xiě),力求緊扣理論學(xué)問(wèn)點(diǎn)、突出設(shè)計(jì)方法、明確設(shè)計(jì)思路,通過(guò)多種形式完成試驗(yàn)

任務(wù),最終引導(dǎo)學(xué)生有目的、有方向地完成試驗(yàn)任務(wù),得出試驗(yàn)結(jié)果。任課老師在試驗(yàn)前對(duì)試驗(yàn)任

務(wù)進(jìn)行肯定的分析和講解,要求學(xué)生依據(jù)每一個(gè)試驗(yàn)的具體要求提前完成打算工作,如:查找資料、

設(shè)計(jì)程序、完成程序、寫(xiě)出預(yù)習(xí)報(bào)告等,做到有打算地上機(jī)。進(jìn)行試驗(yàn)時(shí),指導(dǎo)老師應(yīng)檢查學(xué)生的

預(yù)習(xí)狀況,并對(duì)調(diào)試過(guò)程賜予主動(dòng)指導(dǎo)。試驗(yàn)完畢后,學(xué)生應(yīng)依據(jù)試驗(yàn)數(shù)據(jù)及結(jié)果,完成試驗(yàn)報(bào)告,

由學(xué)習(xí)委員統(tǒng)?收齊后交指導(dǎo)老師批閱評(píng)定。

試驗(yàn)成果考核:

試驗(yàn)成果占計(jì)算機(jī)操作系統(tǒng)課程總評(píng)成果的20%。指導(dǎo)老師每次試驗(yàn)對(duì)學(xué)生進(jìn)行出勤考核,對(duì)

試驗(yàn)效果作記錄,并剛好批改試驗(yàn)報(bào)告,綜合評(píng)定每一次的試驗(yàn)成果,在學(xué)期終了以平均成果作為

該生的試驗(yàn)成果。有以卜.情形之一者,試驗(yàn)成果為不及格:

1.遲到、早退、無(wú)故缺勤總共3次及以上者;

2.未按時(shí)完成試驗(yàn)達(dá)3次及以上者;

3.缺交試驗(yàn)報(bào)告2次及以上者。

目錄

第一部分試驗(yàn)環(huán)境及所用系統(tǒng)函數(shù)介紹.......................................1

1.1Linux操作系統(tǒng)簡(jiǎn)介..................................................1

1.2Linux的運(yùn)用........................................................1

1.2.1vi的運(yùn)用.....................................................1

1.2.2gcc的運(yùn)用....................................................2

主要系統(tǒng)調(diào)用函數(shù)....................................................2

其次部分試驗(yàn)內(nèi)容..........................................................5

試驗(yàn)一熟識(shí)LINUX基本吩咐及編程環(huán)境...................................5

試驗(yàn)二進(jìn)程管理........................................................8

試驗(yàn)三進(jìn)程調(diào)度.......................................................12

試驗(yàn)四進(jìn)程間通信.....................................................17

試驗(yàn)五存儲(chǔ)管理試驗(yàn)...................................................20

第一部分試驗(yàn)環(huán)境及所用系統(tǒng)函數(shù)介紹

DOS操作系統(tǒng)是單道操作系統(tǒng),無(wú)法進(jìn)行多道程序設(shè)計(jì),Windows環(huán)境下的Visual

C++雖然也可用于多道程序設(shè)計(jì),但是并不是完全的多道,因?yàn)樗部捎糜贒OS編程。

所以我們的試驗(yàn)選用Linux操作系統(tǒng)。Linux操作系統(tǒng)是一個(gè)類(lèi)UINX操作系統(tǒng),是一

個(gè)純多道并發(fā)的網(wǎng)絡(luò)操作系統(tǒng)。

1.1Linux操作系統(tǒng)簡(jiǎn)介

Linux是一個(gè)多用戶(hù)操作系統(tǒng),是UNIX的一個(gè)克隆版本(界面相同但內(nèi)部實(shí)現(xiàn)不

同),同時(shí)它是一個(gè)自由軟件,是免費(fèi)的、源代碼開(kāi)放的,這是它與UNIX的不同之處。

現(xiàn)在,Linux憑借優(yōu)秀的設(shè)計(jì),不凡的性能,加上IBM、Inlel、CA、CORE、Oracle等

國(guó)際知名企業(yè)的大力支持,市場(chǎng)份額逐步擴(kuò)大,己成為與Windows和UNIX并存的三

大主流操作系統(tǒng)之一。

1.2Linux的運(yùn)用

1.2.1vi的運(yùn)用

1)vi的簡(jiǎn)潔應(yīng)用

vi是linux環(huán)境下赫赫出名的文本編輯工具之一。

進(jìn)入vi編輯器的方法:vifilenames注:文件名必需帶有擴(kuò)展名.c,如filename.c

否則無(wú)法通過(guò)編譯;

進(jìn)入vi后要按:按“i”鍵從吩咐方式切換到輸入方式;

從輸入方式切換到吩咐方式的方法:按“Esc”鍵

保存文件:w

保存文件并退出:wq

不保存文件退出:q!

注:以上操作必需在吩咐方式下進(jìn)行。

2)其他常用vi操作吩咐

上下左右

0:行首

$:行尾

ctrl+f:后翻頁(yè)

ctrl+b:前翻頁(yè)

G:文件尾

數(shù)字G:數(shù)字所指定行

i,I:插入吩咐,i在當(dāng)前光標(biāo)處插入,I行首插入

.1.

a,A:追加吩咐,a在當(dāng)前光標(biāo)后追加,A在行木追加

。,0:打開(kāi)吩咐,。在當(dāng)前行下打開(kāi)一行,0在當(dāng)前行上插入一行

x:刪除光標(biāo)處字符

dd:刪除當(dāng)前行

dO:刪除光標(biāo)前半行

d$:刪除光標(biāo)后半行

r,R:替換吩咐,r替換當(dāng)前光標(biāo)處字符,R從光標(biāo)處起先替換

/string:查找字符串

n:接著查找

N:反向接著查找

%:查找對(duì)應(yīng)括號(hào)

u:取消上次操作

注:以上操作必需在吩咐方式下進(jìn)行。

gcc的運(yùn)用

gcc是linux下的一種C程序編譯工具,運(yùn)用方法如下(有提示符#的狀況):

編譯:gcc-ofilename1filename.c

其中:filename.c是源文件名,filename1是目標(biāo)文件名,o代表object

執(zhí)行:./filenamel

示例:鍵入一簡(jiǎn)潔的程序:

viab.c按回車(chē)鍵輸入以下代碼段,

#includc<stdio.h>

#include<unisted.h>

main()

{printtpaaaa'');

)

按ESC鍵,再按“:WQ”(W是保存,Q是退出)

出現(xiàn)提示符:[root@GGG-LINUXrootl#

鍵入:gcc-。abab.c進(jìn)行編譯。

執(zhí)行:./ab

L2.3主要系統(tǒng)調(diào)用函數(shù)

1.2.1系統(tǒng)調(diào)用fork()

功能:創(chuàng)建一個(gè)新的進(jìn)程.

頭文件:#include<unistd.h>

說(shuō)明:本系統(tǒng)調(diào)用產(chǎn)生一個(gè)新的進(jìn)程,叫子進(jìn)程,是調(diào)用進(jìn)程的一個(gè)復(fù)制品.調(diào)用進(jìn)程

.2.

叫父進(jìn)程,子進(jìn)程繼承了父進(jìn)程的幾乎全部的屬性。

(1)該子進(jìn)程繼承了父進(jìn)程的程序空間,復(fù)制了父進(jìn)程的數(shù)據(jù)段和棧段。也就是說(shuō)

不管是父進(jìn)程還是子進(jìn)程,在占有處理機(jī)后,都從fork()調(diào)用的返回點(diǎn)起先

運(yùn)行;

(2)調(diào)用勝利則對(duì)父進(jìn)程返回子進(jìn)程標(biāo)識(shí)號(hào)pid;

(3)調(diào)用勝利對(duì)子進(jìn)程返回(),這也是最便利的區(qū)分父子進(jìn)程的方法。

(4)若調(diào)用失敗則返回-1給父進(jìn)程,子進(jìn)程不生成。

留意:假如fork。值>0:0的數(shù)即是子進(jìn)程號(hào)。但這時(shí)是父進(jìn)程占有處理機(jī)。

1.2.2系統(tǒng)調(diào)用wait(&status):

功能:等待子進(jìn)程結(jié)束。

(1)當(dāng)有多個(gè)子進(jìn)程時(shí),任一個(gè)子進(jìn)程結(jié)束即將限制返回調(diào)用者,并將子進(jìn)程調(diào)用

exit(status)時(shí)的status值送到&slalus指針?biāo)竼卧小?/p>

(2)在限制返回調(diào)用者時(shí),同時(shí)將所等到的子進(jìn)程pid作為wait()系統(tǒng)調(diào)用函數(shù)

的返回值。

(3)waitpid(pid,-):等待pid所指定的進(jìn)程結(jié)束。

(4)返回值:等待到一個(gè)子進(jìn)程返回時(shí),返回值為該子進(jìn)程號(hào);否則返回值為

說(shuō)明:允許調(diào)用進(jìn)程(即父進(jìn)程)取得子進(jìn)程的狀態(tài)信息,調(diào)用進(jìn)程將會(huì)掛起直到其一

個(gè)子進(jìn)程終止。

1.2.3系統(tǒng)調(diào)用exit()

功能:終止進(jìn)程.

語(yǔ)法:#include<stdlib.h>

voidexit(status)

intstatus

功能:調(diào)用進(jìn)程被該系統(tǒng)調(diào)用終止。該系統(tǒng)調(diào)用發(fā)出后,操作系統(tǒng)將從系統(tǒng)中刪除

調(diào)用exit的進(jìn)程,并將status值傳給等待它結(jié)束的父進(jìn)程。

返回值:無(wú)

1.2.4系統(tǒng)調(diào)用kill()

功能:向一個(gè)或一組進(jìn)程發(fā)送一個(gè)信號(hào)。

語(yǔ)法:#include<signal.h>

intkill(pid,sig);

pid_tpid;intsig;

說(shuō)明:向一個(gè)或一組進(jìn)程發(fā)送一個(gè)信號(hào),該信號(hào)由參數(shù)sig指定,為系統(tǒng)給出的信號(hào)表

中的一個(gè)。

Sig是signal的縮寫(xiě)。

.3.

返回值:調(diào)用勝利則返回0,否則返回-1.

kill-STOP[pid]:發(fā)送SIGSTOP(17,19,23)停止一個(gè)進(jìn)程,而并不殲滅這個(gè)進(jìn)程。

kill-CONT[pid]:發(fā)送SIGCONT(19,18,25)重新起先一個(gè)停止的進(jìn)程。

kill-KILL[pid]:發(fā)送SIGKILL(9)強(qiáng)迫進(jìn)程馬上停止,并且不實(shí)施清理操作。

kill-9-1:終止擁有的全部進(jìn)程。

SIGKILL和SIGSTOP信號(hào)不能被捕獲、封鎖或者忽視。

1.2.5系統(tǒng)調(diào)用lockf()

功能:應(yīng)用、檢測(cè)或刪除打開(kāi)文件的一個(gè)POSIX鎖

語(yǔ)法:#includc<unistd.h>

intlockf(intfd,intcmd,ofOlen);

說(shuō)明:

應(yīng)用、檢測(cè)或刪除打開(kāi)文件某部分的一個(gè)POSIX鎖,文件通過(guò)fd指明,文件的描

述符的懇求操作通過(guò)cmd指明。

#dcfincF_ULOCK0解鎖一個(gè)區(qū)域

#defineF_LOCK1上鎖一個(gè)區(qū)域

#defineF_TLOCK2檢測(cè)并上鎖一個(gè)區(qū)域

#defineF_TEST3檢測(cè)一個(gè)區(qū)域是否上鎖

文件上鎖區(qū)域的懇求起始于隱含的偏移并包好len字節(jié),假如len為負(fù),從

pos...pos+len-l,這里pos為當(dāng)前文件位置,假如len為零,則位置從當(dāng)前文件位置延

長(zhǎng)延長(zhǎng)到無(wú)限長(zhǎng),包括當(dāng)前和以后的文件最終的位置。在全部狀況下,位置可延長(zhǎng)到

以前當(dāng)前的文件的最終位置。

在Linux中,這稱(chēng)為fcntl(2)的接口(一般會(huì)指明lockf和fcntl的關(guān)系)。

1.2.6系統(tǒng)調(diào)用pipe()

是用來(lái)建立管道的。

語(yǔ)法:#include<unistd.h>

intpipeiintfd[2]);這里fd⑴為寫(xiě)入端,fd⑼為讀出端。

功能:從管道里寫(xiě)或從管道里讀。

.4.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

其次部分試驗(yàn)內(nèi)容

試驗(yàn)一熟識(shí)LINUX基本吩咐及編程環(huán)境

一、試驗(yàn)類(lèi)型

本試驗(yàn)為驗(yàn)證性試驗(yàn)。

二、試驗(yàn)?zāi)康呐c任務(wù)

1)熟識(shí)運(yùn)用Linux字符界面,窗口系統(tǒng)的常用吩咐;

2)熟識(shí)運(yùn)用Linux常用的編程工具;

3)熟識(shí)運(yùn)用Linux的在線(xiàn)求助系統(tǒng)。

三、預(yù)習(xí)要求

1)熟識(shí)一種操作系統(tǒng)的運(yùn)用和安裝,如windows操作系統(tǒng)的安裝,DOS系統(tǒng)的運(yùn)

2)了解進(jìn)程的概念及進(jìn)程的狀態(tài)

3)熟識(shí)c語(yǔ)言程序設(shè)計(jì)

4)熟識(shí)c語(yǔ)言程序編譯過(guò)程

四、試驗(yàn)基本原理

進(jìn)入Linux操作系統(tǒng)后,限制終端的吩咐行輸入方式下輸入各種吩咐,并顯示各

種吩咐操作后的輸出結(jié)果,操作包括文件操作吩咐的運(yùn)用,vi吩咐的運(yùn)用以及gcc編

譯器的運(yùn)用,具體的各種吩咐及運(yùn)用方式見(jiàn)第一部分的介紹。

五、試驗(yàn)儀器與設(shè)備(或工具軟件)

試驗(yàn)設(shè)備:計(jì)算機(jī)一臺(tái),軟件環(huán)境要求:安裝RedHatLinux操作系統(tǒng)和gcc

編譯器。

六、試驗(yàn)內(nèi)容

1)運(yùn)用常用的操作吩咐Is,cp,rm,mkdir,man,vi等。

2)熟識(shí)怎么編輯一個(gè)程序(編輯,調(diào)試,運(yùn)行見(jiàn)),輸入一個(gè)簡(jiǎn)潔的C程序進(jìn)行

練習(xí),參考練習(xí)程序如下:

程序1

#include<sldio.h>

.5.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

main()

intpl;

while((pl=fork())==-l);

if(pl==O)

putchar('B');

elseputchar('A');

)

)

程序2

#include<stdio.h>

#include"stdafx.h"

main()

(

introw,column,num,n=6;

for(row=1;row<n;row++)

{for(column=1;column<n-row;column++)

printfC'");

for(num=row;num>=1;num—)

printf('%d",num);

for(num=2;num<=row;num++)

printf("%d",num);

printf(H\n");

}I

七、試驗(yàn)步驟

1)進(jìn)入Linux操作系統(tǒng)

開(kāi)機(jī)后,選擇進(jìn)入Linux操作系統(tǒng)方式,輸入用戶(hù)名和密碼,即可進(jìn)入Linux操作

系統(tǒng)。

2)進(jìn)入限制終端的吩咐行輸入方式

在Linux操作系統(tǒng)環(huán)境下,點(diǎn)擊“小紅帽”菜單,選擇“系統(tǒng)”下拉菜單,選擇“終

端”選項(xiàng),進(jìn)入吩咐行輸入方式。

3)輸入吩咐后按回車(chē)鍵

在吩咐行輸入方式下,輸入各種文件操作吩咐,并按回車(chē)查看顯示結(jié)果,

八、留意事項(xiàng)

.6.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

1)gcc編譯器不能編譯不帝擴(kuò)展名的C語(yǔ)言程序。

2)留意編譯和運(yùn)行程序的基本過(guò)程。

3)留意嫻熟運(yùn)用man吩咐來(lái)查看某條吩咐的含義及運(yùn)用方式。

九、試驗(yàn)報(bào)告要求

要求列出多條吩咐的運(yùn)用和相應(yīng)結(jié)果,須要列出運(yùn)行了的程序清單及相應(yīng)結(jié)果,并

對(duì)結(jié)果進(jìn)行分析和探討,

.7.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

試驗(yàn)二進(jìn)程管理

一、試驗(yàn)類(lèi)型

本試驗(yàn)為設(shè)計(jì)性試驗(yàn)。

二、試驗(yàn)?zāi)康呐c任務(wù)

1)加深對(duì)進(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)分。

2)進(jìn)一步相識(shí)并發(fā)執(zhí)行的實(shí)質(zhì)

三、預(yù)習(xí)要求

1)進(jìn)程的概念

2)進(jìn)程限制的概念及內(nèi)容

3)進(jìn)程的并發(fā)執(zhí)行

4)熟識(shí)互斥的概念

5)用到的Linux函數(shù)有:fork(),lockf()等。

四、試驗(yàn)基本原理

運(yùn)用fork。系統(tǒng)調(diào)用來(lái)創(chuàng)建一個(gè)子進(jìn)程,父進(jìn)程和子進(jìn)程并發(fā)執(zhí)行,交替輸出結(jié)果。

運(yùn)用lockf()系統(tǒng)調(diào)用對(duì)臨界區(qū)進(jìn)行加鎖操作,實(shí)現(xiàn)對(duì)共享資源的互斥運(yùn)用。

五、試驗(yàn)儀器與設(shè)備(或工具軟件)

試驗(yàn)設(shè)備:計(jì)算機(jī)一臺(tái),軟件環(huán)境要求:安裝RedHatLinux操作系統(tǒng)和gcc編

譯器。

六、試瞼內(nèi)容

1)進(jìn)程的創(chuàng)建

編寫(xiě)一段程序,運(yùn)用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子程序。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)

中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)°讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符:父進(jìn)程顯

示字符“a”;子進(jìn)程分別顯示字符“b”和字符飛”。運(yùn)行程序1()次,視察記錄屏幕上的顯

示結(jié)果,并分析緣由。

2)進(jìn)程的限制

修改已編寫(xiě)的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話(huà),再視察

程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析緣由。假如在程序中運(yùn)用系統(tǒng)調(diào)用bckf()來(lái)給

每一個(gè)進(jìn)程加鎖,可以實(shí)現(xiàn)進(jìn)程間的互斥,視察并分析出現(xiàn)的現(xiàn)象。

(1)進(jìn)程的創(chuàng)建參考程序如下:

.8.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

#inciude<stdio.h>

main()

(

intpl,p2;

while((p1=fork())=-1);

if(pl!=O)

(

while(((p2=fork())==-1);

if(p2==0)putchar('b');

elseputchar('c');

)

elseputchar('a');

)

運(yùn)行結(jié)果:bca(或bac)

分析:從進(jìn)程并發(fā)執(zhí)行來(lái)看,輸出bac,acb等狀況都有可能。

緣由:fork。創(chuàng)建進(jìn)程所需的時(shí)間要多于輸出一個(gè)字符的時(shí)間,因此在主程序創(chuàng)建

進(jìn)程的同時(shí),進(jìn)程2就輸出了“b。而進(jìn)程2和主程序的輸出次序是隨機(jī)的,所以出現(xiàn)

上述結(jié)果。

(2)進(jìn)程的限制參考程序如下

#include<stdio.h>

main()

{intpl,p2,i;

while((pl=fork())==-l);

if(pl==0)

{for(i=0;i<5()();i++)

printf("child%d\n”,i);

)

else

(

while((p2=fork())==-1);

if(p2==0)

for(i=0;i<500;i++)

printf("son%d\n",i);

elsefor(i=0;i<500;i++)

printf("daughter%d\n",i);

9

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

運(yùn)行結(jié)果:略

分析:由于函數(shù)p「intf()輸出和字符串之間不會(huì)被中斷,因此字符串內(nèi)部的字符依

次輸出不變。但是由于進(jìn)程并發(fā)執(zhí)行時(shí)的調(diào)度依次和父進(jìn)程的搶占處理機(jī)問(wèn)題,輸出

字符串的依次和先后隨著執(zhí)行的不同而發(fā)生改變。

進(jìn)程加鎖后的參考程序如下:

#include<stdio.h>

main()

{intpl,p2,i;

while((pl=fork())==-l);

if(pl==O)

(

lock(1,1,0);

for(i=0;i<500;i++)

printf("child%d\n",i);

lock(1,0,0);

)

else

(

while((p2=fork())==-1);

if(p2==0)

{

lock(1,1,0)

for(i=0;i<500:i++)

printf("son%d\n",i);

lock(1,0,0)

else

(

lock(1,1,0)

for(i=0;i<500;i++)

printf("daughter%d\n",i);

lock(1,0,0)

}

)

)

.10.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

運(yùn)行結(jié)果:略

分析:學(xué)生自己完成

七、試驗(yàn)步驟

1)進(jìn)入vi編輯器

2)在編譯器中輸入所要運(yùn)行的程序代碼

3)退出編輯器,返回吩咐行輸入方式,運(yùn)用gcc編譯器編譯程序,獲得能運(yùn)行的

目標(biāo)程序。

4)運(yùn)行目標(biāo)程序,查看運(yùn)行結(jié)果。

八、留意事項(xiàng)

1)假如運(yùn)用gcc編譯程序有錯(cuò)的話(huà),須要重新修改程序,直到無(wú)錯(cuò)為止。

2)留意系統(tǒng)是如何創(chuàng)建進(jìn)程的?

3)查看結(jié)果是否是交替輸出,假如修改輸出的次數(shù)是否會(huì)出現(xiàn)交替現(xiàn)象?

4)相關(guān)函數(shù)的介紹見(jiàn)第一部分的介紹。

九、試驗(yàn)報(bào)告要求

須要列出運(yùn)行了的程序清單及相應(yīng)結(jié)果,并對(duì)結(jié)果進(jìn)行分析和探討。對(duì)結(jié)果的分

析主要探討結(jié)果為什么會(huì)交替出現(xiàn)?并發(fā)進(jìn)程是如何執(zhí)行的?

.11.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

試驗(yàn)三進(jìn)程調(diào)度

一、試驗(yàn)類(lèi)型

本試驗(yàn)為綜合性試驗(yàn)

二、試驗(yàn)?zāi)康呐c任務(wù)

在采納多道程序設(shè)計(jì)的系統(tǒng)中,往往有若干個(gè)進(jìn)程同時(shí)處于就緒狀態(tài)。當(dāng)就緒進(jìn)

程個(gè)數(shù)大于處理機(jī)數(shù)時(shí),就必需依照某種策略來(lái)確定那些進(jìn)程優(yōu)先占用處理機(jī)。本試

驗(yàn)?zāi)M在單處理機(jī)狀況下的處理機(jī)調(diào)度,幫助學(xué)生加深了解處理機(jī)調(diào)度的工作。

三、預(yù)習(xí)要求

I)熟識(shí)進(jìn)程限制塊和進(jìn)程組織方式

2)熟識(shí)進(jìn)程調(diào)度的概念

3)熟識(shí)時(shí)間片輪轉(zhuǎn)調(diào)度算法等

4)熟識(shí)c語(yǔ)言編程,指針及結(jié)構(gòu)體等學(xué)問(wèn)

5)數(shù)據(jù)結(jié)構(gòu)中的鏈表的建立及基本操作

四、試驗(yàn)基本原理

進(jìn)程限制塊通過(guò)鏈表隊(duì)列的方式組織起來(lái),系統(tǒng)中存在運(yùn)行隊(duì)列和就緒隊(duì)列(為

簡(jiǎn)潔起見(jiàn),不設(shè)堵塞隊(duì)列),進(jìn)程的調(diào)度就是進(jìn)程限制塊在運(yùn)行隊(duì)列和就緒隊(duì)列之間的

切換。當(dāng)須要調(diào)度時(shí),從就緒隊(duì)列中選擇一個(gè)進(jìn)程占用處理機(jī),即從就緒隊(duì)列中刪除

一個(gè)進(jìn)程,插入到運(yùn)行隊(duì)列中,當(dāng)占用處理機(jī)的進(jìn)程運(yùn)行的時(shí)間片完成后,放棄處理

機(jī),即在運(yùn)行隊(duì)列中的進(jìn)程限制塊等待一段時(shí)間(時(shí)間片)后,從該隊(duì)列上刪除,假

如該進(jìn)程運(yùn)行完畢,則刪除該進(jìn)程(節(jié)點(diǎn));否則,則插入到就緒隊(duì)列中。

五、試驗(yàn)儀器與設(shè)備(或工具軟件)

試驗(yàn)設(shè)備:計(jì)算機(jī)一臺(tái),軟件環(huán)境要求:安裝RedHatLinux操作系統(tǒng)和gcc編譯

器。

六、試驗(yàn)內(nèi)容

設(shè)計(jì)一個(gè)時(shí)間片輪轉(zhuǎn)調(diào)度算法實(shí)現(xiàn)處理機(jī)調(diào)度的程序,具體內(nèi)容如下

I)試驗(yàn)中運(yùn)用的數(shù)據(jù)結(jié)構(gòu)

(DPCB進(jìn)程限制塊

內(nèi)容包括參數(shù)①進(jìn)程名name:②要求運(yùn)行時(shí)間runtime:③優(yōu)先數(shù)prior:④狀態(tài)

.12.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

state;⑤已運(yùn)行時(shí)間runedtimeo

(2)為簡(jiǎn)潔起見(jiàn),只設(shè)運(yùn)行隊(duì)列,就緒鏈表兩種數(shù)據(jù)結(jié)構(gòu),進(jìn)程的調(diào)度在這兩個(gè)隊(duì)

列中切換,如圖3.1所示

圖3.1PCB鏈表

2)每個(gè)進(jìn)程運(yùn)行時(shí)間隨機(jī)產(chǎn)生,為1~20之間的整數(shù)。

3)時(shí)間片的大小由試驗(yàn)者自己定義,可為3或5

4)可參考的程序流程圖如圖3.2

圖3.2模擬進(jìn)程調(diào)度的流程圖

.13.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

5)參考程序

include"stdio.h"

#include"stdlib.h"

typedefstructPCB

(

ininame;

intruntime;

intrunedtirne;

intstate;

intkilltimc;

structPCB*next;

}PCB;

#defineNUM10

voidmain()

(

inttimcslice=3;

PCB*runqueue;

PCB*top,*tail,*tcmp;

inti;

srand(10);

for(i=0;i<NUM;i++)

(

temp=newPCB;

temp->name=i;

tcinp->runtime=rand()%20;

teiTip->runedtime=O;

temp->next=NULL;

temp->kilkime=0;

if(i==0){top=temp;tail=temp;}

else{

tail->next=temp;

tail=tcinp;

)

printf("processname%d,runtime二%d,runcdtime=%d,killtime=%d\n"

,tail->name,(ail->run(ime,tail->runed(ime,iail->killtime);

I

while(top!=NULL)

{

runqueue=top;

top=top->ncxt;

runqueue->next=NULL;

runqucuc->runtimc=runqucuc->runtimc-timcslicc;

if(runqueue->runtime<=0)

.14

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

runqucuc->kiHtime=runqucuc->runtimc+timcslicc;

iunqueue->runedtime=runqueue->runedtime+iunqueue->killtime;

runqucuc->runtimc=O;

printf("processname%d,runtime=%d,runedtime=%d,killtime=%d\n"

,runqueue->name,ninqueue->runtime.runqueue->runedtime,runqueue->killtinie);

)

else{

runqueue->kilkime=tinieslice;

runqueue->iunedtinie=runqueue->runediime+runqueue->killtime;

printf("proccssname%d,runtime=%d,runedtime=%d,killtime=%d\n"

,runqueue->name,runqueue->runtime,runqueue->runedtime,runqueue->killtime);

tail->next=runqueve;

tail=tail->next;

6)運(yùn)行結(jié)果,包括各個(gè)進(jìn)程的運(yùn)行依次,每次占用處理機(jī)的運(yùn)行時(shí)間,可以參考

下列輸出如圖4.3o

processnane=l,run=8,runed=3killtine=3

processname=2,run^0.runcd=3killtinc?3

processnamerun-13,rttned-3.killtime-3

processname=4f.run=6,runed=3^killtine=3

processi*un=0^runed=l-killtine=l

processname=6/run"11-runcd?3^killtinc-3

processnamerun=4^run匕(17-killtime-3

processname=8.run=16,rttned=3?killtine=3

processname=9.run=9,runed=3,killtine=3

processname-10,run-2-rttncd-3.killtinc-3

processname=1,run=5^runed=6.killtine-3

processname=3,run=10,ritned=6.killtine=3

pvocosaname—4,i*un-3,runod-G,kill七itn?-3

processnamerun-8,runcd-6.killtinc-3

processname=7.run=1?runed=6,killtine=3

processname=8-vun=13_riined=6^killtine=3

processname=9/run=6,runed=6-killtinc=3

processname-10?run-0,runed-5.killtine-2

processname=l-run=2-runed=9-kllltine=3

processname=3,run=7^runed=9killtine=3

processname=4,run^-O,runcd=9^.killtinc-3

processname-6^run-5.ruued-9.killtine-3

processnameK.run=0^Mned=7〃killtine=l

processname=8,run=10-i*aned=9.killtine=3

processname-9,run-3,runcd"9.killtinc-3

processnane-l.run-0。runed=ll.killtime?2

圖4.3輸出結(jié)果示意圖

七、試驗(yàn)步驟

I)進(jìn)入vi編輯器

2)在編譯器中輸入所要運(yùn)行的程序代碼

3)退出編輯器,返回吩咐行輸入方式,運(yùn)用gcc編譯器編譯程序,獲得能運(yùn)行的

目標(biāo)程序。

4)運(yùn)行目標(biāo)程序,查看運(yùn)行結(jié)果。

.15

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

八、留意事項(xiàng)

1)修改時(shí)間片大小,查看對(duì)試驗(yàn)結(jié)果的影響。

2)隨機(jī)數(shù)的產(chǎn)生由rand。函數(shù)實(shí)現(xiàn),rand()的輸出隨機(jī)數(shù)范圍在()~2匕之間,須要

轉(zhuǎn)換到0~20范圍。

3)留意鏈表節(jié)點(diǎn)的插入,刪除方法。

九、試驗(yàn)報(bào)告要求

須要列出運(yùn)行了的程序清單及相應(yīng)結(jié)果,并對(duì)結(jié)果進(jìn)行分析和探討。對(duì)結(jié)果的分

析主要探討時(shí)間片大小對(duì)程序執(zhí)行的影響?

.16.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

試驗(yàn)四進(jìn)程間通信

一、試驗(yàn)類(lèi)型

木試驗(yàn)為設(shè)計(jì)性試驗(yàn)

二、試驗(yàn)?zāi)康呐c任務(wù)

了解Linux系統(tǒng)中的進(jìn)程管道通信的基本原理,并能編寫(xiě)簡(jiǎn)潔的管道通信的程序。

三、預(yù)習(xí)要求

1)熟識(shí)進(jìn)程通信的概念

2)熟識(shí)管道通信的基本原理

3)用到的系統(tǒng)調(diào)用有pipe。

四、試驗(yàn)基本原理

試驗(yàn)利用Linux操作系統(tǒng)供應(yīng)的系統(tǒng)調(diào)用pipe。來(lái)實(shí)現(xiàn)兩個(gè)進(jìn)程之間的通信。輸入

進(jìn)程從管道的一端輸入數(shù)據(jù),另一個(gè)進(jìn)程從管道的另一端讀數(shù)據(jù),通過(guò)這種方式來(lái)實(shí)

現(xiàn)進(jìn)程間的通信。

五、試驗(yàn)儀器與設(shè)備(或工具軟件)

試驗(yàn)設(shè)備:計(jì)算機(jī)一臺(tái),軟件環(huán)境要求:安裝RedHalLinux操作系統(tǒng)和gcc編譯

器C

六、試驗(yàn)內(nèi)容

編制一段程序,實(shí)現(xiàn)進(jìn)程管道通信。運(yùn)用系統(tǒng)調(diào)用pipe。建立一條管道。兩個(gè)子進(jìn)

程PI和P2分別向管道各寫(xiě)一句話(huà):

Childprocess1issendingmessage!

Childprocess2issendingmessage!

而父進(jìn)程則從管道中讀出來(lái)自?xún)蓚€(gè)子進(jìn)程的信息、,顯示在屏幕上。

參考程序程序如下

#include<unistd.h>

#include<signal.h>

#includc<stdio.h>

intpidl,pid2;

main(){

intfd[2J;

.17.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

charOutPipellOOJJnPipel100J;

pipe(fd);

while((pidl=fork())==-l);

if(pidl==O){

lockf(fd[l],l,0);

sprintf(OutPipe,"\nChildprocess1issendingmessage!\n");

write(fd[l],OutPipe,50);

sleep(5);

lockf(fd[l],0,0);

exi1(0);

)

else{

while((pid2=fork())==-1);

if(pid2==0){

lockf(fd[l],l,0);

sprintf(OutPipe,"\nChildprocess2issendingmessage!\n");

write(fd[l],OutPipe,50);

sleep(5);

lockf(fd[1],(),());

exit(0);

)

clsc{

wait(0);

read(fd[0],InPipe,50);

prinlf("%s\n”,InPipe);

wait(0);

read(fd[0],InPipc,50);

printf("%s\n",InPipe);

exit(O);

)

)

)

七、試驗(yàn)步驟

1)進(jìn)入vi編輯器

2)在編譯器中輸入所要運(yùn)行的程序代碼

.18.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

3)退出編輯器,返回吩咐行輸入方式,運(yùn)用gcc編譯器編譯程序,獲得能運(yùn)行的

目標(biāo)程序。

4)運(yùn)行目標(biāo)程序,查看運(yùn)行結(jié)果。

八、留意事項(xiàng)

1)管道按怎樣的方式傳送消息?是否能夠雙向傳送消息?

2)在管道通信方式中,如何來(lái)實(shí)現(xiàn)進(jìn)程同步與互斥的?

3)pipe。函數(shù)的運(yùn)用可參看第一部分的介紹。

九、試驗(yàn)報(bào)告要求

須要列出運(yùn)行了的程序清單及相應(yīng)結(jié)果,并對(duì)結(jié)果進(jìn)行分析和探討。對(duì)結(jié)果的分

析主要探討管道通信方式的特點(diǎn),試驗(yàn)結(jié)果是否體現(xiàn)該特點(diǎn)。

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

試驗(yàn)五存儲(chǔ)管理試驗(yàn)

一、試驗(yàn)類(lèi)型

本試驗(yàn)為綜合性試驗(yàn)。

二、試驗(yàn)?zāi)康呐c任務(wù)

1)理解動(dòng)態(tài)異長(zhǎng)存儲(chǔ)分區(qū)資源管理

2)駕馭所需數(shù)據(jù)結(jié)構(gòu)和管理程序

3)了解各種存儲(chǔ)安排算法的優(yōu)點(diǎn)利缺點(diǎn)。

4)編程實(shí)現(xiàn)動(dòng)態(tài)不等長(zhǎng)存儲(chǔ)管理的模擬程序。

三、預(yù)習(xí)要求

I)進(jìn)程限制的概念及內(nèi)容

2)熟識(shí)存儲(chǔ)管理的概念

3)了解動(dòng)態(tài)分區(qū)管理的思想,熟識(shí)安排算法和回收算法

4)熟識(shí)c語(yǔ)言編程,指針及結(jié)構(gòu)體等學(xué)問(wèn)

5)數(shù)據(jù)結(jié)構(gòu)中的鏈表的建立及基本操作

四、試驗(yàn)基本原理

運(yùn)用一個(gè)一維數(shù)組來(lái)模擬內(nèi)存儲(chǔ)空間,建立內(nèi)存塊來(lái)記錄內(nèi)存安排運(yùn)用狀況,通過(guò)

隨機(jī)產(chǎn)生進(jìn)程及其所須要的內(nèi)存來(lái)模擬真實(shí)的進(jìn)程。通過(guò)給進(jìn)程安排內(nèi)存及回收來(lái)實(shí)

現(xiàn)對(duì)動(dòng)態(tài)不等長(zhǎng)存儲(chǔ)管理方法。

五、試驗(yàn)儀器與設(shè)備(或工具軟件)

試驗(yàn)設(shè)備:計(jì)算機(jī)一臺(tái),軟件環(huán)境要求:安裝RedHatLinux操作系統(tǒng)和gcc編

譯器。

六、試驗(yàn)內(nèi)容

I)試驗(yàn)中運(yùn)用的數(shù)據(jù)結(jié)構(gòu)

(1)內(nèi)存塊表,包括參數(shù)①進(jìn)程名name;②起始地址address;③長(zhǎng)度length;

④標(biāo)記flag,表示該塊是否被安排。

(2)為簡(jiǎn)潔起見(jiàn),只設(shè)內(nèi)存安排記錄鏈表數(shù)據(jù)結(jié)構(gòu),用來(lái)記錄內(nèi)存安排與空閑狀

況。

2)試驗(yàn)中假設(shè)有若干個(gè)進(jìn)程,如5個(gè),每個(gè)須要空間隨機(jī)產(chǎn)生,為0~2()之間的整

.20.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

數(shù),進(jìn)程名字試驗(yàn)者自己定義,可以是一個(gè)整數(shù)。

3)其他一些參數(shù),如內(nèi)存空間的大小試驗(yàn)者自己定義,建議為100;

4)為了得到清楚的試驗(yàn)結(jié)果,建議先給每個(gè)進(jìn)程安排存儲(chǔ)空間,后進(jìn)行回收。

5)程序的流程圖如圖5.1,圖5.2,圖5.3

圖5.1總的流程圖圖5.2安排流程圖

圖53回收流程圖

6)參考程序

#include"math.h"

#include"stdafx.h"

^include"stdio.h,,

21.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

#include"stdlib.h"

typedefstructMEMORY.BLOCK

(

intname;

intaddress;

intlength:

intflag;

MEMORY.BLOCK*next;

}MEM()RY_BLOCK;

intallocation(MEMORY_BLOCK+Hname,intlime);

intreclaini(intprocessname,MEMORY_BLOCK*Hcadcr);

intmain()

(

#defineNUM10

int

MEMORY.BLOCK*Header,*t;

Header=newMEMORY_BLOCK;〃初始化存儲(chǔ)空間

Hcadcr->namc=-1;

Header->address=O;

Header->length=100;

Header->tlag=O;

Header->next=NULL;

srand(lOO);

for(i=0;i<NUM;i++)

{

time=rand()%20;//(ime=time%20;

allocation(Hcadcr,i,tinie);

}

t=Header;

while(t!=NULL)

{

printf("processname%d,addrcss=%d,lcngth=%d,flag=%d\n"

,t->name,t->address,t->length,t->flag);

t=t->next;

)

intprocessname=3;〃回收

printf("回收processname%d\n”,processname);

reclaim(processname,Header);

t=Headcr;

while(t!=0)

{

print('("processname%d,address=%d,length=%djlag=%d\n"

,t->name,t->address,t->length,t->flag);

t=t->next;

}

proccssnamc=4;

.22.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

printf("回收processname%d\n",proccssnamc);

rcclaim(proccssnamc.Hcadcr);

t=Header;

while。!=0)

{

printf("processname%d,address=%d,length=%d,flag=%d\n"

,t->name,t->address,t->length,t->flag);

t=t->next;

)

return1;

)

intreclaim(intprocessname,MEMORY_BLOCK*Header)

(

MEMORY_BLOCK

t=Header;

temp=t;

while(t->name!=processname)

{

cemp=l;

t=t->next;

)

if(t==O){printf("noprocess");return0;}

else

{if(t->next!=NULL)

if(tcmp->flag==0&&t->ncxt->flag==0)//£右為空

{lemp->name=-1;

temp->length=temp->lcngth+t->length+t->next->length;

l(=t->nexl;

temp->next=tt->next;

deleteit;

deletet;

)

elseif(temp->flag==0)〃左為空

{

temp->name=-1;

tenip->length=teiTip->length+t->length;

temp->next=t->next;

deletet;

)

elseif(l->nexl->flag==0)//右為空

(

l->name=-1;

t->length=t->length+t->next->length;

t->tlag=O;

tt=t->next:

t->ncxt=tt->ncxt;

.23.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

deletett;

else{

t->name=-1;

t->tlag=O;

}

else

{

if(temp->flag==O)〃左為空

{

tcmp->namc=-1;

temp->leng(h=temp->leng(h+t->length;

temp=t->next;

deletet;

}

else{

t->name=-1;

t->flag=O;

return1;

)

intallocation(MEMORY_BLOCK*Header,intname,inttime)

(

MEMORY.BLOCK

intthresh=2;

t=Header;

while(t!=0)

{

if(t->lcngth>timc&&t->flag==O)break;

t=t->next;

)

if(t==O){printf("nomemory:%d\n'\name);return0;}

else{

if(t->length-time>thresh)〃分割

(

temp=newMEMORY.BLOCK;

temp->name=-1;

lemp->llag=0;

temp->length=t->length-time;

tenip->address=t->address+lime;

t->name=name;

t->flag=l;

.24.

計(jì)算機(jī)操作系統(tǒng)試驗(yàn)指導(dǎo)書(shū)

t->lcngth=timc;

tcmp->ncxt=t->ncxt;

t->nexl=temp;

)

else〃干脆安排

(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論