public bool AddProcess(DynamicProcess dp, AllocationWay way) { if (list.AddNewProcess(dp, way)) { hs.Add(dp); return(true); } return(false); }
public bool AddNewProcess(DynamicProcess dp, AllocationWay way) { if (Size < 1) { return(false); } bool flag = false; switch (way) { case AllocationWay.首次适应算法: flag = FirstFit(dp); break; case AllocationWay.循环首次适应算法: flag = LoopFirstFit(dp); break; case AllocationWay.最佳适应算法: flag = BestMatch(dp); break; } return(flag); }
private static void DynamicAllocation() { Console.Write("输入总内存大小:"); int sum = int.Parse(Console.ReadLine() ?? "0"); DynamicMemory dm = new DynamicMemory(sum); while (true) { Console.WriteLine("选择要进行的操作:"); Console.WriteLine("1.查看当前内存状态"); Console.WriteLine("2.移除指定进程"); Console.WriteLine("3.增加新的进程"); Console.WriteLine("0.返回上一层"); int select = int.Parse(Console.ReadLine() ?? "0"); switch (select) { case 1: dm.PrintInfo(); break; case 2: Console.WriteLine("输入要移除的进程名字:"); string name1 = Console.ReadLine(); Console.WriteLine(dm.RemoveProcessByName(name1) ? "移除成功!" : "未找到指定进程!"); break; case 3: Console.WriteLine("输入要增加的进程名字:"); string name2 = Console.ReadLine(); Console.WriteLine("输入该进程所占内存大小:"); int Size = int.Parse(Console.ReadLine() ?? "0"); Console.WriteLine("选择分配内存方式:"); Console.WriteLine("1.首次适应算法"); Console.WriteLine("2.循环首次适应算法"); Console.WriteLine("3.最佳适应算法"); int sel = int.Parse(Console.ReadLine() ?? "1"); AllocationWay way = AllocationWay.首次适应算法; switch (sel) { case 1: way = AllocationWay.首次适应算法; break; case 2: way = AllocationWay.循环首次适应算法; break; case 3: way = AllocationWay.最佳适应算法; break; } Console.WriteLine(dm.AddProcess(new DynamicProcess(name2, Size), way) ? "增加成功!" : "内存空间不足!"); break; case 0: return; default: Console.WriteLine("输入有误, 重新输入"); break; } } }