国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫CS 551、代做C/C++編程語言
代寫CS 551、代做C/C++編程語言

時間:2024-10-21  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



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.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

掃一掃在手機打開當前頁
  • 上一篇:代寫SCC.369、C++語言編程代做
  • 下一篇:INT 404代做、代寫Matlab程序設計
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 寵物飼養 十大衛浴品牌排行 suno 豆包網頁版入口 wps 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    欧美成人久久久| 欧美丰满熟妇xxxxx| 色婷婷综合久久久久| …久久精品99久久香蕉国产| 国产一区自拍视频| 国产在线观看91精品一区| 黄色一级大片免费| 国产专区一区二区| 国产日韩欧美在线观看| 国产人妻互换一区二区| 国产美女在线一区| 成人中文字幕av| 99亚洲精品视频| 国产经典久久久| 久久久久九九九| www日韩欧美| 国产精品久久电影观看| 久久99精品久久久久久琪琪| 一区二区三区av| 色狠狠久久av五月综合| 视频一区二区综合| 日本10禁啪啪无遮挡免费一区二区| 青青草原一区二区| 综合一区中文字幕| 国产在线精品自拍| 午夜老司机精品| 国产一区二区视频在线免费观看| 极品尤物一区二区三区| 国产日韩在线免费| 国产精品333| 国产成人精品自拍| 精品产品国产在线不卡| 亚洲国产精品影视| 黄色国产小视频| 91精品久久久久久| 国产成人综合久久| 久久亚洲欧美日韩精品专区| 亚洲一区二区三区精品在线观看 | 久久久久久一区二区三区| 欧美一区免费视频| 国产精品一区而去| 日韩中文字幕免费视频| 蜜月aⅴ免费一区二区三区| 婷婷视频在线播放| 国产综合欧美在线看| 777国产偷窥盗摄精品视频| 欧美中文字幕在线播放| 99久久国产宗和精品1上映 | 91精品国产综合久久久久久蜜臀| 久久亚洲精品无码va白人极品| 国产精品视频网站| 无码人妻精品一区二区蜜桃百度| 狠狠色综合网站久久久久久久| 99伊人久久| 久久综合免费视频| 日韩福利一区二区三区| 国产精品自产拍在线观看| 久久久久久久爱| 亚洲影影院av| 免费在线观看日韩视频| 久久福利电影| 午夜免费在线观看精品视频| 国模杨依粉嫩蝴蝶150p| 久久国产精品 国产精品| 中文字幕中文字幕在线中心一区| 欧美不卡1区2区3区| 国产a级片免费观看| 亚洲v日韩v综合v精品v| 国产精品有限公司| 久久综合久久88| 激情综合网俺也去| 久久国内精品一国内精品| 日韩精品伦理第一区| 久久人人97超碰精品888| 亚洲视频在线二区| 成人h在线播放| 久久久久久com| 免费不卡亚洲欧美| 久久久精品一区二区| 欧洲成人一区二区| 久久精品国产v日韩v亚洲| 欧美少妇一区| 日韩在线免费观看视频| 日本久久高清视频| 国产精品99久久久久久www| 亚洲一区二区三区精品在线观看| 国产伦精品一区二区三区四区视频_| 国产精品久久久一区二区三区| 欧美最猛黑人xxxx黑人猛叫黄| 久久伊人一区二区| 少妇久久久久久被弄到高潮 | 国产一区二区不卡视频| 国产精品久久久久av免费| 欧美 日本 亚洲| 久久中文字幕在线| 国产免费裸体视频| 久久久久久av| 91精品国产91久久久久久吃药 | 午夜精品一区二区三区四区| 91久久国产精品91久久性色| 亚洲a在线播放| 国产大尺度在线观看| 日本手机在线视频| 日韩视频免费大全中文字幕| 狠狠噜天天噜日日噜| 国产99久久精品一区二区永久免费| 国产噜噜噜噜噜久久久久久久久| 亚洲一区二区三区四区在线播放| 国产精品91一区| 欧美自拍资源在线| 久久夜色精品国产欧美乱| 成人黄色一区二区| 日韩a在线播放| 国产精品久久不能| 97久久国产精品| 日韩欧美电影一区二区| 国产精品久久久久久av福利| 国产日韩精品在线播放| 亚洲一区二区三区在线视频| 视频一区视频二区国产精品 | 欧美韩国日本精品一区二区三区| 欧美精品在线极品| 99久久免费观看| 欧美少妇在线观看| 欧美精品videos性欧美| 国产成人综合一区| 精品一区国产| 亚洲精品乱码久久久久久自慰| 久激情内射婷内射蜜桃| 国产一区免费| 无码人妻丰满熟妇区96| 国产精品免费久久久久久| 北条麻妃在线视频观看| 欧美又大又粗又长| 夜夜添无码一区二区三区| www.精品av.com| 97免费高清电视剧观看| 黄色片视频在线免费观看| 午夜免费日韩视频| 久久电影一区二区| 日韩在线视频观看| 超碰国产精品久久国产精品99| 欧美久久久久久一卡四| 亚洲 日韩 国产第一| 国产精品裸体瑜伽视频| 97成人在线观看视频| 激情综合在线观看| 日本精品一区二区三区高清 久久| 蜜月aⅴ免费一区二区三区| 日韩一区二区福利| 7777精品伊久久久大香线蕉语言| 国内精品久久久久久影视8| 日韩av资源在线| 亚洲尤物视频网| 久久久久国产精品免费| 久久精品在线播放| 久久av一区二区三区漫画| caopor在线视频| 国模吧无码一区二区三区| 日韩免费在线播放| 亚洲色图都市激情| 欧美伦理91i| 久久精品一本久久99精品| 九色综合婷婷综合| 91av在线播放| 91免费福利视频| 国产免费黄色av| 国产又粗又长又爽视频| 激情五月婷婷六月| 日韩欧美99| 天天操天天干天天玩| 亚洲人成无码www久久久| 欧美日韩aaaa| 九九综合九九综合| 国产精品二区在线| 精品国偷自产在线视频| 精品国产一区二区三区四区在线观看 | 深夜成人在线观看| 久久久久亚洲精品| 国产成人97精品免费看片| 91精品久久久久久久久久久| 成人久久久久爱| www国产亚洲精品| 国产精品永久免费视频| 国产精品亚洲不卡a| 国产精自产拍久久久久久| 国产免费一区二区三区香蕉精| 国产午夜精品视频一区二区三区| 免费一区二区三区| 精品少妇人欧美激情在线观看| 黄色片网址在线观看| 蜜臀av.com| 国产免费毛卡片| 91精品国产亚洲| 国产精品99久久久久久人| 久久精彩视频| 久久久久久久久久国产| 久久精品影视伊人网| 国产精品传媒毛片三区| 久久99久久99精品免观看粉嫩 |