As you've obviously got suitable answers from other people I'm going to ignore the last two questions that I didn't get time to answer earlier and focus on the text you linked to.
Unfortunately this isn't correct. Firstly, segment-offset pairs [of this kind] only exist in real mode and you're in pmode. Secondly, a linear address is calculated from a segment:offset pair by shifting the segment selector 4 bits left and adding the offset, giving you 20 bits (1MB) of addressable space (16+4 = 20).Example: 1000:1f00 = 10001f00
That's incorrect too - To get the 20-bit page directory/table index you logically shift a 32-bit address RIGHT by 12 bits, so that the most significant 12 bits are zero. It's important that it's a logical shift and not an algebraic one as the latter will implicitly sign extend for you. In C, avoid this by ensuring you use unsigned values.To get a 20 bit address, you take the 32 bit, shift the bits to left, until the “12” last bits are “0”.
That's incorrect - you don't need to set bit 6. Unfortunately I'm at my girlfriend's house at the moment and don't have a PDF reader to look it up in the manuals to see what that bit exactly is, but it definately is not required to be set.6 bit: set this to “1” to make the page usable.
The inverse - Set for user-mode access, clear for kernel only.2 bit: if this is set to “1”, then the user level is “supervisor” if the bit is ”0”, then it is normal user.
Your tutorial seems to be lacking any information about actually using the stuff in practice - the "last part", as you put it.
As English is clearly not your native language I decided to avoid my usual pedantic language and ambiguity analysis
Anyway, I hope this helped a little.
Cheers,
James