
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
expand_more
expand_more
format_list_bulleted
Question

Transcribed Image Text:• Description
o Please simulate a Best Fit memory block allocation algorithm.
• Your program runs without command line arguments. For example, your program may run like "./P5.exe".
• At the beginning, we have a linked list of 1024 nodes, each contains a free memory block of 1024 Bytes. The linked list node should contains both
block id and free memory size. For Best Fit policy, your linked list needs to be sorted in the ascending order of the memory block size. Your
program starts by reading a list of memory requests from a file named "requests.txt", which consists of a list with two types of requests:
• A: Allocation of a memory region of a particular size. For example, "A 1 512" specifies a request with id of 1 for an allocation of 512 Bytes
memory block. Request Id starts from 1 and increases incrementally.
o R: Release of the memory requests by a particular request id. For example, "R 1" releases the memory allocated back to the identified memory
block.
• When processing each request, the program should locate the "smallest" memory block that exceeds the requested size and then update the
linked list node's size. Note that the new size may have to be moved to an earlier position in the list to maintain the ascending order.
• For allocated memory blocks, you should maintain a separate "allocation linked list", with each node containing the request id, block id, and
memory size. It's a good idea to sort this linked list by the request id so that at the time of receiving a release request, you can identify the memory
block, remove the node from the allocation linked list, and then return the size back to the free memory block linked list. After that, the linked list
may need to be adjusted to keep the ascending order by size.
• Your program should keep running without crashing. If a request cannot be served due to a failure of finding new blocks, then a message should be
printed out.
• Implementation Requirement:
• Only Linked list will be accepted.
o Using STL List will end up with no testing and 30% grades at maximum.
• Testing
• Your program should print the following messages at run time:
▪ Allocation such as "512 bytes have been allocated at block 5 for request 1".
▪ Release such as "512 bytes have been returned backed to block 5 for request 1".
o At the end, write to a textfile named "final_size.txt" with size of each node in the free memory block linked list.
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution
Trending nowThis is a popular solution!
Step by stepSolved in 3 steps with 4 images

Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Similar questions
- Consider a (literal) plate stack. If the stack becomes too tall, it may collapse.In practise, we would most likely create a new stack when the preceding stack reaches a certain threshold. Create a data structure SetOfStacks that is similar to this. SetOfStacks should be made up of many stacks and should build a new stack when the preceding one reaches its capacity.SetOfStacks. Push() and SetOfStacks are both functions. pop() should operate exactly like a single stack (that is, it should return the same values as if there were just one stack).COMPLETE THE FORMULACreate a popAt(int index) method that executes a pop operation on a given substack.arrow_forwardAn actual working program in C that transfers contents of a file into a linked list and then performs insertion, updation, deletion and search operation on the contents of the file through a linked list. The contents of the file should be treated as a string. And all operations performed on the linked list should reflect on the file. The format of the file is: 112.22.33.44 Baker 101.32.11.23 Parson and so on.. and each line in the file should be treated as a string.arrow_forwardefficiency ! Write a function to be included in an unsorted doubly linked list class, called deleteLast, that will delete the last node in the list. Assume that there is only pointer first (no last pointer).arrow_forward
- Make use of a random number generator to generate a list of 500 three-digit numbers. Create a sequential list FILE of the 500 numbers. Artificially implement storage blocks on the sequential list with every block containing a maximum of 10 numbers only. Open an index INDX over the sequential list FILE which records the highest key in each storage block and the address of the storage block. Implement Indexed Sequential search to look for keys K in FILE. Compare the number of comparisons made by the search with that of the sequential search for the same set of keys.Extend the implementation to include an index over the index INDX.arrow_forwardQuestion : Write a program to remove duplicates from a doubly linked list. e.g (1,2,3,4,5,2) (you will remove the 2nd duplicate) and then swap two data items in a doubly linked list. swap address of node 2 with node 4.arrow_forwardAssume that the nodes of the singly linked lists are arranged in decreasing order of the exponents of the variable x in order to add the two polynomials.The objective is to create a fresh list of nodes that represents the addition of P1 and P2. This is done by adding the COEFF fields of nodes in lists P1 and P2 that have identical powers of variable x, and then making a new node in the resulting list P1 + P2. The key part of the technique is shown below.The start pointers of the singly linked lists that correspond to the polynomials P1 and P2 are P1 and P2, respectively. Two temporary pointers, PTR1 and PTR2, are created with starting values of P1 and P2, respectively. Make procedural code.arrow_forward
- Execute a program that will split a circularly linked list P with n nodes intotwo circularly linked lists P1, P2 with the first n/2 and the last n – n/2 nodes ofthe list P in them.arrow_forwardThe program inserts a number of values into a priority queue and then removes them. The priority queue treats a larger unsigned integer as a higher priority than a smaller value. The priority queue object keeps a count of the basic operations performed during its lifetime to date, and that count is available via an accessor. In one or two places I have put statements such as op_count++;, but these are incomplete. We only count operations involved in inserting and removing elements, not auxiliary operations such as is_empty() or size() The class implements a priority queue with an unsorted vector. Your assignment is to re-implement the priority queue implementation using a heap built on a vector, exactly as we discussed in class. Leave the framework and public method interfaces completely unchanged. My original test program must work with your new class. You will have to write new private methods bubble_up and percolate_down. You should not implement heapify or heapsort. #include…arrow_forwardThis program will use an array implementation of a linked list to keep an ascending sorted list of numbers. The input data consists of two fields: a single character and an integer value. The single character gets interpreted as one of the following: A - represents a value that is to be added to the linked listD - represents a value to be deleted from the linked listP - indicates that all values are to be printed in ascending order The character is only used to determine which process is to be executed; it should not be printed, entered into the linked list, or processed in any way. The main program should be mainly function calls. Process input data until end of file. All output should be sent to an output file and be appropriately formatted and labeled. Keep a running log of everything that is going on in the processing. Input file: A 54A -17A 32 A 81 A -30 A 18 P A 41 A 93 A 65 A 80 A 104 A -20 D 81 D 54 D -30 A 79 A 63 A 77 A –33 D 104 D -20 D 80 D 32 Parrow_forward
arrow_back_ios
arrow_forward_ios
Recommended textbooks for you
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education

Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON

C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON

Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning

Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education