Virtual Machine Simulator was an Operating Systems course project. It can hold up to 5 operating systems in itself and each operating system has its own weight. Those weights are used as priorities to schedule all operating systems in virtual machine. Each operating system may have up to 10 processes each with their own arrival times and burst times. Also each operating system has its own scheduling algorithm to schedule the processes (First Come First Served, Shortest Job First, Round Robin). The simulator may run for a random simulation or for user defined values. It draws charts associated to operating systems and the virtual machine itself. This was the first main part of the project, second part of the project includes memory paging algorithms for processes. Each operating system has its own memory paging algorithm (Least Recently Used, Optimal). These algorithms determine if a process has its pages on the cache or not. According to this, process burst times may increase (due to miss times). Again in this part, user may define his/her own values for process pages, or may make a random simulation. It is also possible that the user may define memory frame size and observe the memory states. The graph is scalable for usability.
We have implemented this project with Burak Özdemir.
You may download the binaries from here. You need to have .net Framework installed so as to run it.