#include #include struct Process { int processID; std::string processName; int processState; //0=virgin, 1=running, 2=ready, 3=waiting, 4=terminated; Process* parent; //procesy przedstawiają drzewo, gdzie rodzic jest procesem macierzystym std::vector children; //a dzieci jego procesami potomnymi int regA; // 4 rejestry procesora int regB; int regC; int regD; int programCounter; //bieżąca czynność (wskazana przez licznik rozkazów) std::string programData; //kod programu std::string programText; //kod programu int programSize; Process* programPosition; bool processBlocked; Process(int ID, std::string name, int fatherID) { processState = 0; processBlocked = false; processID = ID; } }; struct RAM //przykładowa tablica pamięci RAM { int Ram[128]; }; struct ProcessManagment { Process* init; //proces, który wytwarza się przy startowaniu systemu RAM* ram; //tablica pamięci od zarządzania pamiecią ProcessManagment() { init->processID = 0; init->processName = "init"; init->parent = nullptr; } int FindID(); //wyszukaj wolne ID bool ProcessIsExecuted(std::string name); //zaznacza czy proces jest w trakcie wykonywania void AddProcess(std::string name); void Fork(std::string name, int parentID); //dodaj proces potomny void KillProcess(int ID); //zabij process void FreezeProcess(int ID); //wstrzymaj wykonywanie procesu, np. gdy czeka na zasoby void UnFreezeProcess(int ID); //przywróć działanie procesu void PrintProcess(int ID); //wyświetl właściwości procesu void PrintAllProcesses(); //wyświetla wszystkie procesy }; int main() { return 0; }