Giter Site home page Giter Site logo

heap-management's Introduction

Project 03: Heap Management

This is Project 03 of CSE.30341.FA20.

Students

  1. Domer McDomerson ([email protected])
  2. Belle Fleur ([email protected])

Brainstorming

The following are questions that should help you in thinking about how to approach implementing Project 03. For this project, responses to these brainstorming questions are not required.

Block

  1. When releasing a Block:

    1. How do you determine if the Block you are releasing is at the end of the heap?

    2. How do you compute how much was actually allocated for the Block (including the header)?

    3. How do you adjust the heap pointer.

  2. When detaching a Block, what pointers need to be updated?

  3. When merging two Blocks:

    1. How do you determine the end of the destination Block?

    2. How do you determine the start of the source Block?

    3. What is the capacity of the merged Block?

  4. When splitting a Block:

    1. What do you do if the Block's capacity is not large enough for a new Block header and the aligned size?

    2. What is the address of the new Block you split off?

    3. What is the capacity of the new Block you split off?

    4. What are the pointers of the new Block?

    5. What must be updated for the original Block (after the split)?

Counters

  1. What do we need to keep track of to compute the internal fragmentation of the Free List?

  2. What do we need to keep track of to compute the external fragmentation of the Free List?

Free List

  1. What are we looking for in the First Fit algorithm?

  2. What are we looking for in the Best Fit algorithm?

  3. What are we looking for in the Worst Fit algorithm?

  4. When we insert into the Free List:

    1. When do we want to merge blocks?

    2. What pointers needed to be updated when we merge blocks?

    3. What happens when we can't perform a merge in the middle of the FreeList?

POSIX

  1. During a malloc, when do we split a Block, allocate a Block, and detach a Block?

  2. When we free, when do we try to release a Block and what happens if that fails?

  3. What happens during a calloc?

  4. What happens during a realloc?

Demonstration

Link to video demonstration of chat application.

Errata

Describe any known errors, bugs, or deviations from the requirements.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.