14.3k views
4 votes
It takes 2 seconds to read or write one block from/to disk and it also takes 1 second of CPU time to merge one block of records. Assume that all input, output, and CPU processing is sequential and there is no waiting time. The block size is 100 records. a) (7) Give an optimal 4-way merging scheme to merge the 6 runs into 1. b) (7) What is the total time taken by the optimal scheme

1 Answer

2 votes

Answer:

Part a: For optimal 4-way merging, initiate with one dummy run of size 0 and merge this with the 3 smallest runs. Than merge the result to the remaining 3 runs to get a merged run of length 6000 records.

Part b: The optimal 4-way merging takes about 249 seconds.

Step-by-step explanation:

The complete question is missing while searching for the question online, a similar question is found which is solved as below:

Part a

For optimal 4-way merging, we need one dummy run with size 0.

  1. Merge 4 runs with size 0, 500, 800, and 1000 to produce a run with a run length of 2300. The new run length is calculated as follows
    L_(mrg)=L_0+L_1+L_2+L_3=0+500+800+1000=2300
  2. Merge the run as made in step 1 with the remaining 3 runs bearing length 1000, 1200, 1500. The merged run length is 6000 and is calculated as follows


L_(merged)=L_(mrg)+L_4+L_5+L_6=2300+1000+1200+1500=6000

The resulting run has length 6000 records.

Part b

For step 1

Input Output Time

Input Output Time is given as


T_(I.O)=(L_(run))/(Size_(block)) * Time_(I/O \, per\, block)

Here

  • L_run is 2300 for step 01
  • Size_block is 100 as given
  • Time_{I/O per block} is 2 sec

So


T_(I.O)=(L_(run))/(Size_(block)) * Time_(I/O \, per\, block)\\T_(I.O)=(2300)/(100) * 2 sec\\T_(I.O)=46 sec

So the input/output time is 46 seconds for step 01.

CPU Time

CPU Time is given as


T_(CPU)=(L_(run))/(Size_(block)) * Time_(CPU \, per\, block)

Here

  • L_run is 2300 for step 01
  • Size_block is 100 as given
  • Time_{CPU per block} is 1 sec

So


T_(CPU)=(L_(run))/(Size_(block)) * Time_(CPU \, per\, block)\\T_(CPU)=(2300)/(100) * 1 sec\\T_(CPU)=23 sec

So the CPU time is 23 seconds for step 01.

Total time in step 01


T_(step-01)=T_(I.O)+T_(CPU)\\T_(step-01)=46+23\\T_(step-01)=69 sec\\

Total time in step 01 is 69 seconds.

For step 2

Input Output Time

Input Output Time is given as


T_(I.O)=(L_(run))/(Size_(block)) * Time_(I/O \, per\, block)

Here

  • L_run is 6000 for step 02
  • Size_block is 100 as given
  • Time_{I/O per block} is 2 sec

So


T_(I.O)=(L_(run))/(Size_(block)) * Time_(I/O \, per\, block)\\T_(I.O)=(6000)/(100) * 2 sec\\T_(I.O)=120 sec

So the input/output time is 120 seconds for step 02.

CPU Time

CPU Time is given as


T_(CPU)=(L_(run))/(Size_(block)) * Time_(CPU \, per\, block)

Here

  • L_run is 6000 for step 02
  • Size_block is 100 as given
  • Time_{CPU per block} is 1 sec

So


T_(CPU)=(L_(run))/(Size_(block)) * Time_(CPU \, per\, block)\\T_(CPU)=(6000)/(100) * 1 sec\\T_(CPU)=60 sec

So the CPU time is 60 seconds for step 02.

Total time in step 02


T_(step-02)=T_(I.O)+T_(CPU)\\T_(step-02)=120+60\\T_(step-02)=180 sec\\

Total time in step 02 is 180 seconds

Merging Time (Total)

Now the total time for merging is given as


T_(merge)=T_(step-01)+T_(step-02)\\T_(merge)=69+180\\T_(merge)=249 sec\\

Total time in merging is 249 seconds seconds

It takes 2 seconds to read or write one block from/to disk and it also takes 1 second-example-1
User Per Salbark
by
5.1k points