
Concept explainers
Explanation of Solution
Modify the allocator to perform constant-time coalescing requires both a header and a footer for each block:
In the “Section 9.9.12 (mm.c)”, remove the red color text and add the highlighted lines which is represented in the below code. The modified “mm.c” file is as follows:
#define MAX(x, y) ((x) > (y)? (x) : (y))
/* Pack a size and allocated bit into a word */
#define PACK(size, alloc) ((size) | (alloc))
// Define a pack with size and allocated bit
#define PACK(size, alloc, prev_alloc) ((size) | (alloc) | (prev_alloc << 1))
/* Read and write a word at address p */
#define GET(p) (*(unsigned int *)(p))
/* Read the size and allocated fields from address p */
#define GET_SIZE(p) (GET(p) & ~0x7)
#define GET_ALLOC(p) (GET(p) & 0x1)
// Define allocated fields
#define GET_PREV_ALLOC(p) ((GET(p) >> 1) & 0x1)
/* Given block ptr bp, compute address of its header and footer */
#define HDRP(bp) ((char *)(bp) - WSIZE)
if ((heap_listp = mem_sbrk(4 * WSIZE)) == (void *)-1)
return -1;
PUT(heap_listp, 0); /* Alignment padding */
PUT(heap_listp + (1 * WSIZE), PACK(DSIZE, 1)); /* Prologue header */
PUT(heap_listp + (2 * WSIZE), PACK(DSIZE, 1)); /* Prologue footer */
PUT(heap_listp + (3 * WSIZE), PACK(0, 1)); /* Epilogue header */
// Call PUT() function for Prologue header
PUT(heap_listp + (1 * WSIZE), PACK(DSIZE, 1, 1)); /* Prologue header */
// Call PUT() function for Prologue footer
PUT(heap_listp + (2 * WSIZE), PACK(DSIZE, 1, 1));
// Call PUT() function for Epilogue header
PUT(heap_listp + (3 * WSIZE), PACK(0, 1, 1));
heap_listp += (2 * WSIZE);
/* $end mminit */
return NULL;
/* Adjust block size to include overhead and alignment reqs. */
if (size <= DSIZE)
asize = 2 * DSIZE;
else
asize = DSIZE * ((size + (DSIZE)+(DSIZE - 1)) / DSIZE);
// Check size to adjust block
if (size <= WSIZE)
// Assign size value
asize = DSIZE;
// Otherwise
else
// Compute size to add overhead and alignment requirements
asize = DSIZE * ((size + (WSIZE)+(DSIZE - 1)) / DSIZE);
/* Search the free list for a fit */
if ((bp = find_fit(asize)) != NULL) {
}
/* $begin mmfree */
PUT(HDRP(bp), PACK(size, 0));
PUT(FTRP(bp), PACK(size, 0));
// Call PUT() function with size and allocated bit
PUT(HDRP(bp), PACK(size, 0, GET_PREV_ALLOC(HDRP(bp))));
PUT(FTRP(bp), PACK(size, 0, GET_PREV_ALLOC(HDRP(bp))));
// Check allocated bit
if (GET_ALLOC(HDRP(NEXT_BLKP(bp))))
// Call PUT() function
PUT(HDRP(NEXT_BLKP(bp)), PACK(GET_SIZE(HDRP(NEXT_BLKP(bp))), 1, 0));
// Otherwise
else {
// Call PUT() function for HDRP
PUT(HDRP(NEXT_BLKP(bp)), PACK(GET_SIZE(HDRP(NEXT_BLKP(bp))), 0, 0));
// Call PUT() function for FTRP
PUT(FTRP(NEXT_BLKP(bp)), PACK(GET_SIZE(HDRP(NEXT_BLKP(bp))), 0, 0));
}
// Call coalesce() function to fill values
coalesce(bp);
}
/* $begin mmfree */
static void *coalesce(void *bp)
{
size_t prev_alloc = GET_ALLOC(FTRP(PREV_BLKP(bp)));
// Call GET_PREV_ALLOC() function and the return value is assign to prev_alloc
size_t prev_alloc = GET_PREV_ALLOC(HDRP(bp));
size_t next_alloc = GET_ALLOC(HDRP(NEXT_BLKP(bp)));
size_t size = GET_SIZE(HDRP(bp));
else if (prev_alloc && !next_alloc) { /* Case 2 */
size += GET_SIZE(HDRP(NEXT_BLKP(bp)));
PUT(HDRP(bp), PACK(size, 0));
PUT(FTRP(bp), PACK(size, 0));
// Call PUT() function for HDRP with PACK size
PUT(HDRP(bp), PACK(size, 0, 1));
// Call PUT() function for FTRP with PACK size
PUT(FTRP(bp), PACK(size, 0, 1));
}
else if (!prev_alloc && next_alloc)
{
/* Case 3 */
size += GET_SIZE(HDRP(PREV_BLKP(bp)));
PUT(FTRP(bp), PACK(size, 0));
PUT(HDRP(PREV_BLKP(bp)), PACK(size, 0));
// Call PUT() function for HDRP with PACK size
PUT(FTRP(bp), PACK(size, 0, 1));
// Call PUT() function for FTRP with PACK size
PUT(HDRP(PREV_BLKP(bp)), PACK(size, 0, 1));
bp = PREV_BLKP(bp);
}
else {
/* Case 4 */
size += GET_SIZE(HDRP(PREV_BLKP(bp))) +
GET_SIZE(FTRP(NEXT_BLKP(bp)));
PUT(HDRP(PREV_BLKP(bp)), PACK(size, 0));
PUT(FTRP(NEXT_BLKP(bp)), PACK(size, 0));
// Call PUT() function for HDRP with PACK size
PUT(HDRP(PREV_BLKP(bp)), PACK(size, 0, 1));
// Call PUT() function for FTRP with PACK size
PUT(FTRP(NEXT_BLKP(bp)), PACK(size, 0...

Want to see the full answer?
Check out a sample textbook solution
Chapter 9 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
- 4. Use this information to answer Question 4-8: Consider a step pn junction made of GaAs at T = 300 K. At zero bias, only 20% of the total depletion region width is in the p-side. The built-in potential o₂ = 1.20 V. Determine the acceptor density in the p-side in unit of cm³. Answers within 5% error will be considered correct. Enter answer here 5. Determine the donor density in the n-side in unit of cm³ Answers within 5% error will be considered correct. Enter answer here 6. Determine the depletion region width, z, in the n-side in unit of μm. Answers within 5% error will be considered correct. Enter answer here 7. Determine the depletion region width, xp, in the p-side in unit of μm. Answers within 5% error will be considered correct. Enter answer here 8. Determine maximum electric field in unit of V/cm. Answers within 5% error will be considered correct. Enter answer herearrow_forward1. Use this information to answer Question 1-3: Consider a step pn junction made of silicon. The p- and n-sides are doped such that Ec - EF = 0.21 eV on the n-side and EF – Ey = 0.18 eV on the p-side. The pn junction is under zero bias and kept at T = 300 K. Find the doping density in the n-side in unit of cm -3. Answers within 5% error will be considered correct. Enter answer here 2. Find the doping density in the p-side in unit of cm -3 Answers within 5% error will be considered correct. Enter answer here 3. Find the built-in potential in unit of V. Answers within 5% error will be considered correct. Enter answer herearrow_forwardMany IT implementations are operated as projects. Project stakeholders are vital aspects of the project team. Describe a project that you have worked on and the roles of each member on the team, and then answer the following questions. If you have never been on a project, find one online and answer the following questions. Why is it important to understand the role that each member plays on the team? What organization structure was in place for the project? Was the organizational structure optimal, and if so, why was it optimal? If it was not optimal, what structure would have been the optimal structure and why?arrow_forward
- This is solely for learning purposes. Please analyze the image for me. Thank youarrow_forwardthis is for educational purposes, please anylyze the image for mearrow_forwardNot: Solve this by karnof map Exclusively "Do not use Al tools. Solve the problem by hand on paper only and upload a photo of your handwritten solution."arrow_forward
- Not: Solve this by karnof map Exclusively "Do not use Al tools. Solve the problem by hand on paper only and upload a photo of your handwritten solution."arrow_forwarddt 4-12arrow_forwardFrom the following mass-spring system, obtain its transfer function and pole-zero diagram in MATLAB. Analyze how stability varies when entering values. wwwww R -0000 e(t) i(t) e(t) is the input variable, and the voltage across the capacitor is the controlled variable.arrow_forward
- Conduct a comprehensive study on Botnet networks, focusing on their architecture and functionality. Provide a detailed analysis of their control mechanisms via C2 (Command and Control) structures, and classify the different types of Botnets (centralized, decentralized, hybrid). Explain their primary uses in offensive contexts and discuss the evolution of detection and mitigation techniques in light of technological advancements in cybersecurity. Additional Note: Design a complete Botnet simulator using Python programming, including both the C2 server and the bot client. Demonstrate how the bots connect to the server, and how commands are sent and received between them.arrow_forwardI want to explain my work in Python botnets and it is completely working on the tkinter function with an explanation of how I can work on it with an introduction about what it is and what its benefit isarrow_forwardWhen you connect your device to Wi-Fi, what happens "under the hood"? Explain in detail, with pictures, what it's like.arrow_forward
- Computer Networking: A Top-Down Approach (7th Edi...Computer EngineeringISBN:9780133594140Author:James Kurose, Keith RossPublisher:PEARSONComputer Organization and Design MIPS Edition, Fi...Computer EngineeringISBN:9780124077263Author:David A. Patterson, John L. HennessyPublisher:Elsevier ScienceNetwork+ Guide to Networks (MindTap Course List)Computer EngineeringISBN:9781337569330Author:Jill West, Tamara Dean, Jean AndrewsPublisher:Cengage Learning
- Concepts of Database ManagementComputer EngineeringISBN:9781337093422Author:Joy L. Starks, Philip J. Pratt, Mary Z. LastPublisher:Cengage LearningPrelude to ProgrammingComputer EngineeringISBN:9780133750423Author:VENIT, StewartPublisher:Pearson EducationSc Business Data Communications and Networking, T...Computer EngineeringISBN:9781119368830Author:FITZGERALDPublisher:WILEY





