版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程名稱: 操作系統(tǒng)原理 </p><p> 題目名稱: 可變分區(qū)存儲管理 </p><p> 姓 名: 學(xué) 號: </p>&
2、lt;p> 班 級: 同 組 姓 名: 無 </p><p> 課程設(shè)計時間: 2013.1.7~2013.1.11 </p><p> 評 語: </p><p> 成 績: </p&
3、gt;<p><b> 課程設(shè)計題目</b></p><p><b> 一、設(shè)計內(nèi)容及要求</b></p><p> ?。ㄒ笞⒚餍〗M分工情況)</p><p><b> 設(shè)計內(nèi)容:</b></p><p><b> 可變分區(qū)存儲管理。</
4、b></p><p> 設(shè)計一個可變分區(qū)存儲管理方案,模擬實現(xiàn):主存的分配和回收,地址變換。</p><p><b> 輸入:</b></p><p> 輸入進(jìn)程名稱及使用內(nèi)存的大?。▌?chuàng)建進(jìn)程);</p><p> 結(jié)束某一個指定的進(jìn)程。</p><p><b> 邏輯地
5、址。</b></p><p> 輸出:顯示內(nèi)存使用狀況;每一個進(jìn)程占據(jù)的內(nèi)存;物理地址。</p><p> 使用的分配算法包括:</p><p> ?。?)首次適應(yīng)算法;</p><p> ?。?)最佳適應(yīng)算法;</p><p> ?。?)最差適應(yīng)算法;</p><p><
6、b> 二、詳細(xì)設(shè)計</b></p><p><b> 1)原理概述</b></p><p> 內(nèi)存分配有固定分區(qū)分配方式和動態(tài)分區(qū)分配方式,固定分區(qū)分配是最簡單的一種可以運(yùn)行多道程序的存儲管理方式。它是將內(nèi)存空間劃分為若干個固定大小的區(qū)域,在每個分區(qū)中只裝入一道作業(yè),它把用戶空間劃分為幾個分區(qū),允許有多道作業(yè)并發(fā)運(yùn)行。</p>&
7、lt;p> 它的分區(qū)劃分方法有兩種:1、分區(qū)大小相等,即使所有的內(nèi)存分區(qū)大小相同。2、分區(qū)大小不等。它的分配方式存在缺點,即缺乏靈活性,浪費(fèi)內(nèi)存,如果一個進(jìn)程申請很少的一塊內(nèi)存,那么它會占據(jù)整個內(nèi)存分區(qū),即使還有大部分空閑,例如一個進(jìn)程有5k,申請了分區(qū)號4的內(nèi)存,雖然還有123k內(nèi)存,但是其他進(jìn)程也不可以利用,只有進(jìn)程結(jié)束了,其他進(jìn)程才可以利用,內(nèi)存十分浪費(fèi)。</p><p> 在上邊的基礎(chǔ)上,便產(chǎn)生
8、了可變分區(qū)分配方式。它是根據(jù)進(jìn)程的實際需要,動態(tài)的為它分配內(nèi)存空間,避免了上邊的固定分區(qū)分配方式的缺點。</p><p> 它涉及到分區(qū)分配中所用的數(shù)據(jù)結(jié)構(gòu)、分區(qū)分配算法和分區(qū)的分配與回收操作這三個問題。</p><p> 分區(qū)分配中的數(shù)據(jù)結(jié)構(gòu)</p><p> 在這里我使用了空閑分區(qū)表。在系統(tǒng)中設(shè)置一張空閑分區(qū)表,用于記錄每個空閑分區(qū)的情況。每個空閑分區(qū)占一
9、個表目,表中包括了分區(qū)號、分區(qū)始址、分區(qū)大小、和一個代表它是空閑的狀態(tài)。在系統(tǒng)中還有一張已分配表,用于記錄已經(jīng)分配給相應(yīng)進(jìn)程的內(nèi)存,它的表目與空閑分區(qū)表一樣,狀態(tài)是已分配。</p><p><b> 分區(qū)分配算法</b></p><p> A首次適應(yīng)算法(first fit)</p><p> 每次分配時,總是從未分配區(qū)表頭順序查找未分配
10、表或鏈表,找到第一個能滿足長度要求的空閑區(qū)為止。分割這個找到的未分配區(qū),一部分分配給作業(yè),另一部分仍為空閑區(qū)。</p><p> 這種分配算法優(yōu)先利用主存低地址空閑分區(qū),從而,保留了高地址的大的空閑區(qū)。但由于低地址空閑分區(qū)不斷被分割,既可能將大的空間分割掉,也造成低地址部分有較多難以使用的“碎片”。作為改進(jìn),可把空閑區(qū)按地址從小到大排列在未分配表或鏈表中,因為,為作業(yè)分配主存空間時從低地址部分的空閑區(qū)開始查找,
11、可使高地址部分盡可能少用,以保持一個大的空閑區(qū),有利于大作業(yè)的裝入。但是,這給回收分區(qū)帶來一些麻煩,每次收回一個分區(qū)后,必須搜索未分配區(qū)表或鏈表來確定它在表格或鏈表中的位置且要移動相應(yīng)的登記項。</p><p> B最佳適應(yīng)算法(best fit)</p><p> 該算法要掃描整個未分配區(qū)表或鏈表,從空閑區(qū)中挑選一個能滿足作業(yè)要求的最小分區(qū)進(jìn)行分配。這種算法可保證不去分割一個更大的區(qū)
12、域,使裝入大作業(yè)時比較容易得到滿足。采用這種分配算法時可把空閑區(qū)按長度以遞增順利排列,查找時總是從最小的一個區(qū)開始,直到找到一個滿足要求的分區(qū)為止。按這種方法,在回收一個分區(qū)時也必須對分配表或鏈表重新排列。最優(yōu)適應(yīng)分配算法找出的分區(qū)如果正好滿足要求則是最合適的了,如果比所要求的略大則分割后使剩下的空閑區(qū)就很小,以致無法使用。</p><p> C最壞適應(yīng)算法(worst fit)</p><
13、p> 最壞適應(yīng)分配算法要掃描整個未分配區(qū)表或鏈表,總是挑選一個最大的空閑區(qū)分割給作業(yè)使用,其優(yōu)點是可使剩下的空閑區(qū)不至于太小,對中、小作業(yè)有利。采用這種分配算法時可把空閑區(qū)按長度以遞減順序排列,查找時只要看第一個分區(qū)能否滿足作業(yè)要求,這樣使最壞適應(yīng)分配算法查找效率很高。</p><p><b> 分區(qū)分配操作</b></p><p> 它主要涉及到分區(qū)的分
14、配內(nèi)存和回收內(nèi)存問題。</p><p><b> A分配內(nèi)存</b></p><p><b> B回收內(nèi)存</b></p><p> 內(nèi)存回收有四種回收狀態(tài)狀態(tài),比較復(fù)雜點。如下圖:</p><p> X為將要回收的內(nèi)存,A、B為正在運(yùn)行的進(jìn)程,回收X有四種合并狀態(tài)。黑色區(qū)域為回收后的空閑內(nèi)
15、存。</p><p><b> 2)主要數(shù)據(jù)結(jié)構(gòu)</b></p><p> 定義了內(nèi)存分區(qū)結(jié)構(gòu)體,在此基礎(chǔ)上定義了此結(jié)構(gòu)體的對象free[100]和used[100],分別表示空閑分區(qū)表和已分配的分區(qū)表,他們的最大值都是100,而且結(jié)構(gòu)也相同。Procnum是全局變量,用于已分配的進(jìn)程分區(qū)號,每個進(jìn)程唯一。</p><p> struct
16、 table </p><p><b> {</b></p><p> int tablenum;//分區(qū)號</p><p> int startaddr;//起始地址</p><p> int length;//長度</p><p> char state[10];//分配狀態(tài)<
17、/p><p><b> };</b></p><p> table free[100];//空閑分區(qū)表</p><p> table used[100];//已分配分區(qū)表</p><p> int freelength;//空閑分區(qū)表長度</p><p> int usedlength;//
18、已分配分區(qū)表長度</p><p> int procnum=0;//進(jìn)程分區(qū)號</p><p><b> 3)算法(流程圖)</b></p><p><b> 程序狀態(tài)流程圖</b></p><p><b> 內(nèi)存分配流程圖</b></p><p&g
19、t;<b> 4)源程序文件名</b></p><p><b> os課程設(shè)計1</b></p><p> #include<iostream.h></p><p> #include <string.h></p><p> struct table </p&
20、gt;<p><b> {</b></p><p> int tablenum;//分區(qū)號</p><p> int startaddr;//起始地址</p><p> int length;//長度</p><p> char state[10];//分配狀態(tài)</p><p&
21、gt;<b> };</b></p><p> table free[100];//空閑分區(qū)表</p><p> table used[100];//已分配分區(qū)表</p><p> int freelength;//空閑分區(qū)表長度</p><p> int usedlength;//已分配分區(qū)表長度</p
22、><p> int procnum=0;//進(jìn)程分區(qū)號</p><p> void initial();//初始化分區(qū)</p><p> void firstfit();//首次適應(yīng)算法</p><p> void bestfit();//最佳適應(yīng)算法</p><p> void worstfit();//最壞適
23、應(yīng)算法</p><p> void terminal();//結(jié)束進(jìn)程</p><p> int transfer();//邏輯地址轉(zhuǎn)換</p><p> void print();//打印輸出</p><p> int main()</p><p><b> {</b></p&g
24、t;<p> cout<<"///////////////////可變分區(qū)存儲管理系統(tǒng)///////////////////"<<endl;</p><p> initial();</p><p> int s,n,x=1;</p><p><b> print();</b>&l
25、t;/p><p><b> while(x)</b></p><p><b> {</b></p><p> cout<<"//////////////////////////////////////////////////////////"<<endl;</p>
26、<p> cout<<"--1、創(chuàng)建進(jìn)程(進(jìn)程名 內(nèi)存大小);"<<endl</p><p> <<"--2、結(jié)束進(jìn)程(進(jìn)程名);"<<endl</p><p> <<"--3、邏輯地址轉(zhuǎn)換;"<<endl</p><p&
27、gt; <<"--4、退出"<<endl<<"->";</p><p><b> cin>>n;</b></p><p> switch (n)</p><p><b> {</b></p><p>
28、;<b> case 1:</b></p><p> cout<<"--使用算法1、首次適應(yīng)算法;2、最佳適應(yīng)算法;3、最差適應(yīng)算法"<<endl<<"->";</p><p><b> cin>>s;</b></p><p&g
29、t; switch (s)</p><p><b> {</b></p><p><b> case 1:</b></p><p> firstfit();</p><p><b> break;</b></p><p><b>
30、case 2:</b></p><p> bestfit();</p><p><b> break;</b></p><p><b> case 3:</b></p><p> worstfit();</p><p><b> break;&
31、lt;/b></p><p><b> }</b></p><p><b> print();</b></p><p><b> break;</b></p><p><b> case 2:</b></p><p>
32、 terminal();</p><p><b> print();</b></p><p><b> break;</b></p><p><b> case 3:</b></p><p> transfer();</p><p><b
33、> break;</b></p><p><b> case 4:</b></p><p><b> x=0;</b></p><p><b> break;</b></p><p><b> }</b></p>
34、<p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void initial()</p><p><b> {</b></p><
35、;p> for (int i=0;i<100;i++)</p><p><b> {</b></p><p> free[i].tablenum=-1;</p><p> free[i].startaddr=-1;</p><p> free[i].length=0;</p><
36、p> strcpy(free[i].state,"free ");</p><p> used[i].tablenum=-1;</p><p> used[i].startaddr=-1;</p><p> used[i].length=0;</p><p> strcpy(used[i].state,&q
37、uot;used ");</p><p><b> }</b></p><p> freelength=0;</p><p> usedlength=0;</p><p> free[0].tablenum=0;</p><p> free[0].startaddr=0;<
38、;/p><p> free[0].length=50;</p><p> free[1].tablenum=1;</p><p> free[1].startaddr=50;</p><p> free[1].length=100;</p><p> free[2].tablenum=2;</p>
39、<p> free[2].startaddr=150;</p><p> free[2].length=80;</p><p> free[3].tablenum=3;</p><p> free[3].startaddr=230;</p><p> free[3].length=40;</p><p&
40、gt; free[4].tablenum=4;</p><p> free[4].startaddr=270;</p><p> free[4].length=200;</p><p> free[5].tablenum=5;</p><p> free[5].startaddr=470;</p><p>
41、 free[5].length=150;</p><p> freelength=6;</p><p><b> }</b></p><p> void print()</p><p><b> {</b></p><p> cout<<"//
42、////////////////////////////////////////////////////////"<<endl;</p><p> cout<<"空閑分區(qū)表:"<<endl<<"分區(qū)號/起始地址/大小/狀態(tài)"<<endl;</p><p> for (int i
43、=0;i<freelength;i++)</p><p><b> {</b></p><p> cout<<free[i].tablenum<<'\t'<<free[i].startaddr<<'\t'<<free[i].length<<'\t&
44、#39;<<free[i].state<<endl;</p><p><b> }</b></p><p> cout<<"已分配分區(qū)表:"<<endl<<"分區(qū)號/起始地址/大小/狀態(tài)"<<endl;</p><p> for
45、 (i=0;i<usedlength;i++)</p><p><b> {</b></p><p> cout<<used[i].tablenum<<'\t'<<used[i].startaddr<<'\t'<<used[i].length<<'
46、\t'<<used[i].state<<endl;</p><p><b> }</b></p><p> cout<<"//////////////////////////////////////////////////////////"<<endl;</p><p&
47、gt;<b> }</b></p><p> int transfer()</p><p><b> {</b></p><p><b> int m;</b></p><p> cout<<"輸入要轉(zhuǎn)換的分區(qū)號:"<<en
48、dl<<"->";</p><p><b> cin>>m;</b></p><p> for (int i=0;i<usedlength;i++)</p><p><b> {</b></p><p> if (used[i].tab
49、lenum==m)</p><p><b> {</b></p><p> cout<<m<<"--->(物理地址)"<<used[i].startaddr<<endl;</p><p><b> return 1;</b></p>
50、<p><b> }</b></p><p><b> }</b></p><p> cout<<"邏輯分區(qū)號輸入錯誤。"<<endl;</p><p><b> return 0;</b></p><p>&l
51、t;b> }</b></p><p> void firstfit()</p><p><b> {</b></p><p> char procname[20];</p><p> int proclength;</p><p> int i,j,flag,t;&l
52、t;/p><p> cout<<"輸入進(jìn)程的名稱和大小:"<<endl<<"->"; </p><p> cin>>procname; </p><p> cin>>proclength;</p><p> for(i=0;i<
53、freelength;i++)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p><b> { </b></p><p><b> flag=1; </b></p>
54、<p><b> } </b></p><p><b> } </b></p><p> if(flag==0)</p><p><b> { </b></p><p> cout<<endl<<"無滿足要求的空閑內(nèi)存,請
55、稍候再試"<<endl; </p><p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p><b> t=0; </b></p><
56、;p><b> i=0; </b></p><p> while(t==0)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p><b> { </b></p>
57、<p><b> t=1; </b></p><p><b> } </b></p><p><b> i++; </b></p><p><b> } </b></p><p><b> i--; </b>&
58、lt;/p><p> used[usedlength].startaddr=free[i].startaddr; </p><p> strcat(used[usedlength].state,procname); </p><p> used[usedlength].length=proclength; </p><p> used[u
59、sedlength].tablenum=procnum;</p><p> usedlength++;</p><p> procnum++;</p><p> if(free[i].length>proclength)</p><p> { //空閑區(qū)域大于申請的區(qū)域</p><p> free[i]
60、.startaddr+=proclength; </p><p> free[i].length-=proclength; </p><p><b> } </b></p><p><b> else</b></p><p> { //空閑區(qū)域等于申請的區(qū)域</p><p
61、> for(j=i;j<freelength-1;j++)</p><p><b> { </b></p><p> free[j]=free[j+1]; </p><p><b> } </b></p><p> freelength--; </p><p
62、><b> } </b></p><p> cout<<"內(nèi)存空間分配成功"<<endl; </p><p><b> } </b></p><p><b> }</b></p><p> void bestfit()
63、</p><p><b> {</b></p><p> //int procnum=0;</p><p> char procname[20];</p><p> int proclength;</p><p> int i,j,flag,t;</p><p>
64、; cout<<"輸入進(jìn)程的名稱和大小:"<<endl<<"->"; </p><p> cin>>procname; </p><p> cin>>proclength;</p><p><b> flag=0; </b><
65、/p><p> for(i=0;i<freelength;i++)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p><b> { </b></p><p><b>
66、; flag=1; </b></p><p><b> } </b></p><p><b> } </b></p><p> if(flag==0)</p><p><b> { </b></p><p> cout<&l
67、t;endl<<"無滿足要求的空閑內(nèi)存,請稍候再試"<<endl; </p><p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p><b>
68、 t=0; </b></p><p><b> i=0; </b></p><p> while(t==0)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p>&
69、lt;b> { </b></p><p><b> t=1; </b></p><p><b> } </b></p><p><b> i++; </b></p><p><b> } </b></p><
70、p><b> i--; </b></p><p> for(j=0;j<freelength;j++)</p><p><b> { </b></p><p> if((free[j].length>=proclength)&&(free[j].length<free[i].
71、length))</p><p><b> { </b></p><p><b> i=j; </b></p><p><b> } </b></p><p><b> } </b></p><p> used[usedl
72、ength].startaddr=free[i].startaddr; </p><p> strcat(used[usedlength].state,procname); </p><p> used[usedlength].length=proclength;</p><p> used[usedlength].tablenum=procnum;</
73、p><p> usedlength++; </p><p> procnum++;</p><p> if(free[i].length>proclength)</p><p><b> { </b></p><p> free[i].startaddr+=proclength; &l
74、t;/p><p> free[i].length-=proclength; </p><p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p> for(j=i;j<f
75、reelength-1;j++)</p><p><b> { </b></p><p> free[j]=free[j+1]; </p><p><b> } </b></p><p> freelength--; </p><p><b> } &l
76、t;/b></p><p> cout<<"內(nèi)存空間分配成功"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void worstfit()</p><p>
77、;<b> {</b></p><p> //int procnum=0;</p><p> char procname[20];</p><p> int proclength;</p><p> int i,j,flag,t;</p><p> cout<<"
78、;輸入進(jìn)程的名稱和大小:"<<endl<<"->"; </p><p> cin>>procname; </p><p> cin>>proclength;</p><p><b> flag=0; </b></p><p> f
79、or(i=0;i<freelength;i++)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p><b> { </b></p><p><b> flag=1; </b>
80、;</p><p><b> } </b></p><p><b> } </b></p><p> if(flag==0)</p><p><b> { </b></p><p> cout<<endl<<"
81、無滿足要求的空閑內(nèi)存,請稍候再試"<<endl; </p><p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p><b> t=0; </b><
82、;/p><p><b> i=0; </b></p><p> while(t==0)</p><p><b> { </b></p><p> if(free[i].length>=proclength)</p><p><b> { </b&g
83、t;</p><p><b> t=1; </b></p><p><b> } </b></p><p><b> i++; </b></p><p><b> } </b></p><p><b> i--;
84、 </b></p><p> for(j=0;j<freelength;j++)</p><p><b> { </b></p><p> if((free[j].length>=proclength)&&(free[j].length>free[i].length))</p>
85、<p><b> { </b></p><p><b> i=j; </b></p><p><b> } </b></p><p><b> } </b></p><p> used[usedlength].startaddr=fre
86、e[i].startaddr; </p><p> strcat(used[usedlength].state,procname); </p><p> used[usedlength].length=proclength; </p><p> used[usedlength].tablenum=procnum;</p><p> u
87、sedlength++; </p><p> procnum++;</p><p> if(free[i].length>proclength)</p><p><b> { </b></p><p> free[i].startaddr+=proclength; </p><p>
88、 free[i].length-=proclength; </p><p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p> for(j=i;j<freelength-1;j++)<
89、;/p><p><b> { </b></p><p> free[j]=free[j+1]; </p><p><b> } </b></p><p> freelength--; </p><p><b> } </b></p&g
90、t;<p> cout<<"內(nèi)存空間分配成功"<<endl;</p><p><b> } </b></p><p><b> }</b></p><p> void terminal()</p><p><b> {&l
91、t;/b></p><p> char procname[20];</p><p> int proclength;</p><p> int i,j,flag,p=0;</p><p> int start; </p><p> int length;</p><p> co
92、ut<<"輸入要結(jié)束的進(jìn)程名:"<<endl<<"->"; </p><p> cin>>procname;</p><p> char buffer[20];</p><p> strcpy(buffer,"used ");</p>
93、<p> strcat(buffer,procname);</p><p><b> flag=-1; </b></p><p> for(i=0;i<usedlength;i++)</p><p> { //尋找指定名稱的作業(yè)</p><p> if(!strcmp(used[i].stat
94、e,buffer))</p><p><b> { </b></p><p><b> flag=i; </b></p><p> start=used[i].startaddr; </p><p> length=used[i].length; </p><p>&
95、lt;b> } </b></p><p><b> } </b></p><p> if(flag==-1)</p><p><b> { </b></p><p> cout<<"沒有這個進(jìn)程名"<<endl; </p&
96、gt;<p><b> } </b></p><p><b> else</b></p><p><b> { </b></p><p> for(i=0;i<freelength;i++)</p><p><b> { </b&g
97、t;</p><p> if((free[i].startaddr+free[i].length)==start)//與前邊的鄰接</p><p><b> { </b></p><p> if(((i+1)<freelength)&&(free[i+1].startaddr==start+length)) //分配
98、了一個空閑表表項</p><p><b> {</b></p><p> free[i].length=free[i].length+free[i+1].length+length; //三塊合并</p><p> for(j=i+1;j<freelength;j++)</p><p><b>
99、{ </b></p><p> free[j]=free[j+1]; </p><p><b> } </b></p><p> freelength--; </p><p><b> p=1; </b></p><p><b> } <
100、/b></p><p> else//兩塊合并</p><p><b> { </b></p><p> free[i].length+=length; </p><p><b> p=1; </b></p><p><b> } </b>
101、;</p><p><b> } </b></p><p> if(free[i].startaddr==(start+length))//與后邊鄰接</p><p><b> { </b></p><p> free[i].startaddr=start; </p><
102、p> free[i].length+=length; </p><p><b> p=1; </b></p><p><b> } </b></p><p><b> }</b></p><p> if(p==0)//既不與前鄰接,也不與后鄰接</p>
103、;<p><b> { </b></p><p> free[freelength].startaddr=start; </p><p> free[freelength].length=length; </p><p> free[freelength].tablenum=free[freelength-1].table
104、num+1;</p><p> freelength++;</p><p><b> }</b></p><p> for(i=flag;i<usedlength;i++)</p><p><b> { </b></p><p> used[i]=us
105、ed[i+1]; </p><p><b> } </b></p><p> usedlength--; </p><p><b> } </b></p><p><b> }</b></p><p><b> 執(zhí)行文件名</b
106、></p><p> 三、實驗結(jié)果與分析(要有結(jié)果截圖)</p><p><b> 初始界面</b></p><p> 首次適應(yīng)算法創(chuàng)建進(jìn)程a 30</p><p> 最佳適應(yīng)算法創(chuàng)建進(jìn)程b 90</p><p> 最差適應(yīng)算法創(chuàng)建進(jìn)程c 100</p><p&
107、gt;<b> 結(jié)束進(jìn)程b</b></p><p> 邏輯地址轉(zhuǎn)換:輸入分區(qū)號2,找到了物理地址270</p><p><b> 退出程序</b></p><p><b> 四、設(shè)計總結(jié)</b></p><p><b> 可變分區(qū)存儲管理</b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)原理課程設(shè)計報告-可變分區(qū)存儲管理
- 可變分區(qū)存儲管理算法模擬課程設(shè)計
- 操作系統(tǒng)課程設(shè)計--模擬實現(xiàn)可變分區(qū)存儲管理
- 存儲器動態(tài)分區(qū)算法模擬課程設(shè)計報告
- c語言課程設(shè)計_存儲管理分區(qū)分配算法
- 操作系統(tǒng)課程設(shè)計---動態(tài)分區(qū)分配存儲管理
- 【linux課程設(shè)計】可變分區(qū)最佳適應(yīng)算法源代碼
- 模擬實現(xiàn)一個簡單的固定(可變)分區(qū)存儲管理系統(tǒng)
- 課程設(shè)計---存儲器管理系統(tǒng)設(shè)計
- 操作系統(tǒng)課程設(shè)計存儲管理
- 模擬頁式存儲管理-操作系統(tǒng)課程設(shè)計報告
- 可變分區(qū)內(nèi)存管理實驗
- dsp課程設(shè)計報告----語音壓縮、存儲與回放
- 存儲和運(yùn)輸課程設(shè)計
- 課程設(shè)計--請求頁式存儲器管理
- 硬件課程設(shè)計報告--可存儲式電子琴
- 硬件課程設(shè)計報告--可存儲式電子琴
- 虛擬存儲器課程設(shè)計
- 硬件課程設(shè)計報告---可存儲式電子琴
- 模擬頁式存儲管理-操作系統(tǒng)課程設(shè)計
評論
0/150
提交評論