99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

代寫(xiě)CS 551、代做C/C++編程語(yǔ)言
代寫(xiě)CS 551、代做C/C++編程語(yǔ)言

時(shí)間:2024-10-21  來(lái)源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



CS 551 Systems Programming, Fall 2024
Programming Project 1 Out: 10/13/2024 Sun.
Due: 10/26/2024 Sat. 23:59:59
In this project your are going to implement a custom memory manager that manages heap memory allocation at program level. Here are the reasons why we need a custom memory manager in C.
• The C memory allocation functions malloc and free bring performance overhead: these calls may lead to a switch between user-space and kernel-space. For programs that do fre- quent memory allocation/deallocation, using malloc/free will degrade the performance.
• A custom memory manager allows for detection of memory misuses, such as memory over- flow, memory leak and double deallocating a pointer.
The goal of this project is to allow students to practice on C programming, especially on bitwise operations, pointer operation, linked list, and memory management.
Figure 1: Overview
1 Overview
Figure 1 depicts where the memory manager locates in a system. The memory manager basically preallocates chunks of memory, and performs management on them based on the user program memory allocation/deallocation requests.
We use an example to illustrate how your memory manager is supposed to work. Suppose memory allocations in the memory manager are 16 bytes aligned1.
• After the user program starts, the first memory allocation from the program requests 12 bytes of memory (malloc(12)). Prior to this first request, your memory manager is initialized
1In other words, the memory manager always allocates memory that is a multiple of 16 bytes. In the base code, this is controlled by the MEM ALIGNMENT BOUNDARY macro defined in memory manager.h
 User program
User program
   malloc/free
malloc/free (interposed version)
malloc/free
  OS kernel
Your memory manager (a library)
OS kernel
  
with a batch of memory slots2, each of which has a size of 16 bytes. Memory manager returns the first slot of the batch to the user program.
• Then the user program makes a second request (malloc(10)). Because the memory al- location is 16 bytes aligned, the memory manager should return a chunk of memory of 16 bytes. This time, because there are still available 16-byte-slots in the allocated batch, the memory manager simply return the second slot in the allocated batch to fulfill the request without interacting with the kernel.
• The user program makes 6 subsequent memory requests, all of which are for memory less than 16 bytes. The memory manager simply returns each of the rest 6 free 16-byte-slots to fulfill the requests. And for the implementation of this project, assume you will only get requests for less than or equal to 16 bytes memory.
• The user program makes the 9th request (malloc(7)). Because there is no free slots avail- able, the manager allocates another batch of memory slots of 16 bytes, and returns the first slot in this batch to the user program.
• Suppose the 10th memory request from the user program is malloc(28). The manager should return a memory chunk of ** bytes (remember memory allocation is 16 bytes aligned). Because there is no memory list of **-byte-slots, the manager has to allocate a batch of memory slots of ** bytes, and returns the first slot to fulfill this request. At this moment, the memory list of **-byte-slots has only one memory batch.
• The memory manager organizes memory batches that have the same slot size using linked list, and the resulting list is called a memory batch list, or a memory list.
• Memory lists are also linked together using linked list. So the default memory list with slot size of 16 bytes is linked with the newly created ** bytes slot size memory list.
• The manager uses a bitmap to track and manage slots allocation/deallocation for each memory batch list.
It is easy to see that with such a mechanism, the memory manager not only improves program performance by reducing the number of kernel/user space switches, but also tracks all the memory allocation/deallocation so that it can detect memory misuse such as double freeing. The memory manager can also add guard bytes at the end of each memory slot to detect memory overflow (just an example, adding guard bytes is not required by this project.)
2 What to do
2.1 Download the base code
Download the base code from Assignments section in the Brightspace. You will need to add your implementation into this base code.
2In the base code, the number of memory slots in a batch is controlled by the MEM BATCH SLOT COUNT macro defined in memory manager.h
 
2.2 Complete the bitmap operation functions (25 points)
Complete the implementation of the functions in bitmap.c.
• int bitmap find first bit(unsigned char * bitmap, int size, int val)
This function finds the position (starting from 0) of the first bit whose value is “val” in the “bitmap”. The val could be either 0 or 1.
Suppose
         unsigned char bitmap[] = {0xF7, 0xFF};
Then a call as following
         bitmap_find_first_bit(bitmap, sizeof(bitmap), 0);
finds the first bit whose value is 0. The return value should be 3 in this case.
• int bitmap set bit(unsigned char * bitmap, int size, int target pos)
This function sets the “target pos”-th bit (starting from 0) in the “bitmap” to 1.
Suppose
     unsigned char bitmap[] = {0xF7, 0xFF};
Then a call as following
     bitmap_set_bit(bitmap, sizeof(bitmap), 3);
