Exemple #1
0
        public void XNOrder(string processName)
        {
            Console.WriteLine("Rozkaz XN z parametrem " + processName);

            var pcbID = PCB.GetPCB(processName).PID;

            CPU.GetInstance.Register.SetRegisterValueByName("A", pcbID);
        }
Exemple #2
0
        public void XDOrder(string processName)
        {
            Console.WriteLine("Rozkaz XD z parametrem " + processName);

            var flag = PCB.GetPCB(processName).TerminateProcess(ReasonOfProcessTerminating.KilledByOther,
                                                                Scheduler.GetInstance.GetRunningPCB());

            if (flag == 0)
            {
                PCB.GetPCB(processName).RemoveProcess();
            }
        }
Exemple #3
0
        public void OpenShell()
        {
            bool exit = false;

            while (!exit)
            {
                Console.WriteLine();
                Console.Write("root\\>");
                string cmdline = Console.ReadLine();

                // ReSharper disable once PossibleNullReferenceException
                string cmd = cmdline.Split(' ')[0];
                string p1  = "";
                if (cmdline.Contains(" "))
                {
                    p1 = cmdline.Split(' ')[1];
                }
                string p2 = string.Join(" ", cmdline.Split(' ').Skip(2));

                cmd = cmd.ToUpper();
                switch (cmd)
                {
                case "":
                    break;

                case "HELP":
                    ShowHelp();
                    break;

                case "EX":
                    if (p1 == "-all")
                    {
                        while (!Scheduler.GetInstance.ListEmpty())
                        {
                            Interpreter.GetInstance.InterpretOrder();
                        }
                    }
                    else
                    {
                        Interpreter.GetInstance.InterpretOrder();
                    }
                    break;

                case "QUIT":
                    SoundPlayer sp2 = new SoundPlayer("start.wav");
                    sp2.Play();
                    Console.WriteLine("Zamykanie systemu...");
                    Thread.Sleep(2500);
                    exit = true;
                    break;

                case "BS":
                    throw new Exception(p1 == "" ? "Wyjątek wywołany przez użytkownika" : p1);

                //===================================================
                case "SRP":
                    Scheduler.GetInstance.PrintList();
                    break;

                case "SRG":
                    CPU.CPU.GetInstance.Register.PrintRegisters();
                    break;

                //===================================================
                case "CP":
                    UserInterface.CreateProcess(p1, p2);
                    break;

                case "CPD":
                    UserInterface.CreateProcessFromDisc(p1, p2);
                    break;

                case "CPP":
                    UserInterface.ChangePriority(p1, p2);
                    break;

                case "NPR":
                    UserInterface.RunNewProcess(p1);
                    break;

                case "HP":
                    UserInterface.StopProcess(p1);
                    break;

                case "SAP":
                    UserInterface.ShowAllProcesses();
                    break;

                case "SPCB":
                    UserInterface.ShowPCB(p1);
                    break;

                case "WP":
                    UserInterface.SleepProcess(p1);
                    break;

                case "RP":
                    UserInterface.ResumeProcess(p1);
                    break;

                //===================================================
                case "SPL":
                    if (PCB.GetPCB(p1) != null)
                    {
                        Memory.GetInstance.DisplayPageList(PCB.GetPCB(p1).PID);
                    }
                    break;

                case "SPC":
                    if (PCB.GetPCB(p1) == null)
                    {
                        break;
                    }
                    int nr;
                    if (Int32.TryParse(p2, out nr))
                    {
                        Memory.GetInstance.DisplayPageContent(PCB.GetPCB(p1).PID, nr);
                    }
                    else
                    {
                        Console.WriteLine("Błąd: Nieprawidłowy numer strony.");
                    }
                    break;

                case "SEP":
                    Memory.GetInstance.DisplayFreeFrames();
                    break;

                case "SM":
                    Memory.GetInstance.DisplayPhysicalMemory();
                    break;

                case "SFIFO":
                    Memory.GetInstance.DisplayFifoQueue();
                    break;

                case "SLM":
                    Console.WriteLine(Memory.GetInstance.ReadMessage() + "\n");
                    break;

                //===================================================
                case "SAM":
                    PipeServer.GetServer.Show();
                    break;

                case "SMH":
                    PipeServer.GetServer.ShowHistory();
                    break;

                //===================================================
                case "SW":
                    LockersHolder.ProcLock.Show();
                    break;

                //===================================================
                case "DIR":
                case "LS":
                    Disc.GetDisc.ShowDirectory();
                    break;

                case "CF":
                    Disc.GetDisc.CreateFile(p1, p2);
                    break;

                case "CW":
                    Disc.GetDisc.CreateFromWindows(p1, p2);
                    break;

                case "TYPE":
                    Console.WriteLine(Disc.GetDisc.GetFileData(p1) ?? "Błąd czytania pliku");
                    break;

                case "DF":
                    Disc.GetDisc.DeleteFile(p1);
                    break;

                case "APP":
                    Disc.GetDisc.AppendToFile(p1, p2);
                    break;

                case "SDB":
                    Disc.GetDisc.ShowDataBlocks(p1);
                    break;

                default:
                    Console.WriteLine("Nieznane polecenie\nWpisz \"help\" aby wyświetlić listę dostępnych poleceń");
                    break;
                }
            }
        }
Exemple #4
0
        public void XYOrder(string processName)
        {
            Console.WriteLine("Rozkaz XY z parametrem " + processName);

            PCB.GetPCB(processName).RunNewProcess();
        }
Exemple #5
0
        public void XZOrder(string processName)
        {
            Console.WriteLine("Rozkaz XZ z parametrem " + processName);

            PCB.GetPCB(processName).TerminateProcess(ReasonOfProcessTerminating.Ended);
        }