加勒比久久综合,国产精品伦一区二区,66精品视频在线观看,一区二区电影

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

CS-350代寫、C++編程語言代做
CS-350代寫、C++編程語言代做

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



CS-350 - Fundamentals of Computing Systems
Homework Assignment #8 - BUILD
Due on November 14, 2024 — Late deadline: November 16, 2024 EoD at 11:59 pm
Prof. Renato Mancuso
Renato Mancuso
1CS-350 - Fundamentals of Computing Systems::Homework Assignment #8 - BUILD Problem 1
BUILD Problem 1
We now have a server capable of performing non-trivial operations on images! All we have to do now is to
make the server multi-threaded. And yes, we already have the infrastructure to spawn multiple threads. So
what’s missing exactly?
Output File: server_mimg.c
Overview. As mentioned above, the main idea is to allow multple workers to perform operations on images
in parallel. Everything you have developed in BUILD 6 will be reused, but we must make sure that when
multiple worker threads are spawned, the correctness of the operations on the images is still guaranteed.
But what could be jeopardizing the correctness of these operations? Let us consider a concrete case. Imaging
the following sequence of requests queued at the server: (1) Retrieve image A, (2) blur image A, (3) detect
the vertical edges of image A, and (4) send back the result of the operations performed on image A.
With only one worker, the operations are carried out in this sequence and the result sent back to the client is
an image with the cumulative operations (2) and (3) correctly applied to the source image. With 2 workers
(unless we ffx our implementation) we could have worker #1 and #2 working in parallel on operations (1)
and (2) with the result of the operations being some weird mix of the two operations.
In this assignment, the goal is to allow safe multi-threading where the semantics of sequential operations on
the images is preserved even if multiple threads are spawned and operate in parallel. For this task, we will
use semaphores to perform inter-thread synchronization.
Design. One of the main problem that we have to solve is un-arbitrated access to shared data structures.
To verify that there is a problem unless we insert synchronization primitives accordingly, start with your (or
my) solution for HW6, rename it appropriately, and enable spawning more than 1 worker threads.
Then, run the following simple experiment. First, run the client to generate the sequence of operations listed
above with 1 worker thread and look carefully at the output report generated by the client:
./server_mimg -q 100 -w 1 2222 & ./client -I images/ -L 1:R:1:0,0:b:1:0,0:v:1:0,0:T:1:0 2222
You will notice that the ffrst hash reported by the client (9f3363f0249c15163d52e60fd9544c31) is simply
the hash of the original test1.bmp image. The second (and last) hash reported by the client is the hash
(00e4fc4b9c7c71ee2ca3946053f78793) of the blur+vertical edge detection operations applied in sequence
to the image. However, if we increase the number of worker to 2, the ffnal hash will be different! For instance,
when running:
./server_mimg -q 100 -w 2 2222 & ./client -I images/ -L 1:R:1:0,0:b:1:0,0:v:1:0,0:T:1:0 2222
The last hash obtained on the reference machine changes to b59**c2bcb0a64121def911286c706e2, but
might be something else entirely on a different machine. Also in some cases, the server crashes entirely.
To solve the problem, the cleanest way is to introduce semaphore-based synchronization between threads.
In order to deffne a semaphore, you should use the type sem_t deffned in semaphore.h. Before a semaphore
can be used, it must be initialized.
This can be done with the sem_init(sem_t * semaphore, int pshared, unsigned int init_value).
Here, semaphore is pointer to the semaphore to be initialized, pshared can be set to 0, and init_value is
a non-negative initialization value of the semaphore, following the semantics we have covered in class.
Once your semaphore has been correctly initialized (make sure to check for the error value of the sem_init(...)
call!), the wait and signal operations can be performed over it, following the semantics we have discussed
Problem 1 continued on next page. . . 2CS-350 - Fundamentals of Computing Systems::Homework Assignment #8 - BUILD Problem 1 (continued)
in class. To wait on a semaphore, you must use the sem_wait(sem_t * semaphore) call; to signal on a
semaphore, you must use the sem_post(sem_t * semaphore).
Shared Data Structures. Of course, the main question is what data structures must be protected?. Here
is a list of things that can be problematic, but your own implementation could be different, so try to map
the statement below to your own code.
(1) Image Objects: One obvious place to start is to protect the image objects that are registered with
the server and upon which operations are requested by the client. We want to prevent different worker
to simultaneously change the content of an image, so a good idea is to introduce one semaphore per each
registered image! These must be created and/or initialized dynamically at image registration time.
(2) Image Registration Array: Another shared data structure is the global array of registered images.
Concurrent operations over that array is not a good idea, so all the threads will need to synchronize when
trying to access that shared data structure.
(3) Connection Socket: What? The connection socket has always been shared, so why is that a problem
now? The truth is that it has always been a problem, but we did not care because the responses from
the workers to the client were always a one-shot send(...) operation. But now, there are cases where the
server follows a two-step approach in the protocol it follows with the client. For instance, when handling an
IMG_RETRIEVE operation, a worker ffrst provides a positive acknowledgment of completed request and then
the payload of the image being retrieved. What if another worker starts sending other data while a retrieve
operation is in progress? Careful: the same goes for the parent when handling IMG_REGISTER operations.
(4) Request Queue and STDOUT Console: We already know that the shared request queue and the
shared STDOUT console require the use of semaphores to ensure correctness. Perhaps take inspiration from
the use of semaphores in those cases to handle the other shared data structures listed above.
Desired Output. The expected server output is pretty much what you already constructed in HW6. Here
is it summarized again for reference. You should print queue status dumps, rejection and completion notices.
Queue status dumps and rejection notice are identical in format to HW5 and HW6. Once again, the queue
dump status is printed when any of the worker threads completes processing of any of the requests.
Just like HW6, when a request successfully completes service, the thread ID of the worker thread that has
completed the request will need to be added at the beginning of the line following the format below. You can
assign thread ID = (number of workers + 1) to the parent thread. If multiple worker threads are available to
process a pending request, any one of them (but only at most one!) can begin processing the next request.
T<thread ID> R<req. ID>:<sent ts>,<img_op>,<overwrite>,<client img_id>,<server img_id>,<receipt ts>,
<start ts>,<compl. ts>
Here, <img_op> is a string representing the requested operation over an image. For instance, if the operation
was IMG_REGISTER, then the server should output the string “IMG REGISTER” (no quotes) for this ffeld.
<overwrite> should just be 0 or 1, depending on what the client requested. <client img_id> should be
the image ID for which the client has requested an operation. If the server is ignoring any of these values
in the response, set these ffelds to 0. Finally, <server img_id> should report the image ID on which the
server has performed the operation requested by the client. Recall that this might be different from what
sent by the client if overwrite = 0 in the client’s request, but it must be the same if overwrite = 1.
Additional Help. You might have noticed, from the commands recommended above, that the client (v4.2)
now allows you to deffne a script of image operation requests. This is useful to test the correctness of your
server under a controlled workload.
To use this feature, you should still provide the path to the folder containing the test images using the
-I <path to images folder> parameter. Next, you should also provide the -L <images request script>
parameter, where the <images request script> is a comma-separated list of image operations with the
following format:
Problem 1 continued on next page. . . 3CS-350 - Fundamentals of Computing Systems::Homework Assignment #8 - BUILD Problem 1 (continued)
<time to next operation>:<opcode char>:<overwrite>:<image ID>.
Here, <time to next operation> is a number of seconds that will elapse between this and the next operation
 in the script.