sets bit-3 to 1. After the call the content of the bitmap is {0xFF, 0xFF};
• int bitmap clear bit(unsigned char * bitmap, int size, int target pos)
This function sets the “target pos”-th bit (starting from 0) in the “bitmap” to 0.
• int bitmap bit is set(unsigned char * bitmap, int size, int pos)
This function tests if the “pos”-th bit (starting from 0) in the “bitmap” is 1.
Suppose
     unsigned char bitmap[] = {0xF7, 0xFF};
Then a call as following
     bitmap_bit_is_set(bitmap, sizeof(bitmap), 3);
returns 0, because the bit-3 in the bitmap is 0.
• int bitmap print bitmap(unsigned char * bitmap, int size)
This function prints the content of a bitmap in starting from the first bit, and insert a space
every 4 bits. Suppose
     unsigned char bitmap[] = {0xA7, 0xB5};
Then a call to the function would print the content of the bitmap as
     1110  0101  1010  1101
The implementation of this function is given.

2.3 Complete the memory manager implementation (70 points)
In memory manager.h two important structures are defined:
• struct stru mem batch: structure definition of the a memory batch (of memory slots). • struct stru mem list: structure definition of a memory list (of memory batches).
To better assist you understand how a memory manager is supposed to organize the memory using the two data structures, Figure 2 shows an example of a possible snapshot of the memory manager’s data structures.
Figure 2: An example of data structures Basically there are two kinds of linked list:
• A list of memory batches (with a certain slot size): as shown in the previous example, this list expands when there is no free slot available. The memory manager adds a new batch at the end of the list.
• A list of memory batch list: this list expands when a new slot size comes in. You will need to implement the functions in memory manager.c:
 • void * mem mngr alloc(size t size)

– This is the memory allocation function of the memory manager. It is used in the same way as malloc().
– Provide your implementation.
– The macro MEM ALIGNMENT BOUNDARY (defined in memory manager.h) controls how memory allocation is aligned. For this project, we use 16 byte aligned. But your implementation should be able to handle any alignment. One reason to de- fine the alignment as a macro is to allow for easy configuration. When grading we will test alignment that is multiples of 16 by changing the definition of the macro MEM ALIGNMENT BOUNDARY to 8, **, ....
– The macro MEM BATCH SLOT COUNT (defined in memory manager.h) controls the number of slots in a memory batch. For this project this number is set to 8. But your implementation should also work if we change to the macro MEM BATCH SLOT COUNT to other values. When grading, we will test the cases when MEM BATCH SLOT COUNT is set to multiples of 8 (i.e., 8, 16, 24, ...).
– When there are multiple free slots, return the slot using the first-fit policy(i.e, the one with smallest address).
– Remember to clear the corresponding bit in free slots bitmap after a slot is allo- cated to user program.
– Do not use array for bitmap, because you never now how many bits you will need. Use heap memory instead.
– Remember to expand the bitmap when a new batch is added to a list, and keep the old content after expansion.
– Create a new memory list to handle the request if none of the existing memory list can deal with the requested size.
– Add this memory list into the list of memory lists.
– This function should support allocation size up to 5 times the alignment size, e.g., 80
bytes for 16 byte alignment.
• void mem mngr free(void * ptr)
– This is the memory free function of the memory manager. It is used in the same way
as free().
– Provide your implementation.
– The ptr should be a starting address of an assigned slot, report(print out) error if it is not (three possible cases:
1: ptr is the starting address of an unassigned slot - double freeing;
2: ptr is outside of memory managed by the manager;
3: ptr is not the starting address of any slot).
– Remeber to set the corresponding bit in free slots bitmap after a slot is freed, so
that it can be used again.
– Search through all the memory lists to find out which memory batch the ptr associated slot belongs to.

2.4

void mem mngr init(void)
– This function is called by user program when it starts.
– Initialize the lists of memory batch list with one default batch list. The slot size of this default batch list is 16 bytes.
– Initialize this default list with one batch of memory slots.
– Initialize the bitmap of this default list with all bits set to 1, which suggests that all
slots in the batch are free to be allocated.
void mem mngr leave(void)
– This function is called by user program when it quits. It basically frees all the heap
memory allocated.
– Provide your implementation.
– Don’t forget to free all the memory lists to avoid memory leak.
void mem mngr print snapshot(void)
This function has already been implemented. It prints out the current status of the memory manager. Reading this function may help you understand how the memory manager orga- nizes the memory. Do not change the implementation of this function. It will be used to help the grading.
Writing a makefile (5 points)


