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

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

資源簡介

在可變分區管理方式下,采用首次適應算法(最先適應算法)實現主存空間的分配和回收。操作系統課程設計,用C語言實現。在VC6.0上調試通過。

資源截圖

代碼片段和文件信息

/*?使用首次適應算法的模擬使用空閑分區鏈*/
#include?“stdio.h“
#include?“conio.h“

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

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



struct?fq/*分區鏈的結構*/
{
????int?link;??/*指向前一個空閑分區塊或者后一個空閑分區塊*/
????int?size;??/*空閑分區的大小*/
}*p=NULL;

typedef?struct?fq?FQ;

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

評論

共有 條評論