操作系統(tǒng)實驗二-內存管理規(guī)定_第1頁
操作系統(tǒng)實驗二-內存管理規(guī)定_第2頁
操作系統(tǒng)實驗二-內存管理規(guī)定_第3頁
操作系統(tǒng)實驗二-內存管理規(guī)定_第4頁
操作系統(tǒng)實驗二-內存管理規(guī)定_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、洛陽理工學院實驗報告系別計算機系班級學號姓名課程名稱計算機操作系統(tǒng)實驗日期實驗名稱實驗二 分區(qū)內存管理成績實驗目的:通過這次實驗,加深對內存管理的認識,進一步掌握內存的分配、回收算法的思想。實驗條件:微機一臺,操作系統(tǒng):windows 7,編程環(huán)境:Microsoft Visual Studio 2010。實驗原理:設計程序模擬內存的動態(tài)分區(qū)內存管理方法。內存分區(qū)使用分區(qū)(說明)表進行管理,采用最先適應算法從分區(qū)表中尋找空閑區(qū)進行分配,內存回收時不考慮與相鄰空閑區(qū)的合并。假定系統(tǒng)的內存共640K,初始狀態(tài)為操作系統(tǒng)本身占用40K。t1時刻,為作業(yè)A、B、C分配80K、60K、100K、的內存空

2、間;t2時刻作業(yè)B完成;t3時刻為作業(yè)D分配50K的內存空間;t4時刻作業(yè)C、A完成;t5時刻作業(yè)D完成。要求編程序分別輸出t1、t2、t3、t4、t5時刻內存的空閑分區(qū)。實驗內容:#include <stdio.h> #include <stdlib.h> #include <malloc.h> int j=0; typedef struct PCB_type char name; int address,len,valid; PCB; typedef struct seqlist PCB PCBelem4; int total; PCBseql;type

3、def struct Partiton int address,len,valid; Part; typedef struct Partlist Part Partelem5; int sum; Partseql;PCBseql *pcbl; Partseql *partl; void initpcb() pcbl=(PCBseql *)malloc(sizeof(PCBseql); pcbl->total=0; void intipart() partl=(Partseql *)malloc(sizeof(Partseql); partl->Partelem0.address=4

4、0; partl->Partelem0.len=600; partl->Partelem0.valid=1; partl->sum=1; void request(char name,int len) int i;for(i=0;i<partl->sum;i+) if(partl->Partelemi.len>len) pcbl->PCBelempcbl->total.address=partl->Partelemi.address;partl->Partelemi.address+=len;pcbl->PCBelempc

5、bl->total.len=len;partl->Partelemi.len-=len;pcbl->PCBelempcbl->=name;pcbl->PCBelempcbl->total.valid=1; pcbl->total+; break; else if(partl->Partelemi.len=len) while(i<partl->sum) partl->Partelemi=partl->Partelemi+1; i+; partl->sum-; else printf("內

6、存分配不足!"); printf("n"); void release(char name) int i; int k; int m; int o; int p; int q; Part *s; s=(Part *)malloc(sizeof(Part); for(i=0;i<pcbl->total;i+) if(pcbl->PCB=name) partl->sum+;pcbl->PCBelemi.valid=0; partl->Partelempartl->sum-1.address=pcbl->

7、;PCBelemi.address; partl->Partelempartl->sum-1.len=pcbl->PCBelemi.len;partl->Partelempartl->sum-1.valid=1;for(k=partl->sum-1;k>0;k-) for(m=0;m<k;m+) if(partl->Partelemk.address<partl->Partelemm.address) o=partl->Partelemk.address; p=partl->Partelemk.len; q=part

8、l->Partelemk.valid; partl->Partelemk.address=partl->Partelemm.address; partl->Partelemk.len=partl->Partelemm.len; partl->Partelemk.valid=partl->Partelemm.valid; partl->Partelemm.address=o; partl->Partelemm.len=p; partl->Partelemm.valid=q; break; void print() int i; j=j+

9、1; for(i=0;i<partl->sum;i+) printf("t%d時刻.空閑分區(qū)有:地址 %d 長度 %d n",j,partl->Partelemi.address,partl->Partelemi.len); void main() char a,b,c,d; int e,f,g,h; initpcb(); intipart(); printf("請輸入進程a的名字和所需的內存空間的大小: "); scanf("%c,%d",&a,&e); getchar(); request(

10、a,e);printf("請輸入進程b的名字和所需的內存空間的大小: "); scanf("%c,%d",&b,&f); getchar(); request(b,f); printf("請輸入進程c的名字和所需的內存空間的大?。?"); scanf("%c,%d",&c,&g); getchar();request(c,g);print(); printf("n");printf("進程%c結束.正在釋放進程%cn",b); release(

11、b);print(); printf("n");printf("請輸入進程d的名字和所需的內存空間的大小: "); scanf("%c,%d",&d,&h); getchar(); request(d,h);print(); printf("n");printf("進程結束.正在釋放進程%cn",a);release(a); printf("進程結束.正在釋放進程%cn",c);release(c);print(); printf("n");printf("進程結束.正在釋放進程%cn",d);release(d); print(); printf("n");原始數(shù)據(jù)紀錄:輸入數(shù)據(jù):T1時刻 a 80, b 60, c 100,輸出空閑分區(qū)T2時刻,進程結束,釋放進程b,輸出空閑分區(qū)T3時刻輸入d 50后,輸出空閑分區(qū)T4時刻 進程結束, 釋放a, c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論