Ejemplo n.º 1
0
 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;
                }
            }
        }