簡體   English   中英

我在獲取最合適的分配以獲取更多然后分配幾個方面遇到麻煩

[英]im having trouble getting my best fit allocation to get more then a few to allocate

嗨,我正在為一個類編寫一個模擬操作系統,並嘗試使用最佳擬合分配技術為進程分配內存。 我的列表有兩個參數num_units和process_id,有128個單位要啟動,如果我的程序搜索並找到-1,則進程id為-1,然后比較該數量的單位,如果適合,將新Node插入列表中。 我一直遇到它僅在模擬的10,000中分配3或4個項目的問題,這是分配功能

int allocate_mem(int process_id, int num_units)
{
    list<Node>::iterator best = memory_list.begin();

    // TODO: Implement
     for(list<Node>::iterator cur = memory_list.begin(); cur != memory_list.end(); ++cur)
     {
        if (cur->process_id == HOLE_PROCESS_ID)  
        {
            if (cur->num_units == num_units)
            {
                cur->process_id = (process_id);
                num_alloc_successes++;
                return temp;               
            }

            else if (cur->num_units > num_units)
            {
                if (best->num_units > cur->num_units)
                {
                    best = cur;
                }
            }  
         }
        temp++;
     }
    if (best->num_units > num_units)
    {
        best->num_units = (best->num_units - num_units);
        memory_list.insert(best,1,Node(process_id, num_units));
        num_alloc_successes++;
        return temp;
    }

    ++num_alloc_failures;
    return -1;
}

還有一個似乎可以正常工作的解除分配功能

在此先感謝您的幫助。

首先,提早退出for循環的唯一方法是完全匹配。

其次,只要cur-> num_units> num_units,best最好一直設置為cur,這樣就可以成為滿足該要求的列表中的最后一個元素。

第三,您沒有正確分割部分使用的塊。 我很確定您正在破壞信息。 實際上,您似乎沒有任何合並內存塊的方法。 您是否按大小對列表進行排序?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM