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

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

代做CSci 4061、代寫c/c++設(shè)計編程

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



CSci **1: Introduction to Operating Systems
Spring 2024
Project #2: Enhanced Autograder
Instructor: Jon Weissman
Due: 3/20 Midnight
Intermediate Due: 3/15 Midnight
1. Objective
In this project you will extend/enhance your autograder is a number of ways. You will use 1) pipes
(pipe) to communicate information between the autograder and its children (executables), 2) use I/O
redirection (dup2) and random I/O (*seek), 3) use message-passing queues to implement a different
style of execution (msgget, msgsnd, msgrcv, and msgctl), and use alarms to implement true timeouts to detect infinite/blocked cases (alarm, sigaction, setitimer, and sigfillset). You will
also find several string functions handy (sprintf, strchr, strrchr, strlen), as well as
several I/O functions (unlink, getline, fgets, fseek). Read up on all of these system calls.
To simplify matters, we will remove the ‘slow’ event, so only correct, incorrect, crashed, infinite, or
blocked are detected. You will also determine the value of B (batch size) at runtime by setting it to the
CPU count, which you can use /proc/cpuinfo to obtain. Specifically, count the number of times
processor occurs in the file (implement your code for this in the get_batch_size() function in src/
utils.c). This means that the new autograder will not take B as a command-line argument. Instead, it 1
will take in the directory containing the executables to be graded as the 1st argument. The new usage
will look like the following: “./autograder <testdir> <p1> <p2> … <pn>”.
We have provided quite a bit of useful code in utils.h/utils.c that you can use (or ignore). Either way,
there are a few functions that you must fill in within utils.c.
Constraint 1: please try to run your tests on a lightly-loaded machine if possible (type uptime at
the shell to get the CPU load; if it is high, wait or pick another machine).
Constraint 2: you must cleanup any infinite/blocked processes, both within your program
automatically, but also outside your program at the shell in the event of errors. You can use “ps -u
<your_x500>” and “pkill -9 <exe_name>” to kill lingering processes. The pkill function actually
allows pattern matching, so you might find the following command useful: pkill -9 “sol_*”.
Some source code, object code, and test cases will be provided as needed in a downloadable tar file
from Canvas. You may use your own P1 solution as a starting point or our solution.
2. Changing    the    way    information    is    passed
You will make several changes to your autograder solution. In P2, you will not only modify the
autograder but the template code as well.
Change 1: the current template returned the answer using a return statement. The answer was
limited to 8 bits or 0 .. 255 due to system call restrictions. This could be limiting in a “real” autograder
where the actual answer may far exceed 8 bit values that would be returned. To fix this, you will modify
the template to output its answer to STDOUT. You will also modify the autograder to redirect the
child’s STDOUT to a file named output/<executable_name>.<parameter> (e.g. output/sol.4). To
do this you will use dup2 in the autograder. Be careful to open the file with write access, and call
dup2 in the child only. Once the autograder gets an answer from each child by reading the output file
(or determines an issue with the child), it should remove the output files in the batch using: int
unlink(const char *pathname), e.g. unlink (“output/sol.4”).
 You can double check that your get_batch_size() function is working properly by comparing it to “grep processor /proc/cpuinfo | wc -l” 1
