-
Notifications
You must be signed in to change notification settings - Fork 2
Docs cleanup: MIT license, accurate root README, human-toned project READMEs #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
a895522
Add MIT LICENSE file
Muawiya-contact 502d7ae
Rewrite root README: accurate, concise, human-toned
Muawiya-contact c12395a
CI: run syntax check on push, update actions, drop EOL Pythons
Muawiya-contact 8773539
SearchEngine: trim README to plain prose, fix stale claims
Muawiya-contact 0046769
Smart-Home-Simulator: trim README to plain prose
Muawiya-contact 9d2489d
Stocks Trend Analyzer: trim README, fix layout and deps
Muawiya-contact 3b278f3
AcadAI: trim README, correct model and dataset facts
Muawiya-contact 66bcf23
MSMS: trim README from 340 to ~73 lines
Muawiya-contact 88ac7a8
CloudKernel: trim README to plain prose
Muawiya-contact b74c502
RC+: trim README, verify pins against the sketch
Muawiya-contact 77d62c4
IoT_IDS: rewrite README to match actual folder contents
Muawiya-contact 74ead64
ResQTemp: rewrite README to match the actual code
Muawiya-contact b22c0fe
SFS: trim README, fix paths, drop mismatched sections
Muawiya-contact File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,129 +1,67 @@ | ||
| # CloudKernel | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trimmed 130 → ~67 lines. Kept the concurrency model, config, and build/run steps, and added Linux/macOS equivalents next to the PowerShell-only commands. Dropped emoji headings and a stale file listing. |
||
|
|
||
| CloudKernel is a Java concurrency simulator with a professional Swing dashboard that visualizes hypervisor-like VM scheduling, shared resource contention, and synchronization. | ||
|
|
||
| ## 📋 Project Information | ||
|
|
||
| | Field | Details | | ||
| |-------|---------| | ||
| | **Subject** | Operating Systems | | ||
| | **Semester** | 4th Semester — BSAI 2k24 | | ||
| | **Institute** | NFC Institute of Engineering & Technology, Multan | | ||
| | **Department** | Artificial Intelligence | | ||
| | **Submitted To** | Mam Amara Nadeem — [ammara.visiting@nfciet.edu.pk](mailto:ammara.visiting@nfciet.edu.pk) | | ||
| | **Submission Date** | March 03, 2026 | | ||
|
|
||
| --- | ||
|
|
||
| ## 👥 Team Members | ||
|
|
||
| | Name | Roll Number | Email | | ||
| |------|-------------|-------| | ||
| | Muawiya Amir | 2k24_BSAI_72 | [2k24bsai72@undergrad.nfciet.edu.pk](mailto:2k24bsai72@undergrad.nfciet.edu.pk) | | ||
| | Ali Raza | 2k24_BSAI_44 | [2k24bsai44@undergrad.nfciet.edu.pk](mailto:2k24bsai44@undergrad.nfciet.edu.pk) | | ||
| | Muhammad Arslan Nasir | 2k24_BSAI_26 | [2k24bsai26@undergrad.nfciet.edu.pk](mailto:2k24bsai26@undergrad.nfciet.edu.pk) | | ||
| ## Highlights | ||
|
|
||
| - Dark-theme dashboard: Cloud hypervisor monitor layout. | ||
| - Boot orchestration with CountDownLatch. | ||
| - VM cycle synchronization with CyclicBarrier. | ||
| - Shared CPU, memory, and network resources with fair semaphores and timeout handling. | ||
| - Color-coded live logs streamed to terminal and GUI simultaneously. | ||
| - Live stats for cycles, operations, contentions, timeouts, and uptime. | ||
| - Configurable behavior through config.properties. | ||
|
|
||
| <img src ="img/banner.png"> | ||
| ## Final Package Structure | ||
|
|
||
| ```text | ||
| CloudKernel/ | ||
| src/ | ||
| Main.java | ||
| config/ | ||
| ConfigLoader.java | ||
| core/ | ||
| BootManager.java | ||
| ClockSynchronizer.java | ||
| entities/ | ||
| ResourceManager.java | ||
| VirtualMachine.java | ||
| VMPriority.java | ||
| VMState.java | ||
| VMStats.java | ||
| shutdown/ | ||
| ShutdownManager.java | ||
| ui/ | ||
| BarrierPanel.java | ||
| CloudKernelGUI.java | ||
| ControlPanel.java | ||
| DashboardUpdater.java | ||
| LogPanel.java | ||
| ResourceMonitorPanel.java | ||
| StatsBar.java | ||
| VMCard.java | ||
| utils/ | ||
| GUILogger.java | ||
| StatsCollector.java | ||
| config.properties | ||
| ARCHITECTURE.md | ||
| doc/ | ||
| PROJECT_PROPOSAL.md | ||
| PROJECT_Report.md | ||
| Project_presentation.ppt | ||
|
|
||
|
|
||
| ``` | ||
|
|
||
| ## GUI Overview | ||
|
|
||
| Main window sections: | ||
|
|
||
| - Header: title, digital clock, online indicator. | ||
| - Boot panel: resource chips and latch countdown. | ||
| - VM dashboard: one card per VM with state, priority, progress, and resource indicators. | ||
| - Left sidebar: semaphore slot view for CPU, memory, and network. | ||
| - Barrier panel: arrival dots and cycle display. | ||
| - Right sidebar: color-coded live event log. | ||
| - Bottom bars: statistics and controls. | ||
|
|
||
| ## Core Concurrency Model | ||
|
|
||
| - Boot phase: CountDownLatch initialized to four boot tasks. | ||
| - Runtime phase: each VM executes for configured cycles. | ||
| - Resource phase: each VM requests CPU, memory, and network permits with timeout. | ||
| - Synchronization phase: all VMs rendezvous at a CyclicBarrier before the next cycle. | ||
| CloudKernel is a Java concurrency simulator with a Swing dashboard that models a | ||
| hypervisor managing virtual machines. A configurable number of VM threads boot | ||
| together, compete for shared CPU, memory, and network resources, and synchronize | ||
| at the end of each execution cycle, while the GUI shows their state, resource | ||
| usage, and a live event log in a dark-theme monitor layout. | ||
|
|
||
| <img src="img/banner.png"> | ||
|
|
||
| ## How it works | ||
|
|
||
| - Boot phase: a CountDownLatch holds the VMs until four boot tasks complete. | ||
| - Runtime phase: each VM runs a configured number of cycles with randomized | ||
| workload durations. | ||
| - Resource phase: VMs acquire CPU, memory, and network permits from fair | ||
| semaphores, with a timeout so contention never deadlocks. | ||
| - Synchronization phase: all VMs rendezvous at a CyclicBarrier before starting | ||
| the next cycle. | ||
|
|
||
| The main window shows a header with a digital clock, a boot panel with the | ||
| latch countdown, one card per VM (state, priority, progress, held resources), | ||
| a semaphore slot view for each resource, a barrier panel with arrival dots, | ||
| a color-coded event log, and a stats/control bar. Logs stream to the terminal | ||
| and the GUI at the same time, and stats track cycles, operations, contentions, | ||
| timeouts, and uptime. Worker threads never touch Swing directly; all UI updates | ||
| go through SwingUtilities.invokeLater. | ||
|
|
||
| Source lives under `src/` in packages: `config` (ConfigLoader), `core` | ||
| (BootManager, ClockSynchronizer), `entities` (VirtualMachine, ResourceManager, | ||
| VM state/priority/stats), `shutdown` (ShutdownManager), `ui` (the dashboard | ||
| panels), and `utils` (GUILogger, StatsCollector). `Main.java` is just the GUI | ||
| entry point. Design details are in `ARCHITECTURE.md`, and the proposal, report, | ||
| and slides are in `doc/`. | ||
|
|
||
| ## Configuration | ||
|
|
||
| Edit config.properties before running: | ||
|
|
||
| - vm.count | ||
| - cycle.count | ||
| - semaphore.cpu.permits | ||
| - semaphore.memory.permits | ||
| - semaphore.network.permits | ||
| - task.duration.min | ||
| - task.duration.max | ||
| - timeout.duration | ||
| - gui.enabled | ||
| - gui.theme | ||
| - gui.font | ||
| - logging.level | ||
| - stats.enabled | ||
| Edit `config.properties` before running. It sets the VM count, cycles per VM, | ||
| permit counts for the CPU/memory/network semaphores, min/max task duration, | ||
| acquire timeout, GUI options (enabled, theme, font), logging level, and whether | ||
| stats collection is on. | ||
|
|
||
| ## Build And Run | ||
| ## Build and run | ||
|
|
||
| From CloudKernel root: | ||
| From the CloudKernel root on Windows (PowerShell): | ||
|
|
||
| ```powershell | ||
| javac -encoding UTF-8 -d bin (Get-ChildItem -Recurse src -Filter *.java | ForEach-Object { $_.FullName }) | ||
| java -cp "bin;." Main | ||
| ``` | ||
|
|
||
| ## Notes | ||
| On Linux/macOS the equivalent is: | ||
|
|
||
| ```bash | ||
| javac -encoding UTF-8 -d bin $(find src -name '*.java') | ||
| java -cp "bin:." Main | ||
| ``` | ||
|
|
||
| - All UI updates triggered by worker threads are dispatched through SwingUtilities.invokeLater. | ||
| - Main.java contains only the GUI entry point. | ||
| - Legacy duplicate docs and unused legacy classes were removed to keep one canonical implementation path. | ||
| ## Credits | ||
|
|
||
| Operating Systems project, 4th semester BSAI 2k24, Department of Artificial | ||
| Intelligence, NFC Institute of Engineering & Technology, Multan. | ||
| Submitted to Mam Amara Nadeem (ammara.visiting@nfciet.edu.pk) on March 03, 2026. | ||
|
|
||
| Team: Muawiya Amir (2k24_BSAI_72, 2k24bsai72@undergrad.nfciet.edu.pk), | ||
| Ali Raza (2k24_BSAI_44, 2k24bsai44@undergrad.nfciet.edu.pk), | ||
| Muhammad Arslan Nasir (2k24_BSAI_26, 2k24bsai26@undergrad.nfciet.edu.pk). | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added the
pushtrigger. The workflow only ran on pull requests, while the root README claimed syntax checks run on every push — direct pushes tomainwere never checked. Also bumpedactions/checkoutv3→v4 andsetup-pythonv4→v5, and dropped Python 3.8/3.9 from the matrix (both past end-of-life). Verifiedpy_compilepasses over every.pyfile in the current tree.