{"id":18420547,"url":"https://github.com/ahmednassar7/os-simulator","last_synced_at":"2026-08-13T03:32:12.585Z","repository":{"id":218760808,"uuid":"747294967","full_name":"AhmedNassar7/OS-Simulator","owner":"AhmedNassar7","description":"An OS simulator with Round Robin scheduling, non-dynamic memory management, and Process Control Blocks to efficiently handle processes' information and execution within allocated memory.","archived":false,"fork":false,"pushed_at":"2024-01-23T16:48:21.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-08-12T06:55:42.618Z","etag":null,"topics":["java","memory-management","operating-system","process-manager","sheduler","simulator"],"latest_commit_sha":null,"homepage":"","language":"Java","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/AhmedNassar7.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}},"created_at":"2024-01-23T16:45:34.000Z","updated_at":"2024-03-07T12:40:33.000Z","dependencies_parsed_at":"2024-01-23T17:58:03.125Z","dependency_job_id":"cca4c23e-5ada-4fe3-b390-741d817888fd","html_url":"https://github.com/AhmedNassar7/OS-Simulator","commit_stats":null,"previous_names":["ahmednassar7/os-simulator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AhmedNassar7/OS-Simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhmedNassar7%2FOS-Simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhmedNassar7%2FOS-Simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhmedNassar7%2FOS-Simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhmedNassar7%2FOS-Simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AhmedNassar7","download_url":"https://codeload.github.com/AhmedNassar7/OS-Simulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AhmedNassar7%2FOS-Simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36591514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-13T02:00:06.325Z","response_time":111,"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":["java","memory-management","operating-system","process-manager","sheduler","simulator"],"created_at":"2024-11-06T04:22:11.260Z","updated_at":"2026-08-13T03:32:12.566Z","avatar_url":"https://github.com/AhmedNassar7.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OS-simulator\n# Scheduling\nA scheduler that is responsible for scheduling between the processes in the Ready\nQueue. It ensures that all processes get a chance to execute. the algorithm used is Round Robin. Round\nrobin is a scheduling algorithm where each process is assigned a fixed time slice.\nFor this project, each process executes 2 instructions in its time slice.\n\n# Memory Management\n\nThe OS manage it and assigns a space for each process. The memory is of non-dynamic size. The\nmemory is large enough to hold the un-parsed lines of code, variables and PCB\nfor each of the processes. The memory is divided into memory words, each word\ncan store 1 variable and it’s corresponding data. \nProcesses doesn't  access any data outside their allocated\nmemory block.\n\n# Process Control Block\n\nA process control block is a data structure used by computer operating systems to\nstore all the information about a process.In order to schedule your processes, you\nwill need to keep a PCB for every process. The PCB should contain the following\ninformation:\n1. Process ID (Assume that the ID corresponds to the program number)\n2. Process State\n3. Program Counter\n4. Memory Boundaries\n\n# Output\nWhen  run the main class ,  The\nsystem will start by reading the program files from the disk and assigning memory\nlocations for each of the aforementioned processes. Once all the processes are\nloaded in the memory, the OS will start the scheduling process. The scheduler\nwill choose the process to run and do so by checking the processes states from the\nPCBs stored in the memory, then running the selected process’s code from the\nmemory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmednassar7%2Fos-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmednassar7%2Fos-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmednassar7%2Fos-simulator/lists"}