This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Jun 19, 2020. It is now read-only.

Repository files navigation

BEWARE, THE CODE IS HORRIBLE WRITTEN, NOW PROCEED. 💩

A Java scheduler

A simple scheduler implemented in Java as a university homework for the OS class.

Roadmap

  • Implement a process
  • Implement a process table
  • Implement strategy for the scheduler
  • Implement an interface to create and kill processes
  • Implement an interface for viewing process that are executing

The process

The process can be viewed as an abstraction of a running program on top of the operating system (or it could be the operating system itself). Because of that there are some properties we wish to have. A process must have the following properties:

  • The PID of the process
  • The name of the process
  • The time needed to complete the process
  • The priority of the process (this should be implemented but not used on the scheduler yet)

The process table

A simple PriorityQueue which orders elements (processes) with respect to its priority. It also feeds the processor with process to process

The processor

A class that represents a processor whose job is to take a process and process it, it subtracts the time slice of the process being executed and makes the interface and other process to be executed respecting to the time slice of the processor.

The scheduler strategy

It is a short-term scheduler (as we are dealing with a CPU) that has a process table implemented as a PriorityQueue<Process> and feeds the processor with process on top of the priority queue which it executes the process as specified above. It might not look like a real scheduler at all. Beware.

The process interface (creating and killing it)

A window that shows buttons to create and kill a process as well as the process that is current being processed and the process queue which state what processes are waiting to be executed.

About

A simple scheduler implemented as a university homework for the OS class 🎉

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages