首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
代写GA.2250、Python/Java程序语言代做
项目预算:
开发周期:
发布时间:
要求地区:
Programming Assignment #4 (Lab 4): IO Scheduling Professor Hubertus Franke
Class CSCI-GA.2250-001 Summer 2024
In this lab you will implement and simulate the scheduling and optimization of I/O operations for a hard disk. Applications
submit their block IO requests (bio) to the IO subsystem [ Block Layer ] (potentially via the filesystem), where they are
maintained in an IO-queue until the disk device is ready for servicing another request. The IO-scheduler then selects a request
from the IO-queue and submits it to the disk device. This selection is commonly known as the strategy() routine in
operating systems and shown in the figure below. On completion, another request can be taken from the IO-queue and
submitted to the disk. The scheduling policies will allow for some optimization as to reduce disk head movement or overall
wait time in the system.
The schedulers that need to be implemented are FIFO (N), SSTF (S), LOOK (L), CLOOK (C), and FLOOK (F)
(the letters in bracket define which parameter must be given in the –s program flag shown below).
You are to implement these different IO-schedulers in C or C++ and submit the source code and Makefile as a *.zip, *.tar or
*.tar.Z, which we will compile and run. Please test on linserv*.cims.nyu.edu before submission.
Invocation is as follows:
./iosched [ –s
| -v | -q | -f ]
Only the “-s” option is required. The default scheduler is fifo is “-s” is not supplied. Options as usual can be in any order.
The input file is structured as follows: Lines starting with ‘#’ are comment lines and should be ignored.
Any other line describes an IO operation where the 1
st
integer is the time step at which the IO operation is issued and the 2
nd
integer is the track that is accesses. Since IO operation latencies are largely dictated by seek delay (i.e. moving the head to the
correct track), we ignore rotational and transfer delays for simplicity. The inputs are well formed.
#io generator
#numio=32 maxtracks=512 lambda=10.000000
1 339
131 401
We assume that moving the head by one track will cost one time unit. As a result, your simulation can/should be done using
integers. The disk can only consume/process one IO request at a time. Once a request is active on the disk it cannot be
interrupted by any other incoming request. Hence these requests must be maintained in an IO queue and managed according
to the scheduling policy. The initial direction of the LOOK algorithms is from 0-tracks to higher tracks. The head is initially
positioned at track=0 at time=0. Note that you do not have to know the maxtrack (think SCAN vs. LOOK). Programming Assignment #4 (Lab 4): IO Scheduling Professor Hubertus Franke
Class CSCI-GA.2250-001 Summer 2024
Each simulation should print information on individual IO requests followed by a SUM line that has computed some statistics
of the overall run. (see reference outputs).
For each IO request create an info line (5 requests shown) in the order of appearance in the input file.
0: 1 1 431
1: 87 467 533
2: 280 431 467
3: 321 533 762
4: 505 762 791
Created by
printf("%5d: %5d %5d %5d\n", iop, req->arr_time, r->start_time, r->end_time);
args: IO-op#, its arrival to the system (same as from inputfile), its disk service start time, its disk service end time
Please remember “ %5d” is not “%6d” !!! For C++ formatting refer back to lab2 and lab3 where similar outputs were created.
and for the statistics of the simulation provide a SUM line ( note variables printed as “%lf” are double floats ).
Created by: printf("SUM: %d %d %.4lf %.2lf %.2lf %d\n",
total_time, tot_movement, io_utilization,
avg_turnaround, avg_waittime, max_waittime);
total_time: total simulated time, i.e. until the last I/O request has completed.
tot_movement: total number of tracks the head had to be moved
io_utilization: ratio of time_io_was_busy / total_time
avg_turnaround: average turnaround time per operation from time of submission to time of completion
avg_waittime: average wait time per operation (time from submission to issue of IO request to start disk operation)
max_waittime: maximum wait time for any IO operation.
10 sample inputs and outputs and runit/gradeit scripts are provided with the assignment on NYU brightspace.
Please look at the sum results and identify what different characteristics the schedulers exhibit.
You can make the following assumptions (enforced and caught by the reference program).
- at most 10000 IO operations will be tested, so its OK (recommended) to first read all requests from file before processing.
- all io-requests are provided in increasing time order (no sort needed)
- you never have two IO requests arrive at the same time (so input is monotonically increasing)
I strongly suggest, you do not use discrete event simulation this time. You can write a simple loop that increments simulation
time by one and checks whether any action is to be taken. In that case you have to check in the following order.
The code structure should look something like this (there are some edge conditions you have to consider, such as the next I/O
is for the track the head currently is at, etc. ):
while (true)
if a new I/O arrived at the system at this current time
→ add request to IO-queue
if an IO is active and completed at this time
→ Compute relevant info and store in the IO request for final summary
if no IO request active now
if requests are pending
→ Fetch the next request from IO-queue and start the new IO.
else if all IO from input file processed
→ exit simulation
if an IO is active
→ Move the head by one unit in the direction its going (to simulate seek)
Increment time by 1
When switching queues in FLOOK you always continue in the direction you were going from the current position, until the
queue is empty. Then you switch direction until empty and then switch the queues continuing into that direction and so forth.
While other variants are possible, I simply chose this one this time though other variants make also perfect sense. Programming Assignment #4 (Lab 4): IO Scheduling Professor Hubertus Franke
Class CSCI-GA.2250-001 Summer 2024
Additional Information:
As usual, I provide some more detailed tracing information to help you overcome problems. Note your code only needs to
provide the result line per IO request and the ‘SUM line’.
The reference program under ~frankeh/Public/lab4/iosched on the cims machine implements three additional options: –v, -q,
-f to debug deeper into IO tracing and IO queues.
The –v execution trace contains 3 different operations (add a request to the IO-queue, issue an operation to the disk and
finish a disk operation). Following is an example of tracking IO-op 18 through the times 1151..1307 from submission to
completion.
1151: 18 add 221 // 18 is the IO-op # (starting with 0) and 221 is the track# requested
1239: 18 issue 221 289 // 18 is the IO-op #, 221 is the track# requested, 289 is the current track#
1307: 18 finish 68 // 18 is the IO-op #, 68 is total length/time of the io from request to completion
-q shows the details of the IO queue and direction of movement ( 1==up , -1==down) and
–f shows additional queue information during the FLOOK.
Here Queue entries are tuples during add [ ior# : #io-track ] or triplets during get [ ior# : io-track# : distance ],
where distance is negative if it goes into the opposite direction (where applicable ).
Please use these debug flags and the reference program to get more insights on debugging the ins and outs (no punt intended)
of this assignment and answering certain “why” questions.
Generating your own input for further testing:
A generator program is available under ~frankeh/Public/lab4/iomake and can be used to create additional inputs if you like to
expand your testing. You will have to run this against the reference program ~frankeh/Public/lab4/iosched yourself.
Usage: iomake [-v] [-t maxtracks] [-i num_ios] [-L lambda] [-f interarrival_factor]
maxtracks is the tracks the disks will have, default is 512
num_ios is the number of ios to generate, default is 32
lambda is parameter to create a poisson distribution, default is 1.0 ( consider ranges from 0.01 .. 10.0 )
interarrival_factor is time factor how rapidly IOs will arrive, default is 1.0 ( consider values 0.5 .. 1.5 ), too small and the
system will be overloaded and too large it will be underloaded and scheduling is mute as often only one i/o is outstanding.
Below are the parameters for the 10 inputs files provided in the assignment so you don’t pick the same.
1. iomake -v -t 128 -i 10 -L0.11 -f 0.4
2. iomake -v -t 512 -i 20 -L0.51
3. iomake -v -t 128 -i 50 -L0.51
4. iomake -v -t 512 -i 100 -L0.01
5. iomake -v -t 256 -i 50 -L1.1
6. iomake -v -t 256 -i 20 -L0.3
7. iomake -v -t 512 -i 100 -L0.9
8. iomake -v -t 300 -i 80 -L3.4 -f 0.6
9. iomake -v -t 1000 -i 80 -L3.4 -f 0.6
10. iomake -v -t 512 -i 500 -L2.4 -f 0.6
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做ceng0013 design of a pro...
2024-11-13
代做mech4880 refrigeration a...
2024-11-13
代做mcd1350: media studies a...
2024-11-13
代写fint b338f (autumn 2024)...
2024-11-13
代做engd3000 design of tunab...
2024-11-13
代做n1611 financial economet...
2024-11-13
代做econ 2331: economic and ...
2024-11-13
代做cs770/870 assignment 8代...
2024-11-13
代写amath 481/581 autumn qua...
2024-11-13
代做ccc8013 the process of s...
2024-11-13
代写csit040 – modern comput...
2024-11-13
代写econ 2070: introduc2on t...
2024-11-13
代写cct260, project 2 person...
2024-11-13
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!