This project simulates the Multiple Partitions - Variable Regions memory management technique, also known as MVT ( Multiprogramming with Variable number of Tasks) in IBM machines. It demonstrates the behavior of MVT memory management in a simulated environment.
- Simulates a 2GB (2048MB) memory, with 512 MB allocated for the OS
- Reads process information from
ready.txt
andjob.txt
files - Allocates processes to memory based on the order in
ready.txt
- Implements FCFS (First-Come, First-Served) scheduling with skip for the job queue
- Utilizes a PCB (Process Control Block) data structure
- Performs memory compaction when the number of holes exceeds 3
- Maintains lists of allocated regions and free holes
- Memory allocation and deallocation
- Process scheduling
- Memory compaction (defragmentation)
- Visualization of memory contents
The project has made significant progress with the implementation of the first user interface (UI). This UI provides valuable insights into the program's behavior and memory management processes.
The program now generates the following output:
-
Visualization of memory contents:
- Graphical representation of allocated memory blocks
- Clear depiction of memory utilization
-
Real-time Queue State:
- Display of current states of ready and job queues
- Shows process names and their duration in memory
-
Job Status Monitoring:
- Tracks when jobs are added to the ready and job queues
- Monitors job removal and the creation of holes in the "free list"
While significant progress has been made, we are continuing to work on further improvements:
- Include project documentation
- Increase the project's test coverage
- Enhanced graphical representations of memory partitions and free holes
- Before and after views of memory compaction
- More detailed information on finished jobs and newly allocated jobs
These features are in progress and will be implemented in future updates. Stay tuned for further developments!
src/
- Contains all kotlin source filessrc/test/
- Contains test files (there are more tests to be implemented in future iterations)src/test/resources/ready.txt
- Input file for initial ready queuesrc/test/resources/jobs_correct_format.txt
- Input file for job queueREADME.md
- This file