Giter VIP home page Giter VIP logo

os-simulator's Introduction

OS-Simulator

All Contributors

HitCount

User Interface simulating the major concepts of Operating Systems.

Simulations Done

  • System Calls (Terminal based GUI)
  • Socket Programming
  • CPU Scheduling
  • Process Synchronization
  • Disk Scheduling
  • Memory Management
  • Page Replacement
  • File Allocation

Extra Algorithms Simulated

  • Multilevel Queue Scheduling
  • Sleeping Barber Problem
  • Second Chance Page Replacement Algorithm

Installation Instructions

Ubuntu

  • Step1:- sudo apt-get update
  • Step2:- sudo apt-get upgrade
  • Step3:- curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
  • Step4:- sudo apt-get install -y nodejs
  • Step5:- Go to Terminal, type npm -v and then node -v, verify that installation is successful.

Windows

  • Step1:- Download Windows Installer (.msi) from here
  • Step2:- Run the installer(.msi file downloaded in Step1)
  • Step3:- Click Next, Accept the License Agreement
  • Step4:- Let the default Destination Folder be as it is, Click Next
  • Step5:- In Custom Setup, select npm package manager, Click Next
  • Step6:- Click Install, and then Restart your PC
  • Step7:- Go to Command Prompt, type npm -v and then node -v, verify that installation is successful.

How to Run?

Contributors

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


Nihal Haneef

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!

os-simulator's People

Contributors

allcontributors[bot] avatar bobbypt05 avatar dependabot[bot] avatar himanshunagdive avatar m0bi5 avatar mahirjain25 avatar mehnazyunus avatar mishal23 avatar mojo-07 avatar namrata7199 avatar nihalh55 avatar smarty1palak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

os-simulator's Issues

Simulate Disk Scheduling Algorithms

Possible Simulation

to be filled

Notes for developing

  • Make a directory named disk_scheduling in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder disk_scheduling in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named disk_scheduling.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named disk_scheduling in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate Bankers Algorithm

  • Keep home page for wiki,
  • Take the inputs and show the simulation in the best possible way.

Possible Simulation

  • Let the user enter number of processes and resources, then the available matrix, allocation matrix, resource matrix and show the safe sequence with the steps.
  • Then for resource request algorithm, take the process number requesting resources, then it's requesting resources and show the safe sequence(or not possible) and the steps involved in it.

Notes for developing

  • Make a directory named bankers in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder bankers in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named bankers.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named bankers in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate Socket Programming

  • Keep home page for Wiki Page,
  • Put two buttons:- one for demo of Chat app, one for Simulating TCP vs UDP,
  • Improve in the best way possible!

Notes for developing

  • Make a directory named socket_programming in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder socket_programming in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named socket_programming.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named socket_programming in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate CPU Scheduling Algorithms

  • Keep home page for wiki page,
  • Give an option to choose on the same page at the bottom to select pre-emptive or non-preemptive. - Simulate SJF , RR, FCFS, Priority showing the differences between all of them by Gantt Chart, the waiting time and TAT of each processes.
  • Improve as much as you can!

Extra Bonus: Simulate Multi-level queue scheduling

Possible Simulation

  • Allow user to enter burst time, arrival time, priority, time quantum. Have a add process button once burst time and arrival time, priority is given as input by user.
  • After user clicks on run button, show the Gantt Chart, and the table for the process and the type of scheduling algorithm selected.
  • Allow editing burst, arrival time, priority once it's entered.
  • Show a graph for the comparison of average waiting time, TAT between all the algorithms.

Notes for developing

  • Make a directory named cpu_scheduling in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder cpu_scheduling in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named cpu_scheduling.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named cpu_scheduling in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate File Allocation Strategies

Possible Simulation

to be filled

Notes for developing

  • Make a directory named file_allocation in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder file_allocation in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named file_allocation.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named file_allocation in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate System Calls

  • Simulate as many system calls as possible from the list given in Course Plan
  • First put up a small wiki about system calls, then after that keep a drop-down to select the type of system call, after selecting show small information about the system call, and then show a simulation of it.
  • Improve in the best way possible!

Possible Simulation

File related

  • Show a terminal kind UI, if creat, open, close, read, write, lseek, dup, link, unlink, access, chmod, ioctl along with the proper arguments is typed, the corresponding system call should execute and show the output maybe in a box kind at the side of your terminal, or in the terminal itself
    E.g.. if creat is written show in the box that a file is created (by showing icon image)
    If read is written show in terminal that this is read from the file.

Process Related

  • execl, show in a box that the currently got replaced with a new Process by a simulation whichever you can think off.
  • fork, show how many processes are created when n forks(even if you do for some 2/3 static is fine) are selected by showing the child and parent process.
  • getuid, getpid all in the terminal itself by displaying the id
  • chdir in terminal itself.
  • signal, kill, alarm whatever you can think off, how to simulate.

Notes for developing

  • Make a directory named system_calls in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder system_calls in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named system_calls.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named system_calls in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate Page Replacement Algorithms

Possible Simulation

to be filled

Notes for developing

  • Make a directory named page_replacement in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder page_replacement in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named page_replacement.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named page_replacement in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate Process Synchronization

  • Keep home page for wiki page,
  • Give option to choose among the 3 algorithms and simulate Readers-Writer, dining philosopher, producer consumer algorithm whichever is selected.
  • Improve as much as you can!

Extra: Simulate Sleeping Barber Algorithm

Possible Simulation

1) Reader Writer

  • Have a fixed set of readers and writers(no need of dynamic), and one database,
    Readers :- Some faces (image)
    Writers :- Pen (image)
  • Now when the simulation is started, generate a random number less then number of readers and writers, show that the writer is writing by showing some typed text in the a small box kind. A random reader then tries to read it, it reads the text.
  • And show this in infinite loop until the user presses to stop simulation

2) Producer Consumer

  • Similar to readers writer just that show an item is produced by some image instead of writing, rest of the simulation remains the same.

3) Dining Philosopher

  • Show a round table, with some circles(philosophers) and food in between, generate a random number and show which circle is thinking, hungry, eating (by 3 different circles). Have the same thing for chopsticks, 2 different colours for available/engaged. Also once no one can select show that no one can select.
  • Let the simulation be on its own with a bit of break so that things can be analysed or next step upon clicking a next button.

Notes for developing

  • Make a directory named process_synchronization in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder process_synchronization in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named process_synchronization.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named process_synchronization in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Simulate Memory Management Algorithms

Possible Simulation

to be filled

Notes for developing

  • Make a directory named memory_management in public directory of the root directory. (Keep only HTML files in this folder)
  • index.html will serve as home page for a particular experiment.
  • Add all .js files by creating a folder memory_management in javascripts folder in public directory of the root directory. (Keep only .js files in this folder)
  • Add all .css files by creating a css file named memory_management.css in stylesheets folder in public directory of the root directory. (Keep only .css files in this folder)
  • In case you are adding C code, add the C code and executable by creating a folder named memory_management in /routes/executables
  • Read CONTRIBUTING.md guide for the API calls in case needed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.