91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-09
  • 語言: C/C++
  • 標(biāo)簽:

資源簡(jiǎn)介

在可變分區(qū)管理方式下,采用首次適應(yīng)算法(最先適應(yīng)算法)實(shí)現(xiàn)主存空間的分配和回收。操作系統(tǒng)課程設(shè)計(jì),用C語言實(shí)現(xiàn)。在VC6.0上調(diào)試通過。

資源截圖

代碼片段和文件信息

/*?使用首次適應(yīng)算法的模擬使用空閑分區(qū)鏈*/
#include?“stdio.h“
#include?“conio.h“

#define?getpch(typesize)?(type*)malloc(sizeof(type)*size)
#define?MINSIZE?sizeof(FQ)*2

int?memsize;/*模擬的內(nèi)存大小*/
char?*memfirst;?/*模擬的內(nèi)存所占的首地址*/
int?frees=-1;/*free指向模擬內(nèi)存的空閑分區(qū)的首地址*/



struct?fq/*分區(qū)鏈的結(jié)構(gòu)*/
{
????int?link;??/*指向前一個(gè)空閑分區(qū)塊或者后一個(gè)空閑分區(qū)塊*/
????int?size;??/*空閑分區(qū)的大小*/
}*p=NULL;

typedef?struct?fq?FQ;

int?insert(int?firstint?fqsize)/*構(gòu)造空閑分區(qū)時(shí)插入空閑分區(qū)*/
{
????int?tmptmp1a;
????if(frees<0)/*空閑分區(qū)為空*/
????{
????????frees=first;
????????p=(FQ*)(memfirst+first);/*在空閑分區(qū)的首部來記錄該空閑分區(qū)的信息和前向指針*/
????????p->link=-1;?/*因?yàn)槭堑谝粋€(gè)前向指針為-1*/
????????p->size=fqsize;
????????/*printf(“%d“(char*)p-memfirst);?*/
????????p=(FQ*)(memfirst+first+fqsize-sizeof(FQ));?/*在空閑分區(qū)的尾部來記錄該空閑分區(qū)的信息和前向指針*/
????????p->size=fqsize;
????????p->link=-1;?/*因?yàn)槭堑?個(gè)所以后向指針也為-1*/
????????return?1;
????}
????else
????{
????????if(first????????{
????????????if(first+fqsize>frees)/*判斷是否有重疊部分*/
????????????{
????????????????printf(“空閑分區(qū)有部分重疊!“);
????????????????return?-1;
????????????}
????????????if(first+fqsize==frees)/*要插入的空閑分區(qū)剛好可以和最前面的分區(qū)合并就和最前面的分區(qū)合并*/
????????????{
????????????????p=(FQ*)(memfirst+frees);
????????????????p=(FQ*)(memfirst+frees+p->size)-1;
????????????????p->size=p->size+fqsize;
????????????????tmp=p->size;
????????????????p=(FQ*)(memfirst+first);
????????????????p->size=tmp;
????????????????p->link=-1;
????????????????frees=first;
????????????????return?1;
????????????}
????????????p=(FQ*)(memfirst+first);/*如果不能合并就把這個(gè)空閑分區(qū)插入到最前面*/
????????????p->size=fqsize;
????????????p->link=-1;
????????????p=(FQ*)(memfirst+first+fqsize)-1;
????????????p->size=fqsize;
????????????p->link=frees;
????????????p=(FQ*)(memfirst+frees);
????????????p->link=first+fqsize-sizeof(FQ);
????????????frees=first;
????????????return?1;
????????}
????????else/*空閑分區(qū)不是應(yīng)該插入到最前面*/
????????{
????????????tmp=frees;
????????????p=(FQ*)(memfirst+frees);
????????????p=(FQ*)(memfirst+frees+p->size)-1;
????????????tmp1=p->link;
????????????while(first>tmp1&&tmp1!=-1)/*找到應(yīng)該插入的位置*/
????????????{
????????????????p=(FQ*)(memfirst+tmp1);
????????????????p=(FQ*)((char*)p+p->size)-1;
????????????????tmp=tmp1?;
????????????????tmp1=p->link;
????????????}
????????????if(tmp1==-1)/*要插入的空閑分區(qū)大于所有空閑分區(qū)*/
????????????{
????????????????p->link=first;
????????????????tmp=(char*)p-memfirst;
????????????????p=(FQ*)(memfirst+first);
????????????????p->size=fqsize;
????????????????p->link=tmp;
????????????????p=(FQ*)(memfirst+first+p->size)-1;
????????????????p->size=fqsize;
????????????????p->link=-1;
????????????????return?1;
????????????}
????????????else
????????????{
????????????????if(first+fqsize==tmp1)
????????????????{
????????????????????p=(FQ*)(memfirst+tmp1);
????????????????????a=p->link;/*保存前一空閑分區(qū)的尾部*/
????????????????????p=(FQ*)(memfirst+tmp1+p->size)-1;
????????????????????p->size=p->size+fqsize;
????????????????????fqsi

評(píng)論

共有 條評(píng)論