A virtual address is translated to a physical address by traversing
the page table and looking for the virtual address. If it is found, and
the owning process is equal to the current running process, then its
index in the table is the frame number of the physical page. If it
is not found, then a page fault must occur.
You may be able to make this more efficient by hashing virtual addresses.
Thus, in the normal case, the translation may be found in a few memory
lookups rather than an entire table traversal.