日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最佳适应算法模拟内存分配

發布時間:2025/1/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最佳适应算法模拟内存分配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最佳適應算法

從全部空閑區中找出能滿足作業要求的,且大小最小的空閑分區,這種方法能使碎片盡量小。

問題描述

  • Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, and 426 KB (in order)? Which algorithm makes the most efficient use of memory?

問題解決

  • 為212k分配空間:

    找到第一個跟212k大小最接近的空閑區找到第四個空閑區300>212k,剩余88k空閑區 復制代碼
  • 為417k分配空間:

    找到第一個跟417k大小最接近的空閑區找到第二個空閑區500>417,剩余83k空閑區 復制代碼
  • 為112k分配空間:

    找到第一個跟112k大小最接近的空閑區找到第三個空閑區200>112k,剩余88k空閑區 復制代碼
  • 為426k分配空間:

    找到第一個跟426大小最接近的空閑區找到第五個空閑區600k>426,剩余74k空閑區

code

#include<stdio.h> #include<stdlib.h>#define N 5 #define M 5int buf[N]={100,500,200,300,600}; int need_dis[M]={212,417,112,426,200}; typedef struct LNode *List;struct LNode{int order;int buffer;LNode *next; };List list_init(){List head,p,m;int i;for(i=0;i<N;i++){if(i==0){m=(LNode*)malloc(sizeof(struct LNode));if(!m){printf("Error:memory!\n");exit(0);}m->order=i;m->buffer=buf[i];m->next=NULL;head=p=m;}else{m=(LNode*)malloc(sizeof(struct LNode));if(!m){printf("Error:memory wrong\n");exit(0);}m->order=i;m->buffer=buf[i];m->next=NULL;p->next=m;p=p->next;}}return head; }void best_fit(List head){int i,j,k;int min;int order;List p;for(i=0;i<M;i++){min=-1;order=-1;p=head;while(p){if(p->buffer>=need_dis[i]){if(min<0){min=p->buffer-need_dis[i];order=p->order;}else{if(min>p->buffer-need_dis[i]){min=p->buffer-need_dis[i];order=p->order;}}}p=p->next;} if(order==-1){printf("\n");printf("分配完成%d個\n",i);printf("第%d個進程失敗\n",i+1);printf("\n");break; }else{p=head;while(p){if(p->order==order)p->buffer-=need_dis[i];p=p->next;}}} }void print(List p){while(p){printf("%d:%d\n",p->order,p->buffer);p=p->next;} }int main(){List p;p=list_init();printf("分配內存前\n"); print(p);best_fit(p);printf("分配內存后\n");print(p);return 0; }


?

總結

以上是生活随笔為你收集整理的最佳适应算法模拟内存分配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。