It's not a general solution- you often need to access the page tables of other address spaces, and those aren't picked up by a recursive mapping.
And while a single recursive mapping is a relatively small fraction of the address space, you probably don't want to do it for all address spaces simultaneously.
So you need something more general anyway, and you may as well just use it all the time.
It is possible to access other address spaces, it is just a bit more complicated:
- Set the recursive entry of the active level 4 table to the (recursive) level 4 table of the other address space.
- Now the recursive addresses point to the other address space, so you can access its tables freely.
- The difficult part is to switch back to the active address space again because can no longer access the original level 4 entry. This can be solved with a temporary mapping to the active level 4 table or by using different level 4 entries for the recursive mapping of active and inactive address spaces.
However, I'm no longer sure whether recursive page tables are a good choice for the blog since they're complicated, difficult to learn and not portable. See my reply to DSMan.
And while a single recursive mapping is a relatively small fraction of the address space, you probably don't want to do it for all address spaces simultaneously.
So you need something more general anyway, and you may as well just use it all the time.