So, I know that Linux uses four default segments for an x86 processor (kernel code, kernel data, user code, user data), but they all have the same base and limit (0x00000000
Kernel memory should not be readable from programs running in user space.
Program data is often not executable (DEP, a processor feature, which helps guard against executing an overflowed buffer and other malicious attacks).
It's all about access control - different segments have different rights. That's why accessing the wrong segment will give you a "segmentation fault".