版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計報告</b></p><p> 課程名稱: 操作系統(tǒng)原理 </p><p> 題目名稱: 可變分區(qū)存儲管理 </p><p> 姓 名: 學 號: </p>&
2、lt;p> 班 級: 同 組 姓 名: 無 </p><p> 課程設計時間: 2013.1.7~2013.1.11 </p><p> 評 語: </p><p> 成 績: </p&
3、gt;<p><b> 課程設計題目</b></p><p><b> 一、設計內容及要求</b></p><p> ?。ㄒ笞⒚餍〗M分工情況)</p><p><b> 設計內容:</b></p><p><b> 可變分區(qū)存儲管理。</
4、b></p><p> 設計一個可變分區(qū)存儲管理方案,模擬實現:主存的分配和回收,地址變換。</p><p><b> 輸入:</b></p><p> 輸入進程名稱及使用內存的大小(創(chuàng)建進程);</p><p> 結束某一個指定的進程。</p><p><b> 邏輯地
5、址。</b></p><p> 輸出:顯示內存使用狀況;每一個進程占據的內存;物理地址。</p><p> 使用的分配算法包括:</p><p> (1)首次適應算法;</p><p> (2)最佳適應算法;</p><p> ?。?)最差適應算法;</p><p><
6、b> 二、詳細設計</b></p><p><b> 1)原理概述</b></p><p> 內存分配有固定分區(qū)分配方式和動態(tài)分區(qū)分配方式,固定分區(qū)分配是最簡單的一種可以運行多道程序的存儲管理方式。它是將內存空間劃分為若干個固定大小的區(qū)域,在每個分區(qū)中只裝入一道作業(yè),它把用戶空間劃分為幾個分區(qū),允許有多道作業(yè)并發(fā)運行。</p>&
7、lt;p> 它的分區(qū)劃分方法有兩種:1、分區(qū)大小相等,即使所有的內存分區(qū)大小相同。2、分區(qū)大小不等。它的分配方式存在缺點,即缺乏靈活性,浪費內存,如果一個進程申請很少的一塊內存,那么它會占據整個內存分區(qū),即使還有大部分空閑,例如一個進程有5k,申請了分區(qū)號4的內存,雖然還有123k內存,但是其他進程也不可以利用,只有進程結束了,其他進程才可以利用,內存十分浪費。</p><p> 在上邊的基礎上,便產生
8、了可變分區(qū)分配方式。它是根據進程的實際需要,動態(tài)的為它分配內存空間,避免了上邊的固定分區(qū)分配方式的缺點。</p><p> 它涉及到分區(qū)分配中所用的數據結構、分區(qū)分配算法和分區(qū)的分配與回收操作這三個問題。</p><p> 分區(qū)分配中的數據結構</p><p> 在這里我使用了空閑分區(qū)表。在系統(tǒng)中設置一張空閑分區(qū)表,用于記錄每個空閑分區(qū)的情況。每個空閑分區(qū)占一
9、個表目,表中包括了分區(qū)號、分區(qū)始址、分區(qū)大小、和一個代表它是空閑的狀態(tài)。在系統(tǒng)中還有一張已分配表,用于記錄已經分配給相應進程的內存,它的表目與空閑分區(qū)表一樣,狀態(tài)是已分配。</p><p><b> 分區(qū)分配算法</b></p><p> A首次適應算法(first fit)</p><p> 每次分配時,總是從未分配區(qū)表頭順序查找未分配
10、表或鏈表,找到第一個能滿足長度要求的空閑區(qū)為止。分割這個找到的未分配區(qū),一部分分配給作業(yè),另一部分仍為空閑區(qū)。</p><p> 這種分配算法優(yōu)先利用主存低地址空閑分區(qū),從而,保留了高地址的大的空閑區(qū)。但由于低地址空閑分區(qū)不斷被分割,既可能將大的空間分割掉,也造成低地址部分有較多難以使用的“碎片”。作為改進,可把空閑區(qū)按地址從小到大排列在未分配表或鏈表中,因為,為作業(yè)分配主存空間時從低地址部分的空閑區(qū)開始查找,
11、可使高地址部分盡可能少用,以保持一個大的空閑區(qū),有利于大作業(yè)的裝入。但是,這給回收分區(qū)帶來一些麻煩,每次收回一個分區(qū)后,必須搜索未分配區(qū)表或鏈表來確定它在表格或鏈表中的位置且要移動相應的登記項。</p><p> B最佳適應算法(best fit)</p><p> 該算法要掃描整個未分配區(qū)表或鏈表,從空閑區(qū)中挑選一個能滿足作業(yè)要求的最小分區(qū)進行分配。這種算法可保證不去分割一個更大的區(qū)
12、域,使裝入大作業(yè)時比較容易得到滿足。采用這種分配算法時可把空閑區(qū)按長度以遞增順利排列,查找時總是從最小的一個區(qū)開始,直到找到一個滿足要求的分區(qū)為止。按這種方法,在回收一個分區(qū)時也必須對分配表或鏈表重新排列。最優(yōu)適應分配算法找出的分區(qū)如果正好滿足要求則是最合適的了,如果比所要求的略大則分割后使剩下的空閑區(qū)就很小,以致無法使用。</p><p> C最壞適應算法(worst fit)</p><
13、p> 最壞適應分配算法要掃描整個未分配區(qū)表或鏈表,總是挑選一個最大的空閑區(qū)分割給作業(yè)使用,其優(yōu)點是可使剩下的空閑區(qū)不至于太小,對中、小作業(yè)有利。采用這種分配算法時可把空閑區(qū)按長度以遞減順序排列,查找時只要看第一個分區(qū)能否滿足作業(yè)要求,這樣使最壞適應分配算法查找效率很高。</p><p><b> 分區(qū)分配操作</b></p><p> 它主要涉及到分區(qū)的分
14、配內存和回收內存問題。</p><p><b> A分配內存</b></p><p><b> B回收內存</b></p><p> 內存回收有四種回收狀態(tài)狀態(tài),比較復雜點。如下圖:</p><p> X為將要回收的內存,A、B為正在運行的進程,回收X有四種合并狀態(tài)。黑色區(qū)域為回收后的空閑內
15、存。</p><p><b> 2)主要數據結構</b></p><p> 定義了內存分區(qū)結構體,在此基礎上定義了此結構體的對象free[100]和used[100],分別表示空閑分區(qū)表和已分配的分區(qū)表,他們的最大值都是100,而且結構也相同。Procnum是全局變量,用于已分配的進程分區(qū)號,每個進程唯一。</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;//進程分區(qū)號</p><p><b> 3)算法(流程圖)</b></p><p><b> 程序狀態(tài)流程圖</b></p><p><b> 內存分配流程圖</b></p><p&g
19、t;<b> 4)源程序文件名</b></p><p><b> os課程設計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;//進程分區(qū)號</p><p> void initial();//初始化分區(qū)</p><p> void firstfit();//首次適應算法</p><p> void bestfit();//最佳適應算法</p><p> void worstfit();//最壞適
23、應算法</p><p> void terminal();//結束進程</p><p> int transfer();//邏輯地址轉換</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)建進程(進程名 內存大?。?;"<<endl</p><p> <<"--2、結束進程(進程名);"<<endl</p><p> <<"--3、邏輯地址轉換;"<<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、首次適應算法;2、最佳適應算法;3、最差適應算法"<<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<<"輸入要轉換的分區(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<<"輸入進程的名稱和大小:"<<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<<"無滿足要求的空閑內存,請
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<<"內存空間分配成功"<<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<<"輸入進程的名稱和大小:"<<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<<"無滿足要求的空閑內存,請稍候再試"<<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<<"內存空間分配成功"<<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、;輸入進程的名稱和大小:"<<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、無滿足要求的空閑內存,請稍候再試"<<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<<"內存空間分配成功"<<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<<"輸入要結束的進程名:"<<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<<"沒有這個進程名"<<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> 三、實驗結果與分析(要有結果截圖)</p><p><b> 初始界面</b></p><p> 首次適應算法創(chuàng)建進程a 30</p><p> 最佳適應算法創(chuàng)建進程b 90</p><p> 最差適應算法創(chuàng)建進程c 100</p><p&
107、gt;<b> 結束進程b</b></p><p> 邏輯地址轉換:輸入分區(qū)號2,找到了物理地址270</p><p><b> 退出程序</b></p><p><b> 四、設計總結</b></p><p><b> 可變分區(qū)存儲管理</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)原理課程設計報告-可變分區(qū)存儲管理
- 可變分區(qū)存儲管理算法模擬課程設計
- 操作系統(tǒng)課程設計--模擬實現可變分區(qū)存儲管理
- 存儲器動態(tài)分區(qū)算法模擬課程設計報告
- c語言課程設計_存儲管理分區(qū)分配算法
- 操作系統(tǒng)課程設計---動態(tài)分區(qū)分配存儲管理
- 【linux課程設計】可變分區(qū)最佳適應算法源代碼
- 模擬實現一個簡單的固定(可變)分區(qū)存儲管理系統(tǒng)
- 課程設計---存儲器管理系統(tǒng)設計
- 操作系統(tǒng)課程設計存儲管理
- 模擬頁式存儲管理-操作系統(tǒng)課程設計報告
- 可變分區(qū)內存管理實驗
- dsp課程設計報告----語音壓縮、存儲與回放
- 存儲和運輸課程設計
- 課程設計--請求頁式存儲器管理
- 硬件課程設計報告--可存儲式電子琴
- 硬件課程設計報告--可存儲式電子琴
- 虛擬存儲器課程設計
- 硬件課程設計報告---可存儲式電子琴
- 模擬頁式存儲管理-操作系統(tǒng)課程設計
評論
0/150
提交評論