{"id":28399396,"url":"https://github.com/dead-tech/sim-os","last_synced_at":"2025-08-10T16:40:28.574Z","repository":{"id":294174996,"uuid":"986149366","full_name":"dead-tech/sim-os","owner":"dead-tech","description":"Operating System GUI Simulator with custom simulation description language","archived":false,"fork":false,"pushed_at":"2025-05-21T12:41:13.000Z","size":272,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T15:49:48.442Z","etag":null,"topics":["clang-format","clang-tidy","cmake","cpp23","gui","imgui-glfw","implot","mit-license","operating-system","simulator","stb-image"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dead-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-19T07:23:26.000Z","updated_at":"2025-05-21T12:41:16.000Z","dependencies_parsed_at":"2025-05-19T08:34:54.150Z","dependency_job_id":"eeb0c819-b93d-4933-b021-05f279e9c710","html_url":"https://github.com/dead-tech/sim-os","commit_stats":null,"previous_names":["dead-tech/sim-os"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dead-tech/sim-os","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-tech%2Fsim-os","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-tech%2Fsim-os/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-tech%2Fsim-os/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-tech%2Fsim-os/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dead-tech","download_url":"https://codeload.github.com/dead-tech/sim-os/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-tech%2Fsim-os/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262483964,"owners_count":23318370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clang-format","clang-tidy","cmake","cpp23","gui","imgui-glfw","implot","mit-license","operating-system","simulator","stb-image"],"created_at":"2025-06-01T08:09:00.156Z","updated_at":"2025-06-28T19:31:05.657Z","avatar_url":"https://github.com/dead-tech.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sim-os\nOperating System GUI Simulator with custom simulation description language.\n\nThis is supposed to be a suite of simulations to better grasp how an operating system works under the hood.\n\nThese are the planned/currently implemented simulations:\n- [x] scheduler\n- [ ] virtual memory\n\n## Video\nhttps://github.com/user-attachments/assets/0d1f474b-c30a-4c90-8175-ac33cef078e5\n\n\n# Dependencies\n- CMake\n- GCC 14+\n- OpenGL\n- GLFW\n- ImGui\n- ImPlot\n- stb_image.h\n\n# Building\nBuild instructions are the same as all cmake projects:\n\n```sh\ngit clone https://github.com/dead-tech/sim-os.git\n```\n\n```sh\ncd sim-os/\n```\n\n```sh\ncmake -S . -B build -DCMAKE_BUILD_TYPE=Release\n```\n\n```sh\ncmake --build build\n```\nYou will then find the following executables inside the build directory:\n- scheduler\n- comparator\n\n## scheduler\n![image](https://github.com/user-attachments/assets/821d9de8-2a51-4ed9-a60e-b611cf5166c0)\n\nThis is a scheduler simulator. It expects you to give it a file to a simulation described in the custom simulation description language. See [sim-lang](#sim-lang) for more info.\n\nThese are the currently features that the scheduler supports:\n- Stepping the simulation one timer tick at a time\n- Restarting the simulation from the beginning\n- Visualization of the: arrival, ready, waiting queues\n- Visualization of running processes (supports multicore)\n- Plotting of metrics like: cpu usage, waiting time, turnaround time and throughput\n- Different kind of scheduling policy (at compile time though for now)\n- Saving result of the simulation and the compare them with [comparator](#comparator)\n- Changing the schedule policy at runtime (this way you can generate result on the same input for different policies and then compare them)\n\n### comparator\n![image](https://github.com/user-attachments/assets/43d0e8ea-32b4-4967-95cc-0769814aeac4)\n\nThis is a tool built to compare the result of the simulations produced by the scheduler (for now, planning on making it general purpose). It expects you to pass it to its CLI the simulation results files and it will compare them by graphing histograms.\n\n## sim-lang\nThis is the language created to ease the description of a simulation, without touching the C++ code. The script will get interpreted just before the simulation is run.\n\nSupported features:\n- Specify the number of cores of the CPU\n- Specify the max number of processes to spawn\n- Specify the max number of events a single process might have\n- Specify the max duration of a single event\n- Specify the max arrival time for a process from the start of the timer\n- Spawn random processes or custom processes\n- Change the schedule policy\n\n### Examples\nFor some examples on the syntax of the language checkout [examples](examples).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdead-tech%2Fsim-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdead-tech%2Fsim-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdead-tech%2Fsim-os/lists"}