Number of addresses in a memory region

So I am looking at some Operating Systems exercises and we have

A swapping system eliminates holes by compaction. Assuming a random distribution of many holes and many data segments and a time to read or write a 32-bit memory word of 10 nsec, about how long does it take to compact 128 MB? For simplicity, assume that word 0 is part of a hole and that the highest word in memory contains valid data.

The solution is : 128 x 2^20 / 4 = 2^25 memory address

      compaction time = (read + write) * # of memory access
= 2 x 10 x 10 ^ -9 x 2^25
= 671 ms


Problem is I dont understand the 128 x 2^20 / 4 = 2^25 memory address part ? How did we get 2^20 in this case? I gues the 4 is 4 bytes =32 bits so I kinda understand that.

Now in 2 x 10 x 10 ^ -9 x 2^25 what is 2 here?

• Note that you can use LaTeX here to typeset mathematics in a more readable way. See here for a short introduction. – Raphael Feb 26 '16 at 15:22

A megabyte is $2^{20}$ bytes.
The factor of $2$ is because we need to count both reads and writes.
• No, a kilobyte is $2^{10}$ bytes. A megabyte is $2^{20}$ bytes, a gigabyte is $2^{30}$ bytes, a terabyte is $2^{40}$ bytes, and a petabyte is $2^{50}$ bytes. All of this information can be found online. Please make more effort next time. When something doesn't make sense, sometimes there is an error, and at other times the mistake is yours. In cases like this it is very easy to find out. No need to trouble us here. – Yuval Filmus Feb 26 '16 at 14:14