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

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

資源簡介

操作系統中的實驗,用C語言實現循環首次適應算法的功能

資源截圖

代碼片段和文件信息

	#include?
#include?
#define?MAX_SIZE?128?//系統分配給用戶的最大內存
typedef?struct?MCB{//內存控制塊
int?add;???????//分區起始地址
int?sta;???????//分區狀態,0為可用
int?size;??????//分區大小
int?jno;???????//分區裝入作業號作業號從1開始

struct?MCB*?next;?//鏈連指針8

}MCB;

MCB?*free_table*ft;??//可用分區的頭指針,尾指針
MCB?*used_table*ut;??//已分配分區的頭指針,尾指針
MCB?*next_ft=NULL;????//??********************?added?下一個可用分區的頭指針



/*?函數聲明?*/
void?initFree_table();
void?initUsed_table();
void?add_ut(MCB?*pfint?sizeint?jno);
int?Is_Jno_Exists(int?jno);?//??********************??added???判斷改作業是否存在
void?allot(int?jnoint?size);
void?reclaim(int?jno);
void?displayUt(MCB?*pMCB);
void?displayFt(MCB?*pMCB);

/*?函數定義?*/
void?initFree_table()//初始化可用區鏈表初始大小為整個用戶分區
{
if(!(free_table=(MCB*)malloc(sizeof(struct?MCB))))
exit(1);
free_table->add?=?0;
free_table->size?=?MAX_SIZE;
free_table->sta?=?0;
free_table->jno?=?0;
free_table->next?=?NULL;
ft=free_table;
}

void?initUsed_table()//初始化已分配分區鏈表
{
if(!(used_table=(MCB*)malloc(sizeof(struct?MCB))))
exit(1);
used_table->add?=?0;
used_table->size?=?0;
used_table->sta?=?1;
used_table->jno?=?0;
used_table->next?=?NULL;

ut=used_table;
}

void?add_ut(MCB?*pfint?sizeint?jno)
{
//修改已分配鏈表
if(used_table->next?==?NULL?&&?used_table->size?==?0)
{//已用分區表的第一塊
used_table->add?=?pf->add;
used_table->size?=?size;
used_table->jno?=?jno;
}else{//將新增分區加到已分配鏈表末尾
//pt為臨時MCB
MCB?*pt;
if(!(pt=(MCB*)malloc(sizeof(struct?MCB))))
exit(1);
pt->size?=?size;
pt->add?=?pf->add;
pt->jno?=?jno;
pt->sta?=?1;
pt->next?=?NULL;

ut->next?=?pt;
ut?=?ut->next;
}
}

int?Is_Jno_Exists(int?jno)//??********************??added?
{
int?Is_Exists?=?0;
MCB?*tmp_usedtable=used_table;
while(NULL?!=?tmp_usedtable)
{
if?(jno?==?tmp_usedtable->jno)
{
Is_Exists?=1;
break;
}
tmp_usedtable?=?tmp_usedtable->next;
}

return?Is_Exists;
}

void?allot(int?jnoint?size)//首次適應法為作業分配存儲空間
{

????????MCB?*pf?=?NULL;
???? MCB?*p?=?NULL;?

MCB?*q?=?free_table;///

if((jno?<=?0?)||(1?==?Is_Jno_Exists(jno)))??/*?jno小于0或jno有重復?*/
{
printf(“輸入作業號有誤請重新輸入!\n“);
return;
}

if(size?>?MAX_SIZE)
{
printf(“作業太大,無法分配!\n“);
return;
}
if(size?<=?0)
{
printf(“作業大小不合法!\n“);
}
/*********************??startadded??*/
if?(NULL?==?next_ft)??//?下一個空閑列表節點為空,表明已到末尾,則回到空閑列表開頭開始掃描?
{
????pf?=?free_table;
????p?=?pf;
}
else
{
????pf?=?next_ft;
????p?=?pf;?
}

while?(q->next?!=next_ft)?//new
????????????????????{
??????????????????????next_ft?=?q->next?;
????????????????????}


????????????
//查空白分區鏈表
while(pf?!=?NULL?&&?pf->size? {
p?=?pf;
pf?=?pf->next;
}

????????????????/*********************??endadded??*/???
if(?(pf?==?NULL)?&&?(?NULL?!=?ne

評論

共有 條評論