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

  • 大小: 16.39 KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2024-08-18
  • 語言: 其他
  • 標簽:

資源簡介

本算法為循環首次適應算法。
算法:由用戶進行初始化,即輸入分區的總數及各分區的大小,然后在這個基礎上再進行后面的操作。在分配函數中,在本實驗中設置一個定位指針,當為作業分配內存空間時,不是從空間分區表的起點開始查找,而是從上次找到的空間分區的位置開始查找,直至找到第一個能滿足要求的空閑分區,并進行相應處理,在回收函數中,由于是要求選擇需要回收的分區號,要考慮該分區號前后的分區的狀態,再進行相應處理,

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#define?MINSIZE?10

struct?map
{
????int?numb;???????????/*分區編號*/
????char?state;?????????/*?Y(已分配)?or?N(未分配)*/
????int??m_size;????????/*分區大小*/
????int??m_addr;????????/*起始地址*/
????struct?map?*next;???/*后繼*/
????struct?map?*prior;??/*前驅*/
}*mp=NULL*p*search*assign;??//mp為隊首指針??search為設置的定位指針,下次查找從此指針開始
typedef?struct?map?MAP;

assignment()????//分配空間函數
{
int?applisize;
MAP?*after=NULL*before=NULL*assign1=NULL;???//assign1存放申請空間
after=mp;
????assign1=(struct?map*)malloc(sizeof(MAP));?????//為assign1申請空間
printf(“請輸入需申請的作業大小:“);
scanf(“%d“&applisize);
if(mp->next==NULL)?search=mp;
for(after=search;after!=NULL;after=after->next)//從search位置開始查找合適的分區
{

???if(after->state==‘N‘&&after->m_size-applisize>=0)??//判斷分區的狀態是否為未分配,而且判斷其大小是否不小于申請的空間
{
if(after->m_size-applisize<=MINSIZE)//該分區與申請空間大小的差值小于規定的最小剩余空間MINSIZE
{
after->state=‘Y‘;?//分區的狀態位置為已分配
search=after->next;//定位在該分區的下一個分區以便下次訪問從處開始
return?0;
}
????????else//該分區與申請空間大小的差值大于規定的最小剩余空間MINSIZE
{
before=after->prior;????????????//before為after的前驅
//將after劃分出applisize大小的空間assign1表示該空間
assign1->numb=after->numb;??????//after的分區號賦值給assign1
assign1->state=‘Y‘;?????????????//assign1的狀態位置為已分配
????????assign1->m_addr=after->m_addr;??//assign1首地址為after的首地址
assign1->m_size=applisize;??????//assign1的大小為申請的大小applisize
//將after后移,給after重新設置信息
????????after->m_size=after->m_size-applisize;//大小為分割前的大小減去申請空間的大小
????????after->m_addr=after->m_addr+applisize;//首地址為原地址加上申請空間的大小
after->state=‘N‘;?????????????????????//狀態位置為未分配
after->numb=after->numb+1;????????????//分區號加1
assign1->next=after;??????????????????//after賦值給assign1的后繼
after->next->numb++;??????????????????//after的后繼的分區號+1
//在before和after之間插入assign1
before->next=assign1;???????????//assign1為before的后繼
assign1->prior=before;
assign1->next=after;????????????//after賦值給assign1的后繼
????????????????????assign1=after->prior;
}?
search=after;//定位于after處
break;
}
???}
????????//從search開始查找未找到合適的分區,據循環首次算法從首部開始查找?
????????for(after=mp;after!=search&&after->next!=NULL;after=after->next)
{
if(after->state==‘N‘&&after->m_size-applisize>=0)??//判斷分區的狀態是否為未分配,而且判斷其大小是否不小于申請的空間
{
?????if(after->m_size-applisizestate==‘N‘)//該分區與申請空間大小的差值小于規定的最小剩余空間MINSIZE
{
after->state=‘Y‘;?//分區的狀態位置為已分配
search=after->next;//定位在該分區的下一個分區以便下次訪問從處開始
return?0;
}
????????else//該分區與申請空間大小的差值大于規定的最小剩余空間MINSIZE
{
before=after->prior;??????//before為after的前驅
//將after劃分出applisize大小的空間assign1表示該空間
assign1->numb=after->numb;?//after的分區號賦值給assign1
assign1->state=‘Y‘;????????//assign1的狀態位置為已分配
????????assign1->m_addr=after->m_addr;?//assign1首地址為after的首地址
assign1->m_size=applisize;?????//assign1的大小為申請的大小applisize

//將afte

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????11259??2007-01-05?21:56??循環首次適應算法\循環首次適應算法.o

?????文件???????3557??2008-06-26?17:14??循環首次適應算法\循環首次適應算法111.dsp

?????文件??????50176??2008-07-04?12:09??循環首次適應算法\循環首次適應算法111.ncb

?????文件????????803??2008-07-04?12:09??循環首次適應算法\循環首次適應算法111.plg

?????文件????????546??2008-06-28?19:31??循環首次適應算法\循環首次適應算法111.dsw

?????文件???????9081??2008-07-04?12:09??循環首次適應算法\循環首次適應算法111.c

?????文件??????48640??2008-07-04?12:09??循環首次適應算法\循環首次適應算法111.opt

?????目錄??????????0??2008-07-04?12:06??循環首次適應算法

-----------?---------??----------?-----??----

???????????????124062????????????????????8


評論

共有 條評論