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

        代做159.342 、代寫Operating Systems 編程設(shè)計(jì)
        代做159.342 、代寫Operating Systems 編程設(shè)計(jì)

        時間:2025-06-04  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯



        159.342 - Operating Systems and Networks
        Assignment #3 (due on 6/Jun)
        Memory Management Using the Buddy System Strategy
        OBJECTIVE:
        The main objective in this assignment is to implement the Buddy System memory management 
        strategy by writing two functions that implement the same functionalities as the C Standard library’s 
        malloc() and free(). You should apply your knowledge of memory management concepts, so the 
        functions are as efficient as possible. The buddy system will be characterised and compared against 
        the existing C Standard library functions based on ACTUAL RUNNING TIME and MEMORY USAGE. 
        Given a large block of contiguous memory to manage, your functions should be able to fulfil a series 
        of memory allocation and deallocation requests. In your implementation, you are not allowed to 
        use the built-in malloc, free, new, delete or any other memory allocators that come from other 
        third-party libraries. 
        START-UP CODES:
        The start-up codes provide a test routine that makes successive calls for memory allocations and 
        deallocations, involving a replaceable implementation of MALLOC and FREE. Functions for 
        measuring the actual running time and total memory usage of the memory management strategy
        are also provided.
        ///////////////////////////////
        // TEST ROUTINE
        ///////////////////////////////
        #ifdef RUN_COMPLETE_TEST 
         cout << "\n\n executing " << NO_OF_ITERATIONS << " rounds of combinations of memory allocation and deallocation..." <<
        endl;
         
         for(i=0;i<NO_OF_ITERATIONS;i++) {
         k=myrand() % NO_OF_POINTERS; // pick a pointer
         if(n[k]) { // if it was allocated then free it
         // check that the stuff we wrote has not changed
         if ( (n[k][0]) != (unsigned char) k)//(n[k]+s[k]+k) )
         printf("Error when checking first byte! in block %d \n",k);
         if(s[k]>1 && (n[k][s[k]-1])!=(unsigned char) k )//(n[k]-s[k]-k))
         printf("Error when checking last byte! in block %d \n",k);
         FREE(n[k]); 
         }
         size=randomsize(); // pick a random size
         #ifdef DEBUG_MODE
         cout << "\tPick random size to allocate: " << size << endl;
         #endif
         
         n[k]=(unsigned char *)MALLOC(size); // do the allocation
         if(n[k] != NULL){
         #ifdef DEBUG_MODE
         cout << "\tallocated memory of size: " << size << endl; 
         #endif 
         s[k]=size; // remember the size
         n[k][0]=(unsigned char) k; // put some data in the first and 
         if(s[k]>1) n[k][s[k]-1]=(unsigned char) k; // last byte
         } else {
         cout << "\tFailed to allocate memory of size: " << size << endl; 
         } 
         }
        #endif
        n.h.reyes@massey.ac.nz
        Selecting a memory management strategy to test
        You can switch between different memory management strategies by changing the definition of 
        MALLOC and FREE, as defined inside main.cpp (see below). The first two options are already 
        provided, but the third option corresponds to the Buddy System and therefore, needs to be 
        implemented in this assignment:
        //---------------------------------------
        // WHICH MEMORY MANAGEMENT STRATEGY?
        //---------------------------------------
        // enable the following compiler directives to test the real malloc and free
        //(1) use built-in C functions
        const string strategy = "malloc";
        #define MALLOC malloc
        #define FREE free
        //---------------------------------------
        //enable the following compiler directives to test a simple implementation of malloc and free
        //(2) use user-defined functions
        //const string strategy = "mymalloc";
        // #define MALLOC mymalloc
        // #define FREE myfree
        //---------------------------------------
        //enable the following compiler directives to test your implementation of the Buddy system strategy
        //(3) use Buddy System
        // const string strategy = "Buddy System";
        // #define USE_BUDDY_SYSTEM
        // #define MALLOC buddyMalloc
        // #define FREE buddyFree
        //---------------------------------------
        CORE FUNCTIONS REQUIRED:
        Skeleton functions for buddy system’s malloc and free are already provided inside buddysys.cpp. 
        Write your implementation inside them. You are allowed to add any supporting functions, data 
        structures and variables in the program. 
        void *buddyMalloc(int request_memory){
         //write your buddy system’s memory allocation codes here
         //this function should provide the same functionality as the malloc() function

        int buddyFree(void *p){
         //write your buddy system’s memory deallocation codes here
         //this function should provide the same functionality as the free() function
        }
        AUXILIARY FUNCTIONS PROVIDED:
        The Auxiliary functions, constants and data structures declared and implemented inside auxiliary.cpp 
        and auxiliary.h should all be kept as is.
        MINIMUM CONTIGUOUS MEMORY SIZE
        As part of characterising the performance of your implementation, find the minimum contiguous 
        memory size that allows the Buddy System strategy to accommodate the succession of memory 
        allocation and deallocation requests in the test routine. To accomplish this, you need to experiment 
        with different settings for the NUMBEROFPAGES until the test routine could be fully completed. 
        Example: 
        As an example, if you set NUMBEROFPAGES equal to 1024, then the MEMORYSIZE could be 
        computed as follows:
        // inside main.cpp
        MEMORYSIZE = (long long int) ((long long int)NUMBEROFPAGES * (long long int)PAGESIZE);
        Note that in the start-up codes, the PAGESIZE is set to 4096. Therefore, MEMORYSIZE will be equal 
        to 4,194,304 bytes (1024 * 4096) or 4.19 MegaBytes. 
        Next, with your MEMORYSIZE setting, run the test routines to see if all requests for memory 
        allocations and deallocations can be satisfied. 
        If the test routine cannot be completed, repeat the following steps until the test routine can be 
        completed.
        1. increase the MEMORYSIZE by a small amount, then recompile the code
        2. run the test routine.
        MEASURE OF PERFORMANCE
        Download the Excel file, named assignment_documentation.xlsx from our stream website.
        Characterise your Buddy System implementation and compare it against the C Standard library’s 
        malloc and free to see if its speed of execution is comparable. Fill-up the Excel worksheet to 
        document your experiment results. You only need to record the performance of your Buddy System 
        implementation.
        DEBUGGING:
        For debugging purposes, I have created a simple test routine (inside the start-up codes) to assist the 
        class. To activate this simple test temporarily, modify the auxillary.h file to enable 
        RUN_SIMPLE_TEST as follows:
        Before submitting your assignment, you should comment out #define RUN_SIMPLE_TEST and re activate #define RUN_COMPLETE_TEST again.
        n.h.reyes@massey.ac.nz
        n.h.reyes@massey.ac.nz
        Further, inside main.cpp, I have made a provision for this Simple Test already, it will automatically 
        switch to using 512 bytes as the MEMORYSIZE, to conduct the test.
        For more details on how to debug your codes, please see the file, named 
        A3_debugging_tips_2025_v1.docx. This is downloadable from our stream website.
        SUBMISSION INSTRUCTIONS:
        1. Submit your complete C/C++ program electronically via Stream. 
        2. Use the following filename for your main program (as set in the start-up codes): main.cpp
        3. Submit the makefile for building your codes. The makefile should suffice to build your 
        codes.
        4. As a backup, if you developed your program using an IDE, such as VSCODE or Clion, also 
        submit the complete support files (e.g. CMakeLists.txt, project file, *.sln, *.JSON, etc.), for 
        building your codes. 
        5. Assignment documentation file: Download and fill out the Excel file, named 
        assignment_documentation.xlsx to provide important information about your work. 
        Rename the file using your ID_number (e.g. 87654321.xlsx). This will help facilitate 
        accurate marking of your assignment. Deductions will be made if you do not submit the 
        completed Excel file.
        6. Snapshots file: Create a document containing snapshots of the simulation results. Show the 
        results of executing RUN_COMPLETE_TEST. If this cannot be achieved, for partial marks, show 
        the results of executing RUN_SIMPLE_TEST.
        Label and briefly describe each image. You may create a Word document or a pdf file to 
        accomplish this task.
        7. Create a zip file containing the following files:
        o Complete set of codes (including *.cpp, *.h, makefile, other supporting files)
        o Snapshots file
        8. Submit the zip file containing your complete program and snapshots electronically via 
        Stream. You will find a button with the following label.
        9. Submit the assignment documentation Excel file via Stream website. You will find a 
        separate button with the following label.
        10. Lastly, submit the Gen AI Usage documentation file via Stream website. You will find a 
        separate button with the following label.
        Distribution of marks:
        The assignment will be marked based on functionality, design and correctness. 
        The marks are distributed as follows:
        • 5 marks: for correct implementation of buddyMalloc.
        • 5 marks: for correct implementation of buddyFree.
        • 3 marks: for memory efficiency (Note: this is based on the minimum contiguous memory 
        size that allows the Buddy System strategy to accommodate the succession of memory 
        allocation and deallocation requests in the RUN_COMPLETE_TEST routine)
        • 2 marks: for documentation (i.e. accurate documentation of performance and other 
        important assignment details - Excel assignment documentation, snapshots).
        Other Notes
        • This assignment is worth 15 marks. 
        • Marks will be subtracted for obvious copying and/or for delays without justification.

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


         

        掃一掃在手機(jī)打開當(dāng)前頁
      1. 上一篇:BISM3206代做、代寫Python編程語言
      2. 下一篇:COMP4233代做、代寫Python/Java程序
      3. 無相關(guān)信息
        合肥生活資訊

        合肥圖文信息
        急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
        急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
        出評 開團(tuán)工具
        出評 開團(tuán)工具
        挖掘機(jī)濾芯提升發(fā)動機(jī)性能
        挖掘機(jī)濾芯提升發(fā)動機(jī)性能
        海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
        海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
        合肥機(jī)場巴士4號線
        合肥機(jī)場巴士4號線
        合肥機(jī)場巴士3號線
        合肥機(jī)場巴士3號線
        合肥機(jī)場巴士2號線
        合肥機(jī)場巴士2號線
        合肥機(jī)場巴士1號線
        合肥機(jī)場巴士1號線
      4. 短信驗(yàn)證碼 酒店vi設(shè)計(jì) deepseek 幣安下載 AI生圖 AI寫作 aippt AI生成PPT

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

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

        国产精品粉嫩美女在线观看| 亚洲精品国产手机| 久久夜色精品国产尤物| 少妇人妻偷人精品无码AV| 日韩内射美女人妻一区二区三区| 亚洲国产另类久久久精品| 精品性高朝久久久久久久| 亚洲精品成人久久久| 久久九九精品国产av片国产| 欧美精品大香伊蕉在人线| 日韩人妻精品一区二区三区视频| 亚洲日韩精品无码专区网站| 久久激情亚洲精品无码?V| 国产综合精品女在线观看| 91精品福利一区二区三区野战| 国产成人精品视频在放| 国产精品特黄毛片| 日韩av无码成人无码免费| 91精品国产综合久久久久久| 精品无码国产一区二区三区AV| 国产成人久久精品亚洲小说 | 91精品国产入口| 久久精品国内一区二区三区| 亚洲欧洲日韩不卡| 国色精品va在线观看免费视频| 91精品久久久久久久99蜜桃| 亚洲综合久久精品无码色欲| 日韩伦理片电影在线免费观看| 精品无码人妻一区二区三区不卡| 久99频这里只精品23热视频| 亚洲AV无码精品国产成人| 亚洲日韩中文在线精品第一| 大伊香蕉精品视频在线导航| 国产麻豆精品久久一二三| 国产成人精品高清在线观看99| 亚洲av日韩av无码av| 免费91麻豆精品国产自产在线观看| 久久久久人妻精品一区二区三区| 日韩精品中文乱码在线观看| 亚洲精品无码99在线观看| 69国产成人综合久久精品91|