Provide ways to dynamically allocate portions of memory to programs at their request, and free it for reuse when no longer needed.

Memory management is the act of managing computer memory at the system level. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and free it for reuse when no longer needed. Memory management is the process of controlling and coordinating computer memory, assigning portions called blocks to various running programs to optimize overall system performance. Memory management resides in hardware, in the OS (operating system), and in programs and applications.
Simulation Concept
In the OS, memory management involves the allocation (and constant reallocation) of specific memory blocks to individual programs as user demands change. At the application level, memory management ensures the availability of adequate memory for the objects and data structures of each running program at all times. Application memory management combines two related tasks, known as allocation and recycling. When the program requests a block of memory, a part of the memory manager called the allocator assigns that block to the program. When a program no longer needs the data in previously allocated memory blocks, those blocks become available for reassignment. This task can be done manually (by the programmer) or automatically (by the memory manager).
Overall Design and Scenarios
The memory management system for the simulator will be straightly forward. The memory will be implemented by an array with 64 elements (TBD). The memory management will be as simple and straight-forward as possible. When memory is needed by the execution of a process the system will find the first available space in memory (starting at the lowest), and then assign the process however much memory it needs. If the process requires more memory than is available, it will be put into a first come first serve queue and have to wait until there is enough memory available. The current amount of available memory will be stored at all times so the system does not waste time searching through all the memory every time a process is started. If a process requires more memory than the system has in total then the process will simply not be run. Whenever a process is using a portion of memory the system will simply assign the element(s) of the array being used to the ID number of the process. When memory is available the element’s value will be zero.
Paging is not considered in the project at the first place.
Key Attributes
• Compile time
When it is known at compile time where the process will reside, compile time binding is used to generate the absolute code.
• Load time
When it is not known at compile time where the process will reside in memory, then the compiler generates re-locatable code.
• Execution time
If the process can be moved during its execution from one memory segment to another, then binding must be delayed to be done at run time.
Tools and Approach
The plan to use Java as the programming language. By using the Java API. The techniques would use in the project are synchronization, multi threads, and memory management algorithm.( JUST THE FIRST FIT ALGRATHEM)

The steps of the simulation list as below:
Data generate: The simulator shall automatically
generate the data (piece of numbers).

2.Memory simulate: The simulator shall find out available
memory address and store the data

3.Results analysis: The simulator shall analysis the
results that include memory size, access time, time slot, waiting time

Type of paper Academic level Subject area
Number of pages Paper urgency Cost per page: