• <button id="ecio8"></button>
  • <li id="ecio8"></li>
    <s id="ecio8"></s>
    <dl id="ecio8"></dl>
    <center id="ecio8"><noscript id="ecio8"></noscript></center>
    • <table id="ecio8"><source id="ecio8"></source></table>
      <bdo id="ecio8"></bdo>
    • <s id="ecio8"></s>

      代寫GA.2250、Python/Java程序語言代做

      時間:2024-08-14  來源:  作者: 我要糾錯



      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<schedalgo> | -v | -q | -f ] <inputfile> 
       
      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 %5dn", 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 %dn", 
       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   WX:codinghelp





       

      標簽:

      掃一掃在手機打開當前頁
    • 上一篇:代寫MTH5510、代做Matlab程序語言
    • 下一篇:CSCI 2600代做、代寫Java設計程序
    • 無相關信息
      昆明生活資訊

      昆明圖文信息
      蝴蝶泉(4A)-大理旅游
      蝴蝶泉(4A)-大理旅游
      油炸竹蟲
      油炸竹蟲
      酸筍煮魚(雞)
      酸筍煮魚(雞)
      竹筒飯
      竹筒飯
      香茅草烤魚
      香茅草烤魚
      檸檬烤魚
      檸檬烤魚
      昆明西山國家級風景名勝區
      昆明西山國家級風景名勝區
      昆明旅游索道攻略
      昆明旅游索道攻略
    • 高仿包包訂製

      關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

      Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
      ICP備06013414號-3 公安備 42010502001045

      欧美成人免费全部观看天天性色,欧美日韩视频一区三区二区,欧洲美女与动性zozozo,久久久国产99久久国产一
    • <button id="ecio8"></button>
    • <li id="ecio8"></li>
      <s id="ecio8"></s>
      <dl id="ecio8"></dl>
      <center id="ecio8"><noscript id="ecio8"></noscript></center>
      • <table id="ecio8"><source id="ecio8"></source></table>
        <bdo id="ecio8"></bdo>
      • <s id="ecio8"></s>
        主站蜘蛛池模板: www成人在线观看| 亚洲欧美一区二区三区图片| 丝袜女警花被捆绑调教| 老少另类性欧美杂交| 日本深夜福利19禁在线播放| 国产成人亚洲欧美电影| 亚洲AV无码专区在线播放| 777精品视频| 最近中文字幕高清免费大全8| 国产码欧美日韩高清综合一区| 亚洲午夜久久久影院伊人| 尹人久久久香蕉精品| 欧美国产人妖另类色视频| 国产精品一区二区三区免费| 亚洲一区二区三区国产精华液 | 亚洲丝袜第一页| 校花公交车上被迫打开双腿| 国产白袜脚足j棉袜在线观看| 五月天婷婷在线播放| 麻豆精品密在线观看| 日本口工全彩漫画| 四色在线精品免费观看| 一本一道中文字幕无码东京热| 男人猛躁进女人免费观看| 国精品无码一区二区三区在线| 亚洲日本一区二区一本一道| 欧美日韩一道本| 日本被强制侵犯亚洲系列播放| 国产ts人妖系列视频网站| 不卡视频免费在线观看| 男女午夜免费视频| 在线黄视频网站| 亚洲人成人网站在线观看| 香蕉伊思人在线精品| 成人精品视频一区二区三区| 全彩里番acg海贼王同人本子| av免费不卡国产观看| 欧美性猛交XXXX乱大交3| 国产女人aaa级久久久级| 中文字幕日本一区| 特一级黄色毛片|