{"id":19251653,"url":"https://github.com/lokranjanp/schedulers","last_synced_at":"2026-05-16T00:06:26.700Z","repository":{"id":253060706,"uuid":"830475653","full_name":"lokranjanp/schedulers","owner":"lokranjanp","description":"Implementing known OS task schedulers in python/c++ whenever I am bored.","archived":false,"fork":false,"pushed_at":"2024-08-13T12:37:18.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T06:41:53.598Z","etag":null,"topics":["cpp","operating-systems","python","task-scheduler"],"latest_commit_sha":null,"homepage":"","language":"Python","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/lokranjanp.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}},"created_at":"2024-07-18T10:51:14.000Z","updated_at":"2024-08-20T13:44:52.000Z","dependencies_parsed_at":"2024-08-14T08:09:08.640Z","dependency_job_id":null,"html_url":"https://github.com/lokranjanp/schedulers","commit_stats":null,"previous_names":["lokranjanp/schedulers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokranjanp%2Fschedulers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokranjanp%2Fschedulers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokranjanp%2Fschedulers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lokranjanp%2Fschedulers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lokranjanp","download_url":"https://codeload.github.com/lokranjanp/schedulers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240347786,"owners_count":19787231,"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":["cpp","operating-systems","python","task-scheduler"],"created_at":"2024-11-09T18:23:21.726Z","updated_at":"2026-05-16T00:06:26.674Z","avatar_url":"https://github.com/lokranjanp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task Scheduler Project\n\n## Overview\n- This project aims to implement various well-known task scheduling algorithms in both Python and C++. \n- Additionally, a custom task scheduler will be developed to explore innovative scheduling strategies. \n- The project will provide a comprehensive comparison of different scheduling techniques based on key performance metrics.\n\n\n## Algorithms Implemented\n\n### Basic Algorithms\n1. **First Come First Serve (FCFS)**\n   - Tasks are executed in the order they arrive.\n   - No preemption.\n\n2. **Shortest Job First (SJF)**\n   - Tasks with the shortest execution time are executed first.\n   - Can be preemptive or non-preemptive.\n\n3. **Round Robin (RR)**\n   - Each task is given a fixed time slice (quantum).\n   - Tasks are cycled through until complete.\n\n4. **Priority Scheduling**\n   - Tasks are executed based on priority.\n   - Higher priority tasks preempt lower priority ones.\n\n5. **Multilevel Queue Scheduling**\n   - Tasks are divided into multiple queues based on priority.\n   - Each queue has its own scheduling algorithm.\n\n6. **Multilevel Feedback Queue Scheduling**\n   - Tasks can move between queues based on their behavior and execution history.\n   - Designed to dynamically adjust to task requirements.\n\n### Custom Scheduler\nA unique scheduler designed to optimize specific performance metrics, such as:\n- Enhanced throughput.\n- Improved CPU utilization.\n- Reduced waiting and turnaround times.\n\n## Objectives\n- **Concurrency Handling**: Implement efficient concurrency mechanisms to handle multiple tasks.\n- **Performance Metrics**: Measure and compare the efficiency of each scheduler using key metrics.\n- **Scalability**: Ensure the scheduler can handle varying workloads efficiently.\n- **Robustness**: Implement robust error handling and logging mechanisms.\n- **Documentation**: Provide detailed documentation and usage examples for each scheduler.\n\n## Technical Details\n\n### Python Frameworks and Libraries\n- **Threading**: For basic thread-based scheduling.\n- **Multiprocessing**: For process-based scheduling.\n- **Asyncio**: For asynchronous scheduling.\n- **Celery**: For distributed task scheduling.\n- **APScheduler**: For advanced scheduling needs like cron jobs.\n\n### C++ Libraries and Tools\n- **Standard Library (STL)**: For threading, synchronization, and data structures.\n- **Boost Libraries**: For advanced multithreading and asynchronous programming.\n- **POCO C++ Libraries**: For high-level task scheduling.\n- **OpenMP**: For parallel processing and scheduling.\n\n## Progress\n- [x] Setup project structure for Python and C++ implementations.\n- [x] Implement basic FCFS scheduler.\n- [ ] Implement SJF scheduler.\n- [ ] Implement RR scheduler.\n- [ ] Implement Priority Scheduling.\n- [ ] Implement Multilevel Queue Scheduling.\n- [ ] Implement Multilevel Feedback Queue Scheduling.\n- [ ] Develop custom scheduler.\n- [ ] Compare and analyze performance of all schedulers.\n- [ ] Document each scheduler and provide usage examples.\n\n## Usage\n\n### Python\nTo run the Python schedulers, use the following command:\n```bash\n    python3 scheduler.py\n```\n\n### Contributing\nContributions are welcome! Please fork the repository and submit pull requests for any improvements or new features.\n\n### License\nThis project is licensed under the MIT License. See the LICENSE file for details.\n\n### Contact\nFor any questions or suggestions, please contact Loki at lokranjan03@gmail.com.\n\n\n- Note: This project is still in progress. Some features and schedulers are yet to be implemented. Check back for updates!\n\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokranjanp%2Fschedulers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flokranjanp%2Fschedulers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flokranjanp%2Fschedulers/lists"}