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

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

COMP2046代做、代寫C/C++編程設(shè)計(jì)
COMP2046代做、代寫C/C++編程設(shè)計(jì)

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



COMP2046 Coursework Autumn 2024
Weight: 20% module marks
Deadline: 27th December 2024, 5pm Beijing time 
Submission: Create a single scyXXX.zip (Student account) file containing your source code files and files 
provided along with this coursework. We will need to rebuild your code to test your implementation. You 
should submit your single zip file through Moodle.
Overview
The goal of this coursework is to make use of operating system APIs (specifically, the POSIX API in Linux) 
and simple concurrency directives to solve a number of synchronisation problems that occur on 
scheduling systems that are similar to the ones that you may find in fairly simple operating systems. 
Completing all tasks will give you a good understanding of: 
• The use of operating system APIs in Linux. 
• Critical sections, semaphores, mutexes, and the principles of synchronisation/mutual exclusion. 
• The implementation of linear bounded buffers of a fixed size using linked lists. 
• The basics of concurrent/parallel programming using an operating system’s facilities (e.g. 
semaphores, mutex).
• Basic process creation, memory image overwriting and shared memory usage.
Getting Help
You MAY ask Dr Qian Zhang and Dr Fiseha B. Tesema for help in understanding coursework requirements 
if they are not clear (i.e. what you need to achieve). Any necessary clarifications will then be added to the 
Moodle page so that everyone can see them.
You may NOT get help from anybody else to actually do the coursework (i.e. how to do it), including 
ourselves. You may get help on any of the code samples provided, since these are designed to help you 
to do the coursework without giving you the answers directly.
Background Information
All code should be implemented in C and tested on the school’s Linux servers. Code that cannot be 
successfully compiled on the school’s Linux servers using the provided source/header files will affect your 
marks.
Additional information on programming in Linux, the use of POSIX APIs, and the specific use of threads 
and concurrency directives in Linux can be found, e.g., here (it is my understanding that this book was 
published freely online by the authors and that there are no copyright violations because of this).
Additional information on the bounded buffer problem can be found in, e.g.:
• Tanenbaum, Andrew S. 2014 Modern Operating Systems. 4th ed. Prentice Hall Press, Upper 
Saddle River, NJ, USA., Chapter 2, section 2.3.4
• Silberschatz, Abraham, Peter Baer Galvin, Greg Gagne. 2008. Operating System Concepts. 8th 
ed. Wiley Publishing, Chapter 4 and 5
• Stallings, William. 2008. Operating Systems: Internals and Design Principles. 6th ed. Prentice Hall 
Press, Upper Saddle River, NJ, USA, Chapter 5
• In addition to these books, much of the information in the lecture notes should be extremely 
helpful 
Please use only the system calls or POSIX libraries discussed in the lab. The use of any other system calls 
or POSIX libraries is not allowed.
Coding and Compiling Your Coursework 
You are free to use a code editor of your choice, but your code MUST compile and run on the school’s 
Linux servers. It will be tested and marked on these machines.
For task 1
We have provided a header file, linkedlist.h, which contains three function prototypes. The source 
file, linkedlist.c, includes the implementation of these functions. This code implements a basic singly 
linked list with the following three functions:
1. addLast: Adds a new element to the end of the list.
2. addFirst: Adds a new element to the beginning of the list.
3. removeFirst: Removes and returns the first element from the list.
It dynamically manages memory for the list nodes and handles edge cases, such as empty lists. The list 
structure is defined using a struct element that holds a data pointer and a next pointer, making the 
implementation flexible for various data types.
To ensure consistency across all students, changes are not to be made on the given source files. Note that, 
in order to use these files with your own code, you will be required to specify the file on the command 
line when using the gcc compiler (e.g. (updated Dec 4)
and include the linkedlist.c file in your code (using #include “linkedlist.h”).
For task 2
You should ensure that your code compiles using the GNU C-compiler, e.g., with the command:
(updated Dec 4)
(updated Nov28)
gcc –std=c99 TASKX.c -o TASKX linkedlist.c -pthread 
gcc TASK2.c -o TASK2output -lrt -pthread
Copying Code and Plagiarism
You are allowed to freely copy and adapt code samples provided in lab exercises or lectures. Additionally, 
you may use examples from Linux/POSIX websites, which offer many code snippets to help with specific 
tasks. This coursework assumes and encourages the use of these resources as part of the learning process. 
Since you are not claiming this code as your own original work, this does not constitute plagiarism.
Please note that some provided examples may omit error checking for clarity. It is your responsibility to 
include appropriate error checking in your implementation.
However, you must not copy code from any other sources, including:
• Another student, whether from this course or any other course.
• Any third-party sources, such as ChatGPT or similar tools.
If you do so, it will be considered an attempt to pass someone else’s work as your own, which is plagiarism. 
The University treats plagiarism very seriously. Consequences may include receiving a zero for the 
coursework, failing the module, or facing more severe penalties.
Task 1: Concurrency problem: Bounded buffers (60 %)
In this task you will implement a bounded buffer (i.e. of fixed size) of characters in two different ways. 
In task 1a, you will: 
• Use a single producer and single consumer. 
• Synchronise using binary semaphores (or mutexes where appropriate). 
In task 1b, you will: 
• Use multiple producers and multiple consumers. 
• Synchronise using counting semaphores (or mutexes where appropriate).
In both cases, you will produce/consume a pre-determined number of elements. Both tasks will give you 
good insights into the different synchronisation approaches for bounded buffers. 
Task 1a: Bounded buffer with binary semaphores (30 marks)
You are asked to implement a FCFS bounded buffer (represented as linked list). The buffer can contain at 
most MAX_BUFFER_SIZE (defined in the task1a.c code templet) elements, and each element contains one 
character (a ‘*’ in this case). You are asked to implement a single producer and a single consumer. The 
producer generates MAX_NUMBER_OF_JOBS (defined in the task1a.c code templet) ‘*’ characters and 
adds them to the end of the buffer (provided that empty spaces are available). The consumer removes ‘*’ 
characters from the start of the buffer (provided that full elements are available). Each time the producer 
(consumer) adds (removes) an element, the number of elements currently in the buffer is shown on the 
screen as a line of stars (see output sample provided task1a.txt). Different implementations and 
synchronisation approaches are possible, however, we are asking you to use only binary semaphores (or 
mutexes where appropriate) in your implementation. 
The final version of your code will include:
• A linked list of characters representing the bounded buffer utilised in the correct manner. The 
maximum size of this list should be configured to not exceed, e.g., 50 elements. 
• A producer function that generates stars (‘*’) and adds them to the end of the buffer (using addLast) 
as soon as space is available. 
• A consumer function that removes elements from the start of the buffer using removeFirst (one at 
a time).
• A visualisation function that displays the exact number of elements currently in the buffer (using a 
line of stars) on the screen every time an element is added to or removed from the buffer. 
• The code to: 
o Declare all necessary semaphores/mutexes and initialise them to the correct values. 
o Create the producer/consumer threads. 
o Join all threads with the main thread to prevent the main thread from finishing before 
the consumers/producers have ended. 
o Generate output similar in format to the example provided for this requirement
(task1a.txt) (for 100 jobs, using a buffer size of 10). 
Task 1b: Bounded buffer with counting semaphores (30 marks)
You are asked to, similar to task1a, implement a bounded buffer of characters, however, this time with 
multiple producers (NUMBER_OF_PRODUCERS defined in task1b.c code templet), multiple consumers
(NUMBER_OF_CONSUMERS defined in task1b.c code templet), and counting semaphores. The producers 
generate a total of MAX_NUMBER_OF_JOBS (defined in the task1b.c code templet) elements, which are 
removed by multiple consumers. Every time one of the producers or consumers adds or removes an 
element, the number of elements currently in the buffer is shown as a line of ‘*’ characters (see output 
sample on Moodle). Note that every producer/consumer has a unique Id assigned to them in the output. 
Similar to task1a, a correct implementation of this requirement includes: 
• A linked list of characters representing the bounded buffer utilised in the correct manner. The 
maximum size of this list should be configured to not exceed, e.g., 50 elements. 
• Multiple producer threads that generate a total number of MAX_NUMBER_OF_JOBS ‘*’ 
characters, and not more. That is, the number of elements produced by the different threads 
sums up to MAX_NUMBER_OF_JOBS. Elements are added to the buffer as soon as free spaces are 
available. Note that every producer may end up producing a different number of elements, 
depending on the way threads are interleaved, but that the total items produced should be equal 
to MAX_NUMBER_OF_JOBS. 
• A consumer function that removes elements from the start of the buffer using removeFirst (one 
at a time). 
• A mechanism to ensure that all consumers terminate gracefully when MAX_NUMBER_OF_JOBS 
have been consumed. 
• A visualisation function that displays the exact number of elements currently in the buffer (using 
a line of stars) on the screen every time an element is added to or removed from the buffer. 
• The code to: 
o Declare all necessary semaphores/mutexes and initialise them to the correct values. 
o Create the producer/consumer threads. 
o Join all threads with the main thread to prevent the main thread from finishing before 
the consumers/producers have ended. 
o Generate output similar in format to the example provided in this coursework (task1b.txt) 
for this requirement (for 100 jobs, using a buffer size of 10). 
Marking criteria:
The criteria used in the marking task1a and task1b of your coursework include: 
• Whether you have submitted the code and you are using the correct naming conventions and 
format. 
• Whether the code compiles correctly, and runs in an acceptable manner. 
• Whether you utilise and manipulate your linked list in the correct manner. 
• Whether semaphores/mutexes are correctly defined, initialised, and utilised. 
• Whether consumers and producers are joined correctly. 
• Whether the correct number of producers and consumers has been utilised, as specified in the 
coursework description. 
• Whether consumers and producers end gracefully/in a correct manner.
• Whether consumers/producers have been assigned a unique id (as can be seen from the output 
provided on Moodle). 
• Whether the exact number of elements is produced and consumed. 
• Whether your code is efficient, easy to understand, and allows for maximum parallelism (i.e. no 
unnecessary synchronisation is applied). 
• Whether unnecessary/inefficient/excessive busy waiting is used in your code. 
• Whether your code runs free of deadlocks.
• Whether the output generated by your code follows the format of the examples provided on 
Moodle.
Submission requirements: 
• Give your solutions extending the given code template task1a.c and task1b.c
• Name your output for the tasks “task1a.txt” and “task1b.txt” respectively. Please stick rigorously 
to the naming conventions, including capitalisation. 
• Add your task1a.c and task1b.c code files, as well as the output files task1a.txt and task1b.txt, to 
your submission folder. Include the provided linkedlist.c and linkedlist.h files in the submission 
folder as well.
• Your code must compile using (updated Nov28)
gcc -std=c99 task1a.c -o task1a linkedlist.c -pthread and 
gcc -std=c99 task1b.c -o task1b linkedlist.c -pthread on the school’s linux
servers. 
Task 2: Shared Memory (40 marks)
Use the knowledge you’ve obtained during the labs, finish the following question. You are asked to 
implement a solution for using shared memory for inter-process communication. Requirements of 
implementation are:
• A parent process (TASK2.c) that creates two new child processes;
• The process image of the two child processes is overwritten to execute ChildP1.c and ChildP2.c 
respectively.
• In TASK2.c, you are required to randomly generate an integer (RandInt) within the range of 1 to 
20 and print out the value of RandInt. The integer RandInt will be stored in shared memory with 
an appropriate structure for future usage.
• The ChildP1 will wait for a random amount of time and then double the value of RandInt. As soon 
as ChildP1 modified the RandInt, the other child process ChildP2 subtracting a value of 10 from 
the existing value.
• ChildP1 and ChildP2 need to take turn performing doubling and subtraction on RandInt 10 times. 
You are not permitted to use sleep() or any similar function to manually control the execution 
order of processes.
• Make sure that the ChildP2.c won’t be able to access to the RndInt before ChildP1.c finishes its 
task.
• Use shared memory to store all the values (intermediate results) of RandInt.
• Once all child processes have finished their tasks, the parent process needs to print out the value 
of RandInt at each instance.
• Your code must be compired using: (updated Dec 4)
gcc -lrt ChildP1.c -o ChildP1 -pthread 
gcc -lrt ChildP2.c -o ChildP2 -pthread 
gcc -lrt TASK2.c -o TASK2output -plhtread 
For this task, you are required to submit three files: TASK2.c, ChildP1.c and ChildP2.c

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









 

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:URBA6006代寫、Java/c++編程語言代做
  • 下一篇:代寫公式 公式指標(biāo)代寫代做 指標(biāo)公式選股公式
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場(chǎng)仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真技術(shù)服務(wù)
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲勞振動(dòng)
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)40個(gè)行業(yè)
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)4
    超全面的拼多多電商運(yùn)營(yíng)技巧,多多開團(tuán)助手,多多出評(píng)軟件徽y1698861
    超全面的拼多多電商運(yùn)營(yíng)技巧,多多開團(tuán)助手
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服務(wù)平臺(tái)
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內(nèi)
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗(yàn)證碼 豆包網(wǎng)頁版入口 破天一劍 目錄網(wǎng) 排行網(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

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    成人中文字幕在线播放| 人人干视频在线| 亚洲一区二区在线| 韩国视频理论视频久久| 国产成人亚洲综合91| 国产精品尤物福利片在线观看| 国产亚洲精品自在久久 | 国产成人综合av| 亚洲字幕在线观看| 国产一区二区三区乱码| 国产精品欧美激情| 精品久久久久久一区二区里番| 欧美激情欧美激情在线五月| 一本色道久久99精品综合| 免费不卡亚洲欧美| 久久久精品国产网站| 奇米成人av国产一区二区三区 | 韩国欧美亚洲国产| 国产热re99久久6国产精品| 久久久精品亚洲| 国产精品久久久久国产a级| 日韩av电影在线网| 国产极品精品在线观看| 一级日韩一区在线观看| 成人免费a级片| 久久久亚洲国产| 亚洲欧洲精品一区二区| 成人a在线观看| 一本色道久久综合亚洲精品婷婷| 国产精品一区二区在线观看| 一区二区三区国| 99在线热播| 亚洲免费av网| 久久在线中文字幕| 日韩wuma| 国产中文字幕在线免费观看| 91九色综合久久| 日韩亚洲国产中文字幕| 久久91精品国产| 国产噜噜噜噜久久久久久久久| 97人人模人人爽视频一区二区 | 久久久久综合一区二区三区| 久久九九热免费视频| 欧美精品久久久久| 欧洲亚洲一区二区| 精品国产一区久久久| 欧美激情 国产精品| 91九色丨porny丨国产jk| 国产成人精彩在线视频九色| 国产精品麻豆免费版| 欧美日韩在线不卡视频| 久久免费视频网站| 熟女视频一区二区三区| 国产拍精品一二三| 欧美日韩国产成人| av免费精品一区二区三区| 五码日韩精品一区二区三区视频 | 99中文字幕| 色婷婷久久一区二区| 久久91亚洲精品中文字幕奶水| 不卡毛片在线看| 精品视频一区二区| 欧美极品在线播放| 欧美激情视频一区二区三区| 久久精品视频中文字幕| 国产欧美精品一区二区三区-老狼| 亚洲精品欧美极品| 国产欧美在线观看| 亚洲激情一区二区三区| 日韩视频第一页| 国产美女直播视频一区| 五月天婷亚洲天综合网鲁鲁鲁| 久久天天躁狠狠躁老女人| 日本免费高清不卡| 欧美一级视频在线观看| 国产综合在线观看视频| 国产成人一区二区三区免费看 | 日韩videos| 国产精品对白刺激| 2019日本中文字幕| 黄色一级一级片| 亚洲一区二区三区午夜| 久久精品国产久精国产思思| av免费精品一区二区三区| 国产精品久久久久久久久久新婚| 成人a在线观看| 国内精品久久影院| 少妇熟女一区二区| 中文网丁香综合网| 国产精品免费一区二区三区在线观看| www插插插无码免费视频网站| 欧美亚洲另类激情另类| 亚洲欧洲在线一区| 精品国产一区二区三区日日嗨 | 国产精品二区在线| 精品999在线观看| 亚洲第一在线综合在线| 欧美大片va欧美在线播放| 国产a视频免费观看| 日韩精品 欧美| 亚洲在线免费看| 国产不卡在线观看| 成人精品久久久| 国内精品久久久久久| 青青在线视频免费| 色综合影院在线观看| 亚洲一区三区在线观看| 久久久视频精品| 日韩精品第1页| 天天爽天天狠久久久| 日韩中文综合网| 国产高清一区二区三区| 欧美亚洲在线视频| 色欲色香天天天综合网www| 一区二区视频国产| 欧美激情国产日韩精品一区18| 国产精品旅馆在线| 日韩在线免费高清视频| 国产综合福利在线| 欧美在线免费视频| 奇米影视首页 狠狠色丁香婷婷久久综合 | 一区二区三区一级片| 成人黄色一区二区| 亚州成人av在线| 一区二区三区观看| 亚洲在线免费视频| 啊v视频在线一区二区三区| 91免费国产精品| 日本不卡免费高清视频| 午夜免费久久久久| 懂色一区二区三区av片| 色老头一区二区三区| 久久免费福利视频| 国产又粗又猛又爽又黄的网站| 亚洲午夜精品国产| 久久久久久久久综合| 久久久久福利视频| 久精品国产欧美| 国产伦精品一区二区三区| 日韩av日韩在线观看| 国产精品毛片a∨一区二区三区|国| 高清视频欧美一级| 国产精品一区二区你懂得| 高清欧美精品xxxxx| 秋霞成人午夜鲁丝一区二区三区| 肉大捧一出免费观看网站在线播放 | 国产日韩在线看| 国产女人精品视频| 成人免费视频97| 青青草视频国产| 久久国产天堂福利天堂| 国产精品大全| 久久久久国产视频| 日韩一区免费观看| 欧美中文在线免费| 国产呦系列欧美呦日韩呦| 日日碰狠狠丁香久燥| 欧美成人四级hd版| 欧美激情a在线| 五月婷婷一区| 欧美亚洲另类久久综合| 国产一区 在线播放| 日韩欧美一区二区视频在线播放| 日日摸天天爽天天爽视频| 欧美综合在线观看视频| 精品欧美一区二区在线观看视频| 国产专区一区二区三区| 日av在线播放中文不卡| 午夜久久资源| 欧美精品一区免费| 国产美女精品久久久| 91精品国产成人www| 国产精品一区二区免费在线观看| 极品粉嫩国产18尤物| 日本精品一区二区三区不卡无字幕 | 亚洲一区二区免费| 秋霞在线一区二区| 国产日韩在线一区| 久久精品国产sm调教网站演员| 久久亚洲春色中文字幕| 午夜精品一区二区三区在线播放| 狠狠97人人婷婷五月| 91av福利视频| 欧美乱人伦中文字幕在线| 国产精品露出视频| 久久深夜福利免费观看| 色妞欧美日韩在线| 精品国产免费一区二区三区| 国产精品美女免费| 久久精品99久久久久久久久| 久久精品在线免费视频| 91精品视频播放| 97久久国产精品| 国产精品无码人妻一区二区在线 | 国产又粗又猛又爽又黄的网站| 欧美成人第一区| 成人国产精品日本在线| 国产精品裸体瑜伽视频| 日韩在线xxx| 青青草视频在线免费播放|