Write a makefile to generate
• • •
2.5
Log your work: besides the files needed to build your project, you must also include a README
file which minimally contains your name and B-number. Additionally, it can contain the following:
• The status of your program (especially, if not fully complete).
• Bonus is implemented or not.
• A description of how your code works, if that is not completely clear by reading the code (note that this should not be necessary, ideally your code should be self-documenting).
• Possibly a log of test cases which work and which don’t work.
• Any other material you believe is relevant to the grading of your project.
memory manager.o bitmap.o
a static library memory manager.a, which contains the previous relocatable object files. This library will be linked to our test program for testing.
Log and submit your work

Compress the files: compress the following into a ZIP file: • bitmap.c
• common.h
• interposition.h
• memory manager.c • memory manager.h • Makefile
• README
Name the ZIP file based on your BU email ID. For example, if your BU email is “abc@binghamton.edu”, then the zip file should be “proj1 abc.zip”.
Submission: submit the ZIP file to Brightspace before the deadline. 2.6 Grading guidelines
(1) Prepare the ZIP file on a Linux machine. If your zip file cannot be uncompressed, 5 points off.
(2) If the submitted ZIP file/source code files included in the ZIP file are not named as specified above (so that it causes problems for TA’s automated grading scripts), 10 points off.
(3) If the submitted code does not compile:
1 2 3 4 5 6 7 8 9
TA will try to fix the problem (for no more than 3 minutes);
if (problem solved)
  1%-10% points off (based on how complex the fix is, TA’s discretion);
else
  TA may contact the student by email or schedule a demo to fix the problem;
  if (problem solved)
    11%-20% points off (based on how complex the fix is, TA’s discretion);
  else
    All points off;
So in the case that TA contacts you to fix a problem, please respond to TA’s email promptly or show up at the demo appointment on time; otherwise the line 9 above will be effective.
(4) If the code is not working as required in this spec, the TA should take points based on the assigned full points of the task and the actual problem.
(5) Late penalty: Day1 10%, Day2 20%, Day3 40%, Day4 60%, Day5 80%
(6) Lastly but not the least, stick to the collaboration policy stated in the syllabus: you may discuss with your fellow students, but code should absolutely be kept private. Any violation to the Academic Honesty Policy and University Academic Policy, will result 0 for the work.

請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

