【发布时间】:2015-03-04 16:21:51
【问题描述】:
我的程序假设复制内存管理功能 Next-fit。基本上我的程序应该有一个工作和一个分区。它将检查作业是否小于或等于分区大小。如果小于或等于,则存储作业。一个值(索引)应该保存作业最后存储在哪个分区中,并从该位置开始搜索。
问题:我不知道如何从存储最后一个作业的位置连续调用搜索。
void Partition::nextFit(Job *job, Partition *partitionArray, int partitionArraySize, int numberOfJobs)
{
Partition temp;
int Next;
int index;
//loops the amount of jobs
for (int i = 0; i < numberOfJobs; i++)
{
//job less than or = partition
if (job[i].jobSize <= partitionArray[i].size)
{
//partition = partition - job
partitionArray[i].size = partitionArray[i].size -job[i].jobSize;
cout << "Unused space (Hole): " << partitionArray[i].size << "Kb" << endl;
cout << endl;
}
//index becomes the location of where the last job was stored
index = i;
//relaunch loop to search from point index
}
【问题讨论】:
-
您是否尝试过在
for循环中使用index而不是i? -
如果我使用 index 而不是 i 循环不会是无限的 (int index =0; index
-
@maulinrodriguez
//relaunch loop to search from point index我不明白你到底想要什么?您已经到了这一点,那么 relaunch 是什么意思? -
我的意思是例如 Job1 : 200kb Job2 : 300kb Job4 : 100kb Job5 : 200kb 并且分区是 Part1:300 part2:200 part3: 400 part4:100 在这种情况下,job 1 将第 1 部分作业 2 将转到第 3 部分作业 3 将转到第 4 部分作业 4 将必须转到第 2 部分。到目前为止,它已访问数组 sub 0,2 和 3。如果我按原样离开循环它将在第四个循环后中断。当程序到达作业 4 时,它必须返回数组 sub 0,然后再返回到 1 并将作业 4 存储在 1 中。@πάνταῥεῖ
-
@maulinrodriguez 根据您的描述,您是否在开始编写代码之前就如何完成这项工作制定了计划?