Memory management system, C/C++ Programming

1. Basic Heap: Each memory location in our model of the RAM will be an instance of type Memory:

2. typedef union Memory_u Memory;

3. union Memory_u{

4. char character;

5. unsigned int size;

6. unsigned long address;

7. };

In each memory location of our simulated heap, which we'll call a memory cell, we can either store actual data (the character field) or other information that is needed for the dynamic memory management.
Each time we allocate some memory on our simulated heap, we need to use at least four (4) consecutive memory cells: 

The first memory cell uses the size field to say how many data memory cells are allocated (we'll call this the head memory cell for our block of allocated memory);

The next memory cell uses the address field to indicate where the head memory cell is for the block of allocated memory that occurs before this current block in the simulated heap. If there are no blocks allocated that are located before this block, the address field will be zero (start of the heap and forbidden memory location);

the next one or more memory cells (defined by the head memory cell) are the actual allocated memory cells for the data (the characters);

the last memory uses the address field to indicate where the next free memory location in the simulated heap is. Since each memory allocation needs at least four consecutive memory cells, the next free memory location must have at least four consecutive free memory cells.

Our simulated heap will simply be an array of Memory in the actual heap. Array index zero (0) will correspond to memory address zero in our simulated heap and is off limits (to read or write) just as memory location zero (NULL) is off limits in your normal programs.

You will implement all of the functions found in nonstdlib.h (found here) that are not already defined in nonstdlib.c (found here). These functions include Memory* initializeHeap(unsigned long size);

// Purpose: allocate memory on the actual heap for our

// simulated heap. Returns a pointer to the first

// memory location that we have reserved for our

// simulated heap

// (This function is partially defined for you )

// (you can add code to it, but do not change )

// (the last line of it in the .c file )

Posted Date: 4/1/2013 2:44:17 AM | Location : United States







Related Discussions:- Memory management system, Assignment Help, Ask Question on Memory management system, Get Answer, Expert's Help, Memory management system Discussions

Write discussion on Memory management system
Your posts are moderated
Related Questions
The voltage at the terminals of a battery is 52V when no load is linked and 48.8V when a load taking 80A is connected. Find the internal resistance of the battery. What wou

i am using otlv4 for database connecttvity, while i try to get all tables list from current database using query "$SQLTables" no output is displayed though programe compiles coretl

This problem familiarizes you with using random numbers in C++. The program is to compute a good approximation of π using a simulation method called "Monte Carlo". The following fi

smugglers are becoming very smart day by day. Now they have developed a new technique of sending their messages from one smuggler to another. In their new technology, they are send

Poker Room auto seat program Project Description: I want a script for an online poker site. It requires to be scanning all the available tables and when the table meets certa

1. Jewels can only be removed for polishing from either end of the necklace (i.e. head or tail) 2. Once a jewel type is removed from the necklace, all other instances of the same j

There are so many different concepts related with OOP (Object-oriented programming) such as: Class Object Inheritance Polymorphism Abstraction Encapsulation

Static Data Members: A data member inside the class can construct as static data member.   There are few guidelines to be followed when declaring static data member.

Explain high-order and low-order bytes. - Numbers are written from left to right in decreasing order of significance. In the same way, bits in a byte of computer memory can be

Hi I''m trying to connect to CISCO router using termios. So I decided to have two threads one for reading data and the other one for writing data. The problem is that I have to add