掃一掃在手機(jī)打開(kāi)當(dāng)前頁(yè)
  • 上一篇:代寫(xiě)SCC.369、C++語(yǔ)言編程代做
  • 下一篇:INT 404代做、代寫(xiě)Matlab程序設(shè)計(jì)
  • 無(wú)相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    出評(píng) 開(kāi)團(tuán)工具
    出評(píng) 開(kāi)團(tuán)工具
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
    海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
  • 短信驗(yàn)證碼 豆包 幣安下載 AI生圖 目錄網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                欧美日本高清视频在线观看| www..com久久爱| 久久国产精品色婷婷| 欧美精品一区二区精品网| 久久99国产精品久久99果冻传媒| 1区2区3区欧美| 亚洲精品乱码久久久久| 蜜乳av一区二区三区| 美女视频一区在线观看| 视频一区二区中文字幕| 91极品视觉盛宴| 国产精品久线观看视频| 亚洲成人一二三| 亚洲高清免费视频| 国产区在线观看成人精品| 欧美激情一区在线观看| 亚洲精品一二三四区| 日韩和欧美一区二区三区| 日韩电影一区二区三区四区| 国产伦精一区二区三区| 日本久久一区二区| 久久精品一二三| 美女诱惑一区二区| 99国内精品久久| 不卡的av中国片| 久久久久久久久岛国免费| 成人午夜大片免费观看| 欧美变态tickle挠乳网站| 天堂蜜桃一区二区三区 | 激情五月播播久久久精品| 亚洲v精品v日韩v欧美v专区| 视频一区视频二区中文字幕| 亚洲成人三级小说| 亚洲欧美综合另类在线卡通| 午夜不卡在线视频| 久久99精品久久久| 色婷婷av一区二区三区gif| 91丨九色丨尤物| 精品剧情在线观看| 国产欧美一二三区| 亚洲一区二区三区四区的| 大胆亚洲人体视频| 日韩高清国产一区在线| 国产女主播视频一区二区| 精品免费国产二区三区| 日本一区二区三区在线不卡| 亚洲五月六月丁香激情| 蜜桃91丨九色丨蝌蚪91桃色| 国产高清亚洲一区| 99精品视频在线免费观看| 99久久精品免费看| 3atv一区二区三区| 国产三级精品视频| 亚洲一区二区三区国产| 久久成人免费日本黄色| 日本亚洲电影天堂| 香蕉乱码成人久久天堂爱免费| 精品视频一区二区三区免费| 一区二区三区精品| 日本女人一区二区三区| 丝袜a∨在线一区二区三区不卡| 日韩欧美卡一卡二| 久久蜜桃一区二区| 国产精品一二三区在线| 日本伊人色综合网| 高清beeg欧美| 91精品国产综合久久久久久久| 欧美二区在线观看| 欧美久久久一区| 欧美激情自拍偷拍| 美女被吸乳得到大胸91| 91偷拍与自偷拍精品| 日韩视频一区二区在线观看| 亚洲欧美成人一区二区三区| 国产一区二区不卡在线| 欧美日韩夫妻久久| 中文字幕中文乱码欧美一区二区 | 色www精品视频在线观看| 9191精品国产综合久久久久久| 国产精品福利电影一区二区三区四区| 男男成人高潮片免费网站| 色综合天天综合在线视频| 国产视频一区二区三区在线观看| 欧美一区欧美二区| 一区二区三区美女视频| 日本中文一区二区三区| 欧美视频日韩视频在线观看| 国产亚洲欧美在线| 美女看a上一区| 欧美一激情一区二区三区| 亚洲视频1区2区| 大美女一区二区三区| 欧美一区二视频| 亚洲小少妇裸体bbw| 91麻豆.com| 欧美—级在线免费片| 亚洲一区二区三区爽爽爽爽爽| 久草热8精品视频在线观看| 在线观看视频一区| 亚洲欧美在线视频观看| 99久久99久久综合| 亚洲精品乱码久久久久| 91欧美一区二区| 亚洲日本一区二区三区| 成人激情小说乱人伦| 久久久www成人免费无遮挡大片| 精品影院一区二区久久久| 欧美日高清视频| 免费高清不卡av| 久久午夜电影网| 国产成人精品一区二| 69堂亚洲精品首页| 成人av网址在线观看| 亚洲情趣在线观看| 欧美色网站导航| 丝袜美腿高跟呻吟高潮一区| 精品国产制服丝袜高跟| 国产.欧美.日韩| 亚洲欧美偷拍另类a∨色屁股| 日本大香伊一区二区三区| 亚洲一二三区在线观看| 日韩三级伦理片妻子的秘密按摩| 韩国中文字幕2020精品| 最新热久久免费视频| 欧美视频日韩视频| 99久久精品国产导航| 图片区小说区区亚洲影院| 欧美精品一区二区三区高清aⅴ | 免费xxxx性欧美18vr| 日韩欧美国产高清| 国产精一区二区三区| 成人免费在线观看入口| 欧美日韩免费观看一区三区| 亚洲一区二区欧美| 国产电影精品久久禁18| 亚洲成a人在线观看| 欧美电影免费观看完整版| 99精品久久免费看蜜臀剧情介绍 | 国内精品伊人久久久久av影院| 国产精品免费网站在线观看| 欧美天天综合网| 国产福利不卡视频| 亚洲国产婷婷综合在线精品| 久久综合色播五月| 色老汉一区二区三区| 久久综合综合久久综合| 亚洲精品免费看| 国产婷婷一区二区| 欧美一卡二卡在线观看| 成人国产一区二区三区精品| 日韩成人av影视| 午夜婷婷国产麻豆精品| 亚洲免费三区一区二区| 中文字幕日韩av资源站| 久久综合九色综合欧美98| 欧美在线综合视频| 成人高清视频免费观看| 日产欧产美韩系列久久99| 亚洲视频图片小说| 中文字幕免费不卡| 精品国内二区三区| 8x福利精品第一导航| 欧美午夜不卡在线观看免费| 国产精品一区二区久久不卡| 欧美亚洲一区三区| 成人国产精品免费观看视频| 久久精品72免费观看| 亚洲成人免费在线观看| 亚洲欧美综合另类在线卡通| 国产欧美精品一区二区三区四区| 在线观看www91| 日本一区二区三区电影| 久久久久国产精品人| 日韩欧美精品在线| 日韩欧美精品三级| 日韩女优毛片在线| 日韩欧美一二三区| 精品国产免费一区二区三区四区 | 亚洲精品免费在线| 亚洲免费在线观看| 国产欧美日韩在线| 欧美tickling挠脚心丨vk| 日韩限制级电影在线观看| 欧美日韩视频不卡| 在线成人av影院| 在线观看亚洲a| 欧美日韩国产一区| 欧美丰满嫩嫩电影| 欧美日本视频在线| 91精品国产色综合久久不卡电影| 欧美午夜精品久久久久久超碰| 欧美探花视频资源| 欧美肥大bbwbbw高潮| 日韩精品一区国产麻豆| 精品精品国产高清a毛片牛牛| 久久免费精品国产久精品久久久久| 欧美午夜寂寞影院| 日本道在线观看一区二区| 99久精品国产| 欧美精选在线播放|