{"id":20153787,"url":"https://github.com/zachstence/schedulersimulator","last_synced_at":"2026-06-10T05:31:43.711Z","repository":{"id":106798195,"uuid":"178255037","full_name":"zachstence/SchedulerSimulator","owner":"zachstence","description":"A C++ program that simulates various scheduling algorithms. Done as a part of CS 4328 Operating Systems.","archived":false,"fork":false,"pushed_at":"2019-04-24T23:38:57.000Z","size":448,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-03T01:28:38.815Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zachstence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-03-28T17:48:26.000Z","updated_at":"2023-12-22T14:34:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"dcf40dea-3c50-457a-8746-976ffe4ff487","html_url":"https://github.com/zachstence/SchedulerSimulator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zachstence/SchedulerSimulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zachstence%2FSchedulerSimulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zachstence%2FSchedulerSimulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zachstence%2FSchedulerSimulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zachstence%2FSchedulerSimulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zachstence","download_url":"https://codeload.github.com/zachstence/SchedulerSimulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zachstence%2FSchedulerSimulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34139178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-13T23:21:51.611Z","updated_at":"2026-06-10T05:31:43.695Z","avatar_url":"https://github.com/zachstence.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SchedulerSimulator\nA C++ program that simulates various CPU scheduling algorithms. This project was done as part of my CS 4328 \nOperating Systems class at Texas State University. I have included the assignment sheet on the repository, and plan on\nadding more features to my code in the future as a fun exercise.\n\n## Downloading\nSimply clone my GitHub repository and you have all the code ready to go. No extra requirements to install.\n\n`$ git clone https://github.com/zachstence/SchedulerSimulator`\n\n## Running Simulations\nFirst, compile the main class\n\n`$ g++ main.cpp`\n\n#### One scheduler at a time\nTo simulate one scheduling algorithm with a specified arrival rate, service time and quantum length (only used in RR),\nrun the following command, choosing from the following algorithms\n1. First Come First Serve (FCFS)\n2. Shortest Remaining Time First (SRTF)\n3. Highest Response Ratio Next (HRRN)\n4. Round Robin (RR) with specified quantum length\n\n`$ ./a.out \u003cscheduler\u003e \u003carrival rate\u003e \u003cservice time\u003e \u003cquantum length\u003e`\n\nFor example:\n```bash\n$ ./a.out 2 10 0.06 0.01\n Avg. Turnaround Time :  0.094\n           Throughput :  9.933\n        Avg. CPU Util :  0.593\n  Avg. in Ready Queue :  0.344\n```\n\n#### All schedulers with results saved\nTo simulate all the scheduling algorithms with arrival rates from 1-30 processes/second, a service time of 0.06 seconds,\nand quantum lengths of 0.01 and 0.2 seconds (for round robin), simply provide '-1' as the scheduler choice\n```bash\n$ ./a.out -1\nSimulating FCFS...done\nSimulating SRTF...done\nSimulating HRRN...done\nSimulating RR(0.01)...done\nSimulating RR(0.2)...done\nFinished all simulations.\n```\nThe results will be saved in 5 CSV files, each named for its corresponding scheduler. The CSV files have 4 columns\n(arrival rate, average turnaround time, throughput, and average processes in the ready queue), each holding values \nfor a different iteration. These files can then easily be imported into a spreadsheet application to make \n[graphs](results/graphs/) from the CSV [results](results/) like I have included on this repo.\n\n## Report\nI have written a [short report](results/report.pdf) detailing my observations based on the output of my code and the graphs I \nhave generated.\n\n------------------------------\nZach Stence, 3/29/2019\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzachstence%2Fschedulersimulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzachstence%2Fschedulersimulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzachstence%2Fschedulersimulator/lists"}