public void XNOrder(string processName) { Console.WriteLine("Rozkaz XN z parametrem " + processName); var pcbID = PCB.GetPCB(processName).PID; CPU.GetInstance.Register.SetRegisterValueByName("A", pcbID); }
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(); } }
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; } } }
public void XYOrder(string processName) { Console.WriteLine("Rozkaz XY z parametrem " + processName); PCB.GetPCB(processName).RunNewProcess(); }
public void XZOrder(string processName) { Console.WriteLine("Rozkaz XZ z parametrem " + processName); PCB.GetPCB(processName).TerminateProcess(ReasonOfProcessTerminating.Ended); }