2
If you have bugs you may need to remove the output files at the shell.
We strongly recommended that an output file gets generated for each (executable,
parameter) pair in the autograder, EVEN if the event is crashed, infinite, or blocked, for
consistency. But this is up to you. The output contents will be defined for you in the
provided code.
See that Change 1 works before moving to Change 2!
Change 2: the current autograder passed a test parameter within the exec interface. You are to
create three “versions” of the template (and the corresponding) autograder. All three change the input
location only.
(i) pass each input parameter using exec as before (no new changes over Change 1 in this case.)
(ii) have the template read its parameter via STDIN; to do this you will redirect STDIN to a file via dup2
in the autograder similar to Change 1. Be careful to call dup2 in the child only. The file(s) you will
use are first created by the autograder: input/<parameter>.in for each parameter (e.g. input/
4.in, input/7.in, etc.) . The simplest way is to create the files using the autograder command-line
argv[]. You must also open the input file(s) for read access in the child before dup2.
Remove the input files when you are done using unlink. If you have bugs you may need to
remove the input files at the shell (make clean will also clear these files)
(iii) pass the input parameter using a pipe between the autograder and each child.
For all three versions, use the output mechanism of Change 1.
Create all three versions in the same source files (as real C systems programmers would do). Use #ifdef
<version>, #elif <version2, …> #endif in both template.c and autograder.c to select the <version>-
specific code. You may need to do this in several places. Please use EXEC, REDIR, and PIPE, as the version
names. (e.g. #ifdef EXEC …. #endif, #elif REDIR … , #elif PIPE … #endif).
To compile a specific version of the template and/or the autograder: you can run “make <exec|redir|pipe>”. These
targets use the -D flag to specify the version (EXEC, REDIR, or PIPE).
3. A    better    way    for    time    detection    using    Alarms
Change 3: Now detect a child process running too long by a timeout. To do this, modify autograder.c
(only) to create an alarm handler via sigaction and start the timer using setitimer (set it to expire
after TIMEOUT_SECS seconds).Remove the older code that detected running too long. When the timer
goes off, children that are still running are classified as either infinite/blocked and so you should kill
them using int kill(pid_t pid, int sig). Remember to still wait for each process. However,
since each process will eventually end, there is now no need to pass WNOHANG to waitpid. So, remove it.
Instead, you will use the information from WEXITSTATUS(status) and WTERMSIG(status) to
determine the results for each child process. One issue that might arise is that the alarm might interrupt
the call to waitpid. In that case, you should retry the call to waitpid. Hint: use the value of errno
EINTR to determine if waitpid was interrupted. You will create separate versions of the
autograder, mq_autograder.c, and the template, template_mq.c in this part.
4. Recast    the    autograder    paradigm    using    message    queues
Change 4: You will implement one more style of passing information, Linux message queues. The
method in which you distribute work will follow the master-worker model. To do this, your autograder
will write a set of “tasks” of the form [tag executable parameter] to a message queue, where tag
corresponds to a specific worker process. First, the autograder will launch all B workers and send a
message to the worker indicating how many messages it will receive so that it can initialize data
structures for storing the information. Then, the autograder should generate and insert all tasks into the
message queue. The workers will read all of the messages intended for them and send an
acknowledgement message to the autograder process. After the autograder process has received
acknowledgements from each worker, it will send a message to each worker to tell them to begin testing
3
executables. At that point, all workers will begin running their (executable, parameter) pairs in batches of
8, sending results to the autograder process after each batch, until all pairs have been tested. The process
of determining the results of each executable should be the same as in src/autograder.c. Remember to
have each child process in the worker create an output file, output/sol.4, output/sol.7, etc., for
each (executable, parameter) pair and redirect output to these files. Don’t forget to remove the
message queue when you are done.
For all versions, the final step is to create a single output file named results.txt. We have
provided a function that does just that: write_results_to_file in src/utils.c.
5. How    did    the    student    do    on    the    submission?
The final “ask” is that you implement a function called double get_score(char
*results_file, char *executable_name) that uses random I/O to return the score for a given
executable_name (student) in results.txt. The score for a given executable is the number of
parameters that result in “correct” divided by the total number of parameters tested. You must use
random I/O (*seek) to make this efficient. See the description of this function in include/utils.h for
more information and constraints.
6. Testing
For testing, observe the targets in the Makefile. There are options to compile autograder.c/template.c
for EXEC, REDIR, and PIPE, which correspond to make exec, make redir, and make pipe. The
method for making the test executables is similar to P1. A common workflow might look like the
following:
$ make exec N=20 # Recall that N sets the number of compiled template.c files
$ ./autograder solutions 1 3 5
$ make clean # This cleans up the input/output/solutions directories
For testing Change 4 (Message Queues), a common workflow might look like the following:
$ make mqueue N=20 # mq_autograder will now use the sol_X files instead of mq_sol_X
$ ./mq_autograder solutions 1 3 5
$ make clean
We will try to release more test cases as the assignment deadline approaches, but for now there is a
single test case in the Makefile, namely the target “test1_exec”. The expected output for this test
case for results.txt and scores.txt is located in the expected/ folder. It uses the EXEC mode, but the
results should be the same whether you are using EXEC, REDIR, or PIPE.
$ make test1_exec N=20
7. Intermediate    Submission
In one week you will submit a version of your code that implements get_batch_size(), Change 1, and Change 2 -
(i) and (ii) only.
8. Implementation    Notes    
• Remember to error check all system calls
• Remember to close all open files and pipes
• Remember that all template binaries must be executable (chmod -R +x test/)
9. Deliverables
4
There will be 2 submissions, one intermediate submission due 1 week after the release of the project
and a final submission due 2 weeks after the release.
Intermediate Submission :
Both intermediate and final submissions should contain the following. Please conform with the folder structure
that is provided to you. Your conformance will be graded.
One student from each group should upload a zip file containing the project folders/files detailed
above to Gradescope. When submitting, make sure to add your group members to your submission on
Gradescope. Your README.md file should contain the following information. Please avoid including
hidden files and junk files in your submission. It makes grading harder. Thank you :)
• How to compile the program
• Any assumptions outside this document
• Team id, team member names and x500’s
• Contribution by each member of the team for final submission only
10. Rubric:    Subject    to    change
• 10% README including answers to questions posed in the writeup.
• 15% Intermediate submission [Including README].
• 10% Documentation within code, coding, and style: indentations, readability of code, use of
defined constants rather than numbers. The code should be well commented (need not explain
every line). You might want to focus on the “why” part, rather than the “how”, when you add
comments.
• 65% Test cases: correctness, error handling, meeting the specifications.
You must error check ALL system calls in your autograder.
• A test folder of executables, input parameters to test, a “solution” and the templates will be
provided.
• We will use the GCC version installed on the CSELabs machines to compile your code. Make sure
your code compiles and run on CSELabs.
• Please     make     sure     that     your     program     works     on     the     CSELabs     machines     e.g., KH 4-250 (cselkh4250-xx.cselabs.umn.edu). You will be graded on one of these machines.
Project Structure Contents
include/ .h header files (utils.h)
lib/ .o library files (utils.o)
src/ .c source files (autograder.c, template.c, mq_autograder.c,
mq_template.c, utils.c)
input/ Contains the <param>.in files during runtime
output/ Contains the <exe>.<param> files during runtime
solutions/ Contains the student executables (sol_X or mq_sol_X)
expected Contains results.txt and scores.txt for specific test cases
Makefile Contains build information used for compiling/testing code
README.md Contains info outlined below
5
11. Miscellaneous
• We will provide an initial package of code, but you will be doing most of the coding.
• To run your program, type autograder <testdir> <p1>< p2> …
• Do not use the system call “system”.
• Said before: KILL all of your stray processes during debugging as needed.
• Any provided binaries are meant for the CSELAB Linux environment. No other binaries will be
distributed.
• ChatGPT or other significant “other” code reuse prohibited. The purpose of this course is to learn by doing,
and not meeting some deadline. If you are unsure about any located online code, contact us.
• On the other hand, locating code snippets that show how system calls can be used is fine.
12. SuggestedWorkplan    (preliminary    in    blue).
• Read the writeup: in parallel look at the code we have given you.
• Implement get_batch_size() to get B at runtime
• Change 1
o output file redirection
• Change 2
o Ensure that version <EXEC> runs as before
o Get (ii) working
▪ write all inputs to input files
o Get (iii) working
• Change 3
o Convert time checking to alarm timers for long-running processes
o Think about what should go in the signal handler and how you are going to
ensure infinite/stuck processes are killed.
• Change 4
o Implement mq_autograder.c and mq_template.c using the knowledge you’ve
picked up from implementing autograder.c
o Think of the message queue as another input method (EXEC, REDIR, PIPE,
MQUEUE). However you don’t need to use any # macros for it.
• Implement get_score() program

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

