Demo Signup Slots
In this project, you will learn about Memory management. This project requires you to
construct and compare a few memory allocation/deallocation schemes and compare
them.
Your memory management subsystem
will be based on the following systems: First Fit, Best Fit, Worst
Fit and Buddy
system. It will provide the user with an interface for making
memory
requests and also for freeing up memory that is no longer needed by the
user. One of the jobs of the memory management subsystem is to service
memory requests by matching the size of the request with a large enough
hole, from which to satisfy the request. Specifically in the Buddy
system you have buckets, whose size in bytes
is a power of 2. When you get the request you will allocate a bucket
with
a size greater than the memory chunk that is requested.
NOTE:
For the specifics and any latest
updates make sure you keep checking
this web-site for any latest information/updates regarding the project.
Also note that the test programs (i.e. the user programs which will
exercise
the memory system you will implement) are available here.
You should make sure that you use the same test programs (the
interface should remain the same, and they should be
compilable/linkable
with your code).
You are encouraged to form new groups
as this will help you to gain an experience of working with different
groups of people.
Even though you will work in groups of up to three(individual projects are also allowed),
each of you should be fully familiar with the entire code. You should also
ensure that there is a fair division of labor between the members. The
project report is due in class on March 28. The code needs to be submitted
using the turning procedure(to be announced) on the due date before 02:00PM and there will be a 20% deduction
for delays upto 24 hours
and 40% deduction for delays upto 48 hours. Projects turned in after
48 hours of the posted deadline will not be graded. The report should include
(a) a complete listing of your code, (b) a detailed description of your
implementation, (c) design decisions and assumptions (with justifications)
that you may have made, (c) breakdown of the contribution of each member
of a team. You need to set up an appointment with the TA to demonstrate
your implementation and answer a range of questions related to the entire
project (even though an individual may have worked on only one part). The
TA will use the test programs provided here for
testing your code and may use other test programs as well.
Group Assignments
Library Interface
Sample Code
Shells and Editors
Description
Labs Usage
Frequently asked questions
Description
The size parameter is given only in my_malloc and not in my_free.
However it is necessary to know the size of what is being freed. The
way
it is usually handled is that each allocated memory block has a header
inside it. It stores the size of the block (as an integer). When
a block is to be allocated in the my_malloc a pointer to the
byte
after the header of that block is returned. The header will be used
when
the user calls my_free to return the block to the proper list
in
the free bucket pool. If possible, freed memory should be merged
together
to give a hole of a larger size.
top
Lab Usage :
You will be using labs 218 and 222 in IST building for your project.
218 lab usage is available at the following link
218 Lab usage
222 lab usage is available at the following link
222 Lab usage
top