{"id":28964549,"url":"https://github.com/amine-cs96/round_robin-process-scheduler","last_synced_at":"2025-10-14T02:07:30.641Z","repository":{"id":299682432,"uuid":"1003845509","full_name":"amine-CS96/Round_Robin-Process-Scheduler","owner":"amine-CS96","description":"Round-Robin Process Scheduler is a C console application simulating CPU scheduling with the Round-Robin algorithm. It manages processes dynamically in a circular queue, executes them in fixed time quanta, and visualizes process states, illustrating time-sharing and process management in operating systems.","archived":false,"fork":false,"pushed_at":"2025-06-17T19:02:20.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-17T19:58:49.841Z","etag":null,"topics":["c","circular-queue","cpu-scheduling","operating-system","process-scheduler","round-robin","simulation","time-sharing"],"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/amine-CS96.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-06-17T18:53:19.000Z","updated_at":"2025-06-17T19:08:21.000Z","dependencies_parsed_at":"2025-06-17T19:58:52.045Z","dependency_job_id":"5c80d3fa-74ac-402e-85f5-424e9737c807","html_url":"https://github.com/amine-CS96/Round_Robin-Process-Scheduler","commit_stats":null,"previous_names":["amine-cs96/round_robin-process-scheduler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/amine-CS96/Round_Robin-Process-Scheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amine-CS96%2FRound_Robin-Process-Scheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amine-CS96%2FRound_Robin-Process-Scheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amine-CS96%2FRound_Robin-Process-Scheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amine-CS96%2FRound_Robin-Process-Scheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amine-CS96","download_url":"https://codeload.github.com/amine-CS96/Round_Robin-Process-Scheduler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amine-CS96%2FRound_Robin-Process-Scheduler/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261611075,"owners_count":23184020,"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":["c","circular-queue","cpu-scheduling","operating-system","process-scheduler","round-robin","simulation","time-sharing"],"created_at":"2025-06-24T05:06:44.074Z","updated_at":"2025-10-14T02:07:25.620Z","avatar_url":"https://github.com/amine-CS96.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Round-Robin Process Scheduler — Console-Based Process Management in C\n\nThis C program is a command-line application for simulating process scheduling using the **Round-Robin (RR)** algorithm. It allows users to add processes, execute them with a time quantum, manage the passage of time, and monitor the current state of the queue. The data is managed in memory using a **circular doubly-linked list** and structured in a modular fashion.\n\n---\n\n## Features\n\n* Add a new process with a unique ID, arrival time, and execution duration.\n* Schedule and execute processes using the Round-Robin algorithm.\n* Execute all remaining processes until the queue becomes empty.\n* Display the current state of the queue with all active processes.\n* Validate process IDs (uniqueness) and ensure increasing arrival times.\n* Interactive console-based menu for managing processes.\n* Modular code with separate source and header files.\n\n---\n\n## Project Structure\n\n```\nRoundRobin-Scheduler-C/\n├── include/\n│   └── process.h                 # Header file with data structures and function prototypes\n├── src/\n│   └── process.c                 # Core implementation of process scheduling logic\n├── main.c                        # Main program with interactive menu and user input handling\n└── README.md                     # This documentation file\n```\n\n---\n\n## How to Compile\n\nFrom the project root directory, compile the code using:\n\n```bash\ngcc main.c src/process.c -o scheduler\n```\n\n---\n\n## How to Run\n\nAfter compilation, launch the program:\n\n```bash\n./scheduler\n```\n\n---\n\n## Display Menu\n\nUpon launching, the following menu will appear:\n\n```\n------------------------------ MENU :--------------------------------------------------------\n1.  Add a process to the queue.\n\n2.  Execute a process for a time quantum.\n\n3.  Display the current state of the queue.\n\n4.  Manage the passage of time.\n\n5.  Exit.\n--------------------------------------------------------------------------------------------\n```\n\nFollow the prompts to add, execute, or manage processes.\n\n---\n\n## Example Queue Display\n\n```\n---------------------------------\u003c Queue State: \u003e-----------------------------------\n====\u003e Process with PID = ( 101 )\n---\u003e Position : (0x564b3c41)\n---\u003e Arrival Time : ( 3 )\n---\u003e Remaining Time : ( 7 )\n\n====\u003e Process with PID = ( 102 )\n---\u003e Position : (0x564b3c89)\n---\u003e Arrival Time : ( 6 )\n---\u003e Remaining Time : ( 5 )\n\n------------------------------------------------------------------------------------\n```\n\n---\n\n## Highlights \u0026 Learning Outcomes\n\n* Practice with **dynamic memory allocation** and **linked data structures**.\n* Simulation of **process scheduling** using Round-Robin logic.\n* Understanding of **circular doubly-linked lists** and traversal techniques.\n* Real-time **menu-based interaction** and state updates.\n* Strong separation of concerns using header and source files.\n\n---\n\n## Limitations \u0026 Future Improvements\n\n* Add persistent file saving/loading of process queues.\n* Add timestamps and statistics (e.g., turnaround time, waiting time).\n* Improve error handling and edge case validation.\n* Visualize the scheduler with a simple GUI or terminal animation.\n* Add priority-based scheduling as an optional mode.\n\n---\n\n## License\n\n\nThis project is licensed under the MIT License — you are free to use, copy, modify, merge, publish, and distribute the software, provided that the original author is credited and the license notice is included in all copies or substantial portions of the software.\n\nSee the [LICENSE](LICENSE) file for full terms.\n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famine-cs96%2Fround_robin-process-scheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famine-cs96%2Fround_robin-process-scheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famine-cs96%2Fround_robin-process-scheduler/lists"}