xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

操作系統內存分配與回收C語言模擬。包含源代碼和.exe可執行文件

資源截圖

代碼片段和文件信息

#define?minisize?50??????/*空閑區_申請空間≤minisize?時,分配整個空閑區*/
#define?m?20??????????????/*假定系統允許的空閑區表最大為m*/
#include?“stdio.h“

/*系統中主要數據結構*/
struct
?{float?address;?????/*空閑區起始地址*/
??float?length;??????/*空閑區長度,單位為字節*/
??int?flag;??????????/*空閑區表登記欄標記,用0表示空欄目,用1表示未分配*/
?}free_table[m];?????/*空閑區表*/

struct
{
????float?address;
????float?length;
????int?flag;
}used_table[m];


void?init_free_table()????????//采用最佳適應算法初始化內存分區
{
????int?i;
????free_table[0].address=0;
????free_table[0].length=200;
????free_table[0].flag=1;
????for(i=1;i????{
????????free_table[i].address=free_table[i-1].address+free_table[i-1].length;
????????free_table[i].length=free_table[i-1].length+300;
????????free_table[i].flag=1;
????}
}

void?init_used_table()
{
????int?i;
????for(i=0;i????{
????????used_table[i].address=0;
????????used_table[i].length=0;
????????used_table[i].flag=0;
????}
}
float?xk0=0;//定義一個全局變量存儲實際分配長度
float?input()
{
????float?a;
????while(1)
????{
????????fflush(stdin);
????????printf(“請輸入要裝入的程序的大?。骸埃?
????????scanf(“%f“&a);
????????if(a<=0)
????????????printf(“輸入數值不合法!“);
????????else
????????????break;
????}
????return?a;
}


float?allocate(float?xk)
{
?int?ik;
?float?ad;
?k=-1;

?for(i=0;i????if((free_table[i].flag==1)?&&?(free_table[i].length>=xk))
????????{k=i;
????????break;}
if(k==-1)????????/*?無可用空閑區返回?*/
?????{printf(“no?free?space\n“);
?????????return(-1);
?????}
????if(free_table[k].length-xk<=minisize)????????/*?找到可用空閑區開始分配?*/
?????{free_table[k].flag=0;
?????ad=free_table[k].address;
?????xk=free_table[k].length;
?????}
????else
?????{free_table[k].length=free_table[k].length-xk;
?????ad=free_table[k].address+free_table[k].length;
??????}
????xk0=xk;
????return(ad);
}

void?record(float?xk1)?????//記錄已分配內存
{
????static?int?used_i=0;??????//只初始化一次
????float?ad1;
????ad1=allocate(xk1);

????if(ad1==-1)
????{
????????printf(“無法裝入該程序!“);
????????return;
????}
????used_table[used_i].address=ad1;
????used_table[used_i].length=xk0;
????used_table[used_i].flag=1;
????used_i++;
????}

void?display_free()
{
????int?i;
????printf(“未分配內存:\n“);
????printf(“編號???????開始地址???????結束地址???????長度???????狀態\n“);
????for(i=0;i????{
????????if(free_table[i].flag==1)
????????{
????????????printf(“?%2d??????????%5g???????%5g?????????%5g???????未分配\n“i+1free_table[i].addressfree_table[i].address+free_table[i].lengthfree_table[i].length);
?????????}
????}
????printf(“\n\n“);
}
void?display_used()
{
????int?i;
????printf(“已分配內存:\n“);
????printf(“編號???????開始地址???????結束地址???????長度???????狀態\n“);
????for(i=0;i????{
????????if(used_table[i].flag==1)
????????{
????????????printf(“?%2d??????????%5g???????%5g?????????%5g???????已分配\n“i+1used_table[i].addressused_table[i].address+used_table[i].lengthused_table[i].length);
?????????}
????}
????printf(“\n\n“);
}



void?re

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6656??2014-06-22?15:19??collect.exe
?????文件????????5484??2014-06-22?15:19??main.c

評論

共有 條評論