Next, <opcode char> is a single case-sensitive (!!) letter that identiffes which operation to be performed
(see list below).
• R: IMG_REGISTER
• r: IMG_ROT**CLKW
• b: IMG_BLUR
• s: IMG_SHARPEN
• v: IMG_VERTEDGES
• h: IMG_HORIZEDGES
• T: IMG_RETRIEVE
The <overwrite> ffeld should always be set to 1 (for simplicity we do not handle cases with overwrite = 0).
Finally, the <image ID> should be the ID on which the operation should be performed. This ffeld has a
special meaning in the case of IMG_REGISTER operations. Only in this case, it tells the client which one of
the ffles scanned in the images folder should be registered with the server. In all the other cases, an ID = n
tells the client to request the operation on the n
th
image that it has registered with the server.
When a script is requested at the client, the client will conveniently report how it has understood the script.
For instance, when using the script:
1:R:1:2,2:b:1:0,0:T:1:0
the client will report:
[#CLIENT#] INFO: Reading BMP 0: test1.bmp | HASH = 9f3363f0249c15163d52e60fd9544c31
[#CLIENT#] INFO: Reading BMP 1: test2.bmp | HASH = b6770726558da9722136ce84f12bfac8
[#CLIENT#] INFO: Reading BMP 2: test3.bmp | HASH = f2ac174**6fb2be614e8ab1ae10e82f0
[#CLIENT#] INFO: Reading BMP 3: test4.bmp | HASH = 0caaef67aee1775ffca8eda02bd85f25
[#CLIENT#] INFO: Reading BMP 4: test5.bmp | HASH = 5597b44eaee51bd81292d711c86a3380
[#CLIENT#] INFO: Reading BMP 5: test6.bmp | HASH = 11552ac97535bd4433891b63ed1dd45d
[#CLIENT#] Next Req.: +1.000000000 - OP = IMG_REGISTER, OW = 1, ID = 0
[#CLIENT#] Next Req.: +2.000000000 - OP = IMG_BLUR, OW = 1, ID = 0
[#CLIENT#] Next Req.: +0.000000000 - OP = IMG_RETRIEVE, OW = 1, ID = 0
4CS-350 - Fundamentals of Computing Systems::Homework Assignment #8 - BUILD Problem 2
Submission Instructions: in order to submit the code produced as part of the solution for this homework
assignment, please follow the instructions below.
You should submit your solution in the form of C source code. To submit your code, place all the .c
and .h ffles inside a compressed folder named hw8.zip. Make sure they compile and run correctly according
 to the provided instructions. The ffrst round of grading will be done by running your code.
Use CodeBuddy to submit the entire hw8.zip archive at https://cs-people.bu.edu/rmancuso/courses/
cs350-fa24/codebuddy.php?hw=hw8. You can submit your homework multiple times until the deadline.
Only your most recently updated version will be graded. You will be given instructions on Piazza on how
to interpret the feedback on the correctness of your code before the deadline.


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


 

掃一掃在手機打開當前頁
  • 上一篇:CSE2425代寫、C++編程語言代做
  • 下一篇:代寫XJEL1703、MATLAB設計編程代做
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務-企業(yè)/產(chǎn)品研發(fā)/客戶要求/設計優(yōu)化
    有限元分析 CAE仿真分析服務-企業(yè)/產(chǎn)品研發(fā)
    急尋熱仿真分析?代做熱仿真服務+熱設計優(yōu)化
    急尋熱仿真分析?代做熱仿真服務+熱設計優(yōu)化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發(fā)動機性能
    挖掘機濾芯提升發(fā)動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現(xiàn)代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現(xiàn)代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 目錄網(wǎng) 排行網(wǎng)

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

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

    综合天堂久久久久久久| 日韩精品一区二区三区中文字幕| 亚洲国产老妈| 激情综合五月| 捆绑调教美女网站视频一区| 亚洲一区自拍| 中文字幕av一区二区三区人| 只有精品亚洲| 97成人超碰| 国产精品福利在线观看播放| 99精品电影| 精品视频在线观看免费观看| 麻豆91小视频| 影音成人av| 免费看欧美女人艹b| 女人av一区| 青青草国产免费一区二区下载| 欧美亚洲人成在线| 麻豆精品国产91久久久久久| 日本午夜一区| 欧美特黄一区| 久久精品导航| 都市激情久久| 久久69av| 欧美猛男男男激情videos| 日韩和欧美的一区| 91超碰碰碰碰久久久久久综合| 免费看黄色91| 亚洲欧美日韩国产一区| 欧美理论视频| 亚洲午夜极品| 久久久久国产一区二区| 三级欧美日韩| 久久9999免费视频| 先锋影音国产精品| 高清精品久久| 9999精品| 国产欧美日本| 疯狂欧洲av久久成人av电影| 日本不卡一区二区三区 | 北条麻妃一区二区三区在线| 国产伦精品一区二区三区千人斩 | 日韩国产在线| 91日韩免费| av免费不卡国产观看| 蜜桃一区二区三区在线观看| 久久国产高清| 人人精品人人爱| 免费精品视频最新在线| 男人的j进女人的j一区| 免费成人美女在线观看| 成人在线丰满少妇av| 欧美丰满老妇| 日韩pacopacomama| 主播大秀视频在线观看一区二区| 香蕉成人av| 国产777精品精品热热热一区二区| 99热精品在线观看| 最新日韩在线| 国产精品丝袜xxxxxxx| 伊人久久久大香线蕉综合直播| 蜜臀av免费一区二区三区| 亚洲五月婷婷| 午夜国产精品视频| 亚洲综合欧美| av手机在线观看| 欧美1级2级| 成人精品国产亚洲| 六月丁香综合在线视频| 国内一区二区三区| 亚洲8888| 国产精品2023| 欧洲乱码伦视频免费| 尹人成人综合网| 热久久国产精品| 日韩精品麻豆| 欧美日本不卡高清| 日韩三区视频| 精品美女视频| 好吊一区二区三区| 91麻豆国产自产在线观看亚洲| 少妇淫片在线影院| 一区二区精品| 亚洲激情播播| 清纯唯美亚洲综合一区| 不卡在线一区二区| 成人一区不卡| 久久亚洲人体| 国产成人精品免费视| 大色综合视频网站在线播放 | 国产亚洲观看| 91嫩草精品| 91高清一区| 免费看av不卡| 只有精品亚洲| 成人综合久久| 一本色道久久综合亚洲精品高清| 色综合久久一区二区三区| 国产黄色一区| 欧美日本成人| 欧美成人精品| 三级在线看中文字幕完整版| 麻豆国产欧美日韩综合精品二区| 日韩动漫一区| 性欧美欧美巨大69| 欧美一区久久久| 欧洲大片精品免费永久看nba| 国产精品jk白丝蜜臀av小说| 香蕉成人久久| 日韩高清电影一区| 成人中文字幕视频| 蜜桃视频在线观看一区二区| 国产欧美综合一区二区三区| 日韩一区二区三区精品| 日韩视频一区| 国产日韩欧美一区二区三区在线观看| 亚洲女娇小黑人粗硬| 狠狠88综合久久久久综合网| 日本精品另类| 日韩不卡一二三区| 国产农村妇女毛片精品久久莱园子| www.26天天久久天堂| 日韩一级电影| 视频在线观看国产精品| 国内在线观看一区二区三区| 99久久久久国产精品| 亚洲午夜天堂| 日本一区二区三区播放| 男人操女人的视频在线观看欧美| 日本vs亚洲vs韩国一区三区二区 | 日韩精品电影| 婷婷亚洲成人| 蘑菇福利视频一区播放| 国产精品magnet| 免费成人网www| 99精品国产在热久久下载| 亚洲2区在线| 暖暖成人免费视频| 日本超碰一区二区| 国产激情在线播放| 日韩深夜影院| 国产精品久久久久蜜臀 | 国产精品久一| 国产农村妇女精品一区二区| 亚洲精品社区| 日韩视频免费| 精品一区二区三区中文字幕| 99精品福利视频| 国产精品亚洲综合在线观看| 最新日韩av| 欧美第一在线视频| 色999日韩| 日韩欧美中文字幕电影| 成人免费图片免费观看| 免费精品一区二区三区在线观看| 欧美a级片视频| y111111国产精品久久久| 四虎4545www国产精品| 超碰在线亚洲| 久久激五月天综合精品| 91精品福利| 99综合久久| 国产精品久久久乱弄| 一区二区网站| 国产精品xxx| 欧美~级网站不卡| av国产精品| 中国色在线日|韩| 国产图片一区| 亚洲国产精品一区| 日本欧洲一区二区| 精品国产中文字幕第一页| 一区二区三区成人精品| 99视频在线精品国自产拍免费观看| 国产欧美二区| 日本少妇一区| 亚洲精品中文字幕乱码| 国产a久久精品一区二区三区| 中文在线8资源库| 天堂日韩电影| 欧美特黄不卡| 亚洲精品第一| 亚洲一区成人| 永久免费精品视频| 日本中文一区二区三区| 石原莉奈一区二区三区在线观看| 丝袜美腿亚洲一区二区图片| 综合亚洲视频| 免费日韩av| 免费观看亚洲天堂| 免费在线欧美黄色| 亚洲中午字幕| 国产日韩中文在线中文字幕| 岛国精品在线| 羞羞答答国产精品www一本| 日韩va亚洲va欧美va久久| 国产精品美女午夜爽爽| 黄色综合网站| 国产成人在线中文字幕| 欧美激情一级片一区二区|