A page fault occurs when a program attempts to access data or code that is in its address space, but is not currently located in the system RAM. So when page fault occurs then following sequence of events happens :
- The computer hardware traps to the kernel and program counter (PC) is saved on the stack. Current instruction state information is saved in CPU registers.
- An assembly program is started to save the general registers and other volatile information to keep the OS from destroying it.
- Operating system finds that a page fault has occurred and tries to find out which virtual page is needed. Some times hardware register contains this required information. If not, the operating system must retrieve PC, fetch instruction and find out what it was doing when the fault occurred.
- Once virtual address caused page fault is known, system checks to see if address is valid and checks if there is no protection access problem.
- If the virtual address is valid, the system checks to see if a page frame is free. If no frames are free, the page replacement algorithm is run to remove a page.
- If frame selected is dirty, page is scheduled for transfer to disk, context switch takes place, fault process is suspended and another process is made to run until disk transfer is completed.
- As soon as page frame is clean, operating system looks up disk address where needed page is, schedules disk operation to bring it in.
- When disk interrupt indicates page has arrived, page tables are updated to reflect its position, and frame marked as being in normal state.
- Faulting instruction is backed up to state it had when it began and PC is reset. Faulting is scheduled, operating system returns to routine that called it.
- Assembly Routine reloads register and other state information, returns to user space to continue execution.
According to fault type:
Illegal operation access out of bounds
This situation has the greatest impact and is also an important source of Coredump. For example, null pointer dereferences or permission issues will cause page faults.
Use malloc to newly request memory
The malloc mechanism is to delay the allocation of memory. When using malloc to apply for memory, physical memory is not actually allocated. When the physical memory requested by malloc is actually used, the application will be initiated, and a Page Fault will occur during this period.
Access data is swapped out by swap
Physical memory is a limited resource. When many processes are running, not every process is active. For this reason, the OS will start memory page replacement and put the physical memory page frames that have not been used for a long time to the swap partition to vacate resources for other processes. When a page in the swap partition is accessed, a Page Fault will be triggered and then replaced back to physical memory.