Page 136 - A Practical Guide from Design Planning to Manufacturing
P. 136

Computer Architecture  109

        always be located in the exact same addresses every time it ran. This
        created problems when running the same program on computers with
        varying amounts of memory. A program compiled assuming a certain
        amount of memory might try to access more memory than the user’s
        computer had. If instead, the program had been compiled assuming a
        very small amount of memory, it would be unable to make use of extra
        memory when running on machines that did have it.
          Even more problems occurred when trying to run more than one pro-
        gram simultaneously. Two different programs might both be compiled
        to use the same memory addresses. When running together they could
        end up overwriting each other’s data or instructions. The data from one
        program read as instructions by another could cause the processor to do
        almost anything. If the operating system were one of the programs over-
        written, then the entire computer might lock up.
          Virtual memory fixes these problems by translating each address
        before memory is accessed. The address generated by the program using
        the available addressing modes is called the virtual address. Before
        each memory access the virtual address is translated to a physical
        address. The translation is controlled by the operating system using a
        lookup table stored in memory.
          The lookup table needed for translations would become unmanageable
        if any virtual address could be assigned any physical address. Instead,
        some of the least significant virtual address bits are left untranslated.
        These bits are the page offset and determine the size of a memory page.
        The remaining virtual address bits form the virtual page number and
        are used as an index into the lookup table to find the physical page
        number. The physical page number is combined with the page offset to
        make up the physical address.
          The translation scheme shown in Fig. 4-3 allows every program to
        assume that it will always use the exact same memory addresses, it is
        the only program in memory, and the total memory size is the maximum
        amount allowed by the virtual address size. The operating system deter-
        mines where each virtual page will be located in physical memory. Two
        programs using the same virtual address will have their addresses



          Virtual page number  Page offset  Virtual address


             Translation


         Physical page number  Page offset  Physical address
        Figure 4-3 Virtual to physical address translation.
   131   132   133   134   135   136   137   138   139   140   141