掃一掃在手機打開當(dāng)前頁
  • 上一篇:越南機場保關(guān)材料(機場保關(guān)有哪些服務(wù))
  • 下一篇:COMP2045代做、C++編程設(shè)計代寫
  • 無相關(guān)信息
    合肥生活資訊

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

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    欧美二区三区| 欧洲精品久久久| 色婷婷久久一区二区| 99精彩视频| 97人人干人人| 国产精品91久久| 国产精彩视频一区二区| 97久久精品人搡人人玩| 99视频国产精品免费观看| 国产乱子伦精品无码专区| av动漫免费看| 久久国产精品高清| 久久久久久国产免费| 日韩综合视频在线观看| 久久综合给合久久狠狠色| 国产99久久精品一区二区| 国产日韩欧美在线| 日本www高清视频| 韩国国内大量揄拍精品视频| 国产精品第一第二| 一本一生久久a久久精品综合蜜| 中文字幕日本最新乱码视频| 久久99精品久久久久久噜噜| 自拍视频一区二区三区| 日韩高清av| 国产日本欧美在线| 久久人91精品久久久久久不卡| 爽爽爽爽爽爽爽成人免费观看| 国产精品视频精品| 久久国产精品久久久久久| 午夜肉伦伦影院| 精品一区二区日本| 久久免费成人精品视频| 国产精品久久久久免费a∨大胸| 一区二区精品免费视频| 欧美精品久久久久久久久久久| 国产精品一国产精品最新章节| 国产成年人在线观看| 欧美精品久久一区二区| 欧美大陆一区二区| 91久久久精品| 亚洲尤物视频网| 国产亚洲黄色片| 国产成人精品自拍| 亚洲丰满在线| 国产精品自产拍在线观看| 国产精品视频色| 欧美中文字幕视频在线观看| 国产精品1区2区在线观看| 久久夜色撩人精品| 国产一区二区不卡视频在线观看| 国产成人精品一区二区在线| 日韩欧美视频一区二区三区四区| 91久久精品www人人做人人爽| 精品免费国产| 国产伦精品一区二区三区免| 美女国内精品自产拍在线播放| 青青在线视频免费观看| 国产高清在线精品一区二区三区| 欧美激情a∨在线视频播放| 免费高清一区二区三区| 久久精品国产一区二区三区| 欧美亚州在线观看| 国产精品久久久久久久久婷婷 | 久久精品成人欧美大片古装| 少妇精品久久久久久久久久| 久久偷看各类wc女厕嘘嘘偷窃| 午夜精品久久久久久久男人的天堂 | 色综合久久中文字幕综合网小说| 国产中文字幕亚洲| 欧美激情区在线播放| 91国产在线精品| 青青草视频在线免费播放| 国产精品久久久影院| 成人a级免费视频| 日韩不卡视频一区二区| 国产精品久久久av久久久| 国产精品亚洲不卡a| 天堂av一区二区| 久久精品一偷一偷国产| 国产免费一区二区三区在线能观看| 亚洲国产精品一区二区第一页| 久久99精品久久久久久水蜜桃| 秋霞无码一区二区| 中文字幕一区二区三区四区五区六区| 91精品国产99久久久久久红楼| 欧美日本韩国在线| 亚洲一区二区三区香蕉| 久久久精品2019中文字幕神马| 国产欧美一区二区视频| 青青在线视频免费观看| 午夜精品免费视频| 久久99精品久久久久久青青91| 久久久免费在线观看| 精品网站在线看| 日韩高清国产一区在线观看 | 久久久精品影院| 91精品国产99| 91免费在线观看网站| 国产日韩欧美日韩| 欧美 日韩 国产在线| 日韩啊v在线| 日韩欧美一区二区视频在线播放| 久久99视频免费| 国产精品高清免费在线观看| 日韩中文综合网| 日韩在线中文视频| 久久精品国产精品亚洲色婷婷| www.av一区视频| 国产综合精品一区二区三区| 欧日韩免费视频| 日韩精品久久久| 日韩毛片在线免费看| 日韩成人手机在线| 欧美两根一起进3p做受视频| 人妻内射一区二区在线视频| 日本在线一区| 青青草原一区二区| 免费久久99精品国产自| 国内精品久久久久| 国产美女永久无遮挡| 国产欧美在线观看| av不卡在线免费观看| 国产美女三级视频| www.日本在线视频| 久在线观看视频| 久久久黄色av| 蜜臀久久99精品久久久久久宅男| 欧美激情日韩图片| 日韩av片免费在线观看| 激情欧美一区二区三区中文字幕| 极品粉嫩国产18尤物| 成人国产亚洲精品a区天堂华泰| 69精品小视频| 久久精品亚洲热| 亚洲最大av网站| 欧美大香线蕉线伊人久久| 91免费版看片| 国产精品视频成人| 亚洲精品欧美日韩| 狠狠97人人婷婷五月| 2019日本中文字幕| 久久精品国产亚洲7777| 亚洲一区美女视频在线观看免费| 日本精品va在线观看| 国产日韩亚洲欧美在线| 久久精品视频16| 中文精品一区二区三区| 欧美在线亚洲在线| av动漫在线看| 国产精品久久77777| 日韩黄色片在线| 97碰在线视频| 亚洲天堂电影网| 欧美乱大交xxxxx潮喷l头像| 91高潮在线观看| 亚洲综合精品伊人久久| 精品1区2区| 国产成人女人毛片视频在线| 亚洲一区亚洲二区| 免费毛片一区二区三区久久久| 91成人精品网站| 欧美激情久久久久| 男人的天堂狠狠干| 久久久久久久久久久久久久一区| 久久99精品视频一区97| 国产美女在线一区| 亚洲一区二区三区精品视频| 国产精品永久入口久久久| 精品免费日产一区一区三区免费 | 逼特逼视频在线| 国产精品第一区| 国产精品一线二线三线| 欧美精品在线看| 国产久一一精品| 无码日韩人妻精品久久蜜桃| 777精品久无码人妻蜜桃| 日韩欧美不卡在线| 国产精品免费观看高清| 秋霞成人午夜鲁丝一区二区三区 | 亚洲不卡中文字幕无码| 国产成人艳妇aa视频在线| 日本三级中国三级99人妇网站| 俺去啦;欧美日韩| 国产日韩精品视频| 日本中文字幕一级片| 国产精品免费一区二区三区观看| 国产精品一区久久| 日韩欧美一区二区视频在线播放| 国产精品私拍pans大尺度在线 | 国产日韩欧美一二三区| 欧美激情一区二区久久久 | 日韩亚洲国产中文字幕| 欧美精品亚洲| 亚洲一区二区自拍| 精品国产自在精品国产浪潮| 国产精品伊人日日| 国内自拍欧美激情| 日本免费黄视频| 婷婷精品国产一区二区三区日韩 |