Difference between present - absent bit and valid - invalid bit in a page table?
Many people confuse these two bits. I'll try to explain the concept to best of my knowledge.
Let's say we have 32 bit architecture. so process virtual address space(VAS) will have size of 2^32. VAS space of a process has kernel code and data part and user code and data part.Page table of process contains entries for both user/kernel part. kernel page table entries are same for all processes that is these virtual addresses are mapped to same physical memory frame for all processes.because memory has just one copy of OS code.
process when initialized doesn't use the full VAS.virtual addresses which are not in use as of now have valid bit zero(Invalid). It can make use of more addresses by calling sbrk(), brk() system call.These system calls are used internally by malloc in C(if no holes are present already). which will add more virtual address to process page table that means it will make those pages valid.
Now there is a catch, page table entries which had valid bit set recently are not yet mapped to physical frames, that is where present/absent bit comes into picture. or if they are swapped out due to lack of physical memory.
Now when process will try to access these newly validated virtual address/swapped out address, as present bit is not set it will generate a page fault. Now we'll switch to kernel mode to service the page fault.OS has the disk address of the page to be loaded, once page fault service routine is finished it will make present bit set in the process page table. Meanwhile this page fault routine is being serviced,current process is contexted out and new process is given the cpu as per scheduling algorithm so that CPU cycles are not wasted.
I hope this answer helps.