Fault handlers are also an interrupt handler with an exception that the interrupt handlers cannot sleep. Fault handlers sleep in the context of the process that caused the memory fault. The fault refers to the running process and no arbitrary processes are put to sleep.
If a process referring a page in the main memory whose valid bit is not set, it results in validity fault. The valid bit is not set for those pages:
1. that are outside the virtual address space of a process,
2. that are the part of the virtual address space of the process but no physical address is assigned to it.
If the disk block descriptor does not contain any record of the faulted page, then this causes the attempted memory reference is invalid and the kernel sends a "Segmentation violation" signal to the offending process. This happens when the swapping system identifies any invalid memory reference.
1. On a swap device and not in memory,
2. On the free page list in the main memory,
3. In an executable file,
4. Marked "demand zero",
5. Marked "demand fill"
1. It sets the valid bit of the page by clearing the modify bit.
2. It recalculates